// // OSSP asgui - Accounting system graphical user interface // Copyright (c) 2002-2004 The OSSP Project (http://www.ossp.org/) // Copyright (c) 2002-2004 Ralf S. Engelschall // Copyright (c) 2002-2004 Michael Schloh von Bennewitz // Copyright (c) 2002-2004 Cable & Wireless Telecommunications Services GmbH // // This file is part of OSSP asgui, an accounting system graphical user // interface which can be found at http://www.ossp.org/pkg/tool/asgui/. // // Permission to use, copy, modify, and distribute this software for // any purpose with or without fee is hereby granted, provided that // the above copyright notice and this permission notice appear in all // copies. // // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. // IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF // SUCH DAMAGE. // // as_gui.h: ISO C++ interface // #ifndef AS_GUI_MWIN_H #define AS_GUI_MWIN_H #include #ifdef HAVE_CONFIG_H #include "ac_config.h" #endif #include "as_except.h" // Exception classes // Version information #define _AS_VERSION_CPP_AS_HEADER_ #include "as_version.cpp" #undef _AS_VERSION_CPP_AS_HEADER_ // Trolltech class prototypes class QAction; class QHeader; class QTimeEdit; class QComboBox; class QLineEdit; class QLabel; class QDate; class QFile; // Local class prototypes class ASTimeEdit; class Daydatedit; // Might be replaced with ASTimeEdit throughout class TiTable; class Preferences; class Prefpanel; // Intentional no operation #define TITRAQ_NOP ((void)0) #ifdef HAVE_CONFIG_H #if (SIZEOF_CHAR == 1) typedef unsigned char U8; #else ?==Error: Undefined 8 bit type #endif // U8 #if (SIZEOF_SHORT == 2) typedef unsigned short U16; #elif (SIZEOF_INT == 2) typedef unsigned int U16; #elif (SIZEOF_LONG == 2) typedef unsigned long U16; #else ?==Error: Undefined 16 bit type #endif // U16 #if (SIZEOF_SHORT == 4) typedef unsigned short U32; #elif (SIZEOF_INT == 4) typedef unsigned int U32; #elif (SIZEOF_LONG == 4) typedef unsigned long U32; #else ?==Error: Undefined 32 bit type #endif // U32 #else // HAVE_CONFIG_H (not defined) typedef unsigned char U8; #if (2 == 2) typedef unsigned short U16; #elif (4 == 2) typedef unsigned int U16; #else ?==Error: Undefined 16 bit type #endif #if (2 == 4) typedef unsigned short U32; #elif (4 == 4) typedef unsigned int U32; #elif (4 == 4) typedef unsigned long U32; #else ?== Error: Undefined 32 bit type #endif #endif // HAVE_CONFIG_H // Main table size const int g_knBlocks = 32; // Styles enumeration typedef enum { TITRAQ_STYLECDE, TITRAQ_STYLESGI, TITRAQ_STYLEMOTIF, TITRAQ_STYLEMPLUS, TITRAQ_STYLEPLAT, TITRAQ_STYLEMSOFT } styles_t; // Main application form window class Titraqform : public QMainWindow { Q_OBJECT // Generate MOC object model stubs public: Titraqform(QWidget *pParent = 0, const char *kszName = 0, WFlags Flags = 0); ~Titraqform(void); // Accessor methods const QString getRowdata(void) const; // Get a whole row of data void setRowdata(QString &) const; // Set a whole row of data const int getFirstcol(void) const; // Learn which col is first const bool isOpen(void) {return (m_szFilename == NULL) ? false : true;}; // Doc state void setOpen(bool bDocopen = true) // Set state of document { if (bDocopen) { if (m_szFilename == NULL) m_szFilename = new QString(); } else if (m_szFilename != NULL) { delete m_szFilename; m_szFilename = NULL; } }; const QString *getFilename(void) // Get the current file name { if (this->isOpen()) return m_szFilename; else throw Genexcept("File name does not exist."); }; void setFilename(const QString &Fname) // Set file name { if (this->isOpen()) // If a file name exists setOpen(false); // then get rid of it first m_szFilename = new QString(Fname); }; // Utility members void loadInit(void); // Parse cmds and open initial file // Top level members Preferences *m_pPrefs; // Main application actions QAction *m_pFilenewact, *m_pFileopenact; QAction *m_pFilesaveact, *m_pFilesaveasact; QAction *m_pFilecloseact, *m_pFilequitact; QAction *m_pAddrowact, *m_pDelrowact; QAction *m_pRefreshact, *m_pCutact; QAction *m_pCopyact, *m_pPasteact; QAction *m_pSyncact, *m_pPrefsact; QAction *m_pReportact; // Table, cells, and entries in package layout TiTable *m_pMaintable; QHeader *m_pTablehead; QStringList *m_pTaskentries; // Edition widgets QLabel *m_pStatusedit; // Control to show entry status QLineEdit *m_pLineedit; // Control to line number QLineEdit *m_pUseredit; // Control to edit user name QLineEdit *m_pGuidedit; // Control to edit GUID QLineEdit *m_pCrcedit; // Control to edit CRC QLineEdit *m_pRevedit; // Control to edit revision Daydatedit *m_pDateedit; // Control to edit date QTimeEdit *m_pStarttime; // Control to edit start time QTimeEdit *m_pEndtime; // Control to edit finish time // QTimeEdit *m_pAmount; // Control to edit total time ASTimeEdit *m_pAmount; // Control to edit total time QComboBox *m_pTasks; // Control to choose a task QLineEdit *m_pRemark; // Control to edit remark protected slots: void cutEntry(void); // Cut task entries from the list void copyEntry(void); // Copy task entries from the list void pasteEntry(void); // Paste task entries to the list void addEntry(int nRows= -1); // Add task entries to the list void delEntry(int nRows= -1); // Delete task entries from the list void refreshDisplay(void); // Refresh the display of all data items void syncIiop(void); // Syncronize data with server using IIOP void syncSoap(void); // Syncronize data with server using SOAP void newDoc(void); // Make and display a new document window void openDoc(void); // Open and display an existing document void quitApp(void); // Close the current document and quit void saveFile(void); // Serialize to the current file void saveAs(void); // Serialize to a selected file void saveName(void); // Implicitly serialize to a selected file void helpContents(void); // Use the help contents void aboutTitraq(void); // Learn more about this program itself void aboutOSSP(void); // Learn more about the OSSP void aboutQt(void); // Learn more about Qt void selAll(void); // Edit menu select all void onClick(int, int, int, const QPoint &); // Table was clicked void inplaceEdit(int, int, int, const QPoint &); // Enter in place edit mode void updEdit(int, int nCol = 0); // Update edit controls void validateRow(void); // Validate current row of matrix void validateRow(int, int); // Validate specified row of matrix void updSizes(int, int, int); // Update edit sizes void calcCrc(void); // Calculate CRC of current row void calcCrc(int, int); // Calculate CRC of specified row void dataChanged(int, int); // Timesheet data changed void updateLine(const QString &); // Update line number column void updateUser(const QString &); // Update user column void updateGuid(const QString &); // Update GUID column void updateCrc(const QString &); // Update CRC column void updateRev(const QString &); // Update rev column void updateDate(const QDate &); // Update date column void updateStart(const QTime &); // Update start column void updateFinish(const QTime &); // Update finish column void updateAmount(const QTime &); // Update amount column void updateTask(const QString &); // Update task column void updateRemark(const QString &); // Update remark column void confirmEdit(void); // Confirm whole row edition void configPrefs(void); // Edit menu configure preferences void normalView(void); // View menu normal void editingView(void); // View menu editing void timingView(void); // View menu timing void showFilebar(void); // View menu show file toolbar void showEditbar(void); // View menu show edit toolbar void showViewbar(void); // View menu show view toolbar void showPrefsbar(void); // View menu show prefs toolbar void showWhatsbar(void); // View menu show whats this toolbar void showStatcol(void); // View menu show status column void showLinecol(void); // View menu show line numbers column void showUsercol(void); // View menu show Users column void showGuidcol(void); // View menu show GUIDs column void showCrccol(void); // View menu show CRC column void showRevcol(void); // View menu show Rev column void showDatecol(void); // View menu show Dates column void showStartcol(void); // View menu show Start time column void showFinishcol(void); // View menu show Finish time column void showAmountcol(void); // View menu show Amounts column void showTaskcol(void); // View menu show Tasks column void showRemarkcol(void); // View menu show Remarks column void genReport(void); // Generate a local formatted report void savePrefs(void); // Save user preferences void applyPrefs(void); // Apply preferences from applied() void applyPrefs(Prefpanel *); // Apply preferences from accept() protected: // Application main events void closeEvent(QCloseEvent *); // Close current document in main window // Application main window widgets QFrame *m_pCenframe; // Central frame QVBoxLayout *m_pMainlayout; // Package and control layouts QVBoxLayout *m_pPackagelayout; // Main table control QHBoxLayout *m_pEditlayout; // Lower edition widgets private: // Owned by QMainWindow QMenuBar *m_pMenubar; QPopupMenu *m_pViewpopup; // Saved for manipulating views QPopupMenu *m_pTbarspopup; // Saved for manipulating toolbars QPopupMenu *m_pColspopup; // Saved for manipulating columns QStatusBar *m_pStatbar; // Belong to us QToolBar *m_pFiletools; QToolBar *m_pEdittools; QToolBar *m_pViewtools; QToolBar *m_pPrefstools; QToolBar *m_pWhatstools; QString *m_szFilename; // Constructor helpers void setupPrefs(void); // Preferences void setupActions(void); // Actions void setupMenubar(void); // Menu bar void setupToolbars(void); // Tool bars void setupStatusbar(void); // Status bar void setupCentralwidget(void); // Assemble main Frame widget void setupTable(void); // Table widget void setupEditlay(void); // Editing lay void setupPieces(void); // Assemble widget pieces void setupColumns(void); // Arrange and configure columns void enableIface(bool); // [En/dis]able most ui pieces // Data processing void loadAccounts(QFile &); // Load accounts from file void loadAccounts(QTextStream &); // Load accounts from stream void loadData(QFile &); // Load personal data from file void loadData(QTextStream &); // Load personal data from stream void saveData(QFile &); // Save accounting data to file void saveData(QTextStream &); // Save accounting data to stream const bool validateData(QFile &) const; // Validate personal data in file const bool validateData(QString &) const; // Validate personal data from string }; #endif // AS_GUI_MWIN_H