From 1b378924a3411a12646f3aa04f6e73bd7e2d8b05 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gr=C3=A9gory=20Soutad=C3=A9?= Date: Sun, 26 Feb 2012 08:59:59 +0100 Subject: [PATCH] Fix a bug : Childs where not linked during import --- src/model/import/GrisbiImportEngine.cpp | 1 + src/model/import/ImportEngine.cpp | 16 ++++++++++++++++ src/model/import/ImportEngine.hpp | 1 + src/model/import/OFXImportEngine.cpp | 8 +++++++- src/model/import/XMLImportEngine.cpp | 1 + src/view/StatsPanel.cpp | 5 ++++- 6 files changed, 30 insertions(+), 2 deletions(-) diff --git a/src/model/import/GrisbiImportEngine.cpp b/src/model/import/GrisbiImportEngine.cpp index 07fe18e..4fb56b1 100644 --- a/src/model/import/GrisbiImportEngine.cpp +++ b/src/model/import/GrisbiImportEngine.cpp @@ -182,6 +182,7 @@ bool GrisbiImportEngine::HandleFile(const QString& path, User* user, Database* d try { res = _sax.parse(&file); + LinkChilds(); } catch (const char* s) { diff --git a/src/model/import/ImportEngine.cpp b/src/model/import/ImportEngine.cpp index bf1ea78..c4f55a6 100644 --- a/src/model/import/ImportEngine.cpp +++ b/src/model/import/ImportEngine.cpp @@ -323,3 +323,19 @@ const std::map& ImportEngine::GetAccountAm { return _accountAmounts; } + +void ImportEngine::LinkChilds() +{ + std::vector::iterator it, it2; + + for(it=_operations.begin(); it!=_operations.end(); it++) + { + if (!it->meta) continue; + for(it2=_operations.begin(); it2!=_operations.end(); it2++) + { + if (it == it2 || it2->meta) continue; + if (it2->parent == it->id) + it->childs.push_back(it2->id); + } + } +} diff --git a/src/model/import/ImportEngine.hpp b/src/model/import/ImportEngine.hpp index c02d6fd..2ae80e1 100644 --- a/src/model/import/ImportEngine.hpp +++ b/src/model/import/ImportEngine.hpp @@ -81,6 +81,7 @@ protected: void ApplyPattern(ImportPattern& pattern, Operation& op); QString FindPattern(QString& s1, QString& s2); + void LinkChilds(); }; #endif diff --git a/src/model/import/OFXImportEngine.cpp b/src/model/import/OFXImportEngine.cpp index 0851df0..3b80e25 100644 --- a/src/model/import/OFXImportEngine.cpp +++ b/src/model/import/OFXImportEngine.cpp @@ -148,7 +148,13 @@ OFXImportEngine::~OFXImportEngine() bool OFXImportEngine::HandleFile(const QString& path, User* user, Database* db, KissCount* kiss) { + int res; if (!ImportEngine::HandleFile(path, user, db, kiss)) return false; - return !libofx_proc_file(_ctx, path.toStdString().c_str(), AUTODETECT); + res = !libofx_proc_file(_ctx, path.toStdString().c_str(), AUTODETECT); + + if (res) + LinkChilds(); + + return res; } diff --git a/src/model/import/XMLImportEngine.cpp b/src/model/import/XMLImportEngine.cpp index dc0ceba..018b551 100644 --- a/src/model/import/XMLImportEngine.cpp +++ b/src/model/import/XMLImportEngine.cpp @@ -54,6 +54,7 @@ bool XMLImportEngine::HandleFile(const QString& path, User* user, Database* db, try { res = _sax.parse(&file); + LinkChilds(); } catch (const char* s) { diff --git a/src/view/StatsPanel.cpp b/src/view/StatsPanel.cpp index 299363e..43fb5a4 100644 --- a/src/view/StatsPanel.cpp +++ b/src/view/StatsPanel.cpp @@ -87,7 +87,10 @@ StatsPanel::StatsPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, parent), for(i=0, accountIt = user->_accounts.begin(); accountIt != user->_accounts.end(); accountIt++, i++) { item = new QListWidgetItem(accountIt->name, _account); - item->setCheckState (Qt::Checked); + if (accountIt->hidden) + item->setCheckState (Qt::Unchecked); + else + item->setCheckState (Qt::Checked); } _account->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum);