diff --git a/src/view/AccountPanel.cpp b/src/view/AccountPanel.cpp index c0d3b50..dd57c0e 100644 --- a/src/view/AccountPanel.cpp +++ b/src/view/AccountPanel.cpp @@ -61,7 +61,8 @@ AccountPanel::AccountPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, pare _calendar->setGridVisible(false); _calendar->setFirstDayOfWeek(Qt::Monday); _calendar->setNavigationBarVisible(false); - + _calendar->setVerticalHeaderFormat(QCalendarWidget::NoVerticalHeader); + _calendar->setSizePolicy(QSizePolicy::Minimum, QSizePolicy::Minimum); _accounts = new QString[user->GetAccountsNumber()]; @@ -103,21 +104,10 @@ AccountPanel::AccountPanel(KissCount* kiss, wxUI *parent) : KissPanel(kiss, pare _accountsGrid->setRowCount(0); _accountsGrid->verticalHeader()->setHidden(true); - _accountsGrid->setHorizontalHeaderItem(ACCOUNT_NUMBER, new QTableWidgetItem(_("Account number"))); - _accountsGrid->setHorizontalHeaderItem(ACCOUNT_NAME, new QTableWidgetItem(_("Account name"))); - _accountsGrid->setHorizontalHeaderItem(ACCOUNT_INIT, new QTableWidgetItem(_("Initial value"))); - _accountsGrid->setHorizontalHeaderItem(ACCOUNT_CUR, new QTableWidgetItem(_("Current value"))); - _accountsGrid->setHorizontalHeaderItem(ACCOUNT_FINAL, new QTableWidgetItem(_("Final value"))); - _accountsGrid->resizeColumnsToContents(); _accountsGrid->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); - for(i=0; ihorizontalHeaderItem(i)->font(); - font.setBold(true); - _accountsGrid->horizontalHeaderItem(i)->setFont(font); - } + connect(_accountsGrid, SIGNAL(cellChanged(int, int)), this, SLOT(OnAccountModified(int, int))); _statsGrid = new QTableWidget(this); _statsGrid->verticalHeader()->setHidden(true); @@ -420,8 +410,12 @@ void AccountPanel::ShowMonth(int month, int year) _grid->LoadOperations(_curOperations, _curMonth, _curYear); + disconnect(_accountsGrid, SIGNAL(cellChanged(int, int)), this, SLOT(OnAccountModified(int, int))); + InitAccountsGrid(user, month, year); + connect(_accountsGrid, SIGNAL(cellChanged(int, int)), this, SLOT(OnAccountModified(int, int))); + dateStart.setDate(dateStart.year(), dateStart.month(), 1); dateEnd.setDate(dateEnd.year(), dateEnd.month(), dateStart.daysInMonth()); _calendar->setDateRange(dateStart, dateEnd); @@ -450,6 +444,19 @@ void AccountPanel::InitAccountsGrid(User* user, int month, int year) if (_accountsGrid->rowCount()) _accountsGrid->clear(); + _accountsGrid->setHorizontalHeaderItem(ACCOUNT_NUMBER, new QTableWidgetItem(_("Account number"))); + _accountsGrid->setHorizontalHeaderItem(ACCOUNT_NAME, new QTableWidgetItem(_("Account name"))); + _accountsGrid->setHorizontalHeaderItem(ACCOUNT_INIT, new QTableWidgetItem(_("Initial value"))); + _accountsGrid->setHorizontalHeaderItem(ACCOUNT_CUR, new QTableWidgetItem(_("Current value"))); + _accountsGrid->setHorizontalHeaderItem(ACCOUNT_FINAL, new QTableWidgetItem(_("Final value"))); + + for(i=0; ihorizontalHeaderItem(i)->font(); + font.setBold(true); + _accountsGrid->horizontalHeaderItem(i)->setFont(font); + } + FloatDelegate* floatEditor = new FloatDelegate(_accountsGrid); _accountsGrid->setItemDelegateForColumn(ACCOUNT_INIT, floatEditor); @@ -750,27 +757,26 @@ void AccountPanel::OnOperationModified() layout(); } -void AccountPanel::OnAccountModified() +void AccountPanel::OnAccountModified(int row, int column) { - // User* user = _kiss->GetUser(); - // int row = event.GetRow(); - // double amount; - // wxString id = user->GetAccountId(_accounts[row]); + User* user = _kiss->GetUser(); + double amount; + int id = user->GetAccountId(_accounts[row]); + + static bool inModification = false; - // static bool inModification = false; + if (inModification || column != ACCOUNT_INIT) return; + + inModification = true; - // if (inModification) return ; + amount = _accountsGrid->item(row, column)->text().toDouble(); + + _kiss->SetAccountAmount(id, _curMonth, _curYear, amount); + _accountsInitValues[id] = amount; - // inModification = true; + UpdateStats(); - // _accountsGrid->GetCellValue(row, event.GetCol()).ToDouble(&amount); - - // _kiss->SetAccountAmount(id, _curMonth, _curYear, amount); - // _accountsInitValues[id] = amount; - - // UpdateStats(); - - // inModification = false; + inModification = false; } void AccountPanel::OnTreeRightClick() diff --git a/src/view/AccountPanel.hpp b/src/view/AccountPanel.hpp index f898f01..707bc5d 100644 --- a/src/view/AccountPanel.hpp +++ b/src/view/AccountPanel.hpp @@ -65,7 +65,7 @@ public: private slots: void OnOperationModified(); - void OnAccountModified(); + void OnAccountModified(int row, int column); void OnTreeRightClick(); void OnTreeChange (QTreeWidgetItem * item, int column); void OnMenuGenerate();