Diffstat (limited to 'noncore/apps/qashmoney/budgetdisplay.cpp') (more/less context) (ignore whitespace changes)
-rwxr-xr-x | noncore/apps/qashmoney/budgetdisplay.cpp | 417 |
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 | |||
10 | extern Preferences *preferences; | ||
11 | extern Budget *budget; | ||
12 | extern Transaction *transaction; | ||
13 | |||
14 | BudgetDisplay::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 | |||
99 | void 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 | |||
109 | void 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 | |||
125 | void BudgetDisplay::saveSortingPreference ( int column ) | ||
126 | { | ||
127 | preferences->changeSortingPreference ( 3, column ); | ||
128 | } | ||
129 | |||
130 | int 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 | |||
139 | void 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 | |||
153 | void 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 | |||
171 | void 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 | |||
190 | void BudgetDisplay::setCurrentBudget ( int index ) | ||
191 | { | ||
192 | currentbudget = ( ids->operator[] ( index ).toInt() ); | ||
193 | displayLineItems(); | ||
194 | } | ||
195 | |||
196 | void BudgetDisplay::setCurrentView ( int index ) | ||
197 | { | ||
198 | displayLineItems(); | ||
199 | } | ||
200 | |||
201 | void 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 | |||
228 | void 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 | |||
250 | void 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 | |||
273 | void 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 | |||
287 | void 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 | |||
301 | void 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 | |||
329 | void 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 | |||
349 | void 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 | |||
378 | void 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 | |||