X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarCtrl.cpp;h=5a9e598be2d0ebe37820d3359787911ce08d2318;hb=ca1d24d80ec04ae64a7540cf8bca61c053f2a193;hp=893f150de8d9cc9526e8ed8e12e1519b9c249779;hpb=fb61a8df39e632cce6dfd8b421f410f041a25760;p=xestiacalendar%2F.git diff --git a/source/widgets/XCCalendarCtrl.cpp b/source/widgets/XCCalendarCtrl.cpp index 893f150..5a9e598 100644 --- a/source/widgets/XCCalendarCtrl.cpp +++ b/source/widgets/XCCalendarCtrl.cpp @@ -18,11 +18,25 @@ #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, CalendarDataStorage *dataStorage) : wxPanel (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize){ - + // Setup the pointers. + + calendarStorage = dataStorage; + // Setup the main sizer. szrMain = new wxFlexGridSizer(2, 1, 0, 0); @@ -34,18 +48,38 @@ XCCalendarCtrl::XCCalendarCtrl(wxWindow *parent, CalendarDataStorage *dataStorag // Setup the top menu. - ManipulatorCtrl = new XCCalendarManipulator(this, "XCCalendarManipulator Test", wxDefaultPosition, wxDefaultSize, dataStorage); + 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(); + + XCCalendarMonthViewGrid CurrentMonthGrid = GenerateMonthGrid(currentMonth, currentYear); + szrMain->Add(manipulatorCtrl, 1, wxEXPAND, 5); + + // Get the list of hidden accounts and calendars. + + vector hideAccountsList = manipulatorCtrl->GetHiddenAccountsList(); + vector hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList(); - MonthViewCtrl = new XCCalendarMonthView(this, "XCCalendarMonthView Test", wxDefaultPosition, wxDefaultSize, &CurrentMonthGrid); - szrMain->Add(MonthViewCtrl, 1, wxEXPAND, 5); + monthViewCtrl = new XCCalendarMonthView(this, "XCCalendarMonthView Test", wxDefaultPosition, wxDefaultSize, &CurrentMonthGrid, calendarStorage, &hideAccountsList, &hideCalendarsList); + szrMain->Add(monthViewCtrl, 1, wxEXPAND, 5); - Connect(wxID_ANY, XCCALENDARCTRL_CHANGEGRID, wxCommandEventHandler(XCCalendarCtrl::UpdateGrid)); + // 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(){ @@ -56,27 +90,134 @@ XCCalendarCtrl::~XCCalendarCtrl(){ 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 hideAccountsList = manipulatorCtrl->GetHiddenAccountsList(); + vector 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