summaryrefslogtreecommitdiff
path: root/noncore/apps/qashmoney/budgetdisplay.cpp
authormickeyl <mickeyl>2004-11-04 10:33:04 (UTC)
committer mickeyl <mickeyl>2004-11-04 10:33:04 (UTC)
commit7855b19ce0241a7b7b4fc72e3a8ddd9bf73b0a77 (patch) (unidiff)
treee76604c6af3da9c19b69dcdcf8105d58bac63f71 /noncore/apps/qashmoney/budgetdisplay.cpp
parentcd2d50799e087fad5b56df9d7fe9aa572a313e64 (diff)
downloadopie-7855b19ce0241a7b7b4fc72e3a8ddd9bf73b0a77.zip
opie-7855b19ce0241a7b7b4fc72e3a8ddd9bf73b0a77.tar.gz
opie-7855b19ce0241a7b7b4fc72e3a8ddd9bf73b0a77.tar.bz2
opie-qashmoney is now unsupported
Diffstat (limited to 'noncore/apps/qashmoney/budgetdisplay.cpp') (more/less context) (ignore whitespace changes)
-rwxr-xr-xnoncore/apps/qashmoney/budgetdisplay.cpp417
1 files changed, 0 insertions, 417 deletions
diff --git a/noncore/apps/qashmoney/budgetdisplay.cpp b/noncore/apps/qashmoney/budgetdisplay.cpp
deleted file mode 100755
index b83eb46..0000000
--- a/noncore/apps/qashmoney/budgetdisplay.cpp
+++ b/dev/null
@@ -1,417 +0,0 @@
1#include <qmessagebox.h>
2#include <qheader.h>
3#include <sqlite3.h>
4
5#include "budgetdisplay.h"
6#include "budget.h"
7#include "datepicker.h"
8#include "transaction.h"
9
10extern Preferences *preferences;
11extern Budget *budget;
12extern Transaction *transaction;
13
14BudgetDisplay::BudgetDisplay ( QWidget *parent ) : QWidget ( parent )
15 {
16 QFont font = this->font();
17 font.setWeight ( QFont::Bold );
18
19 //set the default date to today
20 newDate = QDate::currentDate ();
21 year = newDate.year();
22 month = newDate.month();
23 day = newDate.day();
24 datelabel = preferences->getDate ( year, month );
25
26 setCaption ( "Budget" );
27
28 firstline = new QHBox ( this );
29 firstline->setSpacing ( 2 );
30 secondline = new QHBox ( this );
31 secondline->setSpacing ( 10 );
32
33 menu = new QMenuBar ( this );
34 menu->setFrameStyle ( QFrame::Box | QFrame::Sunken );
35 budgetmenu = new QPopupMenu ( this );
36 lineitemsmenu = new QPopupMenu ( this );
37 datemenu = new QPopupMenu ( this );
38 menu->insertItem ( "Budget", budgetmenu );
39 menu->insertItem ( "Line Item", lineitemsmenu );
40 menu->insertItem ( "Date", datemenu );
41 budgetmenu->insertItem ( "New", this, SLOT ( newBudget() ), 0, 1 );
42 budgetmenu->insertItem ( "Edit", this, SLOT ( editBudget() ), 0, 2 );
43 budgetmenu->insertItem ( "Delete", this, SLOT ( deleteBudget() ), 0, 3 );
44 lineitemsmenu->insertItem ( "New", this, SLOT ( newLineItem() ), 0, 1 );
45 lineitemsmenu->insertItem ( "Edit", this, SLOT ( editLineItem() ), 0, 2 );
46 lineitemsmenu->insertItem ( "Delete", this, SLOT ( deleteLineItem() ), 0, 3 );
47 datemenu->insertItem ( "Change", this, SLOT ( showCalendar() ) );
48
49 budgetbox = new QComboBox ( firstline );
50 connect ( budgetbox, SIGNAL ( activated(int) ), this, SLOT ( setCurrentBudget(int) ) );
51
52 budgetview = new QComboBox ( firstline );
53 budgetview->insertItem ( "Month" );
54 budgetview->insertItem ( "Year" );
55 connect ( budgetview, SIGNAL ( activated(int) ), this, SLOT ( setCurrentView(int) ) );
56
57 budgeted = new QLabel ( secondline );
58 budgeted->setFont ( font );
59 actual = new QLabel ( secondline );
60 actual->setFont ( font );
61 date = new QLabel ( secondline );
62 date->setFont ( font );
63
64 listview = new QListView ( this );
65 listview->setAllColumnsShowFocus ( TRUE );
66 listview->setShowSortIndicator ( TRUE );
67 listview->setRootIsDecorated ( TRUE );
68 listview->setMultiSelection ( FALSE );
69 listview->addColumn ( "Line Item", preferences->getColumnPreference ( 13 ) ); // column id 13
70 listview->addColumn ( "Budget", preferences->getColumnPreference ( 14 ) ); // column id 14
71 listview->addColumn ( "Actual", preferences->getColumnPreference ( 15 ) ); // column id 15
72 listview->addColumn ( "", 0 ); // line item ids
73 listview->setColumnWidthMode ( 0, QListView::Manual );
74 listview->setColumnWidthMode ( 1, QListView::Manual );
75 listview->setColumnWidthMode ( 2, QListView::Manual );
76 listview->setColumnAlignment ( 1, Qt::AlignRight );
77 listview->setColumnAlignment ( 2, Qt::AlignRight );
78 listview->setColumnWidthMode ( 3, QListView::Manual );
79
80 listview->header()->setTracking ( FALSE );
81 connect ( listview->header(), SIGNAL ( sizeChange(int,int,int) ), this, SLOT ( saveColumnSize(int,int,int) ) );
82 connect ( listview->header(), SIGNAL ( clicked(int) ), this, SLOT ( saveSortingPreference(int) ) );
83
84 // pull the column sorting preference from the preferences table, and configure the listview accordingly
85 int column = 0;
86 int direction = 0;
87 preferences->getSortingPreference ( 3, &column, &direction );
88 listview->setSorting ( column, direction );
89
90 displayBudgetNames();
91
92 layout = new QVBoxLayout ( this, 2, 2 );
93 layout->setMenuBar ( menu );
94 layout->addWidget ( firstline );
95 layout->addWidget ( secondline );
96 layout->addWidget ( listview );
97 }
98
99void BudgetDisplay::deleteBudget ()
100 {
101 listview->clear();
102 transaction->clearBudgetIDs ( currentbudget );
103 budget->deleteBudget ( currentbudget );
104 if ( budgetbox->count() != 0 )
105 displayBudgetNames();
106 checkBudgets();
107 }
108
109void BudgetDisplay::saveColumnSize ( int column, int oldsize, int newsize )
110 {
111 switch ( column )
112 {
113 case 0:
114 preferences->changeColumnPreference ( 13, newsize );
115 break;
116 case 1:
117 preferences->changeColumnPreference ( 14, newsize );
118 break;
119 case 2:
120 preferences->changeColumnPreference ( 15, newsize );
121 break;
122 }
123 }
124
125void BudgetDisplay::saveSortingPreference ( int column )
126 {
127 preferences->changeSortingPreference ( 3, column );
128 }
129
130int BudgetDisplay::getIDColumn ()
131 {
132 int counter;
133 int columns = listview->columns();
134 for ( counter = 0; counter <= columns; counter++ )
135 if ( listview->header()->label ( counter ).length() == 0 )
136 return counter;
137 }
138
139void BudgetDisplay::newBudget ()
140 {
141 constructBudgetWindow();
142 int response = nb->exec();
143 if ( response == 1 )
144 {
145 // open a new budget object
146 int addedbudget = budget->addBudget ( budgetname->text(), 0, description->text(), currencybox->currencybox->currentText(), day, month, year, day, month, year, 0 );
147 transaction->clearBudgetIDs ( addedbudget );
148 displayBudgetNames();
149 }
150 checkBudgets();
151 }
152
153void BudgetDisplay::constructBudgetWindow ()
154 {
155 //construct and format the new budget window
156 nb = new QDialog ( this, 0, TRUE );
157 nb->setCaption ( "Budget" );
158 QLabel *namelabel = new QLabel ( "Budget Name", nb );
159 budgetname = new QLineEdit ( nb );
160 QLabel *descriptionlabel = new QLabel ( "Description", nb );
161 description = new QLineEdit ( nb );
162 currencybox = new Currency ( nb );
163 QBoxLayout *layout = new QVBoxLayout ( nb, 2, 2 );
164 layout->addWidget ( namelabel );
165 layout->addWidget ( budgetname );
166 layout->addWidget ( descriptionlabel );
167 layout->addWidget ( description );
168 layout->addWidget ( currencybox );
169 }
170
171void BudgetDisplay::displayBudgetNames ()
172 {
173 budgetbox->clear();
174 if ( budget->getNumberOfBudgets() != 0 )
175 {
176 ids = budget->getBudgetIDs();
177 for ( QStringList::Iterator it = ids->begin(); it != ids->end(); ++it )
178 {
179 QString flag = "/opt/QtPalmtop/pics/flags/";
180 flag.append ( budget->getCurrency ( (*it).toInt() ) );
181 flag.append ( ".png" );
182 budgetbox->insertItem ( QPixmap ( flag ), budget->getBudgetName ( (*it).toInt() ) );
183 }
184 setCurrentBudget ( 0 );
185 }
186 else
187 checkBudgets();
188 }
189
190void BudgetDisplay::setCurrentBudget ( int index )
191 {
192 currentbudget = ( ids->operator[] ( index ).toInt() );
193 displayLineItems();
194 }
195
196void BudgetDisplay::setCurrentView ( int index )
197 {
198 displayLineItems();
199 }
200
201void BudgetDisplay::showCalendar ()
202 {
203 // create new calendar object and show it
204 DatePicker *dp = new DatePicker ( QDate ( year, month, day ) );
205 dp->daylabel->hide();
206 dp->daybox->hide();
207 if ( budgetview->currentItem() == 1 )
208 {
209 dp->monthlabel->hide();
210 dp->monthbox->hide();
211 }
212 dp->setMaximumWidth ( ( int ) ( this->size().width() * 0.9 ) );
213
214 int response = dp->exec();
215 if ( response == 1 )
216 {
217 // Set date integers
218 year = dp->getYear();
219 if ( budgetview->currentItem() == 0 )
220 month = dp->getMonth();
221 else
222 month = newDate.month();
223 datelabel = preferences->getDate ( year, month );
224 displayLineItems();
225 }
226 }
227
228void BudgetDisplay::newLineItem ()
229 {
230 //construct and format the new line item window
231 constructLineItemWindow ();
232
233 int response = newlineitem->exec();
234 if ( response == 1 )
235 {
236 float amount;
237 if ( lineitemtime->currentItem() == 0 )
238 amount = lineitemamount->text().toFloat();
239 else if ( lineitemtime->currentItem() == 1 )
240 amount = lineitemamount->text().toFloat() * 12;
241 else
242 amount = lineitemamount->text().toFloat() * 52;
243 int lineitemadded = budget->addLineItem ( currentbudget, lineitemname->text(), amount, lineitemtime->currentItem() );
244 transaction->clearBudgetIDs ( currentbudget, lineitemadded );
245 displayLineItems();
246 }
247 checkBudgets();
248 }
249
250void BudgetDisplay::constructLineItemWindow ()
251 {
252 //construct and format the new budget window
253 newlineitem = new QDialog ( this, 0, TRUE );
254 newlineitem->setCaption ( "Line Item" );
255 QLabel *namelabel = new QLabel ( "Line Item Name", newlineitem );
256 lineitemname = new QLineEdit ( newlineitem );
257 QLabel *budgetamountlabel = new QLabel ( "Budget Amount", newlineitem );
258 lineitemamount = new QLineEdit ( newlineitem );
259 QLabel *lineitemtimelabel = new QLabel ( "Per:", newlineitem );
260 lineitemtime = new QComboBox ( newlineitem );
261 lineitemtime->insertItem ( "Year" ); // type 0
262 lineitemtime->insertItem ( "Month" ); // type 1
263 lineitemtime->insertItem ( "Week" ); // type 2
264 QBoxLayout *layout = new QVBoxLayout ( newlineitem, 2, 2 );
265 layout->addWidget ( namelabel );
266 layout->addWidget ( lineitemname );
267 layout->addWidget ( budgetamountlabel );
268 layout->addWidget ( lineitemamount );
269 layout->addWidget ( lineitemtimelabel );
270 layout->addWidget ( lineitemtime );
271 }
272
273void BudgetDisplay::deleteLineItem ()
274 {
275 if ( listview->selectedItem() != 0 )
276 {
277 int lineitemid = listview->selectedItem()->text ( getIDColumn() ).toInt();
278 transaction->clearBudgetIDs ( currentbudget, lineitemid );
279 budget->deleteLineItem ( currentbudget, lineitemid );
280 displayBudgetNames();
281 }
282 else
283 QMessageBox::warning ( this, "QashMoney", "Please select a line item to delete." );
284 checkBudgets();
285 }
286
287void BudgetDisplay::displayLineItems ()
288 {
289 listview->clear();
290 if ( budget->getNumberOfBudgets() != 0 )
291 {
292 QString budgettable = budgetbox->currentText();
293 budgettable.append ( QString::number ( currentbudget ) );
294 budget->displayLineItems ( currentbudget, listview, month, year, budgetview->currentItem() );
295 totalactual = transaction->getActualTotal ( currentbudget, year, month, budgetview->currentItem() );
296 totalbudget = budget->getBudgetTotal ( currentbudget, budgetview->currentItem() );
297 updateBudgetInformation();
298 }
299 }
300
301void BudgetDisplay::checkBudgets ()
302 {
303 if ( budget->getNumberOfBudgets() == 0 )
304 {
305 budgetview->setEnabled ( FALSE );
306 budgetmenu->setItemEnabled ( 2, FALSE );
307 budgetmenu->setItemEnabled ( 3, FALSE );
308 lineitemsmenu->setItemEnabled ( 1, FALSE );
309 lineitemsmenu->setItemEnabled ( 2, FALSE );
310 lineitemsmenu->setItemEnabled ( 3, FALSE );
311 }
312 else
313 {
314 budgetview->setEnabled ( TRUE );
315 budgetmenu->setItemEnabled ( 2, TRUE );
316 budgetmenu->setItemEnabled ( 3, TRUE );
317 lineitemsmenu->setItemEnabled ( 1, TRUE );
318 lineitemsmenu->setItemEnabled ( 2, FALSE );
319 lineitemsmenu->setItemEnabled ( 3, FALSE );
320
321 if ( budget->getNumberOfLineItems ( currentbudget ) != 0 )
322 {
323 lineitemsmenu->setItemEnabled ( 2, TRUE );
324 lineitemsmenu->setItemEnabled ( 3, TRUE );
325 }
326 }
327 }
328
329void BudgetDisplay::updateBudgetInformation ()
330 {
331 if ( budgetview->currentItem() == 0 )
332 {
333 datelabel = preferences->getDate ( year, month );
334 datelabel.prepend ( "Date: " );
335 date->setText ( datelabel );
336 }
337 else
338 date->setText ( QString::number ( year ) );
339
340 QString budget = "Budget: ";
341 budget.append ( totalbudget );
342 budgeted->setText ( budget );
343
344 QString actualamount = "Actual: ";
345 actualamount.append ( totalactual );
346 actual->setText ( actualamount );
347 }
348
349void BudgetDisplay::editBudget ()
350 {
351 constructBudgetWindow();
352
353 //set the title
354 budgetname->setText ( budget->getBudgetName ( currentbudget ) );
355 //set the description
356 description->setText ( budget->getBudgetDescription ( currentbudget ) );
357 // retrieve the two character currency code then
358 // go through the currencty box and find the code
359 //set the currency box to that index number
360 int count = currencybox->currencybox->count();
361 QString code = budget->getCurrency ( currentbudget );
362 for ( int counter = 0; count - 1; counter++ )
363 {
364 if ( QString::compare (currencybox->currencybox->text ( counter ), code ) == 0 )
365 {
366 currencybox->currencybox->setCurrentItem ( counter );
367 break;
368 }
369 }
370 int response = nb->exec();
371 if ( response == 1 )
372 {
373 budget->updateBudget ( budgetname->text(), description->text(), currencybox->currencybox->currentText(), currentbudget );
374 displayBudgetNames();
375 }
376 }
377
378void BudgetDisplay::editLineItem ()
379 {
380 if ( listview->selectedItem() != 0 )
381 {
382 constructLineItemWindow();
383
384 // set the line item name
385 lineitemname->setText ( listview->selectedItem()->text( 0 ) );
386
387 // set the line item time combobox
388 int lineitemtype = budget->getLineItemTime ( currentbudget, listview->selectedItem()->text ( 3 ).toInt() );
389 lineitemtime->setCurrentItem ( lineitemtype );
390
391 // set the line item amount
392 float amount = budget->getLineItemAmount ( currentbudget, listview->selectedItem()->text ( 3 ).toInt() );
393 if ( lineitemtype == 1 )
394 amount = amount / 12;
395 else if ( lineitemtype == 2 )
396 amount = amount / 52;
397 lineitemamount->setText ( QString::number ( amount ) );
398
399 int response = newlineitem->exec();
400 if ( response == 1 )
401 {
402 float amount;
403 if ( lineitemtime->currentItem() == 0 )
404 amount = lineitemamount->text().toFloat();
405 else if ( lineitemtime->currentItem() == 1 )
406 amount = lineitemamount->text().toFloat() * 12;
407 else
408 amount = lineitemamount->text().toFloat() * 52;
409 budget->updateLineItem ( lineitemname->text(), amount, lineitemtime->currentItem(), currentbudget, listview->selectedItem()->text ( 3 ).toInt() );
410 displayLineItems();
411 }
412 }
413 else
414 QMessageBox::warning ( this, "QashMoney", "Please select a line item to edit." );
415 }
416
417