summaryrefslogtreecommitdiffstats
path: root/kmymoney2/widgets/kmymoneyaccountselector.h
diff options
context:
space:
mode:
Diffstat (limited to 'kmymoney2/widgets/kmymoneyaccountselector.h')
-rw-r--r--kmymoney2/widgets/kmymoneyaccountselector.h187
1 files changed, 187 insertions, 0 deletions
diff --git a/kmymoney2/widgets/kmymoneyaccountselector.h b/kmymoney2/widgets/kmymoneyaccountselector.h
new file mode 100644
index 0000000..2fc0635
--- /dev/null
+++ b/kmymoney2/widgets/kmymoneyaccountselector.h
@@ -0,0 +1,187 @@
+/***************************************************************************
+ kmymoneyaccountselector.h
+ -------------------
+ begin : Thu Sep 18 2003
+ copyright : (C) 2003 by Thomas Baumgart
+ email : Thomas Baumgart <ipwizard@users.sourceforge.net>
+ ***************************************************************************/
+
+/***************************************************************************
+ * *
+ * 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 KMYMONEYACCOUNTSELECTOR_H
+#define KMYMONEYACCOUNTSELECTOR_H
+
+// ----------------------------------------------------------------------------
+// QT Includes
+
+// ----------------------------------------------------------------------------
+// KDE Includes
+
+class KPushButton;
+
+// ----------------------------------------------------------------------------
+// Project Includes
+
+#include <kmymoney/kmymoneyselector.h>
+#include <kmymoney/kmymoneyutils.h>
+#include <kmymoney/mymoneyaccount.h>
+
+class kMyMoneyAccountCompletion;
+class AccountSet;
+class MyMoneyFile;
+
+/**
+ * This class implements an account/category selector. It is based
+ * on a tree view. Using this widget, one can select one or multiple
+ * accounts depending on the mode of operation and the set of accounts
+ * selected to be displayed. (see setSelectionMode()
+ * and loadList() about the specifics of configuration).
+ *
+ * - Single selection mode\n
+ * In this mode the widget allows to select a single entry out of
+ * the set of displayed accounts.
+ *
+ * - Multi selection mode\n
+ * In this mode, the widget allows to select one or more entries
+ * out of the set of displayed accounts. Selection is performed
+ * by marking the account in the view.
+ */
+class kMyMoneyAccountSelector : public KMyMoneySelector
+{
+ Q_OBJECT
+public:
+ friend class AccountSet;
+
+ kMyMoneyAccountSelector(QWidget *parent=0, const char *name=0, QWidget::WFlags flags = 0, const bool createButtons = true);
+ virtual ~kMyMoneyAccountSelector();
+
+ /**
+ * This method returns a list of account ids of those accounts
+ * currently loaded into the widget. It is possible to select
+ * a list of specific account types only. In this case, pass
+ * a list of account types as parameter @p list.
+ *
+ * @param list QValueList of account types to be returned. If this
+ * list is empty (the default), then the ids of all accounts
+ * will be returned.
+ * @return QStringList of account ids
+ */
+ QStringList accountList(const QValueList<MyMoneyAccount::accountTypeE>& list = QValueList<MyMoneyAccount::accountTypeE>()) const;
+
+ void setSelectionMode(QListView::SelectionMode mode);
+
+ /**
+ * This method checks if a given @a item matches the given regular expression @a exp.
+ *
+ * @param exp const reference to a regular expression object
+ * @param item pointer to QListViewItem
+ *
+ * @retval true item matches
+ * @retval false item does not match
+ */
+ virtual bool match(const QRegExp& exp, QListViewItem* item) const;
+
+ /**
+ * This method returns, if any of the items in the selector contains
+ * the text @a txt.
+ *
+ * @param txt const reference to string to be looked for
+ * @retval true exact match found
+ * @retval false no match found
+ */
+ virtual bool contains(const QString& txt) const;
+
+ /**
+ * This method removes all the buttons of the widget
+ */
+ void removeButtons(void);
+
+public slots:
+ /**
+ * This slot selects all items that are currently in
+ * the account list of the widget.
+ */
+ void slotSelectAllAccounts(void) { selectAllItems(true); };
+
+ /**
+ * This slot deselects all items that are currently in
+ * the account list of the widget.
+ */
+ void slotDeselectAllAccounts(void) { selectAllItems(false); };
+
+protected:
+ /**
+ * This method loads the list of subaccounts as found in the
+ * @p list and attaches them to the parent widget passed as @p parent.
+ *
+ * @param parent pointer to parent widget
+ * @param list QStringList containing the ids of all subaccounts to load
+ * @return This method returns the number of accounts loaded into the list
+ */
+ int loadSubAccounts(QListViewItem* parent, const QStringList& list);
+
+ /**
+ * This is a helper method for selectAllIncomeCategories()
+ * and selectAllExpenseCategories().
+ */
+ void selectCategories(const bool income, const bool expense);
+
+protected slots:
+ /**
+ * This slot selects all income categories
+ */
+ void slotSelectIncomeCategories(void) { selectCategories(true, false); };
+
+ /**
+ * This slot selects all expense categories
+ */
+ void slotSelectExpenseCategories(void) { selectCategories(false, true); };
+
+protected:
+ KPushButton* m_allAccountsButton;
+ KPushButton* m_noAccountButton;
+ KPushButton* m_incomeCategoriesButton;
+ KPushButton* m_expenseCategoriesButton;
+ QValueList<int> m_typeList;
+ QStringList m_accountList;
+};
+
+
+class AccountSet
+{
+public:
+ AccountSet();
+
+ void addAccountType(MyMoneyAccount::accountTypeE type);
+ void addAccountGroup(MyMoneyAccount::accountTypeE type);
+ void removeAccountType(MyMoneyAccount::accountTypeE type);
+
+ void clear(void);
+
+ int load(kMyMoneyAccountSelector* selector);
+ int load(kMyMoneyAccountSelector* selector, const QString& baseName, const QValueList<QString>& accountIdList, const bool clear = false);
+
+ int count(void) const { return m_count; }
+
+ void setHideClosedAccounts (bool _bool) { m_hideClosedAccounts = _bool; }
+ bool isHidingClosedAccounts (void) { return m_hideClosedAccounts; }
+
+protected:
+ int loadSubAccounts(kMyMoneyAccountSelector* selector, QListViewItem* parent, const QString& key, const QStringList& list);
+ bool includeAccount(const MyMoneyAccount& acc);
+
+private:
+ int m_count;
+ MyMoneyFile* m_file;
+ QValueList<MyMoneyAccount::accountTypeE> m_typeList;
+ QListViewItem* m_favorites;
+ bool m_hideClosedAccounts;
+};
+#endif