You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
kmymoney/kmymoney2/views/kcategoriesview.h

149 lines
5.3 KiB

/***************************************************************************
kcategoriesview.h - description
-------------------
begin : Sun Jan 20 2002
copyright : (C) 2000-2002 by Michael Edwardes
(C) 2005 by Thomas Baumgart
email : mte@users.sourceforge.net
Javier Campos Morales <javi_c@users.sourceforge.net>
Felix Rodriguez <frodriguez@users.sourceforge.net>
John C <thetacoturtle@users.sourceforge.net>
Thomas Baumgart <ipwizard@users.sourceforge.net>
Kevin Tambascio <ktambascio@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 KCATEGORIESVIEW_H
#define KCATEGORIESVIEW_H
// ----------------------------------------------------------------------------
// QT Includes
// ----------------------------------------------------------------------------
// KDE Includes
// ----------------------------------------------------------------------------
// Project Includes
#include <kmymoney/mymoneyaccount.h>
#include <kmymoney/kmymoneyaccounttree.h>
#include <kmymoney/mymoneyutils.h>
class KListViewSearchLineWidget;
#include "kcategoriesviewdecl.h"
/**
* @brief This class contains the implementation of the categories view.
* @author Michael Edwardes, Thomas Baumgart
*
* While named "categories view", this view actually displays all accounts
* that are children of the global "Income" and "Expense" accounts. Even though
* categories are internally just accounts as well, the distinction between
* categories and accounts in the user interface is done for better
* usability and clarity.
*
* The main functionality in the categories view is actually implemented
* in the KMyMoneyAccountTree. Signals from user actions are connect to
* other signals/slots in KCategoriesView and relayed to KMyMoneyView.
* A typical example is the selectObject() signal that eventually results
* in enabling/disabling the user actions for the categories view.
*
* For the categories view three user actions are important (all created in
* kmymoney2.cpp): category_new, category_edit and category_delete. They are
* accessible from either the main menu or the context menu.
*/
class KCategoriesView : public KCategoriesViewDecl
{
Q_OBJECT
TQ_OBJECT
public:
KCategoriesView(TQWidget *parent=0, const char *name=0);
virtual ~KCategoriesView();
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);
protected:
void loadAccounts(void);
bool loadSubAccounts(KMyMoneyAccountTreeItem* parent, const TQStringList& accountList);
protected slots:
void slotUpdateProfit(void);
void slotExpandCollapse(void);
private:
/**
* This method returns an icon according to the account type
* passed in the argument @p type.
*
* @param type account type as defined in MyMoneyAccount::accountTypeE
*/
const TQPixmap accountImage(const MyMoneyAccount::accountTypeE type) const;
signals:
/**
* This signal serves as proxy for KMyMoneyAccountTree::selectObject()
*/
void selectObject(const MyMoneyObject&);
/**
* This signal serves as proxy for
* KMyMoneyAccountTree::openContextMenu(const MyMoneyObject&)
*/
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 account.
*/
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:
TQMap<TQString, MyMoneySecurity> m_securityMap;
TQMap<TQString, unsigned long> m_transactionCountMap;
KMyMoneyAccountTreeItem* m_incomeItem;
KMyMoneyAccountTreeItem* m_expenseItem;
/**
* Search widget for the list
*/
KListViewSearchLineWidget* m_searchWidget;
/// set if a view needs to be reloaded during show()
bool m_needReload;
};
#endif