Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
widgets: Cleanup objects in destructors and minor code cleanup
[xestiacalendar/.git] / source / widgets / XCCalendarCtrl.cpp
index 44a1eb9..8bd5696 100644 (file)
 
 #include "XCCalendarCtrl.h"
 
-BEGIN_EVENT_TABLE(XCCalendarCtrl, wxPanel)
-END_EVENT_TABLE()
+wxDEFINE_EVENT(XCCALENDARCTRL_CHANGEGRID, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_HIDEACCOUNTENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_SHOWACCOUNTENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_HIDECALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_SHOWCALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_DELETECALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_ADDENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_UPDATEENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_UPDATECALENDARCOLOUR, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARCTRL_DELETEENTRY, wxCommandEvent);
 
 using namespace std; 
 
 XCCalendarCtrl::XCCalendarCtrl(wxWindow *parent, CalendarDataStorage *dataStorage)
        : wxPanel (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize){
-       
        // Setup the pointers.
                
        calendarStorage = dataStorage;
@@ -41,75 +48,99 @@ XCCalendarCtrl::XCCalendarCtrl(wxWindow *parent, CalendarDataStorage *dataStorag
        
        // Setup the top menu.
                
-       ManipulatorCtrl = new XCCalendarManipulator(this, "XCCalendarManipulator Test", wxDefaultPosition, wxDefaultSize, calendarStorage);
+       manipulatorCtrl = new XCCalendarManipulator(this, "XCCalendarManipulator Test", wxDefaultPosition, wxDefaultSize, calendarStorage);
                
        // Setup the month view grid.
        
-       wxDateTime DTNow = wxDateTime::Now();
-       int currentMonth = ((int)DTNow.GetMonth() + 1);
-       int currentYear = DTNow.GetYear();
+       wxDateTime dtNow = wxDateTime::Now();
+       int currentMonth = ((int)dtNow.GetMonth() + 1);
+       int currentYear = dtNow.GetYear();
                
        XCCalendarMonthViewGrid CurrentMonthGrid = GenerateMonthGrid(currentMonth, currentYear);
-       szrMain->Add(ManipulatorCtrl, 1, wxEXPAND, 5);
+       szrMain->Add(manipulatorCtrl, 1, wxEXPAND, 5);
                
        // Get the list of hidden accounts and calendars.
                
-       vector<int> hideAccountsList = ManipulatorCtrl->GetHiddenAccountsList();
-       vector<int> hideCalendarsList = ManipulatorCtrl->GetHiddenCalendarsList();
+       vector<int> hideAccountsList = manipulatorCtrl->GetHiddenAccountsList();
+       vector<int> hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList();
                
-       MonthViewCtrl = new XCCalendarMonthView(this, "XCCalendarMonthView Test", wxDefaultPosition, wxDefaultSize, &CurrentMonthGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
-       szrMain->Add(MonthViewCtrl, 1, wxEXPAND, 5);
-       
-       // Connect events to the control.
-       
-       Connect(ID_CHANGEGRID, XCCALENDARCTRL_CHANGEGRID, wxCommandEventHandler(XCCalendarCtrl::UpdateGrid));
-       Connect(ID_HIDEENTRIES, XCCALENDARCTRL_HIDEACCOUNTENTRIES, wxCommandEventHandler(XCCalendarCtrl::HideAccountEntries));
-       Connect(ID_SHOWENTRIES, XCCALENDARCTRL_SHOWACCOUNTENTRIES, wxCommandEventHandler(XCCalendarCtrl::ShowAccountEntries));
-       Connect(ID_HIDECALENDARENTRIES, XCCALENDARCTRL_HIDECALENDARENTRIES, wxCommandEventHandler(XCCalendarCtrl::HideCalendarEntries));
-       Connect(ID_SHOWCALENDARENTRIES, XCCALENDARCTRL_SHOWCALENDARENTRIES, wxCommandEventHandler(XCCalendarCtrl::ShowCalendarEntries));
-       Connect(ID_DELETECALENDARENTRIES, XCCALENDARCTRL_DELETECALENDARENTRIES, wxCommandEventHandler(XCCalendarCtrl::DeleteCalendarEntries));
-       Connect(ID_DELETEENTRY, XCCALENDARCTRL_DELETEENTRY, wxCommandEventHandler(XCCalendarCtrl::DeleteCalendarEntry));
-       Connect(ID_ADDENTRY, XCCALENDARCTRL_ADDENTRY, wxCommandEventHandler(XCCalendarCtrl::AddCalendarEntry));
-       Connect(ID_UPDATEENTRY, XCCALENDARCTRL_UPDATEENTRY, wxCommandEventHandler(XCCalendarCtrl::UpdateCalendarEntry));
-       Connect(ID_UPDATECOLOUR, XCCALENDARCTRL_UPDATECALENDARCOLOUR, wxCommandEventHandler(XCCalendarCtrl::UpdateCalendarColour));
-       
+       monthViewCtrl = new XCCalendarMonthView(this, "XCCalendarMonthView Test", wxDefaultPosition, wxDefaultSize, &CurrentMonthGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
+       szrMain->Add(monthViewCtrl, 1, wxEXPAND, 5);
+       
+       // Bind events to the control.
+       
+       Bind(XCCALENDARCTRL_CHANGEGRID, &XCCalendarCtrl::UpdateGrid, this, ID_CHANGEGRID);
+       Bind(XCCALENDARCTRL_HIDEACCOUNTENTRIES, &XCCalendarCtrl::HideAccountEntries, this, ID_HIDEENTRIES);
+       Bind(XCCALENDARCTRL_SHOWACCOUNTENTRIES, &XCCalendarCtrl::ShowAccountEntries, this, ID_SHOWENTRIES);
+       Bind(XCCALENDARCTRL_HIDECALENDARENTRIES, &XCCalendarCtrl::HideCalendarEntries, this, ID_HIDECALENDARENTRIES);
+       Bind(XCCALENDARCTRL_SHOWCALENDARENTRIES, &XCCalendarCtrl::ShowCalendarEntries, this, ID_SHOWCALENDARENTRIES);
+       Bind(XCCALENDARCTRL_DELETECALENDARENTRIES, &XCCalendarCtrl::DeleteCalendarEntries, this, ID_DELETECALENDARENTRIES);
+       Bind(XCCALENDARCTRL_DELETEENTRY, &XCCalendarCtrl::DeleteCalendarEntry, this, ID_DELETEENTRY);
+       Bind(XCCALENDARCTRL_ADDENTRY, &XCCalendarCtrl::AddCalendarEntry, this, ID_ADDENTRY);
+       Bind(XCCALENDARCTRL_UPDATEENTRY, &XCCalendarCtrl::UpdateCalendarEntry, this, ID_UPDATEENTRY);
+       Bind(XCCALENDARCTRL_DELETEENTRY, &XCCalendarCtrl::DeleteCalendarEntry, this, ID_DELETEENTRY);
+       Bind(XCCALENDARCTRL_UPDATECALENDARCOLOUR, &XCCalendarCtrl::UpdateCalendarColour, this, ID_UPDATECOLOUR);
 }
 
 XCCalendarCtrl::~XCCalendarCtrl(){
        
        // Destory the controls in the XCCalendarCtrl class.
+
+       Unbind(XCCALENDARCTRL_CHANGEGRID, &XCCalendarCtrl::UpdateGrid, this, ID_CHANGEGRID);
+       Unbind(XCCALENDARCTRL_HIDEACCOUNTENTRIES, &XCCalendarCtrl::HideAccountEntries, this, ID_HIDEENTRIES);
+       Unbind(XCCALENDARCTRL_SHOWACCOUNTENTRIES, &XCCalendarCtrl::ShowAccountEntries, this, ID_SHOWENTRIES);
+       Unbind(XCCALENDARCTRL_HIDECALENDARENTRIES, &XCCalendarCtrl::HideCalendarEntries, this, ID_HIDECALENDARENTRIES);
+       Unbind(XCCALENDARCTRL_SHOWCALENDARENTRIES, &XCCalendarCtrl::ShowCalendarEntries, this, ID_SHOWCALENDARENTRIES);
+       Unbind(XCCALENDARCTRL_DELETECALENDARENTRIES, &XCCalendarCtrl::DeleteCalendarEntries, this, ID_DELETECALENDARENTRIES);
+       Unbind(XCCALENDARCTRL_DELETEENTRY, &XCCalendarCtrl::DeleteCalendarEntry, this, ID_DELETEENTRY);
+       Unbind(XCCALENDARCTRL_ADDENTRY, &XCCalendarCtrl::AddCalendarEntry, this, ID_ADDENTRY);
+       Unbind(XCCALENDARCTRL_UPDATEENTRY, &XCCalendarCtrl::UpdateCalendarEntry, this, ID_UPDATEENTRY);
+       Unbind(XCCALENDARCTRL_DELETEENTRY, &XCCalendarCtrl::DeleteCalendarEntry, this, ID_DELETEENTRY);
+       Unbind(XCCALENDARCTRL_UPDATECALENDARCOLOUR, &XCCalendarCtrl::UpdateCalendarColour, this, ID_UPDATECOLOUR);
+       
+       szrMain->Clear();
+       
+       delete monthViewCtrl;
+       monthViewCtrl = nullptr;
+       
+       delete manipulatorCtrl;
+       manipulatorCtrl = nullptr;
+       
+       calendarStorage = nullptr;
+       
+       this->SetSizer(nullptr, true);
        
 }
 
 void XCCalendarCtrl::UpdateGrid(wxCommandEvent &event){
 
-       XCCalendarMonthView *OldGrid = nullptr;
+       XCCalendarMonthView *oldGrid = nullptr;
        
        // Park the old grid.
 
-       OldGrid = MonthViewCtrl;
+       oldGrid = monthViewCtrl;
        
        // Get the list of hidden accounts and calendars.
                
-       vector<int> hideAccountsList = ManipulatorCtrl->GetHiddenAccountsList();
-       vector<int> hideCalendarsList = ManipulatorCtrl->GetHiddenCalendarsList();
+       vector<int> hideAccountsList = manipulatorCtrl->GetHiddenAccountsList();
+       vector<int> hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList();
        
        // Create a new grid.
        
-       XCCalendarMonthViewGrid NewGrid = GenerateMonthGrid(ManipulatorCtrl->GetMonth(), ManipulatorCtrl->GetYear());
-       MonthViewCtrl = new XCCalendarMonthView(this, _(""), wxDefaultPosition, wxDefaultSize, &NewGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
+       XCCalendarMonthViewGrid NewGrid = GenerateMonthGrid(manipulatorCtrl->GetMonth(), manipulatorCtrl->GetYear());
+       monthViewCtrl = new XCCalendarMonthView(this, _(""), wxDefaultPosition, wxDefaultSize, &NewGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
 
        // Detach the old grid and attach the new one.
        
        szrMain->Detach(1);
-       OldGrid->Show(false);
-       szrMain->Add(MonthViewCtrl, 1, wxEXPAND, 5);
+       oldGrid->Show(false);
+       szrMain->Add(monthViewCtrl, 1, wxEXPAND, 5);
        szrMain->Layout();
        
        // Delete the old grid.
        
-       delete OldGrid;
-       OldGrid = nullptr;
+       delete oldGrid;
+       oldGrid = nullptr;
        
 }
 
@@ -121,7 +152,7 @@ void XCCalendarCtrl::HideAccountEntries(wxCommandEvent &accountData){
        wxCommandEvent event(XCCALENDARMONTH_HIDEACCOUNTENTRIES);
        event.SetInt(accountData.GetInt());
        event.SetId(ID_HIDEENTRIES);
-       wxPostEvent(MonthViewCtrl, event);
+       wxPostEvent(monthViewCtrl, event);
        
 }
 
@@ -133,7 +164,7 @@ void XCCalendarCtrl::ShowAccountEntries(wxCommandEvent &accountData){
        wxCommandEvent event(XCCALENDARMONTH_SHOWACCOUNTENTRIES);
        event.SetInt(accountData.GetInt());
        event.SetId(ID_SHOWENTRIES);
-       wxPostEvent(MonthViewCtrl, event);
+       wxPostEvent(monthViewCtrl, event);
        
 }
 
@@ -145,7 +176,7 @@ void XCCalendarCtrl::HideCalendarEntries(wxCommandEvent &calendarData){
        wxCommandEvent event(XCCALENDARMONTH_HIDECALENDARENTRIES);
        event.SetInt(calendarData.GetInt());
        event.SetId(ID_HIDECALENDARENTRIES);
-       wxPostEvent(MonthViewCtrl, event);
+       wxPostEvent(monthViewCtrl, event);
        
 }
 
@@ -157,7 +188,7 @@ void XCCalendarCtrl::ShowCalendarEntries(wxCommandEvent &calendarData){
        wxCommandEvent event(XCCALENDARMONTH_SHOWCALENDARENTRIES);
        event.SetInt(calendarData.GetInt());
        event.SetId(ID_SHOWCALENDARENTRIES);
-       wxPostEvent(MonthViewCtrl, event);
+       wxPostEvent(monthViewCtrl, event);
        
 }
 
@@ -166,7 +197,7 @@ void XCCalendarCtrl::DeleteCalendarEntries(wxCommandEvent &calendarData){
        wxCommandEvent event(XCCALENDARMONTH_DELETECALENDARENTRIES);
        event.SetInt(calendarData.GetInt());
        event.SetId(ID_DELETECALENDARENTRIES);
-       wxPostEvent(MonthViewCtrl, event);
+       wxPostEvent(monthViewCtrl, event);
        
 }
 
@@ -175,7 +206,7 @@ void XCCalendarCtrl::DeleteCalendarEntry(wxCommandEvent &eventData){
        wxCommandEvent event(XCCALENDARMONTH_DELETEENTRY);
        event.SetInt(eventData.GetInt());
        event.SetId(ID_DELETEENTRY);
-       wxPostEvent(MonthViewCtrl, event);
+       wxPostEvent(monthViewCtrl, event);
        
 }
 
@@ -183,13 +214,13 @@ void XCCalendarCtrl::AddCalendarEntry(wxCommandEvent &eventData){
        
        EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
 
-       eventInfo->hideAccountsList = ManipulatorCtrl->GetHiddenAccountsList();
-       eventInfo->hideCalendarsList = ManipulatorCtrl->GetHiddenCalendarsList();
+       eventInfo->hideAccountsList = manipulatorCtrl->GetHiddenAccountsList();
+       eventInfo->hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList();
        
        wxCommandEvent addEvent(XCCALENDARMONTH_ADDENTRY);
        addEvent.SetId(ID_ADDENTRY);
        addEvent.SetClientData(eventInfo);
-       wxPostEvent(MonthViewCtrl, addEvent);
+       wxPostEvent(monthViewCtrl, addEvent);
        
 }
 
@@ -200,7 +231,7 @@ void XCCalendarCtrl::UpdateCalendarEntry(wxCommandEvent &eventData){
        wxCommandEvent addEvent(XCCALENDARMONTH_UPDATEENTRY);
        addEvent.SetId(ID_UPDATEENTRY);
        addEvent.SetClientData(eventInfo);
-       wxPostEvent(MonthViewCtrl, addEvent);
+       wxPostEvent(monthViewCtrl, addEvent);
        
 }
 
@@ -211,6 +242,6 @@ void XCCalendarCtrl::UpdateCalendarColour(wxCommandEvent &colourData){
        wxCommandEvent colourEvent(XCCALENDARMONTH_UPDATECALENDARCOLOUR);
        colourEvent.SetId(ID_UPDATECOLOUR);
        colourEvent.SetClientData(colourInfo);
-       wxPostEvent(MonthViewCtrl, colourEvent);
+       wxPostEvent(monthViewCtrl, colourEvent);
        
 }
\ 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