From bfd16a6540cf91e36e456cbffaf3e648fc5ecee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Wed, 11 Apr 2012 19:28:35 +0200 Subject: [PATCH] Better auto completion for transfert operation (not two times the same operation completed) --- ChangeLog | 3 ++- src/controller/KissCount.cpp | 14 +++++--------- src/controller/KissCount.hpp | 2 +- src/view/grid/GridAccount.cpp | 12 +++++++++--- src/view/grid/GridAccount.hpp | 2 ++ 5 files changed, 19 insertions(+), 14 deletions(-) diff --git a/ChangeLog b/ChangeLog index 60b666c..d7b8f53 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,4 +1,4 @@ -v0.3 (27/03/2012) +v0.3 (11/04/2012) ** User ** New interface in Qt Use BDD file from .local/share/kisscount @@ -7,6 +7,7 @@ v0.3 (27/03/2012) Description is now auto-completed Snapshot feature Display date in locale format + Better auto completion for transfert operation (not two times the same operation completed) ** Dev ** Version 3 of database (account hidden item added) diff --git a/src/controller/KissCount.cpp b/src/controller/KissCount.cpp index fca39f5..76f619f 100644 --- a/src/controller/KissCount.cpp +++ b/src/controller/KissCount.cpp @@ -410,10 +410,9 @@ std::vector* KissCount::Search(QString* description, QDate* dateFrom, return _db->Search(_user, description, dateFrom, dateTo, amountFrom, amountTo, categories, types, accounts, true); } -bool KissCount::SearchPreviousOperation(Operation* res, Operation& op, int month, int year, bool limitToType) +bool KissCount::SearchPreviousOperation(Operation* res, Operation& op, int month, int year, bool limitToType, int index) { std::vector* operations; - QDate* date ; //wxDateSpan threeMonths(0, 3); Not working :( std::vector v; int i; @@ -425,15 +424,12 @@ bool KissCount::SearchPreviousOperation(Operation* res, Operation& op, int month month += 12; } - date = new QDate(year, month, 0); + QDate date = QDate(year, month, 0); if (limitToType) - operations = _db->Search(_user, &op.description, date, 0, 0, 0, v, op.fix_cost ? +Database::FIX_OP : +Database::NON_FIX_OP, v, false); + operations = _db->Search(_user, &op.description, &date, 0, 0, 0, v, op.fix_cost ? +Database::FIX_OP : +Database::NON_FIX_OP, v, false); else - operations = _db->Search(_user, &op.description, date, 0, 0, 0, v, Database::ALL_OP, v, false); - - - delete date; + operations = _db->Search(_user, &op.description, &date, 0, 0, 0, v, Database::ALL_OP, v, false); if (!operations->size()) { @@ -442,7 +438,7 @@ bool KissCount::SearchPreviousOperation(Operation* res, Operation& op, int month } for(i=operations->size()-1; i>=0; i--) - if (!(*operations)[i].meta) + if (!(*operations)[i].meta && index--) { *res = (*operations)[i]; delete operations; diff --git a/src/controller/KissCount.hpp b/src/controller/KissCount.hpp index 304de0d..514ad59 100644 --- a/src/controller/KissCount.hpp +++ b/src/controller/KissCount.hpp @@ -104,7 +104,7 @@ public: double* amountFrom, double* amountTo, std::vector categories, int types, std::vector accounts); - bool SearchPreviousOperation(Operation* res, Operation& op, int month, int year, bool limitToType); + bool SearchPreviousOperation(Operation* res, Operation& op, int month, int year, bool limitToType, int index); void GetStats(int monthFrom, int yearFrom, int monthTo, int yearTo, std::map > >* accountAmounts, diff --git a/src/view/grid/GridAccount.cpp b/src/view/grid/GridAccount.cpp index 3da19cc..b408d1c 100644 --- a/src/view/grid/GridAccount.cpp +++ b/src/view/grid/GridAccount.cpp @@ -49,7 +49,8 @@ GridAccount::GridAccount(KissCount* kiss, QWidget *parent, _parent(parent), _kiss(kiss), _setWeek(setWeek), _databaseSynchronization(synchronizeWithDatabase), _loadOperations(false), _curMonth(0), _curYear(0), _treeSignalMapper(this), _checkSignalMapper(this), - _deleteSignalMapper(this), _inModification(false), _completer(0) + _deleteSignalMapper(this), _inModification(false), _completer(0), + _transfertCompletionIndex(0) { DEFAULT_FONT(font); int i; @@ -865,7 +866,7 @@ void GridAccount::OnOperationModified(int row, int col) int op_complete = 6, i, last_day; QString value, v ; QDate date; - bool need_insertion = false; + bool need_insertion = false, transfertCompleted = false; QColor color ; unsigned char r, g, b; std::vector::iterator it; @@ -926,7 +927,7 @@ void GridAccount::OnOperationModified(int row, int col) !item(row, ACCOUNT)->text().length())) { new_op.fix_cost = (row <= _fixCosts); - if (_kiss->SearchPreviousOperation(&op_tmp, new_op, _curMonth, _curYear, _canAddOperation)) + if (_kiss->SearchPreviousOperation(&op_tmp, new_op, _curMonth, _curYear, _canAddOperation, _transfertCompletionIndex)) { if (!item(row, CATEGORY)->text().length()) setItem(row, CATEGORY, new QTableWidgetItem(_(user->GetCategoryName(op_tmp.category).toStdString().c_str()))); @@ -936,6 +937,8 @@ void GridAccount::OnOperationModified(int row, int col) col = CATEGORY; new_op.fix_cost = (new_op.category == user->GetCategoryId("Fix")); + if (op_tmp.transfert != 0) + transfertCompleted = true; } } @@ -1066,6 +1069,9 @@ void GridAccount::OnOperationModified(int row, int col) SET_ROW_FONT(row, font); new_op.id = _kiss->AddOperation(new_op); + + if (transfertCompleted) + _transfertCompletionIndex = (_transfertCompletionIndex + 1) % 2; } if (!new_op.meta && user->GetAccount(new_op.account).blocked && new_op.amount < 0) diff --git a/src/view/grid/GridAccount.hpp b/src/view/grid/GridAccount.hpp index 310f0f2..2b42410 100644 --- a/src/view/grid/GridAccount.hpp +++ b/src/view/grid/GridAccount.hpp @@ -85,6 +85,8 @@ private: QSignalMapper _treeSignalMapper, _checkSignalMapper, _deleteSignalMapper; bool _inModification; QCompleter* _completer; + int _transfertCompletionIndex; + void SetWeek(int week, int line); void ResetWeeks(); void ComputeWeeks();