author | harlekin <harlekin> | 2002-07-05 13:00:41 (UTC) |
---|---|---|
committer | harlekin <harlekin> | 2002-07-05 13:00:41 (UTC) |
commit | 60238d4e9781ad18475a3b45bceaad1d30ea1b8b (patch) (side-by-side diff) | |
tree | f4aac0b3daab54d8cb004879a91c51fd1f619a55 /noncore/apps/checkbook/qcheckentry.cpp | |
parent | a332e5e111b0c9ef8eb0836876a4ff386c660514 (diff) | |
download | opie-60238d4e9781ad18475a3b45bceaad1d30ea1b8b.zip opie-60238d4e9781ad18475a3b45bceaad1d30ea1b8b.tar.gz opie-60238d4e9781ad18475a3b45bceaad1d30ea1b8b.tar.bz2 |
spendings tracking app by Nick Betcher (who quit qte development .-( )
Diffstat (limited to 'noncore/apps/checkbook/qcheckentry.cpp') (more/less context) (show whitespace changes)
-rw-r--r-- | noncore/apps/checkbook/qcheckentry.cpp | 251 |
1 files changed, 251 insertions, 0 deletions
diff --git a/noncore/apps/checkbook/qcheckentry.cpp b/noncore/apps/checkbook/qcheckentry.cpp new file mode 100644 index 0000000..9ff02c9 --- a/dev/null +++ b/noncore/apps/checkbook/qcheckentry.cpp @@ -0,0 +1,251 @@ +#include "qcheckentry.h" + +QCheckEntry::QCheckEntry() + : QCheckEntryBase() +{ + connect(transAmount, SIGNAL(textChanged(const QString &)), this, SLOT(amountChanged(const QString &))); + connect(transFee, SIGNAL(textChanged(const QString &)), this, SLOT(transFeeChanged(const QString &))); + connect(payment, SIGNAL(clicked()), this, SLOT(paymentClicked())); + connect(deposit, SIGNAL(clicked()), this, SLOT(depositClicked())); + + QString todaysdate = QString::number(QDate::currentDate().month()); + todaysdate.append("/"); + todaysdate.append(QString::number(QDate::currentDate().day())); + todaysdate.append("/"); + todaysdate.append(QString::number(QDate::currentDate().year())); + dateEdit->setText(todaysdate); + + descriptionCombo->setFocus(); + + dateEdit->setValidChars("0123456789./-"); + dateEdit->setMaxLength(10); + + descriptionCombo->lineEdit()->setMaxLength(30); + + checkNumber->setValidChars("0123456789-"); + checkNumber->setMaxLength(10); + + transAmount->setValidChars("0123456789."); + + transFee->setMaxLength(5); + transFee->setValidChars("0123456789."); +} + +void QCheckEntry::paymentClicked() +{ + cmbCategory->clear(); + cmbCategory->insertItem( tr( "Automobile" ) ); + cmbCategory->insertItem( tr( "Bills" ) ); + cmbCategory->insertItem( tr( "CDs" ) ); + cmbCategory->insertItem( tr( "Clothing" ) ); + cmbCategory->insertItem( tr( "Computer" ) ); + cmbCategory->insertItem( tr( "DVDs" ) ); + cmbCategory->insertItem( tr( "Eletronics" ) ); + cmbCategory->insertItem( tr( "Entertainment" ) ); + cmbCategory->insertItem( tr( "Food" ) ); + cmbCategory->insertItem( tr( "Gasoline" ) ); + cmbCategory->insertItem( tr( "Misc" ) ); + cmbCategory->insertItem( tr( "Movies" ) ); + cmbCategory->insertItem( tr( "Rent" ) ); + cmbCategory->insertItem( tr( "Travel" ) ); + cmbCategory->setCurrentItem( 0 ); + transType->clear(); + transType->insertItem( tr( "Debit Charge" ) ); + transType->insertItem( tr( "Written Check" ) ); + transType->insertItem( tr( "Transfer" ) ); + transType->insertItem( tr( "Credit Card" ) ); +} + +void QCheckEntry::depositClicked() +{ + cmbCategory->clear(); + cmbCategory->insertItem( tr( "Work" ) ); + cmbCategory->insertItem( tr( "Family Member" ) ); + cmbCategory->insertItem( tr( "Misc. Credit" ) ); + cmbCategory->setCurrentItem( 0 ); + transType->clear(); + transType->insertItem( tr( "Written Check" ) ); + transType->insertItem( tr( "Automatic Payment" ) ); + transType->insertItem( tr( "Transfer" ) ); + transType->insertItem( tr( "Cash" ) ); +} + +QStringList QCheckEntry::popupEntry(const QStringList &originaldata) +{ + QCheckEntry qce; + + // This is how the list looks: + // 0: true or false, true == payment, false == deposit + // 1: description of the transaction + // 2: category name + // 3: transaction type (stores the integer value of the index of the combobox) + // 4: check number of the transaction (if any) + // 5: transaction amount + // 6: transaction fee (e.g. service charge, or ATM charge). + // 7: date of the transaction + // 8: additional notes + // 9: recently used descriptions + if (originaldata.count() > 1) + { + if (originaldata[0] == "true") + { + qce.payment->setChecked(true); + qce.paymentClicked(); + } else { + if (originaldata[0] == "false") + { + qce.deposit->setChecked(true); + qce.depositClicked(); + } + } + qce.descriptionCombo->lineEdit()->setText(originaldata[1]); + qce.cmbCategory->lineEdit()->setText(originaldata[2]); + qce.transType->setCurrentItem(originaldata[3].toInt()); + qce.checkNumber->setText(originaldata[4]); + qce.transAmount->setText(originaldata[5]); + qce.transFee->setText(originaldata[6]); + qce.dateEdit->setText(originaldata[7]); + qce.additionalNotes->setText(originaldata[8]); + QStringList recentlist; + if (!originaldata[9].isEmpty()) + { + recentlist = QStringList::split(',', originaldata[9], false); + } + if (!recentlist.isEmpty()) + { + qce.descriptionCombo->insertStringList(recentlist); + } + } else { + QStringList recentlist; + if (!originaldata[0].isEmpty()) + { + recentlist = QStringList::split(',', originaldata[0], false); + } + if (!recentlist.isEmpty()) + { + qce.descriptionCombo->insertStringList(recentlist); + } + } + + qce.setWFlags(Qt::WType_Modal); + qce.showMaximized(); + + qce.descriptionCombo->lineEdit()->clear(); + + if (qce.exec() == QDialog::Accepted) + { + // Validate that the user has inputed a valid dollar amount + if (qce.transFee->text().contains('.') == 0) + { + QString text = qce.transFee->text(); + text.append(".00"); + qce.transFee->setText(text); + } else { + QString tmp = qce.transFee->text(); + if (tmp.mid(tmp.find('.'), tmp.length()).length() == 1) + { + tmp.append("00"); + qce.transFee->setText(tmp); + } else { + if (tmp.mid(tmp.find('.'), tmp.length()).length() == 2) + { + tmp.append("0"); + qce.transFee->setText(tmp); + } + } + } + if (qce.transAmount->text().contains('.') == 0) + { + QString text = qce.transAmount->text(); + text.append(".00"); + qce.transAmount->setText(text); + } else { + QString tmp = qce.transAmount->text(); + if (tmp.mid(tmp.find('.'), tmp.length()).length() == 1) + { + tmp.append("00"); + qce.transAmount->setText(tmp); + } else { + if (tmp.mid(tmp.find('.'), tmp.length()).length() == 2) + { + tmp.append("0"); + qce.transAmount->setText(tmp); + } + } + } + + QString recent; + if (qce.descriptionCombo->count() != 0) + { + QStringList recentlist = QStringList::split(',', originaldata[9], false); + if (recentlist.count() >= 10) + { + recentlist.remove(recentlist.last()); + } + recentlist.prepend(qce.descriptionCombo->lineEdit()->text()); + recent = recentlist.join(","); + } else { + recent = qce.descriptionCombo->lineEdit()->text(); + } + + QString checkNumberString = qce.checkNumber->text(); + if (checkNumberString.isEmpty() == true) + { + checkNumberString = "0"; + } + + QString paymentChecked = "true"; + if (qce.payment->isChecked() == false) + { + paymentChecked = "false"; + } + QStringList returnvalue; + returnvalue << paymentChecked << qce.descriptionCombo->lineEdit()->text() << qce.cmbCategory->lineEdit()->text() << QString::number(qce.transType->currentItem()) << checkNumberString << qce.transAmount->text() << qce.transFee->text() << qce.dateEdit->text() << qce.additionalNotes->text() << recent; + return returnvalue; + } else { + QStringList blank; + return blank; + } +} + +void QCheckEntry::transFeeChanged(const QString &input) +{ + QString tmpinput = input; + if (tmpinput.contains('.') > 1) + { + int first = tmpinput.find('.'); + tmpinput = tmpinput.remove(tmpinput.find('.', (first + 1)), 1); + } + if (tmpinput.contains(QRegExp("\\.[0-9][0-9]{2}$")) >= 1) + { + tmpinput = tmpinput.remove((tmpinput.length() - 1), 1); + } + transFee->setText(tmpinput); +} + +void QCheckEntry::amountChanged(const QString &input) +{ + QString tmpinput = input; + if (tmpinput.contains('.') > 1) + { + int first = tmpinput.find('.'); + tmpinput = tmpinput.remove(tmpinput.find('.', (first + 1)), 1); + } + if (tmpinput.contains(QRegExp("\\.[0-9][0-9]{2}$")) >= 1) + { + tmpinput = tmpinput.remove((tmpinput.length() - 1), 1); + } + transAmount->setText(tmpinput); +} + +void QCheckEntry::accept() +{ + // Does the description combo not have any text in it? Do something if it doesn't! + if (descriptionCombo->lineEdit()->text().isEmpty() == true) + { + QMessageBox::critical(this, "Field Missing.", "<qt>You didn't enter a description for this transaction. Please fill out the \"Transaction Description\" field and try again.</qt>"); + descriptionCombo->setFocus(); + return; + } + QDialog::accept(); +} |