michael@1: // michael@1: // OSSP asgui - Accounting system graphical user interface michael@12: // Copyright (c) 2002-2009 The OSSP Project (http://www.ossp.org/) michael@12: // Copyright (c) 2002-2009 Ralf S. Engelschall michael@12: // Copyright (c) 2002-2009 Michael Schloh von Bennewitz michael@12: // Copyright (c) 2002-2009 Cable & Wireless Telecommunications Services GmbH michael@1: // michael@1: // This file is part of OSSP asgui, an accounting system graphical user michael@3: // interface which can be found at http://asgui.europalab.com/. michael@1: // michael@1: // Permission to use, copy, modify, and distribute this software for michael@1: // any purpose with or without fee is hereby granted, provided that michael@1: // the above copyright notice and this permission notice appear in all michael@1: // copies. michael@1: // michael@1: // THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED michael@1: // WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF michael@1: // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. michael@1: // IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR michael@1: // CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, michael@1: // SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT michael@1: // LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF michael@1: // USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND michael@1: // ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, michael@1: // OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT michael@1: // OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF michael@1: // SUCH DAMAGE. michael@1: // michael@1: // as_table.h: ISO C++ interface michael@1: // michael@1: michael@1: #ifndef TITABLE_H michael@1: #define TITABLE_H michael@1: michael@3: #include michael@3: michael@3: //Added by qt3to4: michael@3: #include michael@1: michael@1: #include "as_pref.h" michael@1: michael@1: michael@3: class TiTable : public Q3Table michael@1: { michael@1: Q_OBJECT michael@1: michael@1: private: michael@1: int m_nSortcol; // To track current sort column michael@1: int m_bSortdir; // To track current sort direction michael@1: bool m_bDirt; // To track dirty and clean states michael@1: Preferences *m_pTiprefs; // To read current color values michael@1: michael@1: public: michael@1: // Try to match QTable's default constructor with an initializer list michael@3: TiTable(Preferences *pPrefs, QWidget *pParent = 0, const char *szName = 0) : Q3Table(pParent, szName) michael@1: { michael@1: this->setSortcol(0); michael@1: this->setSortdir(true); michael@1: this->setDirty(false); michael@1: this->setEdition(); // Reset edition state michael@1: m_pTiprefs = pPrefs; michael@1: horizontalHeader()->installEventFilter(this); michael@1: }; michael@1: michael@1: bool eventFilter(QObject *, QEvent *); michael@1: michael@1: // Standard members michael@1: int m_nEdit; // To track edition state michael@1: michael@1: // Accessor methods michael@1: const bool isDirty(void) {return m_bDirt;}; // Check for changed state danger michael@1: void setDirty(bool bDirty = true) {m_bDirt = bDirty;}; // Clean or dirty michael@1: const int getEdition(void) {return m_nEdit;}; // Which edited column was confirmed michael@1: void setEdition(const int nEdit = -1) {m_nEdit = nEdit;}; // Set edition status michael@1: const int getSortcol(void) {return m_nSortcol;}; michael@1: void setSortcol(const int nColin) {m_nSortcol = nColin;}; michael@1: const bool getSortdir(void) {return m_bSortdir;}; michael@1: void setSortdir(const bool bDirection) {m_bSortdir = bDirection;}; michael@1: michael@1: // Overridden accessors michael@1: void setText(int, int, const QString &); michael@1: void sortColumn(int nCol, bool bAscend = true, bool bWhole = true); michael@1: // virtual QTableItem *item(int nRow, int nCol) const {return QTable::item(nRow, nCol);}; michael@1: michael@1: // Deny a cell special handling of the focus rectangle michael@1: // by overriding class QTable's paintFocus method michael@1: virtual void paintFocus(QPainter *, const QRect &) {}; michael@1: michael@1: // Override for special linewise shading according to sort key michael@1: virtual void paintCell(QPainter *, int, int, const QRect &, bool, const QColorGroup &); michael@1: michael@1: // Override to properly handle read only attribute during edition michael@1: virtual void endEdit(int, int, bool, bool); michael@1: michael@1: // For special focus handling on return key in edit mode michael@1: virtual void activateNextCell(void); michael@1: michael@1: signals: michael@1: void textEdited(int, int); // A cell was edited and data was modified michael@1: }; michael@1: michael@1: #endif // TITABLE_H