From: <vo...@us...> - 2013-06-16 08:23:32
|
Revision: 4097 http://sourceforge.net/p/moneymanagerex/code/4097 Author: vomikan Date: 2013-06-16 08:23:29 +0000 (Sun, 16 Jun 2013) Log Message: ----------- Filter added for checking panel Modified Paths: -------------- trunk/src/mmcheckingpanel.cpp trunk/src/mmcheckingpanel.h trunk/src/mmtransaction.cpp Modified: trunk/src/mmcheckingpanel.cpp =================================================================== --- trunk/src/mmcheckingpanel.cpp 2013-06-16 04:29:01 UTC (rev 4096) +++ trunk/src/mmcheckingpanel.cpp 2013-06-16 08:23:29 UTC (rev 4097) @@ -341,6 +341,61 @@ if (!g_asc) std::reverse(this->m_trans.begin(), this->m_trans.end()); } + +void mmCheckingPanel::filterTable() +{ + std::vector<mmBankTransaction*> filtered_trans; + mmBankTransaction* pTempTransaction; + bool toAdd = transFilterDlg_->somethingSelected(); + + if (transFilterActive_) + { + for (const auto& pBankTransaction: m_trans) + { + pTempTransaction = pBankTransaction; + + if (transFilterDlg_->getAccountCheckBox()) + toAdd = toAdd && (transFilterDlg_->getAccountID() == pBankTransaction->toAccountID_); + + if (transFilterDlg_->getDateRangeCheckBox()) + toAdd = toAdd && (transFilterDlg_->getFromDateCtrl() <= pBankTransaction->date_ + && transFilterDlg_->getToDateControl() >= pBankTransaction->date_); + + if (transFilterDlg_->getPayeeCheckBox()) + toAdd = toAdd && (transFilterDlg_->userPayeeStr() == pBankTransaction->payeeStr_); + + if (transFilterDlg_->getCategoryCheckBox()) + toAdd = toAdd && (pBankTransaction->containsCategory(transFilterDlg_->getCategoryID(), + transFilterDlg_->getSubCategoryID(), transFilterDlg_->getSubCategoryID() < 0)); + + if (transFilterDlg_->getStatusCheckBox()) + toAdd = toAdd && (transFilterDlg_->getStatus() == pBankTransaction->status_); + + if (transFilterDlg_->getTypeCheckBox()) + toAdd = toAdd && (transFilterDlg_->getType().Contains(pBankTransaction->transType_)); + + if (transFilterDlg_->getAmountRangeCheckBox()) + toAdd = toAdd && (transFilterDlg_->getAmountMin() <= pBankTransaction->amt_ && transFilterDlg_->getAmountMax() >= pBankTransaction->amt_); + + if (transFilterDlg_->getNumberCheckBox()) + toAdd = toAdd && (transFilterDlg_->getNumber().Trim().Lower() == pBankTransaction->transNum_.Lower()); + + if (transFilterDlg_->getNotesCheckBox()) + toAdd = toAdd && (pBankTransaction->notes_.Lower().Matches(transFilterDlg_->getNotes().Trim().Lower())); + if (toAdd) + { + filtered_trans.push_back(pTempTransaction); + toAdd = false; + } + } + m_trans = filtered_trans; + } +} + +void mmCheckingPanel::markSelectedTransaction(int trans_id) +{ + trans_id; +} //---------------------------------------------------------------------------- void mmCheckingPanel::OnMouseLeftDown( wxMouseEvent& event ) @@ -398,7 +453,9 @@ // decide whether top or down icon needs to be shown m_listCtrlAccount->setColumnImage(g_sortcol, g_asc ? ICON_ASC : ICON_DESC); sortTable(); + filterTable(); m_listCtrlAccount->SetItemCount(m_trans.size()); + markSelectedTransaction(trans_id); setAccountSummary(); } Modified: trunk/src/mmcheckingpanel.h =================================================================== --- trunk/src/mmcheckingpanel.h 2013-06-16 04:29:01 UTC (rev 4096) +++ trunk/src/mmcheckingpanel.h 2013-06-16 08:23:29 UTC (rev 4097) @@ -67,7 +67,7 @@ wxStaticText* stxtMainFilter_; wxStaticText* statTextTransFilter_; wxStaticBitmap* bitmapTransFilter_; - wxStaticBitmap* bitmapMainFilter_; + wxStaticBitmap* bitmapMainFilter_; mmFilterTransactionsDialog* transFilterDlg_; wxString currentView_; @@ -84,6 +84,8 @@ void initViewTransactionsHeader(); void setAccountSummary(); void sortTable(); + void filterTable(); + void markSelectedTransaction(int trans_id); void CreateControls(); bool Create( @@ -94,7 +96,7 @@ long style = wxTAB_TRAVERSAL | wxNO_BORDER, const wxString& name = wxPanelNameStr ); - void enableEditDeleteButtons(bool en); + void enableEditDeleteButtons(bool en); void OnNewTransaction(wxCommandEvent& event); void OnDeleteTransaction(wxCommandEvent& event); Modified: trunk/src/mmtransaction.cpp =================================================================== --- trunk/src/mmtransaction.cpp 2013-06-16 04:29:01 UTC (rev 4096) +++ trunk/src/mmtransaction.cpp 2013-06-16 08:23:29 UTC (rev 4097) @@ -251,7 +251,7 @@ updateRequired_ = true; } - if (pCategory) + if (!pCategory) { mmCategory* parent = pCategory->parent_; if (parent) @@ -658,6 +658,18 @@ r.splitEntries_->updateToDB(core_->db_, r.transactionID(), true); st.Finalize(); + + for (auto& i : transactions_) + { + if (pBankTransaction->transactionID() == i->transactionID()) + { + i = pBankTransaction; + i->payeeStr_ = pBankTransaction->payeeStr_; + i->updateRequired_ = true; + break; + } + } + mmOptions::instance().databaseUpdated_ = true; } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |