[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: =?utf-8?q?=5Bknipptasch=5D_/=3A_move_AccountModel_from_gui/_to_c?=
From: Stefan_Böhmann <kde () hilefoks ! org>
Date: 2011-01-31 23:37:23
Message-ID: 20110131233723.232C9A60CD () git ! kde ! org
[Download RAW message or body]
Git commit b94e3c7d4a0f0747ffc931afd547f0011977a047 by Stefan Böhmann.
Pushed by sboehmann into branch 'master'.
move AccountModel from gui/ to core/
M +4 -0 core/CMakeLists.txt
A +771 -0 core/accountmodel.cpp [License: GPL (v2+)]
A +141 -0 core/accountmodel.h [License: GPL (v2+)]
A +1 -0 core/include/Knipptasch/AccountModel [License: Trivial file]
M +0 -2 gui/CMakeLists.txt
D +0 -632 gui/accountmodel.cpp
D +0 -114 gui/accountmodel.h
M +1 -0 gui/accountsortfilterproxymodel.cpp
M +56 -6 gui/accountwidget.cpp
M +3 -1 gui/delegate/categorydelegate.cpp
M +3 -1 gui/delegate/postingtextdelegate.cpp
M +4 -2 gui/quickreportwidget.cpp
http://commits.kde.org/knipptasch/b94e3c7d4a0f0747ffc931afd547f0011977a047
diff --git a/core/CMakeLists.txt b/core/CMakeLists.txt
index 891b642..5df4818 100644
--- a/core/CMakeLists.txt
+++ b/core/CMakeLists.txt
@@ -17,6 +17,8 @@ set( knipptasch_core_SOURCES
exportplugin.cpp
importplugin.cpp
+ accountmodel.cpp
+
widgets/dateedit.cpp
widgets/datevalidator.cpp
widgets/datepickerpopup.cpp
@@ -38,6 +40,8 @@ set( knipptasch_core_HEADERS
exportplugin.h
importplugin.h
+ accountmodel.h
+
widgets/dateedit.h
widgets/datevalidator.h
widgets/datepickerpopup.h
diff --git a/core/accountmodel.cpp b/core/accountmodel.cpp
new file mode 100644
index 0000000..724a7ee
--- /dev/null
+++ b/core/accountmodel.cpp
@@ -0,0 +1,771 @@
+/*
+ * Copyright 2007-2010 by Stefan Böhmann <kde@hilefoks.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#include "accountmodel.h"
+
+#include "backend/account.h"
+#include "backend/posting.h"
+#include "backend/category.h"
+#include "backend/money.h"
+
+#include "compat/utils.h"
+
+#include <QVariant>
+#include <QBrush>
+#include <QStringList>
+#include <QDate>
+#include <QFontMetrics>
+#include <QFlags>
+#include <QDebug>
+
+
+
+struct AccountModel::Private
+{
+ Private()
+ : account( 0 ),
+ posting( new Posting )
+ {
+ }
+
+
+ ~Private()
+ {
+ delete posting;
+ delete account;
+ }
+
+
+ Account *account;
+ Posting *posting;
+
+ QString dateFormat;
+ QColor positiveAmountForegroundColor;
+ QColor negativeAmountForegroundColor;
+ QColor availableWarrantyForegroundColor;
+ QColor expiredWarrantyForegroundColor;
+ QColor currentPostingBackgroundColor;
+ QColor futurePostingBackgroundColor;
+ QColor incompletePostingBackgroundColor;
+ QColor defaultPostingBackgroundColor;
+};
+
+
+
+AccountModel::AccountModel(QObject *parent)
+ : QAbstractTableModel( parent ),
+ d( new AccountModel::Private )
+{
+}
+
+
+AccountModel::~AccountModel()
+{
+ delete d;
+}
+
+
+Account* AccountModel::account()
+{
+ return d->account;
+}
+
+
+const Account* AccountModel::account() const
+{
+ return d->account;
+}
+
+
+void AccountModel::setAccount(Account *account)
+{
+#if QT_VERSION >= 0x040600
+ beginResetModel();
+#endif
+
+ d->account = account;
+ delete d->posting;
+ d->posting = new Posting;
+
+#if QT_VERSION >= 0x040600
+ endResetModel();
+#else
+ reset();
+#endif
+}
+
+
+const Posting* AccountModel::posting(const QModelIndex &index) const
+{
+ if( index.isValid() ) {
+ return posting( index.row() );
+ }
+
+ return 0;
+}
+
+
+const Posting* AccountModel::posting(int row) const
+{
+ Q_ASSERT( row >= 0 );
+
+ if( row < account()->countPostings() ) {
+ return account()->posting( row );
+ }
+
+ return 0;
+}
+
+
+Posting* AccountModel::posting(const QModelIndex &index)
+{
+ if( index.isValid() ) {
+ return posting( index.row() );
+ }
+
+ return 0;
+}
+
+
+Posting* AccountModel::posting(int row)
+{
+ Q_ASSERT( row >= 0 );
+
+ if( row < account()->countPostings() ) {
+ return account()->posting( row );
+ }
+
+ return 0;
+}
+
+
+AccountModel::PostingTypeFlags AccountModel::postingType(int row) const
+{
+ if( row < d->account->countPostings() ) {
+ return postingType( d->account->posting( row ) );
+ }
+
+ return postingType( d->posting );
+}
+
+
+int AccountModel::rowCount(const QModelIndex &parent) const
+{
+ if( !d->account ) {
+ return 0;
+ }
+
+ if( parent.isValid() ) {
+ return 0;
+ }
+
+ return d->account->countPostings() + 1;
+}
+
+
+int AccountModel::columnCount(const QModelIndex &parent) const
+{
+ if( parent.isValid() ) {
+ return 0;
+ }
+
+ return AccountModel::ENTRYCOUNT;
+}
+
+
+QVariant AccountModel::data(const QModelIndex &index, int role) const
+{
+ if( !index.isValid() ) {
+ return QVariant();
+ }
+
+ if( !d->account ) {
+ return QVariant();
+ }
+
+ Q_ASSERT( index.row() >= 0 );
+ Q_ASSERT( index.row() <= d->account->countPostings() );
+
+ switch( role ) {
+ case Qt::TextAlignmentRole:
+ return textAlignmentRoleData( index );
+
+ case Qt::BackgroundRole:
+ return backgroundRoleData( index );
+
+ case Qt::ForegroundRole:
+ return foregroundRoleData( index );
+
+ case Qt::DecorationRole:
+ return decorationRoleData( index );
+
+ case Qt::EditRole:
+ case Qt::DisplayRole:
+ break;
+
+ default: // Can't handle this role...
+ return QVariant();
+ }
+
+ Posting *entry = 0;
+ if( index.row() < d->account->countPostings() ) {
+ entry = d->account->posting( index.row() );
+ }
+ else {
+ entry = d->posting;
+ }
+
+ Q_ASSERT( entry );
+
+ switch( index.column() )
+ {
+ case MATURITY:
+ {
+ QDate dt = entry->maturity();
+ if( role == Qt::EditRole ) {
+ return dt;
+ }
+ if( !dateFormat().isEmpty() ) {
+ return dt.toString( dateFormat() );
+ }
+ return formatShortDate( dt );
+ }
+ case POSTINGTEXT:
+ return entry->postingText();
+
+ case AMOUNT:
+ if( role == Qt::EditRole ) {
+ return QVariant::fromValue( entry->amount() );
+ }
+ else if( entry->amount().cents() != 0 ) {
+ return entry->amount().toString();
+ }
+ return QVariant();
+
+ case BALANCE:
+ break;
+
+ case VALUEDATE:
+ {
+ QDate dt = entry->valueDate();
+ if( role == Qt::EditRole ) {
+ return dt;
+ }
+ if( !dateFormat().isEmpty() ) {
+ return dt.toString( dateFormat() );
+ }
+ return formatShortDate( dt );
+ }
+ case CATEGORY:
+ if( role == Qt::EditRole ) {
+ return account()->identifierByObject( entry->category() );
+ }
+ else if( entry->category() ) {
+ return entry->category()->name();
+ }
+
+ return QVariant();
+
+ case PAYEE:
+ return entry->payee();
+
+ case STATEMENT:
+ if( role == Qt::EditRole || entry->page() > 0 ) {
+ return entry->page();
+ }
+ break;
+
+ case VOUCHER:
+ entry->voucher();
+
+ case WARRANTY:
+ {
+ QDate dt = entry->warranty();
+ if( role == Qt::EditRole ) {
+ return dt;
+ }
+ if( !dateFormat().isEmpty() ) {
+ return dt.toString( dateFormat() );
+ }
+ return formatShortDate( dt );
+ }
+ case PAYMENT:
+ return entry->methodOfPayment();
+
+ case DESCRIPTION:
+ return entry->description();
+ }
+
+ return QVariant();
+}
+
+
+QVariant AccountModel::headerData(int section, Qt::Orientation orientation, int \
role) const +{
+ if( orientation == Qt::Horizontal && role == Qt::DisplayRole && section < \
AccountModel::ENTRYCOUNT ) { + switch( section ) {
+ case MATURITY:
+ return tr( "Maturity" );
+
+ case POSTINGTEXT:
+ return tr( "Posting Text" );
+
+ case AMOUNT:
+ return tr( "Amount" );
+
+ case BALANCE:
+ return tr( "Balance" );
+
+ case CATEGORY:
+ return tr( "Category" );
+
+ case PAYEE:
+ return tr( "Payee" );
+
+ case STATEMENT:
+ return tr( "Statement" );
+
+ case VOUCHER:
+ return tr( "Voucher" );
+
+ case WARRANTY:
+ return tr( "Warranty" );
+
+ case PAYMENT:
+ return tr( "Method of payment" );
+
+ case VALUEDATE:
+ return tr( "Value Date" );
+
+ case DESCRIPTION:
+ return tr( "Description" );
+
+ default:
+ break;
+ }
+ }
+
+ return QAbstractTableModel::headerData( section, orientation, role );
+}
+
+
+bool AccountModel::setData(const QModelIndex &index, const QVariant &value, int \
role) +{
+ if( !index.isValid() ) {
+ return false;
+ }
+
+ if( !d->account ) {
+ return false;
+ }
+
+ if( !(role == Qt::EditRole || role == Qt::DisplayRole) ) {
+ return false;
+ }
+
+ if( index.column() == BALANCE ) {
+ return false;
+ }
+
+ Posting *entry = 0;
+ if( index.row() < d->account->countPostings() ) {
+ entry = d->account->posting( index.row() );
+ }
+ else {
+ Q_ASSERT( index.row() == d->account->countPostings() );
+ entry = d->posting;
+ }
+
+ Q_ASSERT( entry );
+
+ switch( index.column() ) {
+ case MATURITY:
+ entry->setMaturity( value.toDate() );
+ break;
+
+ case POSTINGTEXT:
+ entry->setPostingText( value.toString().trimmed() );
+ break;
+
+ case AMOUNT:
+ {
+ bool ok;
+ double amount = value.toDouble( &ok );
+ if( !ok ) {
+ qDebug() << "invalid amount value";
+ }
+ else {
+ entry->setAmount( amount );
+ }
+ }
+ break;
+
+ case BALANCE:
+ return false;
+
+ case VALUEDATE:
+ entry->setValueDate( value.toDate() );
+ break;
+
+ case CATEGORY:
+ if( role == Qt::EditRole ) {
+ bool ok;
+ int v = value.toInt( &ok );
+ Q_ASSERT( ok );
+
+ Object *object = account()->objectByIdentifier( v );
+ Category *category = 0;
+
+ if( object ) {
+ category = qobject_cast<Category*>( object );
+ Q_ASSERT( category );
+ }
+
+ entry->setCategory( category );
+ }
+ break;
+
+ case PAYEE:
+ entry->setPayee( value.toString() );
+ break;
+
+ case STATEMENT:
+ entry->setPage( value.toInt() );
+ break;
+
+ case VOUCHER:
+ entry->setVoucher( value.toString() );
+ break;
+
+ case DESCRIPTION:
+ entry->setDescription( value.toString() );
+ break;
+ }
+
+ if( index.row() >= d->account->countPostings() ) {
+ if( postingIsValid( d->posting ) ) {
+ beginInsertRows( QModelIndex(), rowCount(), rowCount() );
+ d->account->addPosting( entry );
+ endInsertRows();
+
+ d->posting = new Posting;
+ emit dataChanged( createIndex( rowCount()-1, 0 ),
+ createIndex( rowCount(), columnCount() ) );
+ }
+ }
+ else {
+ emit dataChanged( createIndex( index.row(), index.column() ),
+ createIndex( index.row(), index.column() ) );
+ }
+
+ return true;
+}
+
+
+Qt::ItemFlags AccountModel::flags(const QModelIndex &index) const
+{
+ if( !index.isValid() ) {
+ return 0;
+ }
+
+ if( !d->account ) {
+ return 0;
+ }
+
+ if( index.column() == BALANCE ) {
+ return QAbstractItemModel::flags( index );
+ }
+
+ return QAbstractTableModel::flags( index ) | Qt::ItemIsEditable;
+}
+
+
+bool AccountModel::removeRows(int row, int count, const QModelIndex &parent)
+{
+ if( !d->account ) {
+ return false;
+ }
+
+ bool re = false;
+
+ if( ( row + count - 1 ) == d->account->countPostings() ) {
+ count -= 1;
+ d->posting = new Posting;
+ re = true;
+ }
+
+ if( ( row + count - 1 ) < d->account->countPostings() ) {
+ beginRemoveRows( parent, row, row + count - 1 );
+
+ for(int i = 0; i < count; ++i) {
+ d->account->removePosting( row );
+ }
+
+ endRemoveRows();
+ re = true;
+ }
+
+ return re;
+}
+
+
+QString AccountModel::dateFormat() const
+{
+ return d->dateFormat;
+}
+
+
+void AccountModel::setDateFormat(const QString &str)
+{
+ d->dateFormat = str;
+}
+
+
+QColor AccountModel::positiveAmountForegroundColor() const
+{
+ return d->positiveAmountForegroundColor;
+}
+
+
+void AccountModel::setPositiveAmountForegroundColor(const QColor &color)
+{
+ d->positiveAmountForegroundColor = color;
+}
+
+
+QColor AccountModel::negativeAmountForegroundColor() const
+{
+ return d->negativeAmountForegroundColor;
+}
+
+
+void AccountModel::setNegativeAmountForegroundColor(const QColor &color)
+{
+ d->negativeAmountForegroundColor = color;
+}
+
+QColor AccountModel::availableWarrantyForegroundColor() const
+{
+ return d->availableWarrantyForegroundColor;
+}
+
+
+void AccountModel::setAvailableWarrantyForegroundColor(const QColor &color)
+{
+ d->availableWarrantyForegroundColor = color;
+}
+
+
+QColor AccountModel::expiredWarrantyForegroundColor() const
+{
+ return d->expiredWarrantyForegroundColor;
+}
+
+
+void AccountModel::setExpiredWarrantyForegroundColor(const QColor &color)
+{
+ d->expiredWarrantyForegroundColor = color;
+}
+
+
+QColor AccountModel::currentPostingBackgroundColor() const
+{
+ return d->currentPostingBackgroundColor;
+}
+
+
+void AccountModel::setCurrentPostingBackgroundColor(const QColor &color)
+{
+ d->currentPostingBackgroundColor = color;
+}
+
+
+QColor AccountModel::futurePostingBackgroundColor() const
+{
+ return d->futurePostingBackgroundColor;
+}
+
+
+void AccountModel::setFuturePostingBackgroundColor(const QColor &color)
+{
+ d->futurePostingBackgroundColor = color;
+}
+
+
+QColor AccountModel::incompletePostingBackgroundColor() const
+{
+ return d->incompletePostingBackgroundColor;
+}
+
+
+void AccountModel::setIncompletePostingBackgroundColor(const QColor &color)
+{
+ d->incompletePostingBackgroundColor = color;
+}
+
+
+QColor AccountModel::defaultPostingBackgroundColor() const
+{
+ return d->defaultPostingBackgroundColor;
+}
+
+
+void AccountModel::setDefaultPostingBackgroundColor(const QColor &color)
+{
+ d->defaultPostingBackgroundColor = color;
+}
+
+
+AccountModel::PostingTypeFlags AccountModel::postingType(const Posting *ptr) const
+{
+ Q_ASSERT( d->posting );
+ Q_ASSERT( ptr );
+
+ PostingTypeFlags type = 0;
+
+ if( ptr == d->posting ) {
+ type |= Current;
+ }
+
+ if( !ptr->valueDate().isValid() ) {
+ type |= Incomplete;
+ }
+
+ if( !postingIsValid( ptr ) ) {
+ type |= Invalid;
+ }
+
+ if( ptr->maturity().isValid() && ptr->maturity() > QDate::currentDate() ) {
+ type |= Future;
+ }
+
+ return type;
+}
+
+
+bool AccountModel::postingIsValid(const Posting *ptr)
+{
+ Q_ASSERT( ptr );
+
+ if( !ptr->maturity().isValid() ) {
+ return false;
+ }
+
+ if( ptr->amount() == 0.0 ) {
+ return false;
+ }
+
+ if( ptr->postingText().isEmpty() ) {
+ return false;
+ }
+
+ return true;
+}
+
+
+QVariant AccountModel::backgroundRoleData(const QModelIndex &index) const
+{
+ AccountModel::PostingTypeFlags type = postingType( index.row() );
+
+ if( type & AccountModel::Current && currentPostingBackgroundColor().isValid() ) \
{ + return currentPostingBackgroundColor();
+ }
+ else if( type & AccountModel::Future && futurePostingBackgroundColor().isValid() \
) { + return futurePostingBackgroundColor();
+ }
+ else if( type & AccountModel::Incomplete && \
incompletePostingBackgroundColor().isValid() ) { + return \
incompletePostingBackgroundColor(); + }
+ else if( defaultPostingBackgroundColor().isValid() ) {
+ return defaultPostingBackgroundColor();
+ }
+
+ return QVariant();
+}
+
+
+QVariant AccountModel::foregroundRoleData(const QModelIndex &index) const
+{
+ QColor c;
+
+ switch( index.column() ) {
+ case AccountModel::AMOUNT:
+ c = data( index, Qt::EditRole ).value<Money>() >= 0.0
+ ? positiveAmountForegroundColor()
+ : negativeAmountForegroundColor();
+ break;
+
+ case AccountModel::WARRANTY:
+ c = data( index, Qt::EditRole ).value<QDate>() < QDate::currentDate()
+ ? availableWarrantyForegroundColor()
+ : expiredWarrantyForegroundColor();
+ break;
+
+ default:
+ break;
+ }
+
+ return c.isValid() ? c : QVariant();
+}
+
+
+QVariant AccountModel::textAlignmentRoleData(const QModelIndex &index) const
+{
+ switch( index.column() ) {
+ case AccountModel::VALUEDATE:
+ case AccountModel::MATURITY:
+ case AccountModel::WARRANTY:
+ case AccountModel::AMOUNT:
+ return static_cast<int>( Qt::AlignRight | Qt::AlignVCenter );
+ default:
+ break;
+ }
+
+ return QVariant();
+}
+
+
+QVariant AccountModel::decorationRoleData(const QModelIndex &index) const
+{
+ switch( index.column() ) {
+ case AccountModel::CATEGORY:
+ {
+ Posting *entry = 0;
+ if( index.row() < d->account->countPostings() ) {
+ entry = d->account->posting( index.row() );
+ }
+ else {
+ entry = d->posting;
+ }
+
+ Q_ASSERT( entry );
+
+ if( entry->category() && entry->category()->color().isValid() ) {
+ return entry->category()->color();
+ }
+ }
+
+ default:
+ break;
+ }
+
+ return QVariant();
+}
+
+
+
+// kate: word-wrap off; encoding utf-8; indent-width 4; tab-width 4; line-numbers \
on; mixed-indent off; remove-trailing-space-save on; replace-tabs-save on; \
replace-tabs on; space-indent on; +// vim:set spell et sw=4 ts=4 nowrap \
cino=l1,cs,U1:
diff --git a/core/accountmodel.h b/core/accountmodel.h
new file mode 100644
index 0000000..197734b
--- /dev/null
+++ b/core/accountmodel.h
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2007-2010 by Stefan Böhmann <kde@hilefoks.org>
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License as
+ * published by the Free Software Foundation; either version 2 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+#ifndef KNIPPTASCH_CORE_ACCOUNTMODEL_H
+#define KNIPPTASCH_CORE_ACCOUNTMODEL_H
+
+#include "knipptasch_core_export.h"
+
+#include <QtCore/QAbstractTableModel>
+
+class Account;
+class Posting;
+class Money;
+
+class QColor;
+
+
+/**
+ * @class AccountModel
+ * @brief
+ *
+ * @author Stefan Böhmann <kde@hilefoks.org>
+ */
+class KNIPPTASCH_CORE_EXPORT AccountModel : public QAbstractTableModel
+{
+ Q_OBJECT
+
+ public:
+ enum Column
+ {
+ MATURITY = 0,
+ POSTINGTEXT,
+ AMOUNT,
+ VALUEDATE,
+ CATEGORY,
+ BALANCE,
+ PAYEE,
+ STATEMENT,
+ VOUCHER,
+ WARRANTY,
+ PAYMENT,
+ DESCRIPTION,
+ ENTRYCOUNT
+ };
+
+ enum PostingTypeFlag
+ {
+ Scheduled = 1,
+ SplitPosting = 2,
+ WithAttachments = 4,
+ Incomplete = 8,
+ Invalid = 16,
+ Current = 32,
+ Future = 64
+ };
+
+ Q_DECLARE_FLAGS(PostingTypeFlags, PostingTypeFlag)
+
+ explicit AccountModel(QObject *parent = 0);
+ ~AccountModel();
+
+ Account* account();
+ const Account* account() const;
+ void setAccount(Account *account);
+
+ const Posting* posting(const QModelIndex &index) const;
+ const Posting* posting(int row) const;
+ Posting* posting(const QModelIndex &index);
+ Posting* posting(int row);
+
+ PostingTypeFlags postingType(int row) const;
+
+ int rowCount(const QModelIndex &parent = QModelIndex()) const;
+ int columnCount(const QModelIndex &parent = QModelIndex()) const;
+
+ QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
+ QVariant headerData(int section, Qt::Orientation orientation, int role = \
Qt::DisplayRole) const; +
+ bool setData(const QModelIndex &index, const QVariant &value, int role = \
Qt::DisplayRole); + Qt::ItemFlags flags(const QModelIndex &index) const;
+
+ bool removeRows(int row, int count, const QModelIndex &parent = \
QModelIndex()); +
+ QString dateFormat() const;
+ void setDateFormat(const QString &str);
+
+ QColor positiveAmountForegroundColor() const;
+ void setPositiveAmountForegroundColor(const QColor &color);
+ QColor negativeAmountForegroundColor() const;
+ void setNegativeAmountForegroundColor(const QColor &color);
+ QColor availableWarrantyForegroundColor() const;
+ void setAvailableWarrantyForegroundColor(const QColor &color);
+ QColor expiredWarrantyForegroundColor() const;
+ void setExpiredWarrantyForegroundColor(const QColor &color);
+ QColor currentPostingBackgroundColor() const;
+ void setCurrentPostingBackgroundColor(const QColor &color);
+ QColor futurePostingBackgroundColor() const;
+ void setFuturePostingBackgroundColor(const QColor &color);
+ QColor incompletePostingBackgroundColor() const;
+ void setIncompletePostingBackgroundColor(const QColor &color);
+ QColor defaultPostingBackgroundColor() const;
+ void setDefaultPostingBackgroundColor(const QColor &color);
+
+ private:
+ QVariant backgroundRoleData(const QModelIndex &index) const;
+ QVariant foregroundRoleData(const QModelIndex &index) const;
+ QVariant textAlignmentRoleData(const QModelIndex &index) const;
+ QVariant decorationRoleData(const QModelIndex &index) const;
+
+ void initDemoAccountAddPosting(const QDate &date, const QString \
&postingText, const Money &amount, bool valueDate = true); +
+ PostingTypeFlags postingType(const Posting *p) const;
+ static bool postingIsValid(const Posting *p);
+
+ private:
+ class Private;
+ Private* const d;
+};
+
+
+Q_DECLARE_OPERATORS_FOR_FLAGS( AccountModel::PostingTypeFlags )
+Q_DECLARE_METATYPE( AccountModel::PostingTypeFlags )
+
+
+#endif
+
+// kate: word-wrap off; encoding utf-8; indent-width 4; tab-width 4; line-numbers \
on; mixed-indent off; remove-trailing-space-save on; replace-tabs-save on; \
replace-tabs on; space-indent on; +// vim:set spell et sw=4 ts=4 nowrap \
cino=l1,cs,U1:
diff --git a/core/include/Knipptasch/AccountModel \
b/core/include/Knipptasch/AccountModel new file mode 100644
index 0000000..ff21237
--- /dev/null
+++ b/core/include/Knipptasch/AccountModel
@@ -0,0 +1 @@
+#include <accountmodel.h>
diff --git a/gui/CMakeLists.txt b/gui/CMakeLists.txt
index 2f33598..3556c7f 100644
--- a/gui/CMakeLists.txt
+++ b/gui/CMakeLists.txt
@@ -1,7 +1,6 @@
project( knipptasch )
set(knipptasch_SOURCES
- accountmodel.cpp
accountsortfilterproxymodel.cpp
accountwidget.cpp
welcomewidget.cpp
@@ -45,7 +44,6 @@ set(knipptasch_SOURCES
set( knipptasch_HEADERS
mainwindow.h
accountwidget.h
- accountmodel.h
accountsortfilterproxymodel.h
welcomewidget.h
aboutdialog.h
diff --git a/gui/accountmodel.cpp b/gui/accountmodel.cpp
deleted file mode 100644
index f442f51..0000000
--- a/gui/accountmodel.cpp
+++ /dev/null
@@ -1,632 +0,0 @@
-/*
- * Copyright 2007-2010 by Stefan Böhmann <kde@hilefoks.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#include "accountmodel.h"
-
-#include "preferences.h"
-
-#include "backend/account.h"
-#include "backend/posting.h"
-#include "backend/category.h"
-#include "backend/money.h"
-
-#include "compat/utils.h"
-
-#include <QVariant>
-#include <QBrush>
-#include <QStringList>
-#include <QDate>
-#include <QFontMetrics>
-#include <QFlags>
-#include <QDebug>
-
-
-AccountModel::AccountModel(QObject *parent)
- : QAbstractTableModel( parent ),
- m_account( 0 ),
- m_posting( new Posting )
-{
-}
-
-
-AccountModel::~AccountModel()
-{
- delete m_posting;
- delete m_account;
-}
-
-
-void AccountModel::setAccount(Account *account)
-{
-#if QT_VERSION >= 0x040600
- beginResetModel();
-#endif
-
- m_account = account;
- delete m_posting;
- m_posting = new Posting;
-
-#if QT_VERSION >= 0x040600
- endResetModel();
-#else
- reset();
-#endif
-}
-
-
-const Posting* AccountModel::posting(const QModelIndex &index) const
-{
- if( index.isValid() ) {
- return posting( index.row() );
- }
-
- return 0;
-}
-
-
-const Posting* AccountModel::posting(int row) const
-{
- Q_ASSERT( row >= 0 );
-
- if( row < account()->countPostings() ) {
- return account()->posting( row );
- }
-
- return 0;
-}
-
-
-Posting* AccountModel::posting(const QModelIndex &index)
-{
- if( index.isValid() ) {
- return posting( index.row() );
- }
-
- return 0;
-}
-
-
-Posting* AccountModel::posting(int row)
-{
- Q_ASSERT( row >= 0 );
-
- if( row < account()->countPostings() ) {
- return account()->posting( row );
- }
-
- return 0;
-}
-
-
-AccountModel::PostingTypeFlags AccountModel::postingType(int row) const
-{
- if( row < m_account->countPostings() ) {
- return postingType( m_account->posting( row ) );
- }
-
- return postingType( m_posting );
-}
-
-
-int AccountModel::rowCount(const QModelIndex &parent) const
-{
- if( !m_account ) {
- return 0;
- }
-
- if( parent.isValid() ) {
- return 0;
- }
-
- return m_account->countPostings() + 1;
-}
-
-
-int AccountModel::columnCount(const QModelIndex &parent) const
-{
- if( parent.isValid() ) {
- return 0;
- }
-
- return AccountModel::ENTRYCOUNT;
-}
-
-
-QVariant AccountModel::data(const QModelIndex &index, int role) const
-{
- if( !index.isValid() ) {
- return QVariant();
- }
-
- if( !m_account ) {
- return QVariant();
- }
-
- Q_ASSERT( index.row() >= 0 );
- Q_ASSERT( index.row() <= m_account->countPostings() );
-
- switch( role ) {
- case Qt::TextAlignmentRole:
- return textAlignmentRoleData( index );
-
- case Qt::BackgroundRole:
- return backgroundRoleData( index );
-
- case Qt::ForegroundRole:
- return foregroundRoleData( index );
-
- case Qt::DecorationRole:
- return decorationRoleData( index );
-
- case Qt::EditRole:
- case Qt::DisplayRole:
- break;
-
- default: // Can't handle this role...
- return QVariant();
- }
-
- Posting *entry = 0;
- if( index.row() < m_account->countPostings() ) {
- entry = m_account->posting( index.row() );
- }
- else {
- entry = m_posting;
- }
-
- Q_ASSERT( entry );
-
- switch( index.column() )
- {
- case MATURITY:
- {
- QDate dt = entry->maturity();
- if( role == Qt::EditRole ) {
- return dt;
- }
- if( !Preferences::self()->userDefinedDateFormat().isEmpty() ) {
- return dt.toString( Preferences::self()->userDefinedDateFormat() );
- }
- return formatShortDate( dt );
- }
- case POSTINGTEXT:
- return entry->postingText();
-
- case AMOUNT:
- if( role == Qt::EditRole ) {
- return QVariant::fromValue( entry->amount() );
- }
- else if( entry->amount().cents() != 0 ) {
- return entry->amount().toString();
- }
- return QVariant();
-
- case BALANCE:
- break;
-
- case VALUEDATE:
- {
- QDate dt = entry->valueDate();
- if( role == Qt::EditRole ) {
- return dt;
- }
- if( !Preferences::self()->userDefinedDateFormat().isEmpty() ) {
- return dt.toString( Preferences::self()->userDefinedDateFormat() );
- }
- return formatShortDate( dt );
- }
- case CATEGORY:
- if( role == Qt::EditRole ) {
- return account()->identifierByObject( entry->category() );
- }
- else if( entry->category() ) {
- return entry->category()->name();
- }
-
- return QVariant();
-
- case PAYEE:
- return entry->payee();
-
- case STATEMENT:
- if( role == Qt::EditRole || entry->page() > 0 ) {
- return entry->page();
- }
- break;
-
- case VOUCHER:
- entry->voucher();
-
- case WARRANTY:
- {
- QDate dt = entry->warranty();
- if( role == Qt::EditRole ) {
- return dt;
- }
- if( !Preferences::self()->userDefinedDateFormat().isEmpty() ) {
- return dt.toString( Preferences::self()->userDefinedDateFormat() );
- }
- return formatShortDate( dt );
- }
- case PAYMENT:
- return entry->methodOfPayment();
-
- case DESCRIPTION:
- return entry->description();
- }
-
- return QVariant();
-}
-
-
-QVariant AccountModel::headerData(int section, Qt::Orientation orientation, int \
role) const
-{
- if( orientation == Qt::Horizontal && role == Qt::DisplayRole && section < \
AccountModel::ENTRYCOUNT ) {
- switch( section ) {
- case MATURITY:
- return tr( "Maturity" );
-
- case POSTINGTEXT:
- return tr( "Posting Text" );
-
- case AMOUNT:
- return tr( "Amount" );
-
- case BALANCE:
- return tr( "Balance" );
-
- case CATEGORY:
- return tr( "Category" );
-
- case PAYEE:
- return tr( "Payee" );
-
- case STATEMENT:
- return tr( "Statement" );
-
- case VOUCHER:
- return tr( "Voucher" );
-
- case WARRANTY:
- return tr( "Warranty" );
-
- case PAYMENT:
- return tr( "Method of payment" );
-
- case VALUEDATE:
- return tr( "Value Date" );
-
- case DESCRIPTION:
- return tr( "Description" );
-
- default:
- break;
- }
- }
-
- return QAbstractTableModel::headerData( section, orientation, role );
-}
-
-
-bool AccountModel::setData(const QModelIndex &index, const QVariant &value, int \
role)
-{
- if( !index.isValid() ) {
- return false;
- }
-
- if( !m_account ) {
- return false;
- }
-
- if( !(role == Qt::EditRole || role == Qt::DisplayRole) ) {
- return false;
- }
-
- if( index.column() == BALANCE ) {
- return false;
- }
-
- Posting *entry = 0;
- if( index.row() < m_account->countPostings() ) {
- entry = m_account->posting( index.row() );
- }
- else {
- Q_ASSERT( index.row() == m_account->countPostings() );
- entry = m_posting;
- }
-
- Q_ASSERT( entry );
-
- switch( index.column() ) {
- case MATURITY:
- entry->setMaturity( value.toDate() );
- break;
-
- case POSTINGTEXT:
- entry->setPostingText( value.toString().trimmed() );
- break;
-
- case AMOUNT:
- {
- bool ok;
- double amount = value.toDouble( &ok );
- if( !ok ) {
- qDebug() << "invalid amount value";
- }
- else {
- entry->setAmount( amount );
- }
- }
- break;
-
- case BALANCE:
- return false;
-
- case VALUEDATE:
- entry->setValueDate( value.toDate() );
- break;
-
- case CATEGORY:
- if( role == Qt::EditRole ) {
- bool ok;
- int v = value.toInt( &ok );
- Q_ASSERT( ok );
-
- Object *object = account()->objectByIdentifier( v );
- Category *category = 0;
-
- if( object ) {
- category = qobject_cast<Category*>( object );
- Q_ASSERT( category );
- }
-
- entry->setCategory( category );
- }
- break;
-
- case PAYEE:
- entry->setPayee( value.toString() );
- break;
-
- case STATEMENT:
- entry->setPage( value.toInt() );
- break;
-
- case VOUCHER:
- entry->setVoucher( value.toString() );
- break;
-
- case DESCRIPTION:
- entry->setDescription( value.toString() );
- break;
- }
-
- if( index.row() >= m_account->countPostings() ) {
- if( postingIsValid( m_posting ) ) {
- beginInsertRows( QModelIndex(), rowCount(), rowCount() );
- m_account->addPosting( entry );
- endInsertRows();
-
- m_posting = new Posting;
- emit dataChanged( createIndex( rowCount()-1, 0 ), createIndex( \
rowCount(), columnCount() ) );
- }
- }
- else {
- emit dataChanged( createIndex( index.row(), index.column() ), createIndex( \
index.row(), index.column() ) );
- }
-
- return true;
-}
-
-
-Qt::ItemFlags AccountModel::flags(const QModelIndex &index) const
-{
- if( !index.isValid() ) {
- return 0;
- }
-
- if( !m_account ) {
- return 0;
- }
-
- if( index.column() == BALANCE ) {
- return QAbstractItemModel::flags( index );
- }
-
- return QAbstractTableModel::flags( index ) | Qt::ItemIsEditable;
-}
-
-
-bool AccountModel::removeRows(int row, int count, const QModelIndex &parent)
-{
- if( !m_account ) {
- return false;
- }
-
- bool re = false;
-
- if( ( row + count - 1 ) == m_account->countPostings() ) {
- count -= 1;
- m_posting = new Posting;
- re = true;
- }
-
- if( ( row + count - 1 ) < m_account->countPostings() ) {
- beginRemoveRows( parent, row, row + count - 1 );
-
- for(int i = 0; i < count; ++i) {
- m_account->removePosting( row );
- }
-
- endRemoveRows();
- re = true;
- }
-
- return re;
-}
-
-
-AccountModel::PostingTypeFlags AccountModel::postingType(const Posting *ptr) const
-{
- Q_ASSERT( m_posting );
- Q_ASSERT( ptr );
-
- PostingTypeFlags type = 0;
-
- if( ptr == m_posting ) {
- type |= Current;
- }
-
- if( !ptr->valueDate().isValid() ) {
- type |= Incomplete;
- }
-
- if( !postingIsValid( ptr ) ) {
- type |= Invalid;
- }
-
- if( ptr->maturity().isValid() && ptr->maturity() > QDate::currentDate() ) {
- type |= Future;
- }
-
- return type;
-}
-
-
-bool AccountModel::postingIsValid(const Posting *ptr)
-{
- Q_ASSERT( ptr );
-
- if( !ptr->maturity().isValid() ) {
- return false;
- }
-
- if( ptr->amount() == 0.0 ) {
- return false;
- }
-
- if( ptr->postingText().isEmpty() ) {
- return false;
- }
-
- return true;
-}
-
-
-QVariant AccountModel::backgroundRoleData(const QModelIndex &index) const
-{
- AccountModel::PostingTypeFlags type = postingType( index.row() );
-
- if( type & AccountModel::Current && \
Preferences::self()->currentPostingBackgroundEnabled() ) {
- return Preferences::self()->currentPostingBackgroundColor();
- }
- else if( type & AccountModel::Future && \
Preferences::self()->futurePostingBackgroundEnabled() ) {
- return Preferences::self()->futurePostingBackgroundColor();
- }
- else if( type & AccountModel::Incomplete && \
Preferences::self()->incompletePostingBackgroundEnabled() ) {
- return Preferences::self()->incompletePostingBackgroundColor();
- }
-
- if( Preferences::self()->defaultPostingBackgroundEnabled() ) {
- return Preferences::self()->defaultPostingBackgroundColor();
- }
-
- return QVariant();
-}
-
-
-QVariant AccountModel::foregroundRoleData(const QModelIndex &index) const
-{
- switch( index.column() ) {
- case AccountModel::AMOUNT:
- {
- Money m = data( index, Qt::EditRole ).value<Money>();
- if( m >= 0.0 && Preferences::self()->positiveAmountForegroundEnabled() ) \
{
- return Preferences::self()->positiveAmountForegroundColor();
- }
- else if( m < 0.0 && \
Preferences::self()->negativeAmountForegroundEnabled() ) {
- return Preferences::self()->negativeAmountForegroundColor();
- }
- }
- break;
-
- case AccountModel::WARRANTY:
- {
- QDate d = data( index, Qt::EditRole ).value<QDate>();
- if( d < QDate::currentDate() && \
Preferences::self()->availableWarrantyForegroundEnabled() ) {
- return Preferences::self()->availableWarrantyForegroundColor();
- }
- else if( Preferences::self()->expiredWarrantyForegroundEnabled() ) {
- return Preferences::self()->expiredWarrantyForegroundColor();
- }
- }
- break;
-
- default:
- break;
- }
-
- return QVariant();
-}
-
-
-QVariant AccountModel::textAlignmentRoleData(const QModelIndex &index) const
-{
- switch( index.column() ) {
- case AccountModel::VALUEDATE:
- case AccountModel::MATURITY:
- case AccountModel::WARRANTY:
- case AccountModel::AMOUNT:
- return static_cast<int>( Qt::AlignRight | Qt::AlignVCenter );
- default:
- break;
- }
-
- return QVariant();
-}
-
-
-QVariant AccountModel::decorationRoleData(const QModelIndex &index) const
-{
- switch( index.column() ) {
- case AccountModel::CATEGORY:
- {
- Posting *entry = 0;
- if( index.row() < m_account->countPostings() ) {
- entry = m_account->posting( index.row() );
- }
- else {
- entry = m_posting;
- }
-
- Q_ASSERT( entry );
-
- if( entry->category() && entry->category()->color().isValid() ) {
- return entry->category()->color();
- }
- }
-
- default:
- break;
- }
-
- return QVariant();
-}
-
-
-
-// kate: word-wrap off; encoding utf-8; indent-width 4; tab-width 4; line-numbers \
on; mixed-indent off; remove-trailing-space-save on; replace-tabs-save on; \
replace-tabs on; space-indent on;
-// vim:set spell et sw=4 ts=4 nowrap cino=l1,cs,U1:
diff --git a/gui/accountmodel.h b/gui/accountmodel.h
deleted file mode 100644
index dfdfb1d..0000000
--- a/gui/accountmodel.h
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2007-2010 by Stefan Böhmann <kde@hilefoks.org>
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-#ifndef ACCOUNTMODEL_H
-#define ACCOUNTMODEL_H
-
-#include <Knipptasch/Account>
-
-#include <QAbstractTableModel>
-
-
-/**
- * @class AccountModel
- * @brief
- *
- * @author Stefan Böhmann <kde@hilefoks.org>
- */
-class AccountModel : public QAbstractTableModel
-{
- Q_OBJECT
-
- public:
- enum Column
- {
- MATURITY = 0,
- POSTINGTEXT,
- AMOUNT,
- VALUEDATE,
- CATEGORY,
- BALANCE,
- PAYEE,
- STATEMENT,
- VOUCHER,
- WARRANTY,
- PAYMENT,
- DESCRIPTION,
- ENTRYCOUNT
- };
-
- enum PostingTypeFlag
- {
- Scheduled = 1,
- SplitPosting = 2,
- WithAttachments = 4,
- Incomplete = 8,
- Invalid = 16,
- Current = 32,
- Future = 64
- };
-
- Q_DECLARE_FLAGS(PostingTypeFlags, PostingTypeFlag)
-
- explicit AccountModel(QObject *parent = 0);
- ~AccountModel();
-
- Account* account() { return m_account; }
- const Account* account() const { return m_account; }
- void setAccount(Account *account);
-
- const Posting* posting(const QModelIndex &index) const;
- const Posting* posting(int row) const;
- Posting* posting(const QModelIndex &index);
- Posting* posting(int row);
-
- PostingTypeFlags postingType(int row) const;
-
- int rowCount(const QModelIndex &parent = QModelIndex()) const;
- int columnCount(const QModelIndex &parent = QModelIndex()) const;
-
- QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
- QVariant headerData(int section, Qt::Orientation orientation, int role = \
Qt::DisplayRole) const;
-
- bool setData(const QModelIndex &index, const QVariant &value, int role = \
Qt::DisplayRole);
- Qt::ItemFlags flags(const QModelIndex &index) const;
-
- bool removeRows(int row, int count, const QModelIndex &parent = \
QModelIndex());
-
- private:
- QVariant backgroundRoleData(const QModelIndex &index) const;
- QVariant foregroundRoleData(const QModelIndex &index) const;
- QVariant textAlignmentRoleData(const QModelIndex &index) const;
- QVariant decorationRoleData(const QModelIndex &index) const;
-
- void initDemoAccountAddPosting(const QDate &date, const QString \
&postingText, const Money &amount, bool valueDate = true);
-
- PostingTypeFlags postingType(const Posting *p) const;
- static bool postingIsValid(const Posting *p);
-
- private:
- Account *m_account;
- Posting *m_posting;
-};
-
-Q_DECLARE_OPERATORS_FOR_FLAGS( AccountModel::PostingTypeFlags )
-Q_DECLARE_METATYPE( AccountModel::PostingTypeFlags )
-
-
-#endif
-
-// kate: word-wrap off; encoding utf-8; indent-width 4; tab-width 4; line-numbers \
on; mixed-indent off; remove-trailing-space-save on; replace-tabs-save on; \
replace-tabs on; space-indent on;
-// vim:set spell et sw=4 ts=4 nowrap cino=l1,cs,U1:
diff --git a/gui/accountsortfilterproxymodel.cpp \
b/gui/accountsortfilterproxymodel.cpp index b077268..9ad74f8 100644
--- a/gui/accountsortfilterproxymodel.cpp
+++ b/gui/accountsortfilterproxymodel.cpp
@@ -18,6 +18,7 @@
#include "preferences.h"
#include "backend/money.h"
+#include "backend/account.h"
#include "backend/posting.h"
#include <QDate>
diff --git a/gui/accountwidget.cpp b/gui/accountwidget.cpp
index 01eda64..d4e0730 100644
--- a/gui/accountwidget.cpp
+++ b/gui/accountwidget.cpp
@@ -41,6 +41,7 @@
#include "compat/standardaction.h"
#include "compat/utils.h"
+#include <Knipptasch/Account>
#include <Knipptasch/Money>
#include <Knipptasch/Storage>
#include <Knipptasch/StorageException>
@@ -288,6 +289,8 @@ QList<const Posting*> AccountWidget::selectedPostings() const
void AccountWidget::loadConfig()
{
+ Preferences *p = Preferences::self();
+
QByteArray arr = QByteArray::fromBase64(
\
Preferences::self()->horizontalHeaderState().toAscii() ); if( arr.isEmpty() ) {
@@ -305,13 +308,58 @@ void AccountWidget::loadConfig()
ui->view->horizontalHeader()->restoreState( arr );
}
- // TODO: Make configurable
- //ui->view->setEditTriggers( QAbstractItemView::AllEditTriggers );
- ui->view->horizontalHeader()->setMovable( Preferences::self()->movableColumns() \
); + m_model->setPositiveAmountForegroundColor(
+ p->positiveAmountForegroundEnabled()
+ ? p->positiveAmountForegroundColor()
+ : QColor()
+ );
- ui->view->horizontalHeader()->setCascadingSectionResizes(
- Preferences::self()->cascadingSectionResize() );
+ m_model->setNegativeAmountForegroundColor(
+ p->negativeAmountForegroundEnabled()
+ ? p->negativeAmountForegroundColor()
+ : QColor()
+ );
+
+ m_model->setAvailableWarrantyForegroundColor(
+ p->availableWarrantyForegroundEnabled()
+ ? p->availableWarrantyForegroundColor()
+ : QColor()
+ );
+
+ m_model->setExpiredWarrantyForegroundColor(
+ p->expiredWarrantyForegroundEnabled()
+ ? p->expiredWarrantyForegroundColor()
+ : QColor()
+ );
+
+ m_model->setCurrentPostingBackgroundColor(
+ p->currentPostingBackgroundEnabled()
+ ? p->currentPostingBackgroundColor()
+ : QColor()
+ );
+
+ m_model->setFuturePostingBackgroundColor(
+ p->futurePostingBackgroundEnabled()
+ ? p->futurePostingBackgroundColor()
+ : QColor()
+ );
+
+ m_model->setIncompletePostingBackgroundColor(
+ p->incompletePostingBackgroundEnabled()
+ ? p->incompletePostingBackgroundColor()
+ : QColor()
+ );
+
+ m_model->setDefaultPostingBackgroundColor(
+ p->defaultPostingBackgroundEnabled()
+ ? p->defaultPostingBackgroundColor()
+ : QColor()
+ );
+
+ QHeaderView *h = ui->view->horizontalHeader();
+ h->setMovable( p->movableColumns() );
+ h->setCascadingSectionResizes( p->cascadingSectionResize() );
ui->view->reset();
}
@@ -319,7 +367,9 @@ void AccountWidget::loadConfig()
void AccountWidget::saveConfig()
{
- Preferences::self()->setHorizontalHeaderState( \
ui->view->horizontalHeader()->saveState().toBase64() ); + \
Preferences::self()->setHorizontalHeaderState( + \
ui->view->horizontalHeader()->saveState().toBase64() + );
}
diff --git a/gui/delegate/categorydelegate.cpp b/gui/delegate/categorydelegate.cpp
index f03e4cd..b76b1c1 100644
--- a/gui/delegate/categorydelegate.cpp
+++ b/gui/delegate/categorydelegate.cpp
@@ -17,10 +17,12 @@
#include "categorydelegate.h"
#include "categorycombobox.h"
-#include "accountsortfilterproxymodel.h"
+#include "backend/account.h"
#include "backend/posting.h"
#include "backend/category.h"
+#include "accountsortfilterproxymodel.h"
+
#include <QPainter>
#include <QApplication>
#include <QStandardItemModel>
diff --git a/gui/delegate/postingtextdelegate.cpp \
b/gui/delegate/postingtextdelegate.cpp index 736a0be..23fa614 100644
--- a/gui/delegate/postingtextdelegate.cpp
+++ b/gui/delegate/postingtextdelegate.cpp
@@ -16,9 +16,11 @@
*/
#include "postingtextdelegate.h"
-#include "accountsortfilterproxymodel.h"
+#include "backend/account.h"
#include "backend/posting.h"
+#include "accountsortfilterproxymodel.h"
+
#include "preferences.h"
#include <QPainter>
diff --git a/gui/quickreportwidget.cpp b/gui/quickreportwidget.cpp
index 65eb82d..4de5e92 100644
--- a/gui/quickreportwidget.cpp
+++ b/gui/quickreportwidget.cpp
@@ -17,6 +17,10 @@
#include "quickreportwidget.h"
#include "ui_quickreportwidget.h"
+#include "backend/account.h"
+#include "backend/money.h"
+#include "backend/posting.h"
+
#include "accountsortfilterproxymodel.h"
#include "preferences.h"
@@ -31,8 +35,6 @@
#include <QLocale>
#include <QShowEvent>
-#include "backend/money.h"
-#include "backend/posting.h"
bool doSortPostings(const Posting *p1, const Posting *p2)
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic