diff --git a/src/view/AccountPanel.cpp b/src/view/AccountPanel.cpp index c169098..6960eb1 100644 --- a/src/view/AccountPanel.cpp +++ b/src/view/AccountPanel.cpp @@ -34,6 +34,16 @@ enum {CUR_CREDIT, CUR_DEBIT, TOTAL_CREDIT, TOTAL_DEBIT, BALANCE, STATS_ROW, CATS enum {VIRTUAL_MODE=0, REAL_MODE, CHECK_MODE}; AccountPanel::AccountPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, parent), _curMonth(-1), _curYear(-1), _inModification(false) +{ + Init(kiss, parent, 0); +} + +AccountPanel::AccountPanel(KissCount* kiss, wxUI *parent, int month=-1, int year=-1, int mode=VIRTUAL_MODE) : KissPanel(kiss, parent), _curMonth(month), _curYear(year), _inModification(false) +{ + Init(kiss, parent, mode); +} + +void AccountPanel::Init(KissCount* kiss, wxUI *parent, int curMode) { QHBoxLayout *hbox = new QHBoxLayout; QHBoxLayout *hbox2 = new QHBoxLayout; @@ -149,7 +159,13 @@ AccountPanel::AccountPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, pare _real = new QRadioButton(_("Real")); _check = new QRadioButton(_("Check")); - _virtual->setChecked(true); + switch(curMode) + { + case VIRTUAL_MODE: _virtual->setChecked(true); break; + case REAL_MODE: _real->setChecked(true); break; + case CHECK_MODE: _check->setChecked(true); break; + default: _virtual->setChecked(true); break; + } { QVBoxLayout *vbox = new QVBoxLayout; @@ -212,7 +228,13 @@ AccountPanel::~AccountPanel() KissPanel* AccountPanel::CreatePanel() { - return new AccountPanel(_kiss, _wxUI); + int mode; + + if (_virtual->isChecked()) mode = VIRTUAL_MODE; + else if (_real->isChecked()) mode = REAL_MODE; + else if (_check->isChecked()) mode = CHECK_MODE; + + return new AccountPanel(_kiss, _wxUI, _curMonth, _curYear, mode); } QPushButton* AccountPanel::GetButton() @@ -302,7 +324,7 @@ void AccountPanel::InitStatsGrid(User* user) void AccountPanel::ChangeUser() { User* user = _kiss->GetUser(); - int curYear = -1; + int curYear = -1, year; QDate curDate = QDate::currentDate(); QTreeWidgetItem* curNode=NULL, *node; std::map > ops; @@ -316,10 +338,11 @@ void AccountPanel::ChangeUser() if (ops.size()) { + year = (_curYear == -1) ? curDate.year() : _curYear; for(it = ops.begin(); it != ops.end(); it++) { node = new QTreeWidgetItem(QStringList(QString::number(it->first))); - if ((int)it->first <= curDate.year()) + if ((int)it->first <= year) { curYear = it->first; curNode = node; @@ -329,7 +352,7 @@ void AccountPanel::ChangeUser() if (curYear != -1) { _tree->setCurrentItem(curNode); - LoadYear(curYear, true); + LoadYear(curYear, true); } } else @@ -343,7 +366,7 @@ void AccountPanel::ChangeUser() void AccountPanel::LoadYear(int year, bool showMonth) { User* user = _kiss->GetUser(); - int curMonth = -1; + int curMonth = -1, month; QTreeWidgetItem* parentNode, *curMonthNode = 0; std::map > ops ; std::vector::iterator it; @@ -365,9 +388,11 @@ void AccountPanel::LoadYear(int year, bool showMonth) if (!parentNode) parentNode = _tree->topLevelItem(0); + month = (_curMonth == -1) ? curDate.month()-1 : _curMonth; + for (it = ops[year].begin(); it != ops[year].end(); it++) { - if (!curMonthNode || (curDate.year() == _curYear && *it <= curDate.month()-1)) + if (!curMonthNode || (year == _curYear && *it <= month)) { curMonth = *it; curMonthNode = new QTreeWidgetItem(QStringList(wxUI::months[*it])); diff --git a/src/view/AccountPanel.hpp b/src/view/AccountPanel.hpp index e3ca6f6..79b0bd6 100644 --- a/src/view/AccountPanel.hpp +++ b/src/view/AccountPanel.hpp @@ -40,6 +40,8 @@ class AccountPanel: public KissPanel public: AccountPanel(KissCount* kiss, wxUI *parent); + AccountPanel(KissCount* kiss, wxUI *parent, int month, int year, int mode); + void Init(KissCount* kiss, wxUI *parent, int curMode); ~AccountPanel(); KissPanel* CreatePanel();