Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
Events: Now using wxDEFINE_EVENT, wxDECLARE_EVENT and Bind
[xestiacalendar/.git] / source / widgets / XCCalendarCtrl.cpp
1 // XCCalendarCtrl.cpp - Xestia Calendar XCCalendarCtrl widget class.
2 //
3 // (c) 2016 Xestia Software Development.
4 //
5 // This file is part of Xestia Calendar.
6 //
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.
10 //
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.
15 //
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 wxDEFINE_EVENT(XCCALENDARCTRL_CHANGEGRID, wxCommandEvent);
22 wxDEFINE_EVENT(XCCALENDARCTRL_HIDEACCOUNTENTRIES, wxCommandEvent);
23 wxDEFINE_EVENT(XCCALENDARCTRL_SHOWACCOUNTENTRIES, wxCommandEvent);
24 wxDEFINE_EVENT(XCCALENDARCTRL_HIDECALENDARENTRIES, wxCommandEvent);
25 wxDEFINE_EVENT(XCCALENDARCTRL_SHOWCALENDARENTRIES, wxCommandEvent);
26 wxDEFINE_EVENT(XCCALENDARCTRL_DELETECALENDARENTRIES, wxCommandEvent);
27 wxDEFINE_EVENT(XCCALENDARCTRL_ADDENTRY, wxCommandEvent);
28 wxDEFINE_EVENT(XCCALENDARCTRL_UPDATEENTRY, wxCommandEvent);
29 wxDEFINE_EVENT(XCCALENDARCTRL_UPDATECALENDARCOLOUR, wxCommandEvent);
30 wxDEFINE_EVENT(XCCALENDARCTRL_DELETEENTRY, wxCommandEvent);
32 using namespace std; 
34 XCCalendarCtrl::XCCalendarCtrl(wxWindow *parent, CalendarDataStorage *dataStorage)
35         : wxPanel (parent, wxID_ANY, wxDefaultPosition, wxDefaultSize){
36         // Setup the pointers.
37                 
38         calendarStorage = dataStorage;
39                 
40         // Setup the main sizer.
41         
42         szrMain = new wxFlexGridSizer(2, 1, 0, 0);
43         szrMain->AddGrowableCol(0);
44         szrMain->AddGrowableRow(1);
45         szrMain->SetFlexibleDirection(wxBOTH);
46         szrMain->SetNonFlexibleGrowMode(wxFLEX_GROWMODE_SPECIFIED);
47         this->SetSizer(szrMain);
48         
49         // Setup the top menu.
50                 
51         manipulatorCtrl = new XCCalendarManipulator(this, "XCCalendarManipulator Test", wxDefaultPosition, wxDefaultSize, calendarStorage);
52                 
53         // Setup the month view grid.
54         
55         wxDateTime dtNow = wxDateTime::Now();
56         int currentMonth = ((int)dtNow.GetMonth() + 1);
57         int currentYear = dtNow.GetYear();
58                 
59         XCCalendarMonthViewGrid CurrentMonthGrid = GenerateMonthGrid(currentMonth, currentYear);
60         szrMain->Add(manipulatorCtrl, 1, wxEXPAND, 5);
61                 
62         // Get the list of hidden accounts and calendars.
63                 
64         vector<int> hideAccountsList = manipulatorCtrl->GetHiddenAccountsList();
65         vector<int> hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList();
66                 
67         monthViewCtrl = new XCCalendarMonthView(this, "XCCalendarMonthView Test", wxDefaultPosition, wxDefaultSize, &CurrentMonthGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
68         szrMain->Add(monthViewCtrl, 1, wxEXPAND, 5);
69         
70         // Bind events to the control.
71         
72         Bind(XCCALENDARCTRL_CHANGEGRID, &XCCalendarCtrl::UpdateGrid, this, ID_CHANGEGRID);
73         Bind(XCCALENDARCTRL_HIDEACCOUNTENTRIES, &XCCalendarCtrl::HideAccountEntries, this, ID_HIDEENTRIES);
74         Bind(XCCALENDARCTRL_SHOWACCOUNTENTRIES, &XCCalendarCtrl::ShowAccountEntries, this, ID_SHOWENTRIES);
75         Bind(XCCALENDARCTRL_HIDECALENDARENTRIES, &XCCalendarCtrl::HideCalendarEntries, this, ID_HIDECALENDARENTRIES);
76         Bind(XCCALENDARCTRL_SHOWCALENDARENTRIES, &XCCalendarCtrl::ShowCalendarEntries, this, ID_SHOWCALENDARENTRIES);
77         Bind(XCCALENDARCTRL_DELETECALENDARENTRIES, &XCCalendarCtrl::DeleteCalendarEntries, this, ID_DELETECALENDARENTRIES);
78         Bind(XCCALENDARCTRL_DELETEENTRY, &XCCalendarCtrl::DeleteCalendarEntry, this, ID_DELETEENTRY);
79         Bind(XCCALENDARCTRL_ADDENTRY, &XCCalendarCtrl::AddCalendarEntry, this, ID_ADDENTRY);
80         Bind(XCCALENDARCTRL_UPDATEENTRY, &XCCalendarCtrl::UpdateCalendarEntry, this, ID_UPDATEENTRY);
81         Bind(XCCALENDARCTRL_DELETEENTRY, &XCCalendarCtrl::DeleteCalendarEntry, this, ID_DELETEENTRY);
82         Bind(XCCALENDARCTRL_UPDATECALENDARCOLOUR, &XCCalendarCtrl::UpdateCalendarColour, this, ID_UPDATECOLOUR);
83 }
85 XCCalendarCtrl::~XCCalendarCtrl(){
86         
87         // Destory the controls in the XCCalendarCtrl class.
88         
89 }
91 void XCCalendarCtrl::UpdateGrid(wxCommandEvent &event){
93         XCCalendarMonthView *oldGrid = nullptr;
94         
95         // Park the old grid.
97         oldGrid = monthViewCtrl;
98         
99         // Get the list of hidden accounts and calendars.
100                 
101         vector<int> hideAccountsList = manipulatorCtrl->GetHiddenAccountsList();
102         vector<int> hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList();
103         
104         // Create a new grid.
105         
106         XCCalendarMonthViewGrid NewGrid = GenerateMonthGrid(manipulatorCtrl->GetMonth(), manipulatorCtrl->GetYear());
107         monthViewCtrl = new XCCalendarMonthView(this, _(""), wxDefaultPosition, wxDefaultSize, &NewGrid, calendarStorage, &hideAccountsList, &hideCalendarsList);
109         // Detach the old grid and attach the new one.
110         
111         szrMain->Detach(1);
112         oldGrid->Show(false);
113         szrMain->Add(monthViewCtrl, 1, wxEXPAND, 5);
114         szrMain->Layout();
115         
116         // Delete the old grid.
117         
118         delete oldGrid;
119         oldGrid = nullptr;
120         
123 void XCCalendarCtrl::HideAccountEntries(wxCommandEvent &accountData){
124         
125         // Get the list of calendar IDs for the account and go through 
126         // the list of entries in each day control.
127         
128         wxCommandEvent event(XCCALENDARMONTH_HIDEACCOUNTENTRIES);
129         event.SetInt(accountData.GetInt());
130         event.SetId(ID_HIDEENTRIES);
131         wxPostEvent(monthViewCtrl, event);
132         
135 void XCCalendarCtrl::ShowAccountEntries(wxCommandEvent &accountData){
136         
137         // Get the list of calendar IDs for the account and go through 
138         // the list of entries in each day control.
139         
140         wxCommandEvent event(XCCALENDARMONTH_SHOWACCOUNTENTRIES);
141         event.SetInt(accountData.GetInt());
142         event.SetId(ID_SHOWENTRIES);
143         wxPostEvent(monthViewCtrl, event);
144         
147 void XCCalendarCtrl::HideCalendarEntries(wxCommandEvent &calendarData){
148         
149         // Get the list of calendar IDs for the account and go through 
150         // the list of entries in each day control.
151         
152         wxCommandEvent event(XCCALENDARMONTH_HIDECALENDARENTRIES);
153         event.SetInt(calendarData.GetInt());
154         event.SetId(ID_HIDECALENDARENTRIES);
155         wxPostEvent(monthViewCtrl, event);
156         
159 void XCCalendarCtrl::ShowCalendarEntries(wxCommandEvent &calendarData){
160         
161         // Get the list of calendar IDs for the account and go through 
162         // the list of entries in each day control.
163         
164         wxCommandEvent event(XCCALENDARMONTH_SHOWCALENDARENTRIES);
165         event.SetInt(calendarData.GetInt());
166         event.SetId(ID_SHOWCALENDARENTRIES);
167         wxPostEvent(monthViewCtrl, event);
168         
171 void XCCalendarCtrl::DeleteCalendarEntries(wxCommandEvent &calendarData){
172         
173         wxCommandEvent event(XCCALENDARMONTH_DELETECALENDARENTRIES);
174         event.SetInt(calendarData.GetInt());
175         event.SetId(ID_DELETECALENDARENTRIES);
176         wxPostEvent(monthViewCtrl, event);
177         
180 void XCCalendarCtrl::DeleteCalendarEntry(wxCommandEvent &eventData){
181         
182         wxCommandEvent event(XCCALENDARMONTH_DELETEENTRY);
183         event.SetInt(eventData.GetInt());
184         event.SetId(ID_DELETEENTRY);
185         wxPostEvent(monthViewCtrl, event);
186         
189 void XCCalendarCtrl::AddCalendarEntry(wxCommandEvent &eventData){
190         
191         EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
193         eventInfo->hideAccountsList = manipulatorCtrl->GetHiddenAccountsList();
194         eventInfo->hideCalendarsList = manipulatorCtrl->GetHiddenCalendarsList();
195         
196         wxCommandEvent addEvent(XCCALENDARMONTH_ADDENTRY);
197         addEvent.SetId(ID_ADDENTRY);
198         addEvent.SetClientData(eventInfo);
199         wxPostEvent(monthViewCtrl, addEvent);
200         
203 void XCCalendarCtrl::UpdateCalendarEntry(wxCommandEvent &eventData){
204         
205         EventProperties *eventInfo = (EventProperties*)eventData.GetClientData();
206         
207         wxCommandEvent addEvent(XCCALENDARMONTH_UPDATEENTRY);
208         addEvent.SetId(ID_UPDATEENTRY);
209         addEvent.SetClientData(eventInfo);
210         wxPostEvent(monthViewCtrl, addEvent);
211         
214 void XCCalendarCtrl::UpdateCalendarColour(wxCommandEvent &colourData){
215         
216         ColourUpdateProperties *colourInfo = (ColourUpdateProperties*)colourData.GetClientData();
217         
218         wxCommandEvent colourEvent(XCCALENDARMONTH_UPDATECALENDARCOLOUR);
219         colourEvent.SetId(ID_UPDATECOLOUR);
220         colourEvent.SetClientData(colourInfo);
221         wxPostEvent(monthViewCtrl, colourEvent);
222         
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