summaryrefslogtreecommitdiffstats
path: root/kmymoney2/views/kaccountsview.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/views/kaccountsview.h')
-rw-r--r--kmymoney2/views/kaccountsview.h209
1 files changed, 209 insertions, 0 deletions
diff --git a/kmymoney2/views/kaccountsview.h b/kmymoney2/views/kaccountsview.h
new file mode 100644
index 0000000..ed30ac5
--- /dev/null
+++ b/kmymoney2/views/kaccountsview.h
@@ -0,0 +1,209 @@
+/***************************************************************************
+ kaccountssview.h
+ -------------------
+ copyright : (C) 2005 by Thomas Baumgart
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * This program is free software; you can redistribute it and/or modify *
+ * it under the terms of the GNU General Public License as published by *
+ * the Free Software Foundation; either version 2 of the License, or *
+ * (at your option) any later version. *
+ * *
+ ***************************************************************************/
+
+#ifndef KACCOUNTSSVIEW_H
+#define KACCOUNTSSVIEW_H
+
+// ----------------------------------------------------------------------------
+// QT Includes
+
+// ----------------------------------------------------------------------------
+// KDE Includes
+
+#include <kiconview.h>
+
+// ----------------------------------------------------------------------------
+// Project Includes
+
+#include <kmymoney/mymoneyaccount.h>
+#include <kmymoney/kmymoneyaccounttree.h>
+#include <kmymoney/mymoneyutils.h>
+class KListViewSearchLineWidget;
+
+#include "../views/kaccountsviewdecl.h"
+
+/**
+ * @author Thomas Baumgart
+ */
+
+/**
+ * This class represents an item in the account icon view. It is used
+ * by the KAccountsView to select between the accounts using icons.
+ */
+class KMyMoneyAccountIconItem : public KIconViewItem
+{
+public:
+ /**
+ * Constructor to be used to construct an account icon object.
+ *
+ * @param parent pointer to the KIconView object this entry should be
+ * added to.
+ * @param account const reference to MyMoneyAccount for which
+ * the KIconView entry is constructed
+ */
+ KMyMoneyAccountIconItem(QIconView *parent, const MyMoneyAccount& account);
+ ~KMyMoneyAccountIconItem();
+
+ /**
+ * This method is loads new information into the item and updates the fields
+ *
+ * @param account the account data for the object to be updated
+ *
+ * @note if account.id() is not equal to the current account id
+ * then this method returns immediately
+ */
+ void updateAccount(const MyMoneyAccount& account);
+
+ const MyMoneyObject& itemObject(void) const { return m_account; };
+
+ void setReconciliation(bool);
+
+protected:
+
+private:
+ MyMoneyAccount m_account;
+ bool m_reconcileFlag;
+};
+
+
+
+
+/**
+ * This class implements the accounts hierarchical and iconic 'view'.
+ */
+class KAccountsView : public KAccountsViewDecl
+{
+ Q_OBJECT
+private:
+
+public:
+ KAccountsView(QWidget *parent=0, const char *name=0);
+ virtual ~KAccountsView();
+
+public slots:
+ void slotLoadAccounts(void);
+
+ /**
+ * Override the base class behaviour to include all updates that
+ * happened in the meantime.
+ */
+ void show(void);
+
+ /**
+ * Override the base class behaviour to restore the layout. Do not
+ * do this in show() because show() itself may change the layout
+ * in undesired ways.
+ */
+ void polish(void);
+
+ /**
+ * update the account objects if their icon position has changed since
+ * the last time.
+ *
+ * @param action must be KMyMoneyView::preSave, otherwise this slot is a NOP.
+ */
+ void slotUpdateIconPos(unsigned int action);
+
+ void slotReconcileAccount(const MyMoneyAccount& acc, const QDate& reconciliationDate, const MyMoneyMoney& endingBalance);
+
+protected:
+ typedef enum {
+ ListView = 0,
+ IconView,
+ // insert new values above this line
+ MaxViewTabs
+ } AccountsViewTab;
+
+ /**
+ * This method loads the accounts for the respective tab.
+ *
+ * @param tab which tab should be loaded
+ */
+ void loadAccounts(AccountsViewTab tab);
+ void loadListView(void);
+ void loadIconView(void);
+
+ bool loadSubAccounts(KMyMoneyAccountTreeItem* parent, const QStringList& accountList);
+
+ /**
+ * This method returns a pointer to the currently selected
+ * account icon or 0 if no icon is selected.
+ */
+ KMyMoneyAccountIconItem* selectedIcon(void) const;
+
+ QPoint point(const QString& str) const;
+ QString point(const QPoint& val) const;
+
+protected slots:
+ void slotUpdateNetWorth(void);
+ void slotTabChanged(QWidget*);
+ void slotSelectIcon(QIconViewItem* item);
+ void slotOpenContext(QIconViewItem* item);
+ void slotOpenObject(QIconViewItem* item);
+ void slotExpandCollapse(void);
+
+signals:
+ /**
+ * This signal serves as proxy for KMyMoneyAccountTree::selectObject()
+ *
+ * @param obj const reference to object
+ */
+ void selectObject(const MyMoneyObject& obj);
+
+ /**
+ * This signal serves as proxy for
+ * KMyMoneyAccountTree::openContextMenu(const MyMoneyObject&)
+ *
+ * @param obj const reference to object
+ */
+ void openContextMenu(const MyMoneyObject& obj);
+
+ /**
+ * This signal will be emitted when the left mouse button is double
+ * clicked (actually the KDE executed setting is used) on an object.
+ *
+ * @param obj const reference to object
+ */
+ void openObject(const MyMoneyObject& obj);
+
+ /**
+ * This signal is emitted, when the user selected to reparent the
+ * account @p acc to be a subordinate account of @p parent.
+ *
+ * @param acc const reference to account to be reparented
+ * @param parent const reference to new parent account
+ */
+ void reparent(const MyMoneyAccount& acc, const MyMoneyAccount& parent);
+
+private:
+ MyMoneyAccount m_reconciliationAccount;
+ QMap<QString, MyMoneySecurity> m_securityMap;
+ QMap<QString, unsigned long> m_transactionCountMap;
+
+ KMyMoneyAccountTreeItem* m_assetItem;
+ KMyMoneyAccountTreeItem* m_liabilityItem;
+
+ /**
+ * Search widget for the list
+ */
+ KListViewSearchLineWidget* m_searchWidget;
+
+ /// set if a view needs to be reloaded during show()
+ bool m_needReload[MaxViewTabs];
+ bool m_haveUnusedCategories;
+};
+
+#endif