Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
widgets: Cleanup objects in destructors and minor code cleanup
[xestiacalendar/.git] / source / widgets / XCCalendarListCalendarCtrl.cpp
index bdf1b6a..371b123 100644 (file)
@@ -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
Xestia Software Development
Yn Maystri
© 2006 - 2019 Xestia Software Development
Software

Xestia Address Book
Xestia Calendar
Development

Xestia Gelforn
Everything else

About
News
Privacy Policy