void mmTransDialog::OnAccountOrPayeeUpdated(wxCommandEvent& event) { // Filtering the combobox as the user types because on Mac autocomplete function doesn't work // PLEASE DO NOT REMOVE!!! #if defined (__WXMAC__) if (!m_transfer) { wxString payeeName = event.GetString(); if (cbPayee_->GetSelection() == -1) // make sure nothing is selected (ex. user presses down arrow) { cbPayee_->SetEvtHandlerEnabled(false); // things will crash if events are handled during Clear cbPayee_->Clear(); Model_Payee::Data_Set filtd = Model_Payee::instance().FilterPayees(payeeName); std::sort(filtd.rbegin(), filtd.rend(), SorterByPAYEENAME()); for (int nn=0; nn<filtd.size(); nn++) { cbPayee_->Insert(filtd[nn].PAYEENAME, 0); } cbPayee_->ChangeValue(payeeName); cbPayee_->SetInsertionPointEnd(); cbPayee_->SetEvtHandlerEnabled(true); } } #endif wxChildFocusEvent evt; onFocusChange(evt); }
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()); }