Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
widgets: Widget controls updated
[xestiacalendar/.git] / source / widgets / XCCalendarMonthView.cpp
index 479f59c..bd29758 100644 (file)
@@ -24,11 +24,9 @@ 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)
+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){
        
-       Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
-       
        calendarStorage = dataStorage;
                
        MondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
@@ -38,6 +36,8 @@ XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title
        FridayText = new XCCalendarMonthViewDayTitle(this, _("Friday"), wxDefaultPosition, wxDefaultSize);
        SaturdayText = new XCCalendarMonthViewDayTitle(this, _("Saturday"), wxDefaultPosition, wxDefaultSize);
        SundayText = new XCCalendarMonthViewDayTitle(this, _("Sunday"), wxDefaultPosition, wxDefaultSize);
+               
+       eventMenu = new XCEventMenu;
        
        WindowSizer->Add(MondayText, 1, wxEXPAND|wxALL, 0);
        WindowSizer->Add(TuesdayText, 1, wxEXPAND|wxALL, 0);
@@ -47,7 +47,7 @@ XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title
        WindowSizer->Add(SaturdayText, 1, wxEXPAND|wxALL, 0);   
        WindowSizer->Add(SundayText, 1, wxEXPAND|wxALL, 0);
        
-       ProcessGrid(grid);
+       ProcessGrid(grid, hideAccounts, hideCalendars);
        
        // Setup the days.
        
@@ -68,9 +68,21 @@ 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));
+
 }
 
-XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage)
+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));
@@ -93,7 +105,7 @@ XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, Calendar
        WindowSizer->Add(SaturdayText, 1, wxEXPAND|wxALL, 0);   
        WindowSizer->Add(SundayText, 1, wxEXPAND|wxALL, 0);
        
-       ProcessGrid(grid);
+       ProcessGrid(grid, hideAccounts, hideCalendars);
        
        // Setup the days.
        
@@ -122,7 +134,7 @@ XCCalendarMonthView::~XCCalendarMonthView(){
        
 }
 
-void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid){
+void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid, std::vector<int> *hideAccounts, std::vector<int> *hideCalendars){
        
        // TODO: Delete the old calendar entries.
        
@@ -144,7 +156,7 @@ void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid){
                                
                        // Setup the control.
                                
-                       CalendarDayItem->SetupControl((*DayIter).Day, (*DayIter).Month, (*DayIter).Year, (*DayIter).IsInMonth, this, calendarStorage);
+                       CalendarDayItem->SetupControl((*DayIter).Day, (*DayIter).Month, (*DayIter).Year, (*DayIter).IsInMonth, this, calendarStorage, hideAccounts, hideCalendars);
                                
                        CalendarDayList.push_back(CalendarDayItem);
                        WindowSizer->Add(CalendarDayItem, 1, wxEXPAND, 5);
@@ -203,4 +215,194 @@ void XCCalendarMonthView::DeselectOthersEvent(wxCommandEvent &DeselectEvent){
                        
        }
        
+}
+
+void XCCalendarMonthView::HideAccountEntries(wxCommandEvent &accountData){
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               wxCommandEvent HideEvent(XCCALENDARDAY_HIDEACCOUNTENTRIES);
+               HideEvent.SetInt(accountData.GetInt());
+               HideEvent.SetId(ID_HIDEENTRIES);
+               wxPostEvent((*DayIter), HideEvent);
+                       
+       }
+       
+}
+
+void XCCalendarMonthView::ShowAccountEntries(wxCommandEvent &accountData){
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               wxCommandEvent ShowEvent(XCCALENDARDAY_SHOWACCOUNTENTRIES);
+               ShowEvent.SetInt(accountData.GetInt());
+               ShowEvent.SetId(ID_SHOWENTRIES);
+               wxPostEvent((*DayIter), ShowEvent);
+                       
+       }
+       
+}
+
+void XCCalendarMonthView::HideCalendarEntries(wxCommandEvent &accountData){
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               wxCommandEvent HideEvent(XCCALENDARDAY_HIDECALENDARENTRIES);
+               HideEvent.SetInt(accountData.GetInt());
+               HideEvent.SetId(ID_HIDECALENDARENTRIES);
+               wxPostEvent((*DayIter), HideEvent);
+                       
+       }
+       
+}
+
+void XCCalendarMonthView::ShowCalendarEntries(wxCommandEvent &accountData){
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               wxCommandEvent HideEvent(XCCALENDARDAY_SHOWCALENDARENTRIES);
+               HideEvent.SetInt(accountData.GetInt());
+               HideEvent.SetId(ID_SHOWCALENDARENTRIES);
+               wxPostEvent((*DayIter), HideEvent);
+                       
+       }
+       
+}
+
+void XCCalendarMonthView::DeleteCalendarEntries(wxCommandEvent &calendarData){
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+
+               wxCommandEvent deleteEvent(XCCALENDARDAY_DELETECALENDARENTRIES);
+               deleteEvent.SetInt(calendarData.GetInt());
+               deleteEvent.SetId(ID_DELETECALENDARENTRIES);
+               wxPostEvent((*DayIter), deleteEvent);
+                       
+       }
+       
+}
+
+void XCCalendarMonthView::DeleteCalendarEntry(wxCommandEvent &eventData){
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+
+               wxCommandEvent deleteEvent(XCCALENDARDAY_DELETEENTRY);
+               deleteEvent.SetInt(eventData.GetInt());
+               deleteEvent.SetId(ID_DELETEENTRY);
+               wxPostEvent((*DayIter), deleteEvent);
+                       
+       }       
+       
+}
+
+void XCCalendarMonthView::AddCalendarEntry(wxCommandEvent &eventData){
+       
+       EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
+       bool foundDate = false;
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               // Check if the date matches with the date in the day
+               // widget. If it does, add the widget.
+                       
+               if ((*DayIter)->GetCalendarYear() == eventInfo->eventYear &&
+                       (*DayIter)->GetCalendarMonth() == (eventInfo->eventMonth + 1) &&
+                       (*DayIter)->GetCalendarDay() == eventInfo->eventDay){
+                       
+                       wxCommandEvent addEvent(XCCALENDARDAY_ADDENTRY);
+                       addEvent.SetId(ID_ADDENTRY);
+                       addEvent.SetClientData(eventInfo);
+                       wxPostEvent((*DayIter), addEvent);
+                       foundDate = true;
+                       break;
+                       
+               }
+                       
+       }
+       
+       if (foundDate == false){
+               
+               delete eventInfo;
+               eventInfo = nullptr;
+               
+       }
+       
+}
+
+void XCCalendarMonthView::UpdateCalendarEntry(wxCommandEvent &eventData){
+       
+       EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
+       bool foundDate = false;
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               // Check if the date matches with the date in the day
+               // widget. If it does, update the widget.
+                       
+               if ((*DayIter)->GetCalendarYear() == eventInfo->eventYear &&
+                       (*DayIter)->GetCalendarMonth() == (eventInfo->eventMonth + 1) &&
+                       (*DayIter)->GetCalendarDay() == eventInfo->eventDay){
+                       
+                       wxCommandEvent addEvent(XCCALENDARDAY_UPDATEENTRY);
+                       addEvent.SetId(ID_UPDATEENTRY);
+                       addEvent.SetClientData(eventInfo);
+                       wxPostEvent((*DayIter), addEvent);
+                       foundDate = true;
+                       break;
+                       
+               }
+                       
+       }
+       
+       if (foundDate == false){
+               
+               delete eventInfo;
+               eventInfo = nullptr;
+               
+       }
+       
+}
+
+void XCCalendarMonthView::UpdateCalendarColour(wxCommandEvent &colourData){
+       
+       ColourUpdateProperties *colourDataInfo = (ColourUpdateProperties*)colourData.GetClientData();
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               // Check if the date matches with the date in the day
+               // widget. If it does, update the widget.
+
+               ColourUpdateProperties *colourDataPassInfo = colourDataInfo;
+                       
+               wxCommandEvent updateColour(XCCALENDARDAY_UPDATECALENDARCOLOUR);
+               updateColour.SetId(ID_UPDATECOLOUR);
+               updateColour.SetClientData(colourDataPassInfo);
+               wxPostEvent((*DayIter), updateColour);
+                       
+       }
+       
+}
+
+void XCCalendarMonthView::ShowEventMenu(wxCommandEvent &eventData){
+       
+       EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
+       
+       eventMenu->SetEventID(eventInfo->eventID);
+       eventMenu->SetCalendarID(eventInfo->calendarID);
+       eventMenu->SetWindowPointer(this->GetParent()->GetParent());
+       
+       this->PopupMenu(eventMenu, wxDefaultPosition);
+       
+       delete eventInfo;
+       eventInfo = nullptr;
+       
 }
\ 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