summaryrefslogtreecommitdiff
path: root/noncore/apps/checkbook/checkbook.cpp
Side-by-side diff
Diffstat (limited to 'noncore/apps/checkbook/checkbook.cpp') (more/less context) (show whitespace changes)
-rw-r--r--noncore/apps/checkbook/checkbook.cpp93
1 files changed, 79 insertions, 14 deletions
diff --git a/noncore/apps/checkbook/checkbook.cpp b/noncore/apps/checkbook/checkbook.cpp
index ab25516..09b0b46 100644
--- a/noncore/apps/checkbook/checkbook.cpp
+++ b/noncore/apps/checkbook/checkbook.cpp
@@ -3,3 +3,3 @@
=.
-             .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org>
+             .=l. Copyright (c) 2002 Dan Williams <drw@handhelds.org>
           .>+-=
@@ -41,2 +41,3 @@
#include <qfile.h>
+#include <qfontmetrics.h>
#include <qlabel.h>
@@ -44,3 +45,2 @@
#include <qlineedit.h>
-#include <qlistview.h>
#include <qmultilineedit.h>
@@ -203,4 +203,5 @@ QWidget *Checkbook::initTransactions()
QWhatsThis::add( tranTable, tr( "This is a listing of all transactions entered for this checkbook.\n\nTo sort entries by a specific field, click on the column name." ) );
- tranTable->addColumn( tr( "ID" ) );
+ tranTable->addColumn( tr( "Num" ) );
tranTable->addColumn( tr( "Date" ) );
+ //tranTable->addColumn( tr( "Cleared" ) );
tranTable->addColumn( tr( "Description" ) );
@@ -209,2 +210,3 @@ QWidget *Checkbook::initTransactions()
tranTable->setAllColumnsShowFocus( TRUE );
+ tranTable->setSorting( 1 );
layout->addMultiCellWidget( tranTable, 1, 1, 0, 2 );
@@ -316,4 +318,3 @@ void Checkbook::loadCheckbook()
// Add to transaction table
- ( void ) new QListViewItem( tranTable, QString::number( i ), tran->datestr(),
- trandesc, stramount );
+ ( void ) new CBListItem( tranTable, tran->number(), tran->datestr(), trandesc, stramount );
}
@@ -336,7 +337,10 @@ void Checkbook::adjustBalance( float amount )
-TranInfo *Checkbook::findTranByID( int id )
+TranInfo *Checkbook::findTran( const QString &checknum, const QString &date, const QString &desc )
{
TranInfo *traninfo = transactions.first();
- while ( traninfo && traninfo->id() != id )
+ while ( traninfo )
{
+ if ( traninfo->number() == checknum && traninfo->datestr() == date &&
+ traninfo->desc() == desc )
+ break;
traninfo = transactions.next();
@@ -420,4 +424,4 @@ void Checkbook::slotNewTran()
// Add to transaction table
- ( void ) new QListViewItem( tranTable, QString::number( highTranNum ),
- traninfo->datestr(), traninfo->desc(), stramount );
+ ( void ) new CBListItem( tranTable, traninfo->number(), traninfo->datestr(), traninfo->desc(),
+ stramount );
@@ -441,4 +445,3 @@ void Checkbook::slotEditTran()
- int tranid = curritem->text( 0 ).toInt( &ok );
- TranInfo *traninfo = findTranByID( tranid );
+ TranInfo *traninfo = findTran( curritem->text( 0 ), curritem->text( 1 ), curritem->text( 2 ) );
float origamt = traninfo->amount();
@@ -484,5 +487,3 @@ void Checkbook::slotDeleteTran()
- bool ok;
- int tranid = curritem->text( 0 ).toInt( &ok );
- TranInfo *traninfo = findTranByID( tranid );
+ TranInfo *traninfo = findTran( curritem->text( 0 ), curritem->text( 1 ), curritem->text( 2 ) );
@@ -596 +597,65 @@ void Checkbook::drawCategoryChart( bool withdrawals )
}
+
+CBListItem::CBListItem( QListView *parent, QString label1, QString label2,
+ QString label3, QString label4, QString label5, QString label6, QString label7,
+ QString label8 )
+ : QListViewItem( parent, label1, label2, label3, label4, label5, label6, label7, label8 )
+{
+ m_known = FALSE;
+ owner = parent;
+}
+
+void CBListItem::paintCell( QPainter *p, const QColorGroup &cg, int column, int width, int align )
+{
+ QColorGroup _cg = cg;
+ const QPixmap *pm = listView()->viewport()->backgroundPixmap();
+ if ( pm && !pm->isNull() )
+ {
+ _cg.setBrush( QColorGroup::Base, QBrush( cg.base(), *pm ) );
+ p->setBrushOrigin( -listView()->contentsX(), -listView()->contentsY() );
+ }
+ else if ( isAltBackground() )
+ _cg.setColor(QColorGroup::Base, QColor( 200, 255, 200 ) );
+
+ QListViewItem::paintCell(p, _cg, column, width, align);
+}
+
+bool CBListItem::isAltBackground()
+{
+ QListView *lv = static_cast<QListView *>( listView() );
+ if ( lv )
+ {
+ CBListItem *above = 0;
+ above = (CBListItem *)( itemAbove() );
+ m_known = above ? above->m_known : true;
+ if ( m_known )
+ {
+ m_odd = above ? !above->m_odd : false;
+ }
+ else
+ {
+ CBListItem *item;
+ bool previous = true;
+ if ( parent() )
+ {
+ item = (CBListItem *)( parent() );
+ if ( item )
+ previous = item->m_odd;
+ item = (CBListItem *)( parent()->firstChild() );
+ }
+ else
+ {
+ item = (CBListItem *)( lv->firstChild() );
+ }
+
+ while(item)
+ {
+ item->m_odd = previous = !previous;
+ item->m_known = true;
+ item = (CBListItem *)( item->nextSibling() );
+ }
+ }
+ return m_odd;
+ }
+ return false;
+} \ No newline at end of file