registeritem.h

Go to the documentation of this file.
00001 /***************************************************************************
00002                           registeritem.h  -  description
00003                              -------------------
00004     begin                : Tue Jun 13 2006
00005     copyright            : (C) 2000-2006 by Thomas Baumgart
00006     email                : Thomas Baumgart <ipwizard@users.sourceforge.net>
00007  ***************************************************************************/
00008 
00009 /***************************************************************************
00010  *                                                                         *
00011  *   This program is free software; you can redistribute it and/or modify  *
00012  *   it under the terms of the GNU General Public License as published by  *
00013  *   the Free Software Foundation; either version 2 of the License, or     *
00014  *   (at your option) any later version.                                   *
00015  *                                                                         *
00016  ***************************************************************************/
00017 
00018 #ifndef REGISTERITEM_H
00019 #define REGISTERITEM_H
00020 
00021 // ----------------------------------------------------------------------------
00022 // QT Includes
00023 
00024 #include <qstring.h>
00025 #include <qdatetime.h>
00026 #include <qpainter.h>
00027 
00028 // ----------------------------------------------------------------------------
00029 // KDE Includes
00030 
00031 // ----------------------------------------------------------------------------
00032 // Project Includes
00033 
00034 #include <kmymoney/mymoneymoney.h>
00035 #include <kmymoney/mymoneysplit.h>
00036 #include <kmymoney/mymoneyobject.h>
00037 
00038 namespace KMyMoneyRegister {
00039 
00040 typedef enum {
00041   Deposit = 0,          //< transaction is deposit
00042   Payment,              //< transaction is payment
00043   Unknown               //< transaction cashflow is unknown
00044 } CashFlowDirection;
00045 
00046 typedef enum {
00047   ActionNone = -1,
00048   ActionCheck = 0,
00049   /* these should be values which qt 3.3 never uses for QTab:
00050    * qt starts upwards from 0
00051    */
00052   ActionDeposit = 12201,
00053   ActionTransfer = 12202,
00054   ActionWithdrawal = 12203,
00055   ActionAtm,
00056   // insert new values above this line
00057   MaxAction
00058 } Action;
00059 
00060 
00061 class Register;
00062 
00066 class RegisterItem
00067 {
00068 public:
00069   RegisterItem();
00070   RegisterItem(Register* parent);
00071   virtual ~RegisterItem();
00072 
00073   virtual const char* className(void) = 0;
00074 
00075   virtual bool isSelectable(void) const = 0;
00076   virtual bool isSelected(void) const { return false; }
00077   virtual void setSelected(bool /* selected*/) {}
00078 
00079   virtual bool canHaveFocus(void) const = 0;
00080   virtual bool hasFocus(void) const { return false; }
00081   virtual bool hasEditorOpen(void) const { return false; }
00082 
00083   virtual void setFocus(bool /*focus*/, bool updateLens = true) { updateLens = false; }
00084 
00085   virtual bool isErronous(void) const = 0;
00086 
00087   // helper functions used for sorting
00088   virtual const QDate& sortPostDate(void) const { return nullDate; }
00089   virtual int sortSamePostDate(void) const = 0;
00090   virtual const QDate& sortEntryDate(void) const { return nullDate; }
00091   virtual const QString& sortPayee(void) const { return QString::null; }
00092   virtual const MyMoneyMoney& sortValue(void) const { return nullValue; }
00093   virtual const QString& sortNumber(void) const { return QString::null; }
00094   virtual const QString& sortEntryOrder(void) const { return QString::null; }
00095   virtual CashFlowDirection sortType(void) const { return Deposit; }
00096   virtual const QString& sortCategory(void) const { return QString::null; }
00097   virtual MyMoneySplit::reconcileFlagE sortReconcileState(void) const { return MyMoneySplit::MaxReconcileState; }
00098   virtual const QString& sortSecurity(void) const { return QString::null; }
00099 
00109   virtual void setStartRow(int row) { m_startRow = row; }
00110   int startRow(void) const { return m_startRow; }
00111   virtual int rowHeightHint(void) const;
00112 
00118   virtual void setNumRowsRegister(int rows);
00119 
00124   virtual void setNumRowsForm(int rows) { m_rowsForm = rows; }
00125 
00130   virtual int numRowsRegister(void) const { return m_rowsRegister; }
00131 
00136   virtual int numRowsForm(void) const { return m_rowsForm; }
00137   virtual int numColsForm(void) const { return 1; }
00138 
00145   virtual void setAlternate(bool alternate) { m_alternate = alternate; }
00146 
00147   virtual void paintRegisterCell(QPainter* painter, int row, int col, const QRect& r, bool selected, const QColorGroup& cg) = 0;
00148   virtual void paintFormCell(QPainter* painter, int row, int col, const QRect& r, bool selected, const QColorGroup& cg) = 0;
00149 
00150   virtual const QString& id(void) const { return MyMoneyObject::emptyId(); }
00151 
00157   void setParent(Register* parent);
00158 
00164   Register* parent(void) const { return m_parent; }
00165 
00166   void setNeedResize(void) { m_needResize = true; }
00167 
00168   bool isVisible(void) const { return m_visible; }
00169 
00174   virtual void setVisible(bool visible);
00175 
00181   virtual bool markVisible(bool visible);
00182 
00183   void setNextItem(RegisterItem* p) { m_next = p; }
00184   void setPrevItem(RegisterItem* p) { m_prev = p; }
00185   RegisterItem* nextItem(void) const { return m_next; }
00186   RegisterItem* prevItem(void) const { return m_prev; }
00187 
00188   virtual bool matches(const QString&) const = 0;
00189 
00201   virtual bool maybeTip(const QPoint& /* relpos */, int /* row */, int /* col */, QRect& /* r */, QString& /* msg */) { return false; }
00202 
00203 protected:
00205   void init(void);
00206 
00207 protected:
00208   Register*                m_parent;
00209   RegisterItem*            m_prev;
00210   RegisterItem*            m_next;
00211   int                      m_startRow;
00212   int                      m_rowsRegister;
00213   int                      m_rowsForm;
00214   bool                     m_alternate;
00215   bool                     m_needResize;
00216   bool                     m_visible;
00217 
00218 private:
00219   static QDate             nullDate;
00220   static MyMoneyMoney      nullValue;
00221 };
00222 
00223 } // namespace
00224 
00225 #endif
00226 // vim:cin:si:ai:et:ts=2:sw=2:

Generated on Wed Jan 26 13:03:18 2011 for KMyMoney by  doxygen 1.5.6