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/widgets/kmymoneyaccounttree.cpp

148 lines
4.9 KiB

/***************************************************************************
kmymoneyaccounttree.cpp - description
-------------------
begin : Sat Jan 1 2005
copyright : (C) 2005 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. *
* *
***************************************************************************/
// ----------------------------------------------------------------------------
// QT Includes
#include <tqpoint.h>
#include <tqevent.h>
#include <tqdragobject.h>
#include <tqtimer.h>
#include <tqcursor.h>
#include <tqheader.h>
#include <tqpainter.h>
#include <tqpixmap.h>
#include <tqstyle.h>
// ----------------------------------------------------------------------------
// KDE Includes
#include <kmessagebox.h>
#include <klocale.h>
#include <kglobal.h>
#include <kiconloader.h>
#include <kstandarddirs.h>
// ----------------------------------------------------------------------------
// Project Includes
#include <kmymoney/mymoneyfile.h>
#include <kmymoney/kmymoneyaccounttree.h>
#include <kmymoney/kmymoneyglobalsettings.h>
#include <kmymoney/kmymoneyutils.h>
KMyMoneyAccountTree::KMyMoneyAccountTree(TQWidget* parent, const char *name) :
KMyMoneyAccountTreeBase(parent,name)
{
showType();
m_taxReportColumn = addColumn(i18n("Column heading for category in tax report", "Tax"));
setColumnWidthMode(m_taxReportColumn, TQListView::Manual);
setColumnAlignment(m_taxReportColumn, TQt::AlignHCenter);
m_vatCategoryColumn = addColumn(i18n("Column heading for VAT category", "VAT"));
setColumnWidthMode(m_vatCategoryColumn, TQListView::Manual);
setColumnAlignment(m_vatCategoryColumn, TQt::AlignHCenter);
showValue();
}
KMyMoneyAccountTreeItem::KMyMoneyAccountTreeItem(KListView *parent, const MyMoneyAccount& account, const MyMoneySecurity& security , const TQString& name) :
KMyMoneyAccountTreeBaseItem(parent,account,security,name),
m_reconcileFlag(false)
{
updateAccount();
}
KMyMoneyAccountTreeItem::KMyMoneyAccountTreeItem(KMyMoneyAccountTreeBaseItem *parent, const MyMoneyAccount& account, const TQValueList<MyMoneyPrice>& price, const MyMoneySecurity& security) :
KMyMoneyAccountTreeBaseItem(parent,account,price,security),
m_reconcileFlag(false)
{
updateAccount();
}
KMyMoneyAccountTreeItem::KMyMoneyAccountTreeItem(KListView *parent, const MyMoneyInstitution& institution) :
KMyMoneyAccountTreeBaseItem(parent,institution),
m_reconcileFlag(false)
{
}
void KMyMoneyAccountTreeItem::fillColumns()
{
KMyMoneyAccountTree* lv = dynamic_cast<KMyMoneyAccountTree*>(listView());
if (!lv)
return;
KMyMoneyAccountTreeBaseItem::fillColumns();
TQPixmap checkMark = TQPixmap(KGlobal::iconLoader()->loadIcon("ok", KIcon::Small));
MyMoneyMoney vatRate;
if (!isInstitution())
setPixmap(lv->nameColumn(), m_account.accountPixmap(m_reconcileFlag, 22));
switch(m_account.accountType()) {
case MyMoneyAccount::Income:
case MyMoneyAccount::Expense:
case MyMoneyAccount::Asset:
case MyMoneyAccount::Liability:
if(m_account.value("Tax").lower() == "yes")
setPixmap(lv->taxReportColumn(), checkMark);
if(!m_account.value("VatAccount").isEmpty()) {
setPixmap(lv->vatCategoryColumn(), checkMark);
}
if(!m_account.value("VatRate").isEmpty()) {
vatRate = MyMoneyMoney(m_account.value("VatRate")) * MyMoneyMoney(100,1);
setText(lv->vatCategoryColumn(), TQString("%1 %").tqarg(vatRate.formatMoney("", 1)));
}
break;
default:
break;
}
}
void KMyMoneyAccountTreeItem::setReconciliation(bool on)
{
if(m_reconcileFlag == on)
return;
m_reconcileFlag = on;
updateAccount();
}
MyMoneyMoney KMyMoneyAccountTreeItem::balance() const
{
MyMoneyMoney result;
// account.balance() is not compatable with stock accounts
if ( m_account.isInvest() )
result = MyMoneyFile::instance()->balance(m_account.id());
else
result = m_account.balance();
// for income and liability accounts, we reverse the sign
switch(m_account.accountGroup()) {
case MyMoneyAccount::Income:
case MyMoneyAccount::Liability:
case MyMoneyAccount::Equity:
result = -result;
break;
default:
break;
}
return result;
}
#include "kmymoneyaccounttree.moc"
// vim:cin:si:ai:et:ts=2:sw=2: