From b36adf6d49cde8135843e1b357dd5e016a69aa7f Mon Sep 17 00:00:00 2001 From: Yorhel Date: Fri, 18 Sep 2009 15:10:21 +0200 Subject: Renamed GeldTransactionModel + tiny fixups in Transaction --- Geld.pro | 4 ++-- geld.cpp | 10 +++++----- geldtransactionmodel.cpp | 48 ------------------------------------------------ geldtransactionmodel.h | 14 -------------- transaction.cpp | 4 +--- transactionmodel.cpp | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ transactionmodel.h | 14 ++++++++++++++ 7 files changed, 70 insertions(+), 72 deletions(-) delete mode 100644 geldtransactionmodel.cpp delete mode 100644 geldtransactionmodel.h create mode 100644 transactionmodel.cpp create mode 100644 transactionmodel.h diff --git a/Geld.pro b/Geld.pro index 197b1ce..647281f 100644 --- a/Geld.pro +++ b/Geld.pro @@ -6,11 +6,11 @@ TARGET = Geld TEMPLATE = app SOURCES += main.cpp \ geld.cpp \ - geldtransactionmodel.cpp \ + transactionmodel.cpp \ transaction.cpp \ contraaccount.cpp HEADERS += geld.h \ - geldtransactionmodel.h \ + transactionmodel.h \ transaction.h \ contraaccount.h FORMS += geld.ui \ diff --git a/geld.cpp b/geld.cpp index 5f6f087..4308814 100644 --- a/geld.cpp +++ b/geld.cpp @@ -5,7 +5,7 @@ #include #include #include -#include "geldtransactionmodel.h" +#include "transactionmodel.h" #include "transaction.h" @@ -24,7 +24,7 @@ Geld::Geld(QWidget *parent) ui->setupUi(this); initDB(f); - GeldTransactionModel *transmod = new GeldTransactionModel(ui->tableTransactions); + TransactionModel *transmod = new TransactionModel(ui->tableTransactions); ui->tableTransactions->setModel(transmod); ui->tableTransactions->setColumnHidden(0, true); ui->tableTransactions->resizeColumnsToContents(); @@ -83,7 +83,7 @@ void Geld::closeDB() void Geld::on_btnEditTransaction_clicked() { // this. is. soooooooo. ugly. - GeldTransactionModel *mod = (GeldTransactionModel *) ui->tableTransactions->model(); + TransactionModel *mod = (TransactionModel *) ui->tableTransactions->model(); QModelIndexList indexes = ui->tableTransactions->selectionModel()->selection().indexes(); if(indexes.count() != mod->columnCount()) return ui->statusBar->showMessage("Nothing selected.", 3000); @@ -101,13 +101,13 @@ void Geld::on_btnAddTramsactopm_clicked() Transaction t(this); if(t.exec() == QDialog::Accepted) { t.save(); - ((GeldTransactionModel *) ui->tableTransactions->model())->refresh(); + ((TransactionModel *) ui->tableTransactions->model())->refresh(); } } void Geld::on_tableTransactions_doubleClicked(QModelIndex index) { - GeldTransactionModel *mod = (GeldTransactionModel *) ui->tableTransactions->model(); + TransactionModel *mod = (TransactionModel *) ui->tableTransactions->model(); int id = mod->record(index.row()).value("id").toInt(); Transaction t(this); t.load(id); diff --git a/geldtransactionmodel.cpp b/geldtransactionmodel.cpp deleted file mode 100644 index e2b9501..0000000 --- a/geldtransactionmodel.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "geldtransactionmodel.h" -#include -#include -#include - -GeldTransactionModel::GeldTransactionModel(QObject *parent) - : QSqlQueryModel(parent) -{ - Q_UNUSED(parent); - refresh(); -} - -void GeldTransactionModel::refresh() { - setQuery( - "SELECT t.id, t.date, t.amount||' '||t.currency, c.name, t.description " - "FROM transactions t " - "LEFT JOIN contra_accounts c ON c.id = t.contra " - "ORDER BY t.date DESC" - ); - setHeaderData(0, Qt::Horizontal, "ID"); - setHeaderData(1, Qt::Horizontal, "Date"); - setHeaderData(2, Qt::Horizontal, "Amount"); - setHeaderData(3, Qt::Horizontal, "Contra account"); - setHeaderData(4, Qt::Horizontal, "Description"); -} - -QVariant GeldTransactionModel::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)); - } - if(role == Qt::ForegroundRole && index.column() == 2) { - double dat = QSqlQueryModel::data(index, Qt::DisplayRole).toString().split(" ").at(0).toDouble(); - return dat > 0 ? Qt::green : Qt::red; - } - if(role == Qt::TextAlignmentRole) { - switch(index.column()) { - case 0: return (int)Qt::AlignVCenter|Qt::AlignRight; - case 1: return (int)Qt::AlignVCenter|Qt::AlignLeft; - case 2: return (int)Qt::AlignVCenter|Qt::AlignRight; - case 3: return (int)Qt::AlignVCenter|Qt::AlignLeft; - case 4: return (int)Qt::AlignVCenter|Qt::AlignLeft; - } - } - return val; -} diff --git a/geldtransactionmodel.h b/geldtransactionmodel.h deleted file mode 100644 index 081041d..0000000 --- a/geldtransactionmodel.h +++ /dev/null @@ -1,14 +0,0 @@ -#ifndef GELDTRANSACTIONMODEL_H -#define GELDTRANSACTIONMODEL_H - -#include - -class GeldTransactionModel : public QSqlQueryModel -{ -public: - GeldTransactionModel(QObject * parent = 0); - void refresh(); - QVariant data(const QModelIndex &index, int role) const; -}; - -#endif // GELDTRANSACTIONMODEL_H diff --git a/transaction.cpp b/transaction.cpp index 3367834..eea8f38 100644 --- a/transaction.cpp +++ b/transaction.cpp @@ -63,7 +63,7 @@ void Transaction::load(int 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)); + 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()); @@ -84,7 +84,6 @@ void Transaction::save(int id) if(id) q.addBindValue(id); q.exec(); - // TODO: error handling? } void Transaction::on_Contra_currentIndexChanged(int index) @@ -95,7 +94,6 @@ void Transaction::on_Contra_currentIndexChanged(int index) ContraAccount c(this); if(c.exec() == QDialog::Accepted) { int id = c.save(0); - qDebug() << "id = " << id; populateContra(); m_ui->Contra->setCurrentIndex(m_ui->Contra->findData(id)); } else { diff --git a/transactionmodel.cpp b/transactionmodel.cpp new file mode 100644 index 0000000..59143e0 --- /dev/null +++ b/transactionmodel.cpp @@ -0,0 +1,48 @@ +#include "transactionmodel.h" +#include +#include +#include + +TransactionModel::TransactionModel(QObject *parent) + : QSqlQueryModel(parent) +{ + Q_UNUSED(parent); + refresh(); +} + +void TransactionModel::refresh() { + setQuery( + "SELECT t.id, t.date, t.amount||' '||t.currency, c.name, t.description " + "FROM transactions t " + "LEFT JOIN contra_accounts c ON c.id = t.contra " + "ORDER BY t.date DESC" + ); + setHeaderData(0, Qt::Horizontal, "ID"); + setHeaderData(1, Qt::Horizontal, "Date"); + setHeaderData(2, Qt::Horizontal, "Amount"); + setHeaderData(3, Qt::Horizontal, "Contra account"); + setHeaderData(4, Qt::Horizontal, "Description"); +} + +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)); + } + if(role == Qt::ForegroundRole && index.column() == 2) { + double dat = QSqlQueryModel::data(index, Qt::DisplayRole).toString().split(" ").at(0).toDouble(); + return dat > 0 ? Qt::green : Qt::red; + } + if(role == Qt::TextAlignmentRole) { + switch(index.column()) { + case 0: return (int)Qt::AlignVCenter|Qt::AlignRight; + case 1: return (int)Qt::AlignVCenter|Qt::AlignLeft; + case 2: return (int)Qt::AlignVCenter|Qt::AlignRight; + case 3: return (int)Qt::AlignVCenter|Qt::AlignLeft; + case 4: return (int)Qt::AlignVCenter|Qt::AlignLeft; + } + } + return val; +} diff --git a/transactionmodel.h b/transactionmodel.h new file mode 100644 index 0000000..72dfedb --- /dev/null +++ b/transactionmodel.h @@ -0,0 +1,14 @@ +#ifndef TRANSACTIONMODEL_H +#define TRANSACTIONMODEL_H + +#include + +class TransactionModel : public QSqlQueryModel +{ +public: + TransactionModel(QObject * parent = 0); + void refresh(); + QVariant data(const QModelIndex &index, int role) const; +}; + +#endif // TRANSACTIONMODEL_H -- cgit v1.2.3