1 // XCCalendarCtrl.cpp - Xestia Calendar XCCalendarCtrl widget class.
3 // (c) 2016 Xestia Software Development.
5 // This file is part of Xestia Calendar.
7 // Xestia Address Book is free software: you can redistribute it and/or modify
8 // it under the terms of the GNU General Public License as published by the
9 // Free Software Foundation, version 3 of the license.
11 // Xestia Address Book is distributed in the hope that it will be useful,
12 // but WITHOUT ANY WARRANTY; without even the implied warranty of
13 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 // GNU General Public License for more details.
16 // You should have received a copy of the GNU General Public License along
17 // with Xestia Calendar. If not, see <http://www.gnu.org/licenses/>
19 #include "XCCalendarCtrl.h"
21 BEGIN_EVENT_TABLE(XCCalendarCtrl, wxPanel)
26 XCCalendarCtrl::XCCalendarCtrl(wxWindow *parent, CalendarDataStorage *dataStorage)
27 : wxPanel (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize){
29 // Setup the pointers.
31 calendarStorage = dataStorage;
33 // Setup the main sizer.
35 szrMain = new wxFlexGridSizer(2, 1, 0, 0);
36 szrMain->AddGrowableCol(0);
37 szrMain->AddGrowableRow(1);
38 szrMain->SetFlexibleDirection(wxBOTH);
39 szrMain->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
40 this->SetSizer(szrMain);
42 // Setup the top menu.
44 ManipulatorCtrl = new XCCalendarManipulator(this, "XCCalendarManipulator Test", wxDefaultPosition, wxDefaultSize, calendarStorage);
46 // Setup the month view grid.
48 wxDateTime DTNow = wxDateTime::Now();
49 int currentMonth = ((int)DTNow.GetMonth() + 1);
50 int currentYear = DTNow.GetYear();
52 XCCalendarMonthViewGrid CurrentMonthGrid = GenerateMonthGrid(currentMonth, currentYear);
53 szrMain->Add(ManipulatorCtrl, 1, wxEXPAND, 5);
55 // TODO: Get the list of hidden accounts and calendars.
57 vector<int> hideAccountsList = ManipulatorCtrl->GetHiddenAccountsList();
58 vector<int> hideCalendarsList = ManipulatorCtrl->GetHiddenCalendarsList();
60 MonthViewCtrl = new XCCalendarMonthView(this, "XCCalendarMonthView Test", wxDefaultPosition, wxDefaultSize, &CurrentMonthGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
61 szrMain->Add(MonthViewCtrl, 1, wxEXPAND, 5);
63 // Connect events to the control.
65 Connect(ID_CHANGEGRID, XCCALENDARCTRL_CHANGEGRID, wxCommandEventHandler(XCCalendarCtrl::UpdateGrid));
66 Connect(ID_HIDEENTRIES, XCCALENDARCTRL_HIDEACCOUNTENTRIES, wxCommandEventHandler(XCCalendarCtrl::HideAccountEntries));
67 Connect(ID_SHOWENTRIES, XCCALENDARCTRL_SHOWACCOUNTENTRIES, wxCommandEventHandler(XCCalendarCtrl::ShowAccountEntries));
68 Connect(ID_HIDECALENDARENTRIES, XCCALENDARCTRL_HIDECALENDARENTRIES, wxCommandEventHandler(XCCalendarCtrl::HideCalendarEntries));
69 Connect(ID_SHOWCALENDARENTRIES, XCCALENDARCTRL_SHOWCALENDARENTRIES, wxCommandEventHandler(XCCalendarCtrl::ShowCalendarEntries));
73 XCCalendarCtrl::~XCCalendarCtrl(){
75 // Destory the controls in the XCCalendarCtrl class.
79 void XCCalendarCtrl::UpdateGrid(wxCommandEvent &event){
81 XCCalendarMonthView *OldGrid = nullptr;
85 OldGrid = MonthViewCtrl;
87 // Get the list of hidden accounts and calendars.
89 vector<int> hideAccountsList = ManipulatorCtrl->GetHiddenAccountsList();
90 vector<int> hideCalendarsList = ManipulatorCtrl->GetHiddenCalendarsList();
94 XCCalendarMonthViewGrid NewGrid = GenerateMonthGrid(ManipulatorCtrl->GetMonth(), ManipulatorCtrl->GetYear());
95 MonthViewCtrl = new XCCalendarMonthView(this, _(""), wxDefaultPosition, wxDefaultSize, &NewGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
97 // Detach the old grid and attach the new one.
100 OldGrid->Show(false);
101 szrMain->Add(MonthViewCtrl, 1, wxEXPAND, 5);
104 // Delete the old grid.
111 void XCCalendarCtrl::HideAccountEntries(wxCommandEvent &accountData){
113 // Get the list of calendar IDs for the account and go through
114 // the list of entries in each day control.
116 wxCommandEvent event(XCCALENDARMONTH_HIDEACCOUNTENTRIES);
117 event.SetInt(accountData.GetInt());
118 event.SetId(ID_HIDEENTRIES);
119 wxPostEvent(MonthViewCtrl, event);
123 void XCCalendarCtrl::ShowAccountEntries(wxCommandEvent &accountData){
125 // Get the list of calendar IDs for the account and go through
126 // the list of entries in each day control.
128 wxCommandEvent event(XCCALENDARMONTH_SHOWACCOUNTENTRIES);
129 event.SetInt(accountData.GetInt());
130 event.SetId(ID_SHOWENTRIES);
131 wxPostEvent(MonthViewCtrl, event);
135 void XCCalendarCtrl::HideCalendarEntries(wxCommandEvent &calendarData){
137 // Get the list of calendar IDs for the account and go through
138 // the list of entries in each day control.
140 wxCommandEvent event(XCCALENDARMONTH_HIDECALENDARENTRIES);
141 event.SetInt(calendarData.GetInt());
142 event.SetId(ID_HIDECALENDARENTRIES);
143 wxPostEvent(MonthViewCtrl, event);
147 void XCCalendarCtrl::ShowCalendarEntries(wxCommandEvent &calendarData){
149 // Get the list of calendar IDs for the account and go through
150 // the list of entries in each day control.
152 wxCommandEvent event(XCCALENDARMONTH_SHOWCALENDARENTRIES);
153 event.SetInt(calendarData.GetInt());
154 event.SetId(ID_SHOWCALENDARENTRIES);
155 wxPostEvent(MonthViewCtrl, event);