-rw-r--r-- | noncore/apps/checkbook/checkbook.cpp | 96 | ||||
-rw-r--r-- | noncore/apps/checkbook/checkbook.h | 9 | ||||
-rw-r--r-- | noncore/apps/checkbook/checkbook.pro | 2 | ||||
-rw-r--r-- | noncore/apps/checkbook/mainwindow.cpp | 26 | ||||
-rw-r--r-- | noncore/apps/checkbook/mainwindow.h | 2 | ||||
-rw-r--r-- | noncore/apps/checkbook/password.cpp | 99 | ||||
-rw-r--r-- | noncore/apps/checkbook/password.h | 55 | ||||
-rw-r--r-- | noncore/apps/checkbook/transaction.cpp | 2 | ||||
-rw-r--r-- | noncore/apps/checkbook/transaction.h | 4 |
9 files changed, 264 insertions, 31 deletions
diff --git a/noncore/apps/checkbook/checkbook.cpp b/noncore/apps/checkbook/checkbook.cpp index 09b0b46..5a6d607 100644 --- a/noncore/apps/checkbook/checkbook.cpp +++ b/noncore/apps/checkbook/checkbook.cpp | |||
@@ -21,43 +21,45 @@ | |||
21 | -. .:....=;==+<; General Public License along with this file; | 21 | -. .:....=;==+<; General Public License along with this file; |
22 | -_. . . )=. = see the file COPYING. If not, write to the | 22 | -_. . . )=. = see the file COPYING. If not, write to the |
23 | -- :-=` Free Software Foundation, Inc., | 23 | -- :-=` Free Software Foundation, Inc., |
24 | 59 Temple Place - Suite 330, | 24 | 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "checkbook.h" | 29 | #include "checkbook.h" |
30 | #include "transaction.h" | 30 | #include "transaction.h" |
31 | #include "graph.h" | 31 | #include "graph.h" |
32 | #include "graphinfo.h" | 32 | #include "graphinfo.h" |
33 | #include "password.h" | ||
33 | 34 | ||
34 | #include <opie/otabwidget.h> | 35 | #include <opie/otabwidget.h> |
35 | #include <qpe/config.h> | 36 | #include <qpe/config.h> |
36 | #include <qpe/qpeapplication.h> | 37 | #include <qpe/qpeapplication.h> |
37 | #include <qpe/qpemessagebox.h> | 38 | #include <qpe/qpemessagebox.h> |
38 | #include <qpe/resource.h> | 39 | #include <qpe/resource.h> |
39 | 40 | ||
41 | #include <qcheckbox.h> | ||
40 | #include <qcombobox.h> | 42 | #include <qcombobox.h> |
41 | #include <qfile.h> | 43 | #include <qfile.h> |
42 | #include <qfontmetrics.h> | 44 | #include <qfontmetrics.h> |
43 | #include <qlabel.h> | 45 | #include <qlabel.h> |
44 | #include <qlayout.h> | 46 | #include <qlayout.h> |
45 | #include <qlineedit.h> | 47 | #include <qlineedit.h> |
46 | #include <qmultilineedit.h> | 48 | #include <qmultilineedit.h> |
47 | #include <qpushbutton.h> | 49 | #include <qpushbutton.h> |
48 | #include <qwhatsthis.h> | 50 | #include <qwhatsthis.h> |
49 | #include <qwidget.h> | 51 | #include <qwidget.h> |
50 | 52 | ||
51 | Checkbook::Checkbook( QWidget *parent, const QString &n, const QString &fd, char symbol ) | 53 | Checkbook::Checkbook( QWidget *parent, const QString &n, const QString &fd, const QString &symbol ) |
52 | : QDialog( parent, 0, TRUE, WStyle_ContextHelp ) | 54 | : QDialog( parent, 0, TRUE, WStyle_ContextHelp ) |
53 | { | 55 | { |
54 | name = n; | 56 | name = n; |
55 | filename = fd; | 57 | filename = fd; |
56 | filename.append( name ); | 58 | filename.append( name ); |
57 | filename.append( ".qcb" ); | 59 | filename.append( ".qcb" ); |
58 | filedir = fd; | 60 | filedir = fd; |
59 | currencySymbol = symbol; | 61 | currencySymbol = symbol; |
60 | currBalance = 0.0; | 62 | currBalance = 0.0; |
61 | 63 | ||
62 | if ( name != "" ) | 64 | if ( name != "" ) |
63 | { | 65 | { |
@@ -107,90 +109,97 @@ QWidget *Checkbook::initInfo() | |||
107 | QScrollView *sv = new QScrollView( control ); | 109 | QScrollView *sv = new QScrollView( control ); |
108 | vb->addWidget( sv, 0, 0 ); | 110 | vb->addWidget( sv, 0, 0 ); |
109 | sv->setResizePolicy( QScrollView::AutoOneFit ); | 111 | sv->setResizePolicy( QScrollView::AutoOneFit ); |
110 | sv->setFrameStyle( QFrame::NoFrame ); | 112 | sv->setFrameStyle( QFrame::NoFrame ); |
111 | 113 | ||
112 | QWidget *container = new QWidget( sv->viewport() ); | 114 | QWidget *container = new QWidget( sv->viewport() ); |
113 | sv->addChild( container ); | 115 | sv->addChild( container ); |
114 | 116 | ||
115 | QGridLayout *layout = new QGridLayout( container ); | 117 | QGridLayout *layout = new QGridLayout( container ); |
116 | layout->setSpacing( 2 ); | 118 | layout->setSpacing( 2 ); |
117 | layout->setMargin( 4 ); | 119 | layout->setMargin( 4 ); |
118 | 120 | ||
121 | // Password protection | ||
122 | passwordCB = new QCheckBox( tr( "Password protect" ), container ); | ||
123 | QWhatsThis::add( passwordCB, tr( "Click here to enable/disable password protection of this checkbook." ) ); | ||
124 | connect( passwordCB, SIGNAL( clicked() ), this, SLOT( slotPasswordClicked() ) ); | ||
125 | layout->addMultiCellWidget( passwordCB, 0, 0, 0, 1 ); | ||
126 | |||
119 | // Account name | 127 | // Account name |
120 | QLabel *label = new QLabel( tr( "Name:" ), container ); | 128 | QLabel *label = new QLabel( tr( "Name:" ), container ); |
121 | QWhatsThis::add( label, tr( "Enter name of checkbook here." ) ); | 129 | QWhatsThis::add( label, tr( "Enter name of checkbook here." ) ); |
122 | layout->addWidget( label, 0, 0 ); | 130 | layout->addWidget( label, 1, 0 ); |
123 | nameEdit = new QLineEdit( container ); | 131 | nameEdit = new QLineEdit( container ); |
124 | QWhatsThis::add( nameEdit, tr( "Enter name of checkbook here." ) ); | 132 | QWhatsThis::add( nameEdit, tr( "Enter name of checkbook here." ) ); |
125 | connect( nameEdit, SIGNAL( textChanged( const QString & ) ), | 133 | connect( nameEdit, SIGNAL( textChanged( const QString & ) ), |
126 | this, SLOT( slotNameChanged( const QString & ) ) ); | 134 | this, SLOT( slotNameChanged( const QString & ) ) ); |
127 | layout->addWidget( nameEdit, 0, 1 ); | 135 | layout->addWidget( nameEdit, 1, 1 ); |
128 | 136 | ||
129 | // Type of account | 137 | // Type of account |
130 | label = new QLabel( tr( "Type:" ), container ); | 138 | label = new QLabel( tr( "Type:" ), container ); |
131 | QWhatsThis::add( label, tr( "Select type of checkbook here." ) ); | 139 | QWhatsThis::add( label, tr( "Select type of checkbook here." ) ); |
132 | layout->addWidget( label, 1, 0 ); | 140 | layout->addWidget( label, 2, 0 ); |
133 | typeList = new QComboBox( container ); | 141 | typeList = new QComboBox( container ); |
134 | QWhatsThis::add( typeList, tr( "Select type of checkbook here." ) ); | 142 | QWhatsThis::add( typeList, tr( "Select type of checkbook here." ) ); |
135 | typeList->insertItem( tr( "Savings" ) ); // 0 | 143 | typeList->insertItem( tr( "Savings" ) ); // 0 |
136 | typeList->insertItem( tr( "Checking" ) ); // 1 | 144 | typeList->insertItem( tr( "Checking" ) ); // 1 |
137 | typeList->insertItem( tr( "CD" ) ); // 2 | 145 | typeList->insertItem( tr( "CD" ) ); // 2 |
138 | typeList->insertItem( tr( "Money market" ) );// 3 | 146 | typeList->insertItem( tr( "Money market" ) );// 3 |
139 | typeList->insertItem( tr( "Mutual fund" ) );// 4 | 147 | typeList->insertItem( tr( "Mutual fund" ) );// 4 |
140 | typeList->insertItem( tr( "Other" ) ); // 5 | 148 | typeList->insertItem( tr( "Other" ) ); // 5 |
141 | layout->addWidget( typeList, 1, 1 ); | 149 | layout->addWidget( typeList, 2, 1 ); |
142 | 150 | ||
143 | // Bank/institution name | 151 | // Bank/institution name |
144 | label = new QLabel( tr( "Bank:" ), container ); | 152 | label = new QLabel( tr( "Bank:" ), container ); |
145 | QWhatsThis::add( label, tr( "Enter name of the bank for this checkbook here." ) ); | 153 | QWhatsThis::add( label, tr( "Enter name of the bank for this checkbook here." ) ); |
146 | layout->addWidget( label, 2, 0 ); | 154 | layout->addWidget( label, 3, 0 ); |
147 | bankEdit = new QLineEdit( container ); | 155 | bankEdit = new QLineEdit( container ); |
148 | QWhatsThis::add( bankEdit, tr( "Enter name of the bank for this checkbook here." ) ); | 156 | QWhatsThis::add( bankEdit, tr( "Enter name of the bank for this checkbook here." ) ); |
149 | layout->addWidget( bankEdit, 2, 1 ); | 157 | layout->addWidget( bankEdit, 3, 1 ); |
150 | 158 | ||
151 | // Account number | 159 | // Account number |
152 | label = new QLabel( tr( "Account number:" ), container ); | 160 | label = new QLabel( tr( "Account number:" ), container ); |
153 | QWhatsThis::add( label, tr( "Enter account number for this checkbook here." ) ); | 161 | QWhatsThis::add( label, tr( "Enter account number for this checkbook here." ) ); |
154 | layout->addWidget( label, 3, 0 ); | 162 | layout->addWidget( label, 4, 0 ); |
155 | acctNumEdit = new QLineEdit( container ); | 163 | acctNumEdit = new QLineEdit( container ); |
156 | QWhatsThis::add( acctNumEdit, tr( "Enter account number for this checkbook here." ) ); | 164 | QWhatsThis::add( acctNumEdit, tr( "Enter account number for this checkbook here." ) ); |
157 | layout->addWidget( acctNumEdit, 3, 1 ); | 165 | layout->addWidget( acctNumEdit, 4, 1 ); |
158 | 166 | ||
159 | // PIN number | 167 | // PIN number |
160 | label = new QLabel( tr( "PIN number:" ), container ); | 168 | label = new QLabel( tr( "PIN number:" ), container ); |
161 | QWhatsThis::add( label, tr( "Enter PIN number for this checkbook here." ) ); | 169 | QWhatsThis::add( label, tr( "Enter PIN number for this checkbook here." ) ); |
162 | layout->addWidget( label, 4, 0 ); | 170 | layout->addWidget( label, 5, 0 ); |
163 | pinNumEdit = new QLineEdit( container ); | 171 | pinNumEdit = new QLineEdit( container ); |
164 | QWhatsThis::add( pinNumEdit, tr( "Enter PIN number for this checkbook here." ) ); | 172 | QWhatsThis::add( pinNumEdit, tr( "Enter PIN number for this checkbook here." ) ); |
165 | layout->addWidget( pinNumEdit, 4, 1 ); | 173 | layout->addWidget( pinNumEdit, 5, 1 ); |
166 | 174 | ||
167 | // Starting balance | 175 | // Starting balance |
168 | label = new QLabel( tr( "Starting balance:" ), container ); | 176 | label = new QLabel( tr( "Starting balance:" ), container ); |
169 | QWhatsThis::add( label, tr( "Enter the initial balance for this checkbook here." ) ); | 177 | QWhatsThis::add( label, tr( "Enter the initial balance for this checkbook here." ) ); |
170 | layout->addWidget( label, 5, 0 ); | 178 | layout->addWidget( label, 6, 0 ); |
171 | balanceEdit = new QLineEdit( container ); | 179 | balanceEdit = new QLineEdit( container ); |
172 | QWhatsThis::add( balanceEdit, tr( "Enter the initial balance for this checkbook here." ) ); | 180 | QWhatsThis::add( balanceEdit, tr( "Enter the initial balance for this checkbook here." ) ); |
173 | connect( balanceEdit, SIGNAL( textChanged( const QString & ) ), | 181 | connect( balanceEdit, SIGNAL( textChanged( const QString & ) ), |
174 | this, SLOT( slotStartingBalanceChanged( const QString & ) ) ); | 182 | this, SLOT( slotStartingBalanceChanged( const QString & ) ) ); |
175 | layout->addWidget( balanceEdit, 5, 1 ); | 183 | layout->addWidget( balanceEdit, 6, 1 ); |
176 | 184 | ||
177 | // Notes | 185 | // Notes |
178 | label = new QLabel( tr( "Notes:" ), container ); | 186 | label = new QLabel( tr( "Notes:" ), container ); |
179 | QWhatsThis::add( label, tr( "Enter any additional information for this checkbook here." ) ); | 187 | QWhatsThis::add( label, tr( "Enter any additional information for this checkbook here." ) ); |
180 | layout->addWidget( label, 6, 0 ); | 188 | layout->addWidget( label, 7, 0 ); |
181 | notesEdit = new QMultiLineEdit( container ); | 189 | notesEdit = new QMultiLineEdit( container ); |
182 | QWhatsThis::add( notesEdit, tr( "Enter any additional information for this checkbook here." ) ); | 190 | QWhatsThis::add( notesEdit, tr( "Enter any additional information for this checkbook here." ) ); |
183 | notesEdit->setMaximumHeight( 85 ); | 191 | notesEdit->setMinimumHeight( 25 ); |
184 | layout->addMultiCellWidget( notesEdit, 7, 7, 0, 1 ); | 192 | notesEdit->setMaximumHeight( 65 ); |
193 | layout->addMultiCellWidget( notesEdit, 8, 8, 0, 1 ); | ||
185 | 194 | ||
186 | return control; | 195 | return control; |
187 | } | 196 | } |
188 | 197 | ||
189 | QWidget *Checkbook::initTransactions() | 198 | QWidget *Checkbook::initTransactions() |
190 | { | 199 | { |
191 | QWidget *control = new QWidget( mainWidget ); | 200 | QWidget *control = new QWidget( mainWidget ); |
192 | 201 | ||
193 | QGridLayout *layout = new QGridLayout( control ); | 202 | QGridLayout *layout = new QGridLayout( control ); |
194 | layout->setSpacing( 2 ); | 203 | layout->setSpacing( 2 ); |
195 | layout->setMargin( 4 ); | 204 | layout->setMargin( 4 ); |
196 | 205 | ||
@@ -257,28 +266,31 @@ QWidget *Checkbook::initCharts() | |||
257 | QPushButton *btn = new QPushButton( Resource::loadPixmap( "checkbook/drawbtn" ), tr( "Draw" ), control ); | 266 | QPushButton *btn = new QPushButton( Resource::loadPixmap( "checkbook/drawbtn" ), tr( "Draw" ), control ); |
258 | QWhatsThis::add( btn, tr( "Click here to draw the selected chart." ) ); | 267 | QWhatsThis::add( btn, tr( "Click here to draw the selected chart." ) ); |
259 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotDrawGraph() ) ); | 268 | connect( btn, SIGNAL( clicked() ), this, SLOT( slotDrawGraph() ) ); |
260 | layout->addWidget( btn, 1, 2 ); | 269 | layout->addWidget( btn, 1, 2 ); |
261 | 270 | ||
262 | return control; | 271 | return control; |
263 | } | 272 | } |
264 | 273 | ||
265 | void Checkbook::loadCheckbook() | 274 | void Checkbook::loadCheckbook() |
266 | { | 275 | { |
267 | transactions.clear(); | 276 | transactions.clear(); |
268 | 277 | ||
269 | Config config(filename, Config::File); | 278 | Config config( filename, Config::File ); |
270 | 279 | ||
271 | // Load info | 280 | // Load info |
272 | config.setGroup( "Account" ); | 281 | config.setGroup( "Account" ); |
282 | |||
283 | password = config.readEntryCrypt( "Password", "" ); | ||
284 | passwordCB->setChecked( password != "" ); | ||
273 | nameEdit->setText( name ); | 285 | nameEdit->setText( name ); |
274 | QString temptext = config.readEntry( "Type" ); | 286 | QString temptext = config.readEntry( "Type" ); |
275 | int i = typeList->count(); | 287 | int i = typeList->count(); |
276 | while ( i > 0 ) | 288 | while ( i > 0 ) |
277 | { | 289 | { |
278 | i--; | 290 | i--; |
279 | typeList->setCurrentItem( i ); | 291 | typeList->setCurrentItem( i ); |
280 | if ( typeList->currentText() == temptext ) | 292 | if ( typeList->currentText() == temptext ) |
281 | { | 293 | { |
282 | break; | 294 | break; |
283 | } | 295 | } |
284 | } | 296 | } |
@@ -301,25 +313,25 @@ void Checkbook::loadCheckbook() | |||
301 | { | 313 | { |
302 | tran = new TranInfo( config, i ); | 314 | tran = new TranInfo( config, i ); |
303 | trandesc = tran->desc(); | 315 | trandesc = tran->desc(); |
304 | if ( trandesc != QString::null ) | 316 | if ( trandesc != QString::null ) |
305 | { | 317 | { |
306 | currBalance -= tran->fee(); | 318 | currBalance -= tran->fee(); |
307 | amount = tran->amount(); | 319 | amount = tran->amount(); |
308 | if ( tran->withdrawal() ) | 320 | if ( tran->withdrawal() ) |
309 | { | 321 | { |
310 | amount *= -1; | 322 | amount *= -1; |
311 | } | 323 | } |
312 | currBalance += amount; | 324 | currBalance += amount; |
313 | stramount.sprintf( "%c%.2f", currencySymbol, amount ); | 325 | stramount.sprintf( "%s%.2f", currencySymbol.latin1(), amount ); |
314 | 326 | ||
315 | // Add to transaction list | 327 | // Add to transaction list |
316 | transactions.inSort( tran ); | 328 | transactions.inSort( tran ); |
317 | 329 | ||
318 | // Add to transaction table | 330 | // Add to transaction table |
319 | ( void ) new CBListItem( tranTable, tran->number(), tran->datestr(), trandesc, stramount ); | 331 | ( void ) new CBListItem( tranTable, tran->number(), tran->datestr(), trandesc, stramount ); |
320 | } | 332 | } |
321 | else | 333 | else |
322 | { | 334 | { |
323 | delete tran; | 335 | delete tran; |
324 | } | 336 | } |
325 | } | 337 | } |
@@ -351,43 +363,86 @@ TranInfo *Checkbook::findTran( const QString &checknum, const QString &date, con | |||
351 | void Checkbook::accept() | 363 | void Checkbook::accept() |
352 | { | 364 | { |
353 | QFile f( filename ); | 365 | QFile f( filename ); |
354 | if ( f.exists() ) | 366 | if ( f.exists() ) |
355 | { | 367 | { |
356 | f.remove(); | 368 | f.remove(); |
357 | } | 369 | } |
358 | 370 | ||
359 | Config *config = new Config(filename, Config::File); | 371 | Config *config = new Config(filename, Config::File); |
360 | 372 | ||
361 | // Save info | 373 | // Save info |
362 | config->setGroup( "Account" ); | 374 | config->setGroup( "Account" ); |
375 | config->writeEntryCrypt( "Password", password ); | ||
363 | config->writeEntry( "Type", typeList->currentText() ); | 376 | config->writeEntry( "Type", typeList->currentText() ); |
364 | config->writeEntry( "Bank", bankEdit->text() ); | 377 | config->writeEntry( "Bank", bankEdit->text() ); |
365 | config->writeEntryCrypt( "Number", acctNumEdit->text() ); | 378 | config->writeEntryCrypt( "Number", acctNumEdit->text() ); |
366 | config->writeEntryCrypt( "PINNumber", pinNumEdit->text() ); | 379 | config->writeEntryCrypt( "PINNumber", pinNumEdit->text() ); |
367 | config->writeEntry( "Balance", balanceEdit->text() ); | 380 | config->writeEntry( "Balance", balanceEdit->text() ); |
368 | config->writeEntry( "Notes", notesEdit->text() ); | 381 | config->writeEntry( "Notes", notesEdit->text() ); |
369 | 382 | ||
370 | // Save transactions | 383 | // Save transactions |
371 | int i = 1; | 384 | int i = 1; |
372 | for ( TranInfo *tran = transactions.first(); tran; tran = transactions.next() ) | 385 | for ( TranInfo *tran = transactions.first(); tran; tran = transactions.next() ) |
373 | { | 386 | { |
374 | tran->write( config, i ); | 387 | tran->write( config, i ); |
375 | i++; | 388 | i++; |
376 | } | 389 | } |
377 | config->write(); | 390 | config->write(); |
378 | 391 | ||
379 | QDialog::accept(); | 392 | QDialog::accept(); |
380 | } | 393 | } |
381 | 394 | ||
395 | void Checkbook::slotPasswordClicked() | ||
396 | { | ||
397 | if ( password == "" && passwordCB->isChecked() ) | ||
398 | { | ||
399 | Password *pw = new Password( this, tr( "Enter password" ), tr( "Please enter your password:" ) ); | ||
400 | if ( pw->exec() != QDialog::Accepted ) | ||
401 | { | ||
402 | passwordCB->setChecked( FALSE ); | ||
403 | delete pw; | ||
404 | return; | ||
405 | } | ||
406 | password = pw->password; | ||
407 | delete pw; | ||
408 | |||
409 | pw = new Password( this, tr( "Confirm password" ), tr( "Please confirm your password:" ) ); | ||
410 | if ( pw->exec() != QDialog::Accepted || pw->password != password ) | ||
411 | { | ||
412 | passwordCB->setChecked( FALSE ); | ||
413 | password = ""; | ||
414 | } | ||
415 | |||
416 | delete pw; | ||
417 | } | ||
418 | else if ( password != "" && !passwordCB->isChecked() ) | ||
419 | { | ||
420 | Password *pw = new Password( this, tr( "Enter password" ), | ||
421 | tr( "Please enter your password to confirm removal of password protection:" ) ); | ||
422 | if ( pw->exec() == QDialog::Accepted && pw->password == password ) | ||
423 | { | ||
424 | password = ""; | ||
425 | delete pw; | ||
426 | return; | ||
427 | } | ||
428 | else | ||
429 | { | ||
430 | passwordCB->setChecked( TRUE ); | ||
431 | } | ||
432 | |||
433 | delete pw; | ||
434 | } | ||
435 | } | ||
436 | |||
382 | void Checkbook::slotNameChanged( const QString &newname ) | 437 | void Checkbook::slotNameChanged( const QString &newname ) |
383 | { | 438 | { |
384 | name = newname; | 439 | name = newname; |
385 | filename = filedir; | 440 | filename = filedir; |
386 | filename.append( newname ); | 441 | filename.append( newname ); |
387 | filename.append( ".qcb" ); | 442 | filename.append( ".qcb" ); |
388 | QString tempstr = name; | 443 | QString tempstr = name; |
389 | tempstr.append( " - " ); | 444 | tempstr.append( " - " ); |
390 | tempstr.append( tr( "Checkbook" ) ); | 445 | tempstr.append( tr( "Checkbook" ) ); |
391 | setCaption( tempstr ); | 446 | setCaption( tempstr ); |
392 | } | 447 | } |
393 | 448 | ||
@@ -407,45 +462,44 @@ void Checkbook::slotNewTran() | |||
407 | Transaction *currtran = new Transaction( this, name, | 462 | Transaction *currtran = new Transaction( this, name, |
408 | traninfo, | 463 | traninfo, |
409 | currencySymbol ); | 464 | currencySymbol ); |
410 | currtran->showMaximized(); | 465 | currtran->showMaximized(); |
411 | if ( currtran->exec() == QDialog::Accepted ) | 466 | if ( currtran->exec() == QDialog::Accepted ) |
412 | { | 467 | { |
413 | float amount = traninfo->amount(); | 468 | float amount = traninfo->amount(); |
414 | if ( traninfo->withdrawal() ) | 469 | if ( traninfo->withdrawal() ) |
415 | { | 470 | { |
416 | amount *= -1; | 471 | amount *= -1; |
417 | } | 472 | } |
418 | QString stramount; | 473 | QString stramount; |
419 | stramount.sprintf( "%c%.2f", currencySymbol, amount ); | 474 | stramount.sprintf( "%s%.2f", currencySymbol.latin1(), amount ); |
420 | 475 | ||
421 | // Add to transaction list | 476 | // Add to transaction list |
422 | transactions.inSort( traninfo ); | 477 | transactions.inSort( traninfo ); |
423 | 478 | ||
424 | // Add to transaction table | 479 | // Add to transaction table |
425 | ( void ) new CBListItem( tranTable, traninfo->number(), traninfo->datestr(), traninfo->desc(), | 480 | ( void ) new CBListItem( tranTable, traninfo->number(), traninfo->datestr(), traninfo->desc(), |
426 | stramount ); | 481 | stramount ); |
427 | 482 | ||
428 | adjustBalance( amount ); | 483 | adjustBalance( amount ); |
429 | } | 484 | } |
430 | else | 485 | else |
431 | { | 486 | { |
432 | highTranNum--; | 487 | highTranNum--; |
433 | delete traninfo; | 488 | delete traninfo; |
434 | } | 489 | } |
435 | } | 490 | } |
436 | 491 | ||
437 | void Checkbook::slotEditTran() | 492 | void Checkbook::slotEditTran() |
438 | { | 493 | { |
439 | bool ok; | ||
440 | QListViewItem *curritem = tranTable->currentItem(); | 494 | QListViewItem *curritem = tranTable->currentItem(); |
441 | if ( !curritem ) | 495 | if ( !curritem ) |
442 | { | 496 | { |
443 | return; | 497 | return; |
444 | } | 498 | } |
445 | 499 | ||
446 | TranInfo *traninfo = findTran( curritem->text( 0 ), curritem->text( 1 ), curritem->text( 2 ) ); | 500 | TranInfo *traninfo = findTran( curritem->text( 0 ), curritem->text( 1 ), curritem->text( 2 ) ); |
447 | float origamt = traninfo->amount(); | 501 | float origamt = traninfo->amount(); |
448 | if ( traninfo->withdrawal() ) | 502 | if ( traninfo->withdrawal() ) |
449 | { | 503 | { |
450 | origamt *= -1; | 504 | origamt *= -1; |
451 | } | 505 | } |
@@ -459,25 +513,25 @@ void Checkbook::slotEditTran() | |||
459 | curritem->setText( 1, traninfo->datestr() ); | 513 | curritem->setText( 1, traninfo->datestr() ); |
460 | 514 | ||
461 | curritem->setText( 2, traninfo->desc() ); | 515 | curritem->setText( 2, traninfo->desc() ); |
462 | 516 | ||
463 | float amount = traninfo->amount(); | 517 | float amount = traninfo->amount(); |
464 | if ( traninfo->withdrawal() ) | 518 | if ( traninfo->withdrawal() ) |
465 | { | 519 | { |
466 | amount *= -1; | 520 | amount *= -1; |
467 | } | 521 | } |
468 | adjustBalance( origamt * -1 ); | 522 | adjustBalance( origamt * -1 ); |
469 | adjustBalance( amount ); | 523 | adjustBalance( amount ); |
470 | QString stramount; | 524 | QString stramount; |
471 | stramount.sprintf( "%c%.2f", currencySymbol, amount ); | 525 | stramount.sprintf( "%s%.2f", currencySymbol.latin1(), amount ); |
472 | curritem->setText( 3, stramount ); | 526 | curritem->setText( 3, stramount ); |
473 | 527 | ||
474 | balanceLabel->setText( tr( "Current balance: %1%2" ).arg( currencySymbol ).arg( currBalance, 0, 'f', 2 ) ); | 528 | balanceLabel->setText( tr( "Current balance: %1%2" ).arg( currencySymbol ).arg( currBalance, 0, 'f', 2 ) ); |
475 | 529 | ||
476 | delete currtran; | 530 | delete currtran; |
477 | } | 531 | } |
478 | } | 532 | } |
479 | 533 | ||
480 | void Checkbook::slotDeleteTran() | 534 | void Checkbook::slotDeleteTran() |
481 | { | 535 | { |
482 | QListViewItem *curritem = tranTable->currentItem(); | 536 | QListViewItem *curritem = tranTable->currentItem(); |
483 | if ( !curritem ) | 537 | if ( !curritem ) |
diff --git a/noncore/apps/checkbook/checkbook.h b/noncore/apps/checkbook/checkbook.h index 0260b43..27658ff 100644 --- a/noncore/apps/checkbook/checkbook.h +++ b/noncore/apps/checkbook/checkbook.h | |||
@@ -29,56 +29,60 @@ | |||
29 | #ifndef CHECKBOOK_H | 29 | #ifndef CHECKBOOK_H |
30 | #define CHECKBOOK_H | 30 | #define CHECKBOOK_H |
31 | 31 | ||
32 | #include "traninfo.h" | 32 | #include "traninfo.h" |
33 | 33 | ||
34 | #include <qdialog.h> | 34 | #include <qdialog.h> |
35 | #include <qlistview.h> | 35 | #include <qlistview.h> |
36 | 36 | ||
37 | class OTabWidget; | 37 | class OTabWidget; |
38 | 38 | ||
39 | class Graph; | 39 | class Graph; |
40 | class GraphInfo; | 40 | class GraphInfo; |
41 | class QCheckBox; | ||
41 | class QComboBox; | 42 | class QComboBox; |
42 | class QLabel; | 43 | class QLabel; |
43 | class QLineEdit; | 44 | class QLineEdit; |
44 | class QListView; | 45 | class QListView; |
45 | class QMultiLineEdit; | 46 | class QMultiLineEdit; |
46 | class QString; | 47 | class QString; |
47 | 48 | ||
48 | class Checkbook : public QDialog | 49 | class Checkbook : public QDialog |
49 | { | 50 | { |
50 | Q_OBJECT | 51 | Q_OBJECT |
51 | 52 | ||
52 | public: | 53 | public: |
53 | Checkbook( QWidget * = 0x0, const QString & = 0x0, const QString & = 0x0, char = '$' ); | 54 | Checkbook( QWidget * = 0x0, const QString & = 0x0, const QString & = 0x0, |
55 | const QString & = "$" ); | ||
54 | ~Checkbook(); | 56 | ~Checkbook(); |
55 | 57 | ||
56 | const QString &getName(); | 58 | const QString &getName(); |
57 | 59 | ||
58 | private: | 60 | private: |
59 | TranInfoList transactions; | 61 | TranInfoList transactions; |
60 | QString name; | 62 | QString name; |
61 | QString filename; | 63 | QString filename; |
62 | QString filedir; | 64 | QString filedir; |
63 | char currencySymbol; | 65 | QString currencySymbol; |
66 | QString password; | ||
64 | int highTranNum; | 67 | int highTranNum; |
65 | 68 | ||
66 | OTabWidget *mainWidget; | 69 | OTabWidget *mainWidget; |
67 | void loadCheckbook(); | 70 | void loadCheckbook(); |
68 | void adjustBalance( float ); | 71 | void adjustBalance( float ); |
69 | TranInfo *findTran( const QString &, const QString &, const QString & ); | 72 | TranInfo *findTran( const QString &, const QString &, const QString & ); |
70 | 73 | ||
71 | // Info tab | 74 | // Info tab |
72 | QWidget *initInfo(); | 75 | QWidget *initInfo(); |
76 | QCheckBox *passwordCB; | ||
73 | QLineEdit *nameEdit; | 77 | QLineEdit *nameEdit; |
74 | QComboBox *typeList; | 78 | QComboBox *typeList; |
75 | QLineEdit *bankEdit; | 79 | QLineEdit *bankEdit; |
76 | QLineEdit *acctNumEdit; | 80 | QLineEdit *acctNumEdit; |
77 | QLineEdit *pinNumEdit; | 81 | QLineEdit *pinNumEdit; |
78 | QLineEdit *balanceEdit; | 82 | QLineEdit *balanceEdit; |
79 | QMultiLineEdit *notesEdit; | 83 | QMultiLineEdit *notesEdit; |
80 | float startBalance; | 84 | float startBalance; |
81 | 85 | ||
82 | // Transactions tab | 86 | // Transactions tab |
83 | QWidget *initTransactions(); | 87 | QWidget *initTransactions(); |
84 | QListView *tranTable; | 88 | QListView *tranTable; |
@@ -89,24 +93,25 @@ class Checkbook : public QDialog | |||
89 | QWidget *initCharts(); | 93 | QWidget *initCharts(); |
90 | GraphInfo *graphInfo; | 94 | GraphInfo *graphInfo; |
91 | QComboBox *graphList; | 95 | QComboBox *graphList; |
92 | Graph *graphWidget; | 96 | Graph *graphWidget; |
93 | 97 | ||
94 | void drawBalanceChart(); | 98 | void drawBalanceChart(); |
95 | void drawCategoryChart( bool = TRUE ); | 99 | void drawCategoryChart( bool = TRUE ); |
96 | 100 | ||
97 | protected slots: | 101 | protected slots: |
98 | void accept(); | 102 | void accept(); |
99 | 103 | ||
100 | private slots: | 104 | private slots: |
105 | void slotPasswordClicked(); | ||
101 | void slotNameChanged( const QString & ); | 106 | void slotNameChanged( const QString & ); |
102 | void slotStartingBalanceChanged( const QString & ); | 107 | void slotStartingBalanceChanged( const QString & ); |
103 | void slotNewTran(); | 108 | void slotNewTran(); |
104 | void slotEditTran(); | 109 | void slotEditTran(); |
105 | void slotDeleteTran(); | 110 | void slotDeleteTran(); |
106 | void slotDrawGraph(); | 111 | void slotDrawGraph(); |
107 | }; | 112 | }; |
108 | 113 | ||
109 | class CBListItem : public QListViewItem | 114 | class CBListItem : public QListViewItem |
110 | { | 115 | { |
111 | //Q_OBJECT | 116 | //Q_OBJECT |
112 | 117 | ||
diff --git a/noncore/apps/checkbook/checkbook.pro b/noncore/apps/checkbook/checkbook.pro index bd69939..53b5ff4 100644 --- a/noncore/apps/checkbook/checkbook.pro +++ b/noncore/apps/checkbook/checkbook.pro | |||
@@ -1,24 +1,26 @@ | |||
1 | TEMPLATE = app | 1 | TEMPLATE = app |
2 | CONFIG = qt warn_on release | 2 | CONFIG = qt warn_on release |
3 | HEADERS = mainwindow.h \ | 3 | HEADERS = mainwindow.h \ |
4 | traninfo.h \ | 4 | traninfo.h \ |
5 | graphinfo.h \ | 5 | graphinfo.h \ |
6 | password.h \ | ||
6 | checkbook.h \ | 7 | checkbook.h \ |
7 | transaction.h \ | 8 | transaction.h \ |
8 | graph.h | 9 | graph.h |
9 | SOURCES = main.cpp \ | 10 | SOURCES = main.cpp \ |
10 | mainwindow.cpp \ | 11 | mainwindow.cpp \ |
11 | traninfo.cpp \ | 12 | traninfo.cpp \ |
12 | graphinfo.cpp \ | 13 | graphinfo.cpp \ |
14 | password.cpp \ | ||
13 | checkbook.cpp \ | 15 | checkbook.cpp \ |
14 | transaction.cpp \ | 16 | transaction.cpp \ |
15 | graph.cpp | 17 | graph.cpp |
16 | INCLUDEPATH += $(OPIEDIR)/include | 18 | INCLUDEPATH += $(OPIEDIR)/include |
17 | DEPENDPATH += $(OPIEDIR)/include | 19 | DEPENDPATH += $(OPIEDIR)/include |
18 | LIBS += -lqpe -lopie | 20 | LIBS += -lqpe -lopie |
19 | TARGET = checkbook | 21 | TARGET = checkbook |
20 | DESTDIR = $(OPIEDIR)/bin | 22 | DESTDIR = $(OPIEDIR)/bin |
21 | 23 | ||
22 | TRANSLATIONS = ../../../i18n/de/checkbook.ts \ | 24 | TRANSLATIONS = ../../../i18n/de/checkbook.ts \ |
23 | ../../../i18n/en/checkbook.ts \ | 25 | ../../../i18n/en/checkbook.ts \ |
24 | ../../../i18n/es/checkbook.ts \ | 26 | ../../../i18n/es/checkbook.ts \ |
diff --git a/noncore/apps/checkbook/mainwindow.cpp b/noncore/apps/checkbook/mainwindow.cpp index 567b8ad..2c0abf1 100644 --- a/noncore/apps/checkbook/mainwindow.cpp +++ b/noncore/apps/checkbook/mainwindow.cpp | |||
@@ -18,26 +18,28 @@ | |||
18 | ..}^=.= = ; Public License for more details. | 18 | ..}^=.= = ; Public License for more details. |
19 | ++= -. .` .: | 19 | ++= -. .` .: |
20 | : = ...= . :.=- You should have received a copy of the GNU | 20 | : = ...= . :.=- You should have received a copy of the GNU |
21 | -. .:....=;==+<; General Public License along with this file; | 21 | -. .:....=;==+<; General Public License along with this file; |
22 | -_. . . )=. = see the file COPYING. If not, write to the | 22 | -_. . . )=. = see the file COPYING. If not, write to the |
23 | -- :-=` Free Software Foundation, Inc., | 23 | -- :-=` Free Software Foundation, Inc., |
24 | 59 Temple Place - Suite 330, | 24 | 59 Temple Place - Suite 330, |
25 | Boston, MA 02111-1307, USA. | 25 | Boston, MA 02111-1307, USA. |
26 | 26 | ||
27 | */ | 27 | */ |
28 | 28 | ||
29 | #include "mainwindow.h" | 29 | #include "mainwindow.h" |
30 | #include "password.h" | ||
30 | #include "checkbook.h" | 31 | #include "checkbook.h" |
31 | 32 | ||
33 | #include <qpe/config.h> | ||
32 | #include <qpe/global.h> | 34 | #include <qpe/global.h> |
33 | #include <qpe/qpeapplication.h> | 35 | #include <qpe/qpeapplication.h> |
34 | #include <qpe/qpemenubar.h> | 36 | #include <qpe/qpemenubar.h> |
35 | #include <qpe/qpemessagebox.h> | 37 | #include <qpe/qpemessagebox.h> |
36 | #include <qpe/qpetoolbar.h> | 38 | #include <qpe/qpetoolbar.h> |
37 | #include <qpe/resource.h> | 39 | #include <qpe/resource.h> |
38 | 40 | ||
39 | #include <qaction.h> | 41 | #include <qaction.h> |
40 | #include <qdir.h> | 42 | #include <qdir.h> |
41 | #include <qlistbox.h> | 43 | #include <qlistbox.h> |
42 | #include <qpopupmenu.h> | 44 | #include <qpopupmenu.h> |
43 | #include <qstring.h> | 45 | #include <qstring.h> |
@@ -96,59 +98,75 @@ MainWindow::MainWindow() | |||
96 | { | 98 | { |
97 | QStringList checkbooks = checkdir.entryList( "*.qcb", QDir::Files|QDir::Readable|QDir::Writable, | 99 | QStringList checkbooks = checkdir.entryList( "*.qcb", QDir::Files|QDir::Readable|QDir::Writable, |
98 | QDir::Time ); | 100 | QDir::Time ); |
99 | for ( QStringList::Iterator it = checkbooks.begin(); it != checkbooks.end(); it++ ) | 101 | for ( QStringList::Iterator it = checkbooks.begin(); it != checkbooks.end(); it++ ) |
100 | { | 102 | { |
101 | (*it) = (*it).remove( (*it).find('.'), (*it).length() ); | 103 | (*it) = (*it).remove( (*it).find('.'), (*it).length() ); |
102 | } | 104 | } |
103 | cbList->insertStringList( checkbooks ); | 105 | cbList->insertStringList( checkbooks ); |
104 | } | 106 | } |
105 | cbList->sort(); | 107 | cbList->sort(); |
106 | cbList->setSelected( 0, TRUE ); | 108 | cbList->setSelected( 0, TRUE ); |
107 | 109 | ||
108 | currencySymbol = '$'; | 110 | currencySymbol = "$"; |
109 | } | 111 | } |
110 | 112 | ||
111 | MainWindow::~MainWindow() | 113 | MainWindow::~MainWindow() |
112 | { | 114 | { |
113 | } | 115 | } |
114 | 116 | ||
115 | void MainWindow::slotNew() | 117 | void MainWindow::slotNew() |
116 | { | 118 | { |
117 | Checkbook *currcb = new Checkbook( this, "", cbDir, currencySymbol ); | 119 | Checkbook *currcb = new Checkbook( this, "", cbDir, currencySymbol ); |
118 | currcb->showMaximized(); | 120 | currcb->showMaximized(); |
119 | if ( currcb->exec() == QDialog::Accepted ) | 121 | if ( currcb->exec() == QDialog::Accepted ) |
120 | { | 122 | { |
121 | cbList->insertItem( currcb->getName() ); | 123 | cbList->insertItem( currcb->getName() ); |
122 | cbList->sort(); | 124 | cbList->sort(); |
123 | delete currcb; | 125 | delete currcb; |
124 | } | 126 | } |
125 | } | 127 | } |
126 | 128 | ||
127 | void MainWindow::slotEdit() | 129 | void MainWindow::slotEdit() |
128 | { | 130 | { |
129 | QString currname = cbList->currentText(); | 131 | QString currname = cbList->currentText(); |
132 | |||
133 | QString tempstr = cbDir; | ||
134 | tempstr.append( currname ); | ||
135 | tempstr.append( ".qcb" ); | ||
136 | |||
137 | Config config( tempstr, Config::File ); | ||
138 | config.setGroup( "Account" ); | ||
139 | QString password = config.readEntryCrypt( "Password", "" ); | ||
140 | if ( password != "" ) | ||
141 | { | ||
142 | Password *pw = new Password( this, tr( "Enter password" ), tr( "Please enter your password:" ) ); | ||
143 | if ( pw->exec() != QDialog::Accepted || pw->password != password ) | ||
144 | { | ||
145 | delete pw; | ||
146 | return; | ||
147 | } | ||
148 | delete pw; | ||
149 | } | ||
150 | |||
130 | Checkbook *currcb = new Checkbook( this, currname, cbDir, currencySymbol ); | 151 | Checkbook *currcb = new Checkbook( this, currname, cbDir, currencySymbol ); |
131 | currcb->showMaximized(); | 152 | currcb->showMaximized(); |
132 | if ( currcb->exec() == QDialog::Accepted ) | 153 | if ( currcb->exec() == QDialog::Accepted ) |
133 | { | 154 | { |
134 | QString newname = currcb->getName(); | 155 | QString newname = currcb->getName(); |
135 | if ( currname != newname ) | 156 | if ( currname != newname ) |
136 | { | 157 | { |
137 | cbList->changeItem( newname, cbList->currentItem() ); | 158 | cbList->changeItem( newname, cbList->currentItem() ); |
138 | cbList->sort(); | 159 | cbList->sort(); |
139 | 160 | ||
140 | QString tempstr = cbDir; | ||
141 | tempstr.append( currname ); | ||
142 | tempstr.append( ".qcb" ); | ||
143 | QFile f( tempstr ); | 161 | QFile f( tempstr ); |
144 | if ( f.exists() ) | 162 | if ( f.exists() ) |
145 | { | 163 | { |
146 | f.remove(); | 164 | f.remove(); |
147 | } | 165 | } |
148 | } | 166 | } |
149 | delete currcb; | 167 | delete currcb; |
150 | } | 168 | } |
151 | } | 169 | } |
152 | 170 | ||
153 | void MainWindow::slotDelete() | 171 | void MainWindow::slotDelete() |
154 | { | 172 | { |
diff --git a/noncore/apps/checkbook/mainwindow.h b/noncore/apps/checkbook/mainwindow.h index 1b460fa..11a3343 100644 --- a/noncore/apps/checkbook/mainwindow.h +++ b/noncore/apps/checkbook/mainwindow.h | |||
@@ -40,21 +40,21 @@ class MainWindow : public QMainWindow | |||
40 | { | 40 | { |
41 | Q_OBJECT | 41 | Q_OBJECT |
42 | 42 | ||
43 | public: | 43 | public: |
44 | MainWindow(); | 44 | MainWindow(); |
45 | ~MainWindow(); | 45 | ~MainWindow(); |
46 | 46 | ||
47 | private: | 47 | private: |
48 | QListBox *cbList; | 48 | QListBox *cbList; |
49 | QString cbDir; | 49 | QString cbDir; |
50 | QAction *actionOpen; | 50 | QAction *actionOpen; |
51 | QAction *actionDelete; | 51 | QAction *actionDelete; |
52 | char currencySymbol; | 52 | QString currencySymbol; |
53 | 53 | ||
54 | private slots: | 54 | private slots: |
55 | void slotNew(); | 55 | void slotNew(); |
56 | void slotEdit(); | 56 | void slotEdit(); |
57 | void slotDelete(); | 57 | void slotDelete(); |
58 | }; | 58 | }; |
59 | 59 | ||
60 | #endif | 60 | #endif |
diff --git a/noncore/apps/checkbook/password.cpp b/noncore/apps/checkbook/password.cpp new file mode 100644 index 0000000..82020d5 --- a/dev/null +++ b/noncore/apps/checkbook/password.cpp | |||
@@ -0,0 +1,99 @@ | |||
1 | /* | ||
2 | This file is part of the OPIE Project | ||
3 | =. | ||
4 | .=l. Copyright (c) 2002 Dan Williams <drw@handhelds.org> | ||
5 | .>+-= | ||
6 | _;:, .> :=|. This file is free software; you can | ||
7 | .> <`_, > . <= redistribute it and/or modify it under | ||
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | ||
9 | .="- .-=="i, .._ License as published by the Free Software | ||
10 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
11 | ._= =} : or (at your option) any later version. | ||
12 | .%`+i> _;_. | ||
13 | .i_,=:_. -<s. This file is distributed in the hope that | ||
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
15 | : .. .:, . . . without even the implied warranty of | ||
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | ||
18 | ..}^=.= = ; Public License for more details. | ||
19 | ++= -. .` .: | ||
20 | : = ...= . :.=- You should have received a copy of the GNU | ||
21 | -. .:....=;==+<; General Public License along with this file; | ||
22 | -_. . . )=. = see the file COPYING. If not, write to the | ||
23 | -- :-=` Free Software Foundation, Inc., | ||
24 | 59 Temple Place - Suite 330, | ||
25 | Boston, MA 02111-1307, USA. | ||
26 | |||
27 | */ | ||
28 | |||
29 | #include "password.h" | ||
30 | |||
31 | #include <qlabel.h> | ||
32 | #include <qlayout.h> | ||
33 | #include <qlineedit.h> | ||
34 | #include <qpixmap.h> | ||
35 | #include <qpushbutton.h> | ||
36 | #include <qwidget.h> | ||
37 | |||
38 | static const char* const showhideimage_data[] = { | ||
39 | "16 16 2 1", | ||
40 | ". c None", | ||
41 | "# c #000000", | ||
42 | "................", | ||
43 | "...#...###...##.", | ||
44 | "..#.#..#..#.##..", | ||
45 | "..###..###.##...", | ||
46 | ".#...#.#..##....", | ||
47 | ".#...#.#.##.....", | ||
48 | "........##.#..#.", | ||
49 | "..##...##...##..", | ||
50 | ".#..#.###...##..", | ||
51 | ".#...##..#.#..#.", | ||
52 | ".#..##..........", | ||
53 | ".#.##.#..#.#..#.", | ||
54 | "..##...##...##..", | ||
55 | ".##....##...##..", | ||
56 | ".#....#..#.#..#.", | ||
57 | "................"}; | ||
58 | |||
59 | Password::Password( QWidget *parent, const char *caption, const char *prompt ) | ||
60 | : QDialog( parent, 0x0, TRUE, 0x0 ) | ||
61 | { | ||
62 | setCaption( caption ); | ||
63 | |||
64 | QGridLayout *layout = new QGridLayout( this ); | ||
65 | layout->setSpacing( 2 ); | ||
66 | layout->setMargin( 4 ); | ||
67 | |||
68 | QLabel *label = new QLabel( prompt, this ); | ||
69 | label->setAlignment( AlignLeft | AlignTop | WordBreak ); | ||
70 | layout->addMultiCellWidget( label, 0, 0, 0, 1 ); | ||
71 | |||
72 | pw = new QLineEdit( this ); | ||
73 | pw->setEchoMode( QLineEdit::Password ); | ||
74 | layout->addWidget( pw, 1, 0 ); | ||
75 | |||
76 | QPixmap *pic = new QPixmap( ( const char** ) showhideimage_data ); | ||
77 | QPushButton *btn = new QPushButton( ( QIconSet ) *pic, QString::null, this ); | ||
78 | btn->setMaximumSize( pic->width() + 10, pic->height() + 10 ); | ||
79 | btn->setToggleButton( TRUE ); | ||
80 | connect( btn, SIGNAL( toggled( bool ) ), this, SLOT( slotTogglePassword( bool ) ) ); | ||
81 | layout->addWidget( btn, 1, 1 ); | ||
82 | |||
83 | password == ""; | ||
84 | } | ||
85 | |||
86 | Password::~Password() | ||
87 | { | ||
88 | } | ||
89 | |||
90 | void Password::accept() | ||
91 | { | ||
92 | password = pw->text(); | ||
93 | QDialog::accept(); | ||
94 | } | ||
95 | |||
96 | void Password::slotTogglePassword( bool showPW ) | ||
97 | { | ||
98 | showPW ? pw->setEchoMode( QLineEdit::Normal ) : pw->setEchoMode( QLineEdit::Password ); | ||
99 | } | ||
diff --git a/noncore/apps/checkbook/password.h b/noncore/apps/checkbook/password.h new file mode 100644 index 0000000..87d64d9 --- a/dev/null +++ b/noncore/apps/checkbook/password.h | |||
@@ -0,0 +1,55 @@ | |||
1 | /* | ||
2 | This file is part of the OPIE Project | ||
3 | =. | ||
4 | .=l. Copyright (c) 2002 Dan Williams <drw@handhelds.org> | ||
5 | .>+-= | ||
6 | _;:, .> :=|. This file is free software; you can | ||
7 | .> <`_, > . <= redistribute it and/or modify it under | ||
8 | :`=1 )Y*s>-.-- : the terms of the GNU General Public | ||
9 | .="- .-=="i, .._ License as published by the Free Software | ||
10 | - . .-<_> .<> Foundation; either version 2 of the License, | ||
11 | ._= =} : or (at your option) any later version. | ||
12 | .%`+i> _;_. | ||
13 | .i_,=:_. -<s. This file is distributed in the hope that | ||
14 | + . -:. = it will be useful, but WITHOUT ANY WARRANTY; | ||
15 | : .. .:, . . . without even the implied warranty of | ||
16 | =_ + =;=|` MERCHANTABILITY or FITNESS FOR A | ||
17 | _.=:. : :=>`: PARTICULAR PURPOSE. See the GNU General | ||
18 | ..}^=.= = ; Public License for more details. | ||
19 | ++= -. .` .: | ||
20 | : = ...= . :.=- You should have received a copy of the GNU | ||
21 | -. .:....=;==+<; General Public License along with this file; | ||
22 | -_. . . )=. = see the file COPYING. If not, write to the | ||
23 | -- :-=` Free Software Foundation, Inc., | ||
24 | 59 Temple Place - Suite 330, | ||
25 | Boston, MA 02111-1307, USA. | ||
26 | |||
27 | */ | ||
28 | |||
29 | #ifndef PASSWORD_H | ||
30 | #define PASSWORD_H | ||
31 | |||
32 | #include <qdialog.h> | ||
33 | |||
34 | class QLineEdit; | ||
35 | class QWidget; | ||
36 | |||
37 | class Password : public QDialog | ||
38 | { | ||
39 | Q_OBJECT | ||
40 | |||
41 | public: | ||
42 | Password( QWidget *, const char *, const char * ); | ||
43 | ~Password(); | ||
44 | |||
45 | QString password; | ||
46 | |||
47 | private: | ||
48 | QLineEdit *pw; | ||
49 | |||
50 | protected slots: | ||
51 | void accept(); | ||
52 | void slotTogglePassword( bool ); | ||
53 | }; | ||
54 | |||
55 | #endif | ||
diff --git a/noncore/apps/checkbook/transaction.cpp b/noncore/apps/checkbook/transaction.cpp index 122c8d6..17be669 100644 --- a/noncore/apps/checkbook/transaction.cpp +++ b/noncore/apps/checkbook/transaction.cpp | |||
@@ -37,25 +37,25 @@ | |||
37 | #include <qlabel.h> | 37 | #include <qlabel.h> |
38 | #include <qlayout.h> | 38 | #include <qlayout.h> |
39 | #include <qlineedit.h> | 39 | #include <qlineedit.h> |
40 | #include <qmultilineedit.h> | 40 | #include <qmultilineedit.h> |
41 | #include <qpopupmenu.h> | 41 | #include <qpopupmenu.h> |
42 | #include <qpushbutton.h> | 42 | #include <qpushbutton.h> |
43 | #include <qradiobutton.h> | 43 | #include <qradiobutton.h> |
44 | #include <qscrollview.h> | 44 | #include <qscrollview.h> |
45 | #include <qstring.h> | 45 | #include <qstring.h> |
46 | #include <qwhatsthis.h> | 46 | #include <qwhatsthis.h> |
47 | 47 | ||
48 | Transaction::Transaction( QWidget *parent, const QString &acctname, TranInfo *info, | 48 | Transaction::Transaction( QWidget *parent, const QString &acctname, TranInfo *info, |
49 | char symbol ) | 49 | const QString &symbol ) |
50 | : QDialog( parent, 0, TRUE, WStyle_ContextHelp ) | 50 | : QDialog( parent, 0, TRUE, WStyle_ContextHelp ) |
51 | { | 51 | { |
52 | QString tempstr = tr( "Transaction for " ); | 52 | QString tempstr = tr( "Transaction for " ); |
53 | tempstr.append( acctname ); | 53 | tempstr.append( acctname ); |
54 | setCaption( tempstr ); | 54 | setCaption( tempstr ); |
55 | 55 | ||
56 | tran = info; | 56 | tran = info; |
57 | currencySymbol = symbol; | 57 | currencySymbol = symbol; |
58 | 58 | ||
59 | QVBoxLayout *vb = new QVBoxLayout( this ); | 59 | QVBoxLayout *vb = new QVBoxLayout( this ); |
60 | 60 | ||
61 | QScrollView *sv = new QScrollView( this ); | 61 | QScrollView *sv = new QScrollView( this ); |
diff --git a/noncore/apps/checkbook/transaction.h b/noncore/apps/checkbook/transaction.h index 89ca8e4..000aee7 100644 --- a/noncore/apps/checkbook/transaction.h +++ b/noncore/apps/checkbook/transaction.h | |||
@@ -38,31 +38,31 @@ class QMultiLineEdit; | |||
38 | class QPushButton; | 38 | class QPushButton; |
39 | class QRadioButton; | 39 | class QRadioButton; |
40 | class QString; | 40 | class QString; |
41 | class QWidget; | 41 | class QWidget; |
42 | class TranInfo; | 42 | class TranInfo; |
43 | 43 | ||
44 | class Transaction : public QDialog | 44 | class Transaction : public QDialog |
45 | { | 45 | { |
46 | Q_OBJECT | 46 | Q_OBJECT |
47 | 47 | ||
48 | public: | 48 | public: |
49 | Transaction( QWidget * = 0x0, const QString & = 0x0, TranInfo * = 0x0, | 49 | Transaction( QWidget * = 0x0, const QString & = 0x0, TranInfo * = 0x0, |
50 | char = '$' ); | 50 | const QString & = "$" ); |
51 | ~Transaction(); | 51 | ~Transaction(); |
52 | 52 | ||
53 | private: | 53 | private: |
54 | TranInfo *tran; | 54 | TranInfo *tran; |
55 | 55 | ||
56 | char currencySymbol; | 56 | QString currencySymbol; |
57 | 57 | ||
58 | QRadioButton *withBtn; | 58 | QRadioButton *withBtn; |
59 | QRadioButton *depBtn; | 59 | QRadioButton *depBtn; |
60 | QPushButton *dateBtn; | 60 | QPushButton *dateBtn; |
61 | DateBookMonth *datePicker; | 61 | DateBookMonth *datePicker; |
62 | QLineEdit *numEdit; | 62 | QLineEdit *numEdit; |
63 | QLineEdit *descEdit; | 63 | QLineEdit *descEdit; |
64 | QComboBox *catList; | 64 | QComboBox *catList; |
65 | QComboBox *typeList; | 65 | QComboBox *typeList; |
66 | QLineEdit *amtEdit; | 66 | QLineEdit *amtEdit; |
67 | QLineEdit *feeEdit; | 67 | QLineEdit *feeEdit; |
68 | QMultiLineEdit *noteEdit; | 68 | QMultiLineEdit *noteEdit; |