diff options
Diffstat (limited to 'kmymoney2/widgets/kmymoneychecklistitem.cpp')
-rw-r--r-- | kmymoney2/widgets/kmymoneychecklistitem.cpp | 151 |
1 files changed, 151 insertions, 0 deletions
diff --git a/kmymoney2/widgets/kmymoneychecklistitem.cpp b/kmymoney2/widgets/kmymoneychecklistitem.cpp new file mode 100644 index 0000000..b292567 --- /dev/null +++ b/kmymoney2/widgets/kmymoneychecklistitem.cpp @@ -0,0 +1,151 @@ +/*************************************************************************** + kmymoneychecklistitem + ------------------- + begin : Wed Jun 28 2006 + copyright : (C) 2006 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 <tqfont.h> +#include <tqpainter.h> + +// ---------------------------------------------------------------------------- +// KDE Includes + +// ---------------------------------------------------------------------------- +// Project Includes + +#include "kmymoneychecklistitem.h" +#include "kmymoneylistviewitem.h" +#include "../kmymoneyglobalsettings.h" + +KMyMoneyCheckListItem::KMyMoneyCheckListItem(TQListView* parent, const TQString& txt, const TQString& key, const TQString& id, Type type) : + TQCheckListItem(parent, txt, type), + m_key(key), + m_id(id), + m_isOdd(0), + m_isKnown(0) +{ + setOn(true); + if(key.isEmpty()) + m_key = txt; +} + +KMyMoneyCheckListItem::KMyMoneyCheckListItem(TQListViewItem* parent, const TQString& txt, const TQString& key, const TQString& id, Type type) : + TQCheckListItem(parent, txt, type), + m_key(key), + m_id(id), + m_isOdd(0), + m_isKnown(0) +{ + setOn(true); + if(key.isEmpty()) + m_key = txt; +} + +KMyMoneyCheckListItem::KMyMoneyCheckListItem(TQListView* parent, TQListViewItem* after, const TQString& txt, const TQString& key, const TQString& id, Type type) : + TQCheckListItem(parent, after, txt, type), + m_key(key), + m_id(id), + m_isOdd(0), + m_isKnown(0) +{ + setOn(true); + if(key.isEmpty()) + m_key = txt; +} + +KMyMoneyCheckListItem::~KMyMoneyCheckListItem() +{ +} + +TQString KMyMoneyCheckListItem::key(int column, bool ascending) const +{ + Q_UNUSED(ascending); + + if(column == 0) + return m_key[0] + text(0); + return m_key.mid(1); +} + +void KMyMoneyCheckListItem::stateChange(bool state) +{ + emit stateChanged(state); +} + +void KMyMoneyCheckListItem::paintCell(TQPainter *p, const TQColorGroup &cg, int column, int width, int alignment) +{ + TQColorGroup _cg = cg; + _cg.setColor(TQColorGroup::Base, backgroundColor()); + + // write the groups in bold + TQFont f = p->font(); + f.setBold(!isSelectable()); + p->setFont(f); + + TQCheckListItem::paintCell(p, _cg, column, width, alignment); +} + +const TQColor KMyMoneyCheckListItem::backgroundColor() +{ + return isAlternate() ? KMyMoneyGlobalSettings::listBGColor() : KMyMoneyGlobalSettings::listColor(); +} + +bool KMyMoneyCheckListItem::isAlternate(void) +{ +// logic taken from TDEListViewItem::isAlternate() + KMyMoneyCheckListItem* ciAbove; + KMyMoneyListViewItem* liAbove; + ciAbove = dynamic_cast<KMyMoneyCheckListItem*> (itemAbove()); + liAbove = dynamic_cast<KMyMoneyListViewItem*> (itemAbove()); + + m_isKnown = ciAbove ? ciAbove->m_isKnown : (liAbove ? liAbove->m_isKnown : true); + if(m_isKnown) { + m_isOdd = ciAbove ? !ciAbove->m_isOdd : (liAbove ? !liAbove->m_isOdd : false); + } else { + KMyMoneyCheckListItem* clItem; + KMyMoneyListViewItem* liItem; + bool previous = true; + if(TQListViewItem::parent()) { + clItem = dynamic_cast<KMyMoneyCheckListItem *>(TQListViewItem::parent()); + liItem = dynamic_cast<KMyMoneyListViewItem*>(TQListViewItem::parent()); + if(clItem) + previous = clItem->m_isOdd; + else + previous = liItem->m_isOdd; + clItem = dynamic_cast<KMyMoneyCheckListItem *>(TQListViewItem::parent()->firstChild()); + liItem = dynamic_cast<KMyMoneyListViewItem*>(TQListViewItem::parent()->firstChild()); + } else { + clItem = dynamic_cast<KMyMoneyCheckListItem *>(listView()->firstChild()); + liItem = dynamic_cast<KMyMoneyListViewItem*>(listView()->firstChild()); + } + while(clItem || liItem) { + if(clItem) { + clItem->m_isOdd = previous = !previous; + clItem->m_isKnown = true; + liItem = dynamic_cast<KMyMoneyListViewItem *>(clItem->nextSibling()); + clItem = dynamic_cast<KMyMoneyCheckListItem *>(clItem->nextSibling()); + } else if(liItem) { + liItem->m_isOdd = previous = !previous; + liItem->m_isKnown = true; + clItem = dynamic_cast<KMyMoneyCheckListItem *>(liItem->nextSibling()); + liItem = dynamic_cast<KMyMoneyListViewItem *>(liItem->nextSibling()); + } + } + } + return m_isOdd; +} + +#include "kmymoneychecklistitem.moc" |