summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorhel <git@yorhel.nl>2009-09-19 11:49:19 +0200
committerYorhel <git@yorhel.nl>2009-09-19 11:49:19 +0200
commitdea3c51ca55e30767d8321f2fa9581d036df0828 (patch)
treea4826edbca0c4be3389b956775a74e984851e7f3
parentfaab1d6c213457322bfae715f74988ad7cd0db90 (diff)
Removed the concept of 'currencies' and added balance indicator
-rw-r--r--geld.cpp7
-rw-r--r--geld.ui32
-rw-r--r--transaction.cpp11
-rw-r--r--transaction.ui24
-rw-r--r--transactionmodel.cpp7
5 files changed, 33 insertions, 48 deletions
diff --git a/geld.cpp b/geld.cpp
index 2c2903a..aaab6dd 100644
--- a/geld.cpp
+++ b/geld.cpp
@@ -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()
diff --git a/geld.ui b/geld.ui
index c3fceb2..e3e618a 100644
--- a/geld.ui
+++ b/geld.ui
@@ -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) {