#include "XCCalendarCtrl.h"
+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)
+XCCalendarCtrl::XCCalendarCtrl(wxWindow *parent, CalendarDataStorage *dataStorage)
: wxPanel (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize){
-
+ // Setup the pointers.
+
+ calendarStorage = dataStorage;
+
// Setup the main sizer.
szrMain = new wxFlexGridSizer(2, 1, 0, 0);
this->SetSizer(szrMain);
// Setup the top menu.
-
- ManipulatorCtrl = new XCCalendarManipulator(this, "XCCalendarManipulator Test", wxDefaultPosition, wxDefaultSize);
+
+ manipulatorCtrl = new XCCalendarManipulator(this, "XCCalendarManipulator Test", wxDefaultPosition, wxDefaultSize, calendarStorage);
// Setup the month view grid.
- XCCalendarMonthViewGrid CurrentMonthGrid = GenerateMonthGrid(11, 2016);
- szrMain->Add(ManipulatorCtrl, 1, wxEXPAND, 5);
+ wxDateTime dtNow = wxDateTime::Now();
+ int currentMonth = ((int)dtNow.GetMonth() + 1);
+ int currentYear = dtNow.GetYear();
- MonthViewCtrl = new XCCalendarMonthView(this, "XCCalendarMonthView Test", wxDefaultPosition, wxDefaultSize, &CurrentMonthGrid);
- szrMain->Add(MonthViewCtrl, 1, wxEXPAND, 5);
-
- Connect(wxID_ANY, XCCALENDARCTRL_CHANGEGRID, wxCommandEventHandler(XCCalendarCtrl::UpdateGrid));
-
+ XCCalendarMonthViewGrid CurrentMonthGrid = GenerateMonthGrid(currentMonth, currentYear);
+ szrMain->Add(manipulatorCtrl, 1, wxEXPAND, 5);
+
+ // Get the list of hidden accounts and calendars.
+
+ 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);
+
+ // 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();
// Create a new grid.
- XCCalendarMonthViewGrid NewGrid = GenerateMonthGrid(ManipulatorCtrl->GetMonth(), ManipulatorCtrl->GetYear());
- MonthViewCtrl = new XCCalendarMonthView(this, _(""), wxDefaultPosition, wxDefaultSize, &NewGrid);
+ 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;
+
+}
+
+void XCCalendarCtrl::HideAccountEntries(wxCommandEvent &accountData){
+
+ // Get the list of calendar IDs for the account and go through
+ // the list of entries in each day control.
+
+ wxCommandEvent event(XCCALENDARMONTH_HIDEACCOUNTENTRIES);
+ event.SetInt(accountData.GetInt());
+ event.SetId(ID_HIDEENTRIES);
+ wxPostEvent(monthViewCtrl, event);
+
+}
+
+void XCCalendarCtrl::ShowAccountEntries(wxCommandEvent &accountData){
+
+ // Get the list of calendar IDs for the account and go through
+ // the list of entries in each day control.
+
+ wxCommandEvent event(XCCALENDARMONTH_SHOWACCOUNTENTRIES);
+ event.SetInt(accountData.GetInt());
+ event.SetId(ID_SHOWENTRIES);
+ wxPostEvent(monthViewCtrl, event);
+
+}
+
+void XCCalendarCtrl::HideCalendarEntries(wxCommandEvent &calendarData){
+
+ // Get the list of calendar IDs for the account and go through
+ // the list of entries in each day control.
+
+ wxCommandEvent event(XCCALENDARMONTH_HIDECALENDARENTRIES);
+ event.SetInt(calendarData.GetInt());
+ event.SetId(ID_HIDECALENDARENTRIES);
+ wxPostEvent(monthViewCtrl, event);
+
+}
+
+void XCCalendarCtrl::ShowCalendarEntries(wxCommandEvent &calendarData){
+
+ // Get the list of calendar IDs for the account and go through
+ // the list of entries in each day control.
+
+ wxCommandEvent event(XCCALENDARMONTH_SHOWCALENDARENTRIES);
+ event.SetInt(calendarData.GetInt());
+ event.SetId(ID_SHOWCALENDARENTRIES);
+ wxPostEvent(monthViewCtrl, event);
+
+}
+
+void XCCalendarCtrl::DeleteCalendarEntries(wxCommandEvent &calendarData){
+
+ wxCommandEvent event(XCCALENDARMONTH_DELETECALENDARENTRIES);
+ event.SetInt(calendarData.GetInt());
+ event.SetId(ID_DELETECALENDARENTRIES);
+ wxPostEvent(monthViewCtrl, event);
+
+}
+
+void XCCalendarCtrl::DeleteCalendarEntry(wxCommandEvent &eventData){
+
+ wxCommandEvent event(XCCALENDARMONTH_DELETEENTRY);
+ event.SetInt(eventData.GetInt());
+ event.SetId(ID_DELETEENTRY);
+ wxPostEvent(monthViewCtrl, event);
+
+}
+
+void XCCalendarCtrl::AddCalendarEntry(wxCommandEvent &eventData){
+
+ EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
+
+ eventInfo->hideAccountsList = manipulatorCtrl->GetHiddenAccountsList();
+ eventInfo->hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList();
+
+ wxCommandEvent addEvent(XCCALENDARMONTH_ADDENTRY);
+ addEvent.SetId(ID_ADDENTRY);
+ addEvent.SetClientData(eventInfo);
+ wxPostEvent(monthViewCtrl, addEvent);
+
+}
+
+void XCCalendarCtrl::UpdateCalendarEntry(wxCommandEvent &eventData){
+
+ EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
+
+ wxCommandEvent addEvent(XCCALENDARMONTH_UPDATEENTRY);
+ addEvent.SetId(ID_UPDATEENTRY);
+ addEvent.SetClientData(eventInfo);
+ wxPostEvent(monthViewCtrl, addEvent);
+
+}
+
+void XCCalendarCtrl::UpdateCalendarColour(wxCommandEvent &colourData){
+
+ ColourUpdateProperties *colourInfo = (ColourUpdateProperties*)colourData.GetClientData();
+
+ wxCommandEvent colourEvent(XCCALENDARMONTH_UPDATECALENDARCOLOUR);
+ colourEvent.SetId(ID_UPDATECOLOUR);
+ colourEvent.SetClientData(colourInfo);
+ wxPostEvent(monthViewCtrl, colourEvent);
}
\ No newline at end of file