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/kbudgetview.h

223 lines
6.7 KiB

/***************************************************************************
kbudgetview.h
-------------
begin : Thu Jan 24 2002
copyright : (C) 2006 by Darren Gould
email : darren_gould@gmx.de
***************************************************************************/
/***************************************************************************
* *
* 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 KBUDGETVIEW_H
#define KBUDGETVIEW_H
// ----------------------------------------------------------------------------
// QT Includes
#include <tqwidget.h>
// ----------------------------------------------------------------------------
// KDE Includes
#include <klistview.h>
#include <kpopupmenu.h>
// ----------------------------------------------------------------------------
// Project Includes
#include "kbudgetviewdecl.h"
#include "../mymoney/mymoneybudget.h"
#include "../mymoney/mymoneysecurity.h"
class KMyMoneyAccountTreeBudgetItem;
/**
* @author Darren Gould
* @author Thomas Baumgart
*
*
* This class represents an item in the budgets list view.
*/
class KBudgetListItem : public TDEListViewItem
{
public:
/**
* Constructor to be used to construct a budget entry object.
*
* @param parent pointer to the TDEListView object this entry should be
* added to.
* @param budget const reference to MyMoneyBudget for which
* the TDEListView entry is constructed
*/
KBudgetListItem(TDEListView *parent, const MyMoneyBudget& budget);
~KBudgetListItem();
/**
* This method is re-implemented from TQListViewItem::paintCell().
* Besides the standard implementation, the TQPainter is set
* according to the applications settings.
*/
void paintCell(TQPainter *p, const TQColorGroup & cg, int column, int width, int align);
const MyMoneyBudget& budget(void) { return m_budget; };
void setBudget(const MyMoneyBudget& budget) { m_budget = budget; }
private:
MyMoneyBudget m_budget;
};
/**
* @author Darren Gould
* @author Thomas Baumgart
*/
class KBudgetView : public KBudgetViewDecl
{
Q_OBJECT
public:
KBudgetView(TQWidget *parent=0, const char *name=0);
~KBudgetView();
void show();
/**
* 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);
/**
* This method is used to suppress updates for specific times
* (e.g. during creation of a new MyMoneyFile object when the
* default accounts are loaded). The behaviour of update() is
* controlled with the parameter.
*
* @param suspend Suspend updates or not. Possible values are
*
* @li true updates are suspended
* @li false updates will be performed immediately
*
* When a true/false transition of the parameter between
* calls to this method is detected,
* refresh() will be invoked once automatically.
*/
void suspendUpdate(const bool suspend);
public slots:
void slotReloadView(void);
void slotRefreshView(void);
void slotSelectBudget(void);
void slotHideUnused(bool);
void slotRefreshHideUnusedButton();
void slotStartRename(void);
/**
*This is to update the information about the checkbox "budget amount integrates subaccounts" into the file, when the user clicks the check box
*/
void cb_includesSubaccounts_clicked();
protected:
void resizeEvent(TQResizeEvent*);
void loadAccounts(void);
bool loadSubAccounts(KMyMoneyAccountTreeBudgetItem* parent, TQStringList& accountList, const MyMoneyBudget& budget);
/**
* This method loads all available budgets into the budget list widget. If a budget is
* currently selected it remains selected if it is still present.
*/
void loadBudgets(void);
void ensureBudgetVisible(const TQString& id);
const MyMoneyBudget& selectedBudget(void) const;
KMyMoneyAccountTreeBudgetItem* selectedAccount(void) const;
void setTimeSpan(KMyMoneyAccountTreeBudgetItem *account, MyMoneyBudget::AccountGroup& accountGroup, int iTimeSpan);
void askSave(void);
protected slots:
/**
* This slot is called when the name of a budget is changed inside
* the budget list view and only a single budget is selected.
*
* @param p The listviewitem containing the budget name
* @param col The column where the name is located
* @param txt The text of the new name
*/
void slotRenameBudget(TQListViewItem *p, int col, const TQString& txt);
/**
* This slot is called when the amount of a budget is changed. It
* updates the budget and stores it in the engine
*/
void slotBudgetedAmountChanged(void);
/**
*/
void slotSelectAccount(TQListViewItem*);
void AccountEnter();
void slotUpdateBudget(void);
void slotResetBudget(void);
void slotNewBudget(void);
void languageChange(void);
private slots:
void slotRearrange(void);
/**
* This slot receives the signal from the listview control that an item was right-clicked,
* If @p item points to a real budget item, emits openContextMenu().
*
* @param lv pointer to the listview
* @param i the item on which the cursor resides
* @param p position of the pointing device
*/
void slotOpenContextMenu(TDEListView* lv, TQListViewItem* i, const TQPoint& p);
signals:
/**
* This signal serves as proxy for KMyMoneyBudgetList::selectObject()
*/
void openContextMenu(const MyMoneyObject& obj);
void selectObjects(const TQValueList<MyMoneyBudget>& budget);
private:
typedef enum {
eNone=-1,
eYearly=0,
eMonthly=1,
eMonthByMonth=2
} eTimePeriodColumn;
MyMoneyBudget m_budget;
TQMap<TQString, unsigned long> m_transactionCountMap;
TQStringList m_yearList;
KMyMoneyAccountTreeBudgetItem* m_incomeItem;
KMyMoneyAccountTreeBudgetItem* m_expenseItem;
/// set if a view needs to be reloaded during show()
bool m_needReload;
// set if we are in the selection of a different budget
bool m_inSelection;
void adaptHideUnusedButton(void);
static const int m_iBudgetYearsAhead;
static const int m_iBudgetYearsBack;
};
#endif