X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarListCalendarCtrl.cpp;h=371b1233afe4872950db29d4fad14953259b5079;hp=bdf1b6a8411253f22d47b39bdc3980a477c04df8;hb=902d948e5e45ad483c8e235690dda8f2bf596ad5;hpb=339434b90a0a03c3102b82a5dc45334b338bc59c diff --git a/source/widgets/XCCalendarListCalendarCtrl.cpp b/source/widgets/XCCalendarListCalendarCtrl.cpp index bdf1b6a..371b123 100644 --- a/source/widgets/XCCalendarListCalendarCtrl.cpp +++ b/source/widgets/XCCalendarListCalendarCtrl.cpp @@ -30,19 +30,23 @@ XCCalendarListCalendarCtrl::XCCalendarListCalendarCtrl(wxWindow* parent, string // Setup the checkbox. - //chkShowAll = new wxCheckBox(); - chkShowCalendar = new wxCheckBox(this, wxID_ANY, "", wxPoint(0,0), wxDefaultSize, wxCHK_3STATE, wxDefaultValidator, ""); // Setup the label. - lblCalendarName = new wxStaticText(this, wxID_ANY, wxString(calendarName), wxDefaultPosition, wxDefaultSize, 0, ""); + lblCalendarName = new wxStaticText(this, wxID_ANY, wxString(calendarName.c_str(), wxConvUTF8), wxDefaultPosition, wxDefaultSize, 0, ""); // Setup the colour. pnlColour = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(16,16), 0, ""); pnlColour->SetBackgroundColour(wxColour(calendarColour.red, calendarColour.green, calendarColour.blue, calendarColour.alpha)); + // Setup the popup menu. + + calendarMenu = new XCCalendarMenu(); + calendarMenu->SetWindowPointer(this); + calendarMenu->SetPopupPointer((wxPopupTransientWindow*)this->GetParent()); + // Connect them to the sizer. szrMain->Add(15, 0, 0, 0, 5); @@ -50,10 +54,108 @@ XCCalendarListCalendarCtrl::XCCalendarListCalendarCtrl(wxWindow* parent, string szrMain->Add(lblCalendarName, 1, wxALL|wxALIGN_CENTER_VERTICAL, 5); szrMain->Add(pnlColour, 0, wxALL|wxALIGN_CENTER_VERTICAL, 5); + // Connect the events to the controls. + + chkShowCalendar->Connect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxMouseEventHandler(XCCalendarListCalendarCtrl::ShowAllCheckboxClick), NULL, this); + chkShowCalendar->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + lblCalendarName->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + pnlColour->Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + Connect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + chkShowCalendar->SetValue(wxCHK_CHECKED); + } XCCalendarListCalendarCtrl::~XCCalendarListCalendarCtrl(){ // Delete the controls. + + chkShowCalendar->Disconnect(wxEVT_COMMAND_CHECKBOX_CLICKED, wxMouseEventHandler(XCCalendarListCalendarCtrl::ShowAllCheckboxClick), NULL, this); + chkShowCalendar->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + lblCalendarName->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + pnlColour->Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + Disconnect(wxEVT_RIGHT_UP, wxMouseEventHandler(XCCalendarListCalendarCtrl::PopupMenu), NULL, this); + + szrMain->Clear(); + + delete chkShowCalendar; + chkShowCalendar = nullptr; + + delete lblCalendarName; + lblCalendarName = nullptr; + + delete imgCalendarIcon; + imgCalendarIcon = nullptr; + + delete calendarMenu; + calendarMenu = nullptr; + + delete pnlColour; + pnlColour = nullptr; + + this->SetSizer(nullptr, true); + +} + +wxCheckBoxState XCCalendarListCalendarCtrl::GetShowCheckboxState(){ + + return chkShowCalendar->Get3StateValue(); } + +int XCCalendarListCalendarCtrl::GetCalendarID(){ + + return calendarID; + +} + +void XCCalendarListCalendarCtrl::SetCalendarID(int calendarID){ + + this->calendarID = calendarID; + calendarMenu->SetCalendarID(this->calendarID); + +} + +void XCCalendarListCalendarCtrl::SetAccountPreferencesID(int accountPreferencesID){ + + this->accountPreferencesID = accountPreferencesID; + calendarMenu->SetAccountPreferencesID(this->accountPreferencesID); + +} + +void XCCalendarListCalendarCtrl::ShowAllCheckboxClick( wxMouseEvent &mouseEvent ){ + + if (chkShowCalendar->Get3StateValue() == wxCHK_CHECKED){ + + wxCommandEvent event(XCCALENDARCTRL_SHOWCALENDARENTRIES); + event.SetInt(calendarID); + event.SetId(ID_SHOWCALENDARENTRIES); + wxPostEvent(this->GetParent()->GetParent()->GetParent(), event); + + } else { + + wxCommandEvent event(XCCALENDARCTRL_HIDECALENDARENTRIES); + event.SetInt(calendarID); + event.SetId(ID_HIDECALENDARENTRIES); + wxPostEvent(this->GetParent()->GetParent()->GetParent(), event); + + } + +} + +void XCCalendarListCalendarCtrl::SetCheckBoxValue(wxCheckBoxState newValue){ + + if (newValue == wxCHK_CHECKED){ + showCalendar = true; + } else { + showCalendar = false; + } + + chkShowCalendar->SetValue(newValue); + +} + +void XCCalendarListCalendarCtrl::PopupMenu( wxMouseEvent &mouseEvent ){ + + this->GetParent()->GetParent()->GetParent()->GetParent()->PopupMenu(calendarMenu->MenuPointer(), wxDefaultPosition); + +} \ No newline at end of file