void mmPrintableBase::accounts(int selection, wxString& name) { if ((selection == 1) || (m_account_selection != selection)) { m_account_selection = selection; if (accountArray_) { delete accountArray_; accountArray_ = nullptr; } switch (selection) { case 0: // All Accounts break; case 1: // Select Accounts { wxArrayString* accountSelections = new wxArrayString(); Model_Account::Data_Set accounts = (m_only_active ? Model_Account::instance().find(Model_Account::ACCOUNTTYPE(Model_Account::all_type()[Model_Account::INVESTMENT], NOT_EQUAL), Model_Account::STATUS(Model_Account::OPEN)) : Model_Account::instance().find(Model_Account::ACCOUNTTYPE(Model_Account::all_type()[Model_Account::INVESTMENT], NOT_EQUAL))); std::stable_sort(accounts.begin(), accounts.end(), SorterByACCOUNTNAME()); mmMultiChoiceDialog mcd(0, _("Choose Accounts"), m_title, accounts); if (mcd.ShowModal() == wxID_OK) { for (const auto &i : mcd.GetSelections()) accountSelections->Add(accounts.at(i).ACCOUNTNAME); } accountArray_ = accountSelections; } break; default: // All of Account type { wxArrayString* accountSelections = new wxArrayString(); auto accounts = Model_Account::instance().find(Model_Account::ACCOUNTTYPE(name)); for (const auto &i : accounts) { if (m_only_active && (i.STATUS == Model_Account::all_status()[Model_Account::CLOSED])) continue; accountSelections->Add(i.ACCOUNTNAME); } accountArray_ = accountSelections; } } } }
void mmBillsDepositsPanel::sortTable() { std::sort(bills_.begin(), bills_.end()); switch (listCtrlAccount_->m_selected_col) { case COL_ID: std::stable_sort(bills_.begin(), bills_.end(), SorterByBDID()); break; case COL_PAYMENT_DATE: std::stable_sort(bills_.begin(), bills_.end(), SorterByNEXTOCCURRENCEDATE()); break; case COL_DUE_DATE: std::stable_sort(bills_.begin(), bills_.end(), SorterByTRANSDATE()); break; case COL_ACCOUNT: std::stable_sort(bills_.begin(), bills_.end(), SorterByACCOUNTNAME()); break; case COL_PAYEE: std::stable_sort(bills_.begin(), bills_.end(), SorterByPAYEENAME()); break; case COL_STATUS: std::stable_sort(bills_.begin(), bills_.end(), SorterBySTATUS()); break; case COL_CATEGORY: std::stable_sort(bills_.begin(), bills_.end(), SorterByCATEGNAME()); break; case COL_TYPE: std::stable_sort(bills_.begin(), bills_.end(), SorterByTRANSCODE()); break; case COL_AMOUNT: std::stable_sort(bills_.begin(), bills_.end(), SorterByTRANSAMOUNT()); break; case COL_FREQUENCY: std::stable_sort(bills_.begin(), bills_.end() , [&](const Model_Billsdeposits::Full_Data& x, const Model_Billsdeposits::Full_Data& y) { wxString x_text = this->GetFrequency(&x); wxString y_text = this->GetFrequency(&y); return x_text < y_text; }); break; case COL_REPEATS: std::stable_sort(bills_.begin(), bills_.end(), SorterByREPEATS()); break; case COL_DAYS: std::stable_sort(bills_.begin(), bills_.end() , [&](const Model_Billsdeposits::Data& x, const Model_Billsdeposits::Data& y) { bool x_useText = false; wxString x_text = this->GetRemainingDays(&x); long x_num = 0; if (isdigit(x_text[0])) { x_num = wxAtoi(x_text); wxString removed; if (x_text.EndsWith(wxString("!"), &removed)) x_num = -x_num; } else x_useText = true; bool y_useText = false; wxString y_text = this->GetRemainingDays(&y); long y_num = 0; if (isdigit(y_text[0])) { y_num = wxAtoi(y_text); wxString removed; if (y_text.EndsWith(wxString("!"), &removed)) y_num = -y_num; } else y_useText = true; return ((!x_useText && !y_useText) ? x_num < y_num : x_text < y_text); }); break; case COL_NOTES: std::stable_sort(bills_.begin(), bills_.end(), SorterByNOTES()); break; default: break; } if (!listCtrlAccount_->m_asc) std::reverse(bills_.begin(), bills_.end()); }