diff options
author | Yorhel <git@yorhel.nl> | 2009-09-19 11:49:19 +0200 |
---|---|---|
committer | Yorhel <git@yorhel.nl> | 2009-09-19 11:49:19 +0200 |
commit | dea3c51ca55e30767d8321f2fa9581d036df0828 (patch) | |
tree | a4826edbca0c4be3389b956775a74e984851e7f3 | |
parent | faab1d6c213457322bfae715f74988ad7cd0db90 (diff) |
Removed the concept of 'currencies' and added balance indicator
-rw-r--r-- | geld.cpp | 7 | ||||
-rw-r--r-- | geld.ui | 32 | ||||
-rw-r--r-- | transaction.cpp | 11 | ||||
-rw-r--r-- | transaction.ui | 24 | ||||
-rw-r--r-- | transactionmodel.cpp | 7 |
5 files changed, 33 insertions, 48 deletions
@@ -72,7 +72,6 @@ void Geld::initDB(QString file) ); q.exec("CREATE TABLE IF NOT EXISTS transactions (" "id INTEGER PRIMARY KEY," - "currency TEXT," // only EUR and GLD are supported at the moment "amount INTEGER," // amount in cents "date TEXT," // yyyy-mm-dd "contra INTEGER REFERENCES contra_accounts (id)," // contra account @@ -109,6 +108,12 @@ void Geld::refreshTransactions() { ((TransactionModel *) ui->tableTransactions->model())->refresh(); ui->tableTransactions->resizeColumnsToContents(); ui->tableTransactions->horizontalHeader()->setStretchLastSection(true); + + QSqlQuery q; + q.exec("SELECT SUM(amount) FROM transactions"); + q.next(); + ui->lblTransactionBalance->setText(QString("Balance: <span style=\"color: %1\">%2</span>") + .arg(q.value(0).toInt() < 0 ? "red" : "green").arg(q.value(0).toDouble()/100, 4, 'f', 2)); } void Geld::editTransaction() @@ -51,27 +51,8 @@ <attribute name="verticalHeaderDefaultSectionSize"> <number>18</number> </attribute> - <attribute name="verticalHeaderDefaultSectionSize"> - <number>18</number> - </attribute> - <attribute name="horizontalHeaderHighlightSections"> - <bool>false</bool> - </attribute> </widget> </item> - <item row="1" column="0"> - <spacer name="horizontalSpacer"> - <property name="orientation"> - <enum>Qt::Horizontal</enum> - </property> - <property name="sizeHint" stdset="0"> - <size> - <width>40</width> - <height>20</height> - </size> - </property> - </spacer> - </item> <item row="1" column="1"> <widget class="QPushButton" name="btnEditTransaction"> <property name="text"> @@ -86,6 +67,19 @@ </property> </widget> </item> + <item row="1" column="0"> + <widget class="QLabel" name="lblTransactionBalance"> + <property name="sizePolicy"> + <sizepolicy hsizetype="Expanding" vsizetype="Preferred"> + <horstretch>0</horstretch> + <verstretch>0</verstretch> + </sizepolicy> + </property> + <property name="textFormat"> + <enum>Qt::RichText</enum> + </property> + </widget> + </item> </layout> </widget> </widget> diff --git a/transaction.cpp b/transaction.cpp index eea8f38..071f24d 100644 --- a/transaction.cpp +++ b/transaction.cpp @@ -11,9 +11,6 @@ Transaction::Transaction(QWidget *parent) : { m_ui->setupUi(this); - m_ui->Currency->addItem("EUR"); - m_ui->Currency->addItem("GLD"); - populateContra(); QDoubleValidator *dv = new QDoubleValidator(-1000, 1000, 2, m_ui->Amount); @@ -58,13 +55,12 @@ void Transaction::on_buttonBox_accepted() void Transaction::load(int id) { QSqlQuery q; - q.prepare("SELECT date, amount, currency, contra, description FROM transactions WHERE id = ?"); + q.prepare("SELECT date, amount, contra, description FROM transactions WHERE id = ?"); q.addBindValue(id); q.exec(); q.next(); m_ui->Date->setText(q.value(0).toString()); m_ui->Amount->setText(QString("%1").arg(q.value(1).toDouble()/100, 4, 'f', 2)); - m_ui->Currency->setCurrentIndex(m_ui->Currency->findText(q.value(2).toString())); m_ui->Contra->setCurrentIndex(m_ui->Contra->findData(q.value(3))); m_ui->Description->setPlainText(q.value(4).toString()); } @@ -73,12 +69,11 @@ void Transaction::save(int id) { QSqlQuery q; q.prepare(id - ? "UPDATE transactions SET date = ?, amount = ?, currency = ?, contra = ?, description = ? WHERE id = ?" - : "INSERT INTO transactions (date, amount, currency, contra, description) VALUES (?, ?, ?, ?, ?)" + ? "UPDATE transactions SET date = ?, amount = ?, contra = ?, description = ? WHERE id = ?" + : "INSERT INTO transactions (date, amount, contra, description) VALUES (?, ?, ?, ?, ?)" ); q.addBindValue(m_ui->Date->text()); q.addBindValue(m_ui->Amount->text().toDouble()*100); - q.addBindValue(m_ui->Currency->itemText(m_ui->Currency->currentIndex())); q.addBindValue(m_ui->Contra->itemData(m_ui->Contra->currentIndex()).toInt()); q.addBindValue(m_ui->Description->toPlainText()); if(id) diff --git a/transaction.ui b/transaction.ui index d750b1f..071546f 100644 --- a/transaction.ui +++ b/transaction.ui @@ -16,7 +16,7 @@ <property name="modal"> <bool>true</bool> </property> - <layout class="QGridLayout" name="gridLayout"> + <layout class="QFormLayout" name="formLayout"> <item row="0" column="0"> <widget class="QLabel" name="label"> <property name="text"> @@ -24,7 +24,7 @@ </property> </widget> </item> - <item row="0" column="1" colspan="2"> + <item row="0" column="1"> <widget class="QLineEdit" name="Date"> <property name="inputMask"> <string>9999-99-99; </string> @@ -48,21 +48,14 @@ </property> </widget> </item> - <item row="1" column="2"> - <widget class="QComboBox" name="Currency"> - <property name="editable"> - <bool>false</bool> - </property> - </widget> - </item> - <item row="2" column="0"> + <item row="3" column="0"> <widget class="QLabel" name="label_3"> <property name="text"> <string>Contra Account</string> </property> </widget> </item> - <item row="2" column="1" colspan="2"> + <item row="3" column="1"> <widget class="QComboBox" name="Contra"> <property name="sizePolicy"> <sizepolicy hsizetype="Expanding" vsizetype="Fixed"> @@ -72,21 +65,21 @@ </property> </widget> </item> - <item row="5" column="0"> + <item row="4" column="0"> <widget class="QLabel" name="label_4"> <property name="text"> <string>Description</string> </property> </widget> </item> - <item row="5" column="1" colspan="2"> + <item row="4" column="1"> <widget class="QPlainTextEdit" name="Description"> <property name="tabChangesFocus"> <bool>true</bool> </property> </widget> </item> - <item row="7" column="0" colspan="3"> + <item row="5" column="0" colspan="2"> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -96,7 +89,7 @@ </property> </widget> </item> - <item row="4" column="1" colspan="2"> + <item row="2" column="1"> <widget class="QLabel" name="label_5"> <property name="text"> <string>Use positive values for incoming and negative for outgoing transactions.</string> @@ -111,7 +104,6 @@ <tabstops> <tabstop>Date</tabstop> <tabstop>Amount</tabstop> - <tabstop>Currency</tabstop> <tabstop>Contra</tabstop> <tabstop>Description</tabstop> <tabstop>buttonBox</tabstop> diff --git a/transactionmodel.cpp b/transactionmodel.cpp index 59143e0..507295b 100644 --- a/transactionmodel.cpp +++ b/transactionmodel.cpp @@ -12,7 +12,7 @@ TransactionModel::TransactionModel(QObject *parent) void TransactionModel::refresh() { setQuery( - "SELECT t.id, t.date, t.amount||' '||t.currency, c.name, t.description " + "SELECT t.id, t.date, t.amount, c.name, t.description " "FROM transactions t " "LEFT JOIN contra_accounts c ON c.id = t.contra " "ORDER BY t.date DESC" @@ -28,11 +28,10 @@ QVariant TransactionModel::data(const QModelIndex &index, int role) const { QVariant val = QSqlQueryModel::data(index, role); if(role == Qt::DisplayRole && index.column() == 2) { - QStringList v = val.toString().split(" "); - return QString("%1 %2").arg(v.at(0).toDouble()/100, 4, 'f', 2).arg(v.at(1)); + return QString("%1").arg(val.toDouble()/100, 4, 'f', 2); } if(role == Qt::ForegroundRole && index.column() == 2) { - double dat = QSqlQueryModel::data(index, Qt::DisplayRole).toString().split(" ").at(0).toDouble(); + double dat = QSqlQueryModel::data(index, Qt::DisplayRole).toDouble(); return dat > 0 ? Qt::green : Qt::red; } if(role == Qt::TextAlignmentRole) { |