Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
widgets: Cleanup objects in destructors and minor code cleanup
[xestiacalendar/.git] / source / widgets / XCCalendarMonthView.cpp
index a7443e9..941a484 100644 (file)
 
 using namespace std;
 
+wxDEFINE_EVENT(XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_HIDEACCOUNTENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_SHOWACCOUNTENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_HIDECALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_SHOWCALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_DELETECALENDARENTRIES, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_DISPLAYEVENTMENU, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_DELETEENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_ADDENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_UPDATEENTRY, wxCommandEvent);
+wxDEFINE_EVENT(XCCALENDARMONTH_UPDATECALENDARCOLOUR, wxCommandEvent);
+
 BEGIN_EVENT_TABLE(XCCalendarMonthView, wxPanel)
-EVT_PAINT(XCCalendarMonthView::PaintFrameEvent)
 END_EVENT_TABLE()
 
 XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage, std::vector<int> *hideAccounts, std::vector<int> *hideCalendars)
         : wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL){
-       
        calendarStorage = dataStorage;
                
        mondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
@@ -68,69 +78,59 @@ XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title
        this->Layout();
        this->SetBackgroundColour(wxColour(0,0,0));
        
-       Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
-       Connect(ID_HIDEENTRIES, XCCALENDARMONTH_HIDEACCOUNTENTRIES, wxCommandEventHandler(XCCalendarMonthView::HideAccountEntries));
-       Connect(ID_SHOWENTRIES, XCCALENDARMONTH_SHOWACCOUNTENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowAccountEntries));
-       Connect(ID_HIDECALENDARENTRIES, XCCALENDARMONTH_HIDECALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::HideCalendarEntries));
-       Connect(ID_SHOWCALENDARENTRIES, XCCALENDARMONTH_SHOWCALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowCalendarEntries));
-       Connect(ID_DELETECALENDARENTRIES, XCCALENDARMONTH_DELETECALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeleteCalendarEntries));
-       Connect(ID_DISPLAYEVENTMENU, XCCALENDARMONTH_DISPLAYEVENTMENU, wxCommandEventHandler(XCCalendarMonthView::ShowEventMenu));
-       Connect(ID_DELETEENTRY, XCCALENDARMONTH_DELETEENTRY, wxCommandEventHandler(XCCalendarMonthView::DeleteCalendarEntry));
-       Connect(ID_ADDENTRY, XCCALENDARMONTH_ADDENTRY, wxCommandEventHandler(XCCalendarMonthView::AddCalendarEntry));
-       Connect(ID_UPDATEENTRY, XCCALENDARMONTH_UPDATEENTRY, wxCommandEventHandler(XCCalendarMonthView::UpdateCalendarEntry));
-       Connect(ID_UPDATECOLOUR, XCCALENDARMONTH_UPDATECALENDARCOLOUR, wxCommandEventHandler(XCCalendarMonthView::UpdateCalendarColour));
+       // Bind events to the control.
 
+       Bind(XCCALENDARMONTH_DESELECTOTHERENTRIES, &XCCalendarMonthView::DeselectOthersEvent, this, ID_MONTHVIEWCLEARSELECTION);
+       Bind(XCCALENDARMONTH_HIDEACCOUNTENTRIES, &XCCalendarMonthView::HideAccountEntries, this, ID_HIDEENTRIES);
+       Bind(XCCALENDARMONTH_SHOWACCOUNTENTRIES, &XCCalendarMonthView::ShowAccountEntries, this, ID_SHOWENTRIES);
+       Bind(XCCALENDARMONTH_HIDECALENDARENTRIES, &XCCalendarMonthView::HideCalendarEntries, this, ID_HIDECALENDARENTRIES);
+       Bind(XCCALENDARMONTH_SHOWCALENDARENTRIES, &XCCalendarMonthView::ShowCalendarEntries, this, ID_SHOWCALENDARENTRIES);
+       Bind(XCCALENDARMONTH_DELETECALENDARENTRIES, &XCCalendarMonthView::DeleteCalendarEntries, this, ID_DELETECALENDARENTRIES);
+       Bind(XCCALENDARMONTH_DISPLAYEVENTMENU, &XCCalendarMonthView::ShowEventMenu, this, ID_DISPLAYEVENTMENU);
+       Bind(XCCALENDARMONTH_DELETEENTRY, &XCCalendarMonthView::DeleteCalendarEntry, this, ID_DELETEENTRY);
+       Bind(XCCALENDARMONTH_ADDENTRY, &XCCalendarMonthView::AddCalendarEntry, this, ID_ADDENTRY);
+       Bind(XCCALENDARMONTH_UPDATEENTRY, &XCCalendarMonthView::UpdateCalendarEntry, this, ID_UPDATEENTRY);
+       Bind(XCCALENDARMONTH_UPDATECALENDARCOLOUR, &XCCalendarMonthView::UpdateCalendarColour, this, ID_UPDATECOLOUR);
+       
 }
 
-XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage, std::vector<int> *hideAccounts, std::vector<int> *hideCalendars)
-        : wxPanel(NULL, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL){
-       
-       Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
-       
-       calendarStorage = dataStorage;
-               
-       mondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
-       tuesdayText = new XCCalendarMonthViewDayTitle(this, _("Tuesday"), wxDefaultPosition, wxDefaultSize);
-       wednesdayText = new XCCalendarMonthViewDayTitle(this, _("Wednesday"), wxDefaultPosition, wxDefaultSize);
-       thursdayText = new XCCalendarMonthViewDayTitle(this, _("Thursday"), wxDefaultPosition, wxDefaultSize);
-       fridayText = new XCCalendarMonthViewDayTitle(this, _("Friday"), wxDefaultPosition, wxDefaultSize);
-       saturdayText = new XCCalendarMonthViewDayTitle(this, _("Saturday"), wxDefaultPosition, wxDefaultSize);
-       sundayText = new XCCalendarMonthViewDayTitle(this, _("Sunday"), wxDefaultPosition, wxDefaultSize);
-       
-       windowSizer->Add(mondayText, 1, wxEXPAND|wxALL, 0);
-       windowSizer->Add(tuesdayText, 1, wxEXPAND|wxALL, 0);
-       windowSizer->Add(wednesdayText, 1, wxEXPAND|wxALL, 0);
-       windowSizer->Add(thursdayText, 1, wxEXPAND|wxALL, 0);
-       windowSizer->Add(fridayText, 1, wxEXPAND|wxALL, 0);
-       windowSizer->Add(saturdayText, 1, wxEXPAND|wxALL, 0);   
-       windowSizer->Add(sundayText, 1, wxEXPAND|wxALL, 0);
-       
-       ProcessGrid(grid, hideAccounts, hideCalendars);
+XCCalendarMonthView::~XCCalendarMonthView(){
        
-       // Setup the days.
+       delete mondayText;
+       delete tuesdayText;
+       delete wednesdayText;
+       delete thursdayText;
+       delete fridayText;
+       delete saturdayText;
+       delete sundayText;
        
-       // Setup the growable rows and columns.
+       for (vector<XCCalendarDay*>::iterator dayIter = calendarDayList.begin();
+               dayIter != calendarDayList.end(); dayIter++){
+                       
+               delete ((*dayIter));
+                       
+       }
        
-       windowSizer->AddGrowableCol(0);
-       windowSizer->AddGrowableCol(1);
-       windowSizer->AddGrowableCol(2);
-       windowSizer->AddGrowableCol(3);
-       windowSizer->AddGrowableCol(4);
-       windowSizer->AddGrowableCol(5); 
-       windowSizer->AddGrowableCol(6);
-       windowSizer->SetFlexibleDirection( wxBOTH );
-       windowSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       delete eventMenu;
+       this->SetSizer(nullptr, true);
        
-       this->SetSizer(windowSizer);
-       windowSizer->Fit(this);
-       this->Layout();
-       this->SetBackgroundColour(wxColour(0,0,0));
+       // Unbind events from control
        
-}
-
-XCCalendarMonthView::~XCCalendarMonthView(){
+       Unbind(XCCALENDARMONTH_DESELECTOTHERENTRIES, &XCCalendarMonthView::DeselectOthersEvent, this);
+       Unbind(XCCALENDARMONTH_HIDEACCOUNTENTRIES, &XCCalendarMonthView::HideAccountEntries, this);
+       Unbind(XCCALENDARMONTH_SHOWACCOUNTENTRIES, &XCCalendarMonthView::ShowAccountEntries, this);
+       Unbind(XCCALENDARMONTH_HIDECALENDARENTRIES, &XCCalendarMonthView::HideCalendarEntries, this);
+       Unbind(XCCALENDARMONTH_SHOWCALENDARENTRIES, &XCCalendarMonthView::ShowCalendarEntries, this);
+       Unbind(XCCALENDARMONTH_DELETECALENDARENTRIES, &XCCalendarMonthView::DeleteCalendarEntries, this);
+       Unbind(XCCALENDARMONTH_DISPLAYEVENTMENU, &XCCalendarMonthView::ShowEventMenu, this);
+       Unbind(XCCALENDARMONTH_DELETEENTRY, &XCCalendarMonthView::DeleteCalendarEntry, this);
+       Unbind(XCCALENDARMONTH_ADDENTRY, &XCCalendarMonthView::AddCalendarEntry, this);
+       Unbind(XCCALENDARMONTH_UPDATEENTRY, &XCCalendarMonthView::UpdateCalendarEntry, this);
+       Unbind(XCCALENDARMONTH_UPDATECALENDARCOLOUR, &XCCalendarMonthView::UpdateCalendarColour, this);
        
+       // Don't delete CalendarDataStorage object (used elsewhere).
        
+       calendarStorage = nullptr;
        
 }
 
@@ -152,8 +152,8 @@ void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid, std::vector
                                
                        // Add Calendar entries.
                                
-                       XCCalendarDay *calendarDayItem = new XCCalendarDay(this, "XCCalendarMonthView Test", wxPoint(50, 50), wxSize(200, 200));
-                               
+                       XCCalendarDay *calendarDayItem = new XCCalendarDay(this, "XCCalendarMonthView Test", wxPoint(50, 50), wxSize(100,100));
+                       
                        // Setup the control.
                                
                        calendarDayItem->SetupControl((*dayIter).day, (*dayIter).month, (*dayIter).year, (*dayIter).isInMonth, this, calendarStorage, hideAccounts, hideCalendars);
@@ -175,20 +175,6 @@ void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid, std::vector
        
 }
 
-void XCCalendarMonthView::Repaint(){
-       
-       // Draw the border.
-       
-       this->Layout();
-
-}
-
-void XCCalendarMonthView::PaintFrameEvent(wxPaintEvent &PaintEvent){
-
-       Repaint();
-       
-}
-
 void XCCalendarMonthView::ResizeFrameEvent(wxSizeEvent &SizeEvent){
 
        // TODO: Check if window size is less than 120 pixels and if it is,
@@ -341,6 +327,16 @@ void XCCalendarMonthView::UpdateCalendarEntry(wxCommandEvent &eventData){
        EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
        bool foundDate = false;
        
+       for (vector<XCCalendarDay*>::iterator dayIter = calendarDayList.begin();
+               dayIter != calendarDayList.end(); dayIter++){
+       
+               wxCommandEvent addEvent(XCCALENDARDAY_DELETEENTRY);
+               addEvent.SetId(ID_DELETEENTRY);
+               addEvent.SetInt(eventInfo->eventID);
+               wxPostEvent((*dayIter), addEvent);
+                       
+       }
+       
        for (vector<XCCalendarDay*>::iterator dayIter = calendarDayList.begin();
                dayIter != calendarDayList.end(); dayIter++){
                        
@@ -351,8 +347,8 @@ void XCCalendarMonthView::UpdateCalendarEntry(wxCommandEvent &eventData){
                        (*dayIter)->GetCalendarMonth() == (eventInfo->eventMonth + 1) &&
                        (*dayIter)->GetCalendarDay() == eventInfo->eventDay){
                        
-                       wxCommandEvent addEvent(XCCALENDARDAY_UPDATEENTRY);
-                       addEvent.SetId(ID_UPDATEENTRY);
+                       wxCommandEvent addEvent(XCCALENDARDAY_ADDENTRY);
+                       addEvent.SetId(ID_ADDENTRY);
                        addEvent.SetClientData(eventInfo);
                        wxPostEvent((*dayIter), addEvent);
                        foundDate = true;
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