-rw-r--r-- | noncore/apps/checkbook/checkbook.cpp | 59 | ||||
-rw-r--r-- | noncore/apps/checkbook/checkbook.h | 5 | ||||
-rw-r--r-- | noncore/apps/checkbook/checkbook.pro | 42 | ||||
-rw-r--r-- | noncore/apps/checkbook/graph.cpp | 112 | ||||
-rw-r--r-- | noncore/apps/checkbook/graph.h | 63 | ||||
-rw-r--r-- | noncore/apps/checkbook/graphinfo.cpp | 84 | ||||
-rw-r--r-- | noncore/apps/checkbook/graphinfo.h | 82 | ||||
-rw-r--r-- | noncore/apps/checkbook/mainwindow.cpp | 11 | ||||
-rw-r--r-- | noncore/apps/checkbook/traninfo.cpp | 25 | ||||
-rw-r--r-- | noncore/apps/checkbook/traninfo.h | 1 | ||||
-rw-r--r-- | noncore/apps/checkbook/transaction.cpp | 4 |
11 files changed, 430 insertions, 58 deletions
diff --git a/noncore/apps/checkbook/checkbook.cpp b/noncore/apps/checkbook/checkbook.cpp index 4b81c6d..20b42b5 100644 --- a/noncore/apps/checkbook/checkbook.cpp +++ b/noncore/apps/checkbook/checkbook.cpp @@ -30,2 +30,4 @@ #include "transaction.h" +#include "graph.h" +#include "graphinfo.h" @@ -52,3 +54,5 @@ Checkbook::Checkbook( QWidget *parent, const QString &n, const QString &fd, char name = n; - filename = fd + name + ".qcb"; + filename = fd; + filename.append( name ); + filename.append( ".qcb" ); filedir = fd; @@ -59,3 +63,6 @@ Checkbook::Checkbook( QWidget *parent, const QString &n, const QString &fd, char { - setCaption( name + " - " + tr( "Checkbook" ) ); + QString tempstr = name; + tempstr.append( " - " ); + tempstr.append( tr( "Checkbook" ) ); + setCaption( tempstr ); } @@ -244,9 +251,10 @@ QWidget *Checkbook::initCharts() - QWidget *graphWidget = new QWidget( control ); - QWhatsThis::add( graphWidget, tr( "Graph not implemented yet." ) ); + GraphInfo* info = new GraphInfo( GraphInfo::BarChart, 0x0, tr( "Graph Title" ), + tr( "X-Axis" ), tr( "Y-Axis" ) ); + graphWidget = new Graph( control, info ); + QWhatsThis::add( graphWidget, tr( "Charting is not implemented yet." ) ); layout->addMultiCellWidget( graphWidget, 0, 0, 0, 1 ); - graphWidget->setBackgroundMode( QWidget::PaletteBase ); QPushButton *btn = new QPushButton( Resource::loadPixmap( "checkbook/drawbtn" ), tr( "Draw" ), control ); - QWhatsThis::add( btn, tr( "Click here to draw the graph." ) ); + QWhatsThis::add( btn, tr( "Click here to draw the chart." ) ); connect( btn, SIGNAL( clicked() ), this, SLOT( slotDrawGraph() ) ); @@ -278,4 +286,4 @@ void Checkbook::loadCheckbook() bankEdit->setText( config.readEntry( "Bank", "" ) ); - acctNumEdit->setText( config.readEntry( "Number", "" ) ); - pinNumEdit->setText( config.readEntry( "PINNumber", "" ) ); + acctNumEdit->setText( config.readEntryCrypt( "Number", "" ) ); + pinNumEdit->setText( config.readEntryCrypt( "PINNumber", "" ) ); balanceEdit->setText( config.readEntry( "Balance", "0.0" ) ); @@ -311,7 +319,3 @@ void Checkbook::loadCheckbook() // Add to transaction table - QDate date = tran->date(); - QString datestr = QString::number( date.month() ) + "/" + - QString::number( date.day() ) + "/" + - QString::number( date.year() ); - ( void ) new QListViewItem( tranTable, QString::number( i ), datestr, + ( void ) new QListViewItem( tranTable, QString::number( i ), tran->datestr(), trandesc, stramount ); @@ -359,4 +363,4 @@ void Checkbook::accept() config->writeEntry( "Bank", bankEdit->text() ); - config->writeEntry( "Number", acctNumEdit->text() ); - config->writeEntry( "PINNumber", pinNumEdit->text() ); + config->writeEntryCrypt( "Number", acctNumEdit->text() ); + config->writeEntryCrypt( "PINNumber", pinNumEdit->text() ); config->writeEntry( "Balance", balanceEdit->text() ); @@ -381,4 +385,9 @@ void Checkbook::slotNameChanged( const QString &newname ) name = newname; - filename = filedir + newname + ".qcb"; - setCaption( name + " - " + tr( "Checkbook" ) ); + filename = filedir; + filename.append( newname ); + filename.append( ".qcb" ); + QString tempstr = name; + tempstr.append( " - " ); + tempstr.append( tr( "Checkbook" ) ); + setCaption( tempstr ); } @@ -416,9 +425,4 @@ void Checkbook::slotNewTran() // Add to transaction table - - QDate date = traninfo->date(); - QString datestr = QString::number( date.month() ) + "/" + - QString::number( date.day() ) + "/" + - QString::number( date.year() ); - ( void ) new QListViewItem( tranTable, QString::number( highTranNum ), datestr, - traninfo->desc(), stramount ); + ( void ) new QListViewItem( tranTable, QString::number( highTranNum ), + traninfo->datestr(), traninfo->desc(), stramount ); @@ -456,7 +460,3 @@ void Checkbook::slotEditTran() { - QDate date = traninfo->date(); - QString datestr = QString::number( date.month() ) + "/" + - QString::number( date.day() ) + "/" + - QString::number( date.year() ); - curritem->setText( 1, datestr ); + curritem->setText( 1, traninfo->datestr() ); @@ -491,3 +491,2 @@ void Checkbook::slotDeleteTran() int tranid = curritem->text( 0 ).toInt( &ok ); - //TranInfo *traninfo = transactions.at( tranid - 1 ); TranInfo *traninfo = findTranByID( tranid ); diff --git a/noncore/apps/checkbook/checkbook.h b/noncore/apps/checkbook/checkbook.h index a86c0f9..01f1115 100644 --- a/noncore/apps/checkbook/checkbook.h +++ b/noncore/apps/checkbook/checkbook.h @@ -37,2 +37,3 @@ class OTabWidget; +class Graph; class QComboBox; @@ -85,5 +86,5 @@ class Checkbook : public QDialog // Charts tab - QWidget *initCharts(); + QWidget *initCharts(); //QComboBox *graphList; - QWidget *graphWidget; + Graph *graphWidget; diff --git a/noncore/apps/checkbook/checkbook.pro b/noncore/apps/checkbook/checkbook.pro index 07cc012..bd69939 100644 --- a/noncore/apps/checkbook/checkbook.pro +++ b/noncore/apps/checkbook/checkbook.pro @@ -3,10 +3,14 @@ CONFIG = qt warn_on release HEADERS = mainwindow.h \ - traninfo.h \ - checkbook.h \ - transaction.h -SOURCES = main.cpp \ - mainwindow.cpp \ - traninfo.cpp \ - checkbook.cpp \ - transaction.cpp + traninfo.h \ + graphinfo.h \ + checkbook.h \ + transaction.h \ + graph.h +SOURCES = main.cpp \ + mainwindow.cpp \ + traninfo.cpp \ + graphinfo.cpp \ + checkbook.cpp \ + transaction.cpp \ + graph.cpp INCLUDEPATH += $(OPIEDIR)/include @@ -18,15 +22,15 @@ DESTDIR = $(OPIEDIR)/bin TRANSLATIONS = ../../../i18n/de/checkbook.ts \ - ../../../i18n/en/checkbook.ts \ - ../../../i18n/es/checkbook.ts \ - ../../../i18n/fr/checkbook.ts \ - ../../../i18n/hu/checkbook.ts \ - ../../../i18n/ja/checkbook.ts \ - ../../../i18n/ko/checkbook.ts \ - ../../../i18n/no/checkbook.ts \ - ../../../i18n/pl/checkbook.ts \ - ../../../i18n/pt/checkbook.ts \ + ../../../i18n/en/checkbook.ts \ + ../../../i18n/es/checkbook.ts \ + ../../../i18n/fr/checkbook.ts \ + ../../../i18n/hu/checkbook.ts \ + ../../../i18n/ja/checkbook.ts \ + ../../../i18n/ko/checkbook.ts \ + ../../../i18n/no/checkbook.ts \ + ../../../i18n/pl/checkbook.ts \ + ../../../i18n/pt/checkbook.ts \ ../../../i18n/pt_BR/checkbook.ts \ - ../../../i18n/sl/checkbook.ts \ + ../../../i18n/sl/checkbook.ts \ ../../../i18n/zh_CN/checkbook.ts \ ../../../i18n/zh_TW/checkbook.ts \ - ../../../i18n/it/checkbook.ts + ../../../i18n/it/checkbook.ts diff --git a/noncore/apps/checkbook/graph.cpp b/noncore/apps/checkbook/graph.cpp new file mode 100644 index 0000000..bae92da --- a/dev/null +++ b/noncore/apps/checkbook/graph.cpp @@ -0,0 +1,112 @@ +/* + This file is part of the OPIE Project + =. + .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org> + .>+-= + _;:, .> :=|. This file is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This file is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General +..}^=.= = ; Public License for more details. +++= -. .` .: + : = ...= . :.=- You should have received a copy of the GNU + -. .:....=;==+<; General Public License along with this file; + -_. . . )=. = see the file COPYING. If not, write to the + -- :-=` Free Software Foundation, Inc., + 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include "graph.h" +#include "graphinfo.h" + +#include <qpainter.h> + +Graph::Graph( QWidget *parent, GraphInfo *d, const QString &name, int flags ) + : QWidget( parent, name, flags ) +{ + setBackgroundMode( QWidget::PaletteBase ); + + data = d; + + graph.setOptimization( QPixmap::BestOptim ); +} + +void Graph::setGraphInfo( GraphInfo *d ) +{ + data = d; +} + +void Graph::drawGraph( bool regen ) +{ + if ( regen ) + { + initGraph(); + } + QPainter p( this ); + p.drawPixmap( 0, 0, graph ); +} + +void Graph::paintEvent( QPaintEvent * ) +{ + drawGraph( FALSE ); +} + +void Graph::resizeEvent( QResizeEvent * ) +{ + drawGraph( TRUE ); +} + +void Graph::initGraph() +{ + graph.resize( width(), height() ); + graph.fill( QColor( 255, 255, 255 ) ); + + if ( !data ) + { + return; + } + + // Any common stuff here (titles, ???) + + switch ( data->graphType() ) + { + case GraphInfo::BarChart : + { + drawBarChart(); + } + break; + case GraphInfo::LineChart : + { + drawLineChart(); + } + break; + case GraphInfo::PieChart : + { + drawPieChart(); + } + }; +} + +void Graph::drawBarChart() +{ + //Find max value in GraphInfo->dataPoints() - make function in GraphInfo!!! +} + +void Graph::drawLineChart() +{ +} + +void Graph::drawPieChart() +{ +} + diff --git a/noncore/apps/checkbook/graph.h b/noncore/apps/checkbook/graph.h new file mode 100644 index 0000000..7379be7 --- a/dev/null +++ b/noncore/apps/checkbook/graph.h @@ -0,0 +1,63 @@ +/* + This file is part of the OPIE Project + =. + .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org> + .>+-= + _;:, .> :=|. This file is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This file is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General +..}^=.= = ; Public License for more details. +++= -. .` .: + : = ...= . :.=- You should have received a copy of the GNU + -. .:....=;==+<; General Public License along with this file; + -_. . . )=. = see the file COPYING. If not, write to the + -- :-=` Free Software Foundation, Inc., + 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#ifndef GRAPH_H +#define GRAPH_H + +#include <qpixmap.h> +#include <qwidget.h> + +class GraphInfo; + +class Graph : public QWidget +{ + Q_OBJECT + + public: + Graph( QWidget * = 0x0, GraphInfo * = 0x0, const QString & = 0x0, int = 0 ); + + void setGraphInfo( GraphInfo * ); + + void drawGraph( bool = FALSE ); + + protected: + void paintEvent( QPaintEvent * ); + void resizeEvent( QResizeEvent * ); + + private: + GraphInfo *data; + + QPixmap graph; + + void initGraph(); + void drawBarChart(); + void drawLineChart(); + void drawPieChart(); +}; + +#endif diff --git a/noncore/apps/checkbook/graphinfo.cpp b/noncore/apps/checkbook/graphinfo.cpp new file mode 100644 index 0000000..7b06bdb --- a/dev/null +++ b/noncore/apps/checkbook/graphinfo.cpp @@ -0,0 +1,84 @@ +/* + This file is part of the OPIE Project + =. + .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org> + .>+-= + _;:, .> :=|. This file is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This file is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General +..}^=.= = ; Public License for more details. +++= -. .` .: + : = ...= . :.=- You should have received a copy of the GNU + -. .:....=;==+<; General Public License along with this file; + -_. . . )=. = see the file COPYING. If not, write to the + -- :-=` Free Software Foundation, Inc., + 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#include "graphinfo.h" + +GraphInfo::GraphInfo( GraphType type, DataPointList *data, const QString &title, + const QString &xtitle, const QString &ytitle ) +{ + t = type; + d = data; + gt = title; + xt = xtitle; + yt = ytitle; +} + +GraphInfo::GraphType GraphInfo::graphType() +{ + return t; +} + +void GraphInfo::setGraphType( GraphType type ) +{ + t = type; +} + +DataPointList *GraphInfo::dataPoints() +{ + return d; +} + +void GraphInfo::setDataPoints( DataPointList *data ) +{ + d = data; +} + +float GraphInfo::maxValue() +{ + float max; + +} + +float GraphInfo::minValue() +{ +} + +void GraphInfo::setGraphTitle( const QString &title ) +{ + gt = title; +} + +void GraphInfo::setXAxisTitle( const QString &xtitle ) +{ + xt = xtitle; +} + +void GraphInfo::setYAxisTitle( const QString &ytitle ) +{ + yt = ytitle; +} diff --git a/noncore/apps/checkbook/graphinfo.h b/noncore/apps/checkbook/graphinfo.h new file mode 100644 index 0000000..4ad1dc9 --- a/dev/null +++ b/noncore/apps/checkbook/graphinfo.h @@ -0,0 +1,82 @@ +/* + This file is part of the OPIE Project + =. + .=l. Copyright (c) 2002 Dan Williams <williamsdr@acm.org> + .>+-= + _;:, .> :=|. This file is free software; you can +.> <`_, > . <= redistribute it and/or modify it under +:`=1 )Y*s>-.-- : the terms of the GNU General Public +.="- .-=="i, .._ License as published by the Free Software + - . .-<_> .<> Foundation; either version 2 of the License, + ._= =} : or (at your option) any later version. + .%`+i> _;_. + .i_,=:_. -<s. This file is distributed in the hope that + + . -:. = it will be useful, but WITHOUT ANY WARRANTY; + : .. .:, . . . without even the implied warranty of + =_ + =;=|` MERCHANTABILITY or FITNESS FOR A + _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General +..}^=.= = ; Public License for more details. +++= -. .` .: + : = ...= . :.=- You should have received a copy of the GNU + -. .:....=;==+<; General Public License along with this file; + -_. . . )=. = see the file COPYING. If not, write to the + -- :-=` Free Software Foundation, Inc., + 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. + +*/ + +#ifndef GRAPHINFO_H +#define GRAPHINFO_H + +#include <qlist.h> +#include <qstringlist.h> + +class DataPointInfo +{ + public: + DataPointInfo() + : l( 0x0 ), v( 0.0 ) {} + DataPointInfo( const QString &label, float value ) + : l( label ), v( value ) {} + + const QString &label() { return l; } + float value() { return v; } + + private: + QString l; + float v; +}; + +typedef QList<DataPointInfo> DataPointList; + +class GraphInfo +{ + public: + enum GraphType { BarChart, LineChart, PieChart }; + + GraphInfo( GraphType = BarChart, DataPointList * = 0x0, + const QString & = 0x0, const QString & = 0x0, const QString & = 0x0 ); + + GraphInfo::GraphType graphType(); + void setGraphType( GraphType ); + + DataPointList *dataPoints(); + void setDataPoints( DataPointList * ); + + float maxValue(); + float minValue(); + + void setGraphTitle( const QString & ); + void setXAxisTitle( const QString & ); + void setYAxisTitle( const QString & ); + + private: + GraphType t; + DataPointList *d; + QString gt; + QString xt; + QString yt; +}; + +#endif diff --git a/noncore/apps/checkbook/mainwindow.cpp b/noncore/apps/checkbook/mainwindow.cpp index ead17b4..2eb8396 100644 --- a/noncore/apps/checkbook/mainwindow.cpp +++ b/noncore/apps/checkbook/mainwindow.cpp @@ -139,3 +139,6 @@ void MainWindow::slotEdit() - QFile f( cbDir + currname + ".qcb" ); + QString tempstr = cbDir; + tempstr.append( currname ); + tempstr.append( ".qcb" ); + QFile f( tempstr ); if ( f.exists() ) @@ -153,4 +156,6 @@ void MainWindow::slotDelete() { - QString name = cbDir + cbList->currentText() + ".qcb"; - QFile f( name ); + QString tempstr = cbDir; + tempstr.append( cbList->currentText() ); + tempstr.append( ".qcb" ); + QFile f( tempstr ); if ( f.exists() ) diff --git a/noncore/apps/checkbook/traninfo.cpp b/noncore/apps/checkbook/traninfo.cpp index 5a770b0..460466c 100644 --- a/noncore/apps/checkbook/traninfo.cpp +++ b/noncore/apps/checkbook/traninfo.cpp @@ -32,2 +32,4 @@ +QString tempstr; + TranInfo::TranInfo( int id, const QString &desc, const QDate &date, bool withdrawal, @@ -119,2 +121,17 @@ TranInfo::TranInfo( Config config, int entry ) +const QString &TranInfo::datestr() +{ + tempstr = QString::number( td.year() ); + tempstr.append( '/' ); + int tempfield = td.month(); + if ( tempfield < 10 ) tempstr.append( '0' ); + tempstr.append( QString::number( tempfield ) ); + tempstr.append( '/' ); + tempfield = td.day(); + if ( tempfield < 10 ) tempstr.append( '0' ); + tempstr.append( QString::number( tempfield ) ); + + return( tempstr ); +} + void TranInfo::write( Config *config, int entry ) @@ -125,5 +142,7 @@ void TranInfo::write( Config *config, int entry ) - QString tempstr = QString::number( td.month() ) + "/" + - QString::number( td.day() ) + "/" + - QString::number( td.year() ); + tempstr = QString::number( td.month() ); + tempstr.append( '/' ); + tempstr.append( QString::number( td.day() ) ); + tempstr.append( '/' ); + tempstr.append( QString::number( td.year() ) ); config->writeEntry( "Date", tempstr ); diff --git a/noncore/apps/checkbook/traninfo.h b/noncore/apps/checkbook/traninfo.h index 1743ff7..e944c29 100644 --- a/noncore/apps/checkbook/traninfo.h +++ b/noncore/apps/checkbook/traninfo.h @@ -49,2 +49,3 @@ class TranInfo const QDate &date() const { return td; } + const QString &datestr(); bool withdrawal() const { return w; } diff --git a/noncore/apps/checkbook/transaction.cpp b/noncore/apps/checkbook/transaction.cpp index 82baec9..a921491 100644 --- a/noncore/apps/checkbook/transaction.cpp +++ b/noncore/apps/checkbook/transaction.cpp @@ -51,3 +51,5 @@ Transaction::Transaction( QWidget *parent, const QString &acctname, TranInfo *in { - setCaption( tr( "Transaction for " ) + acctname ); + QString tempstr = tr( "Transaction for " ); + tempstr.append( acctname ); + setCaption( tempstr ); |