Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
XCCalendarMonthView: Receive CalendarDataStorage pointer
[xestiacalendar/.git] / source / widgets / XCCalendarMonthView.cpp
1 // XCCalendarMonthView.cpp - Xestia Calendar XCCalendarMonthView 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 "XCCalendarMonthView.h"
21 using namespace std;
23 BEGIN_EVENT_TABLE(XCCalendarMonthView, wxPanel)
24 EVT_PAINT(XCCalendarMonthView::PaintFrameEvent)
25 END_EVENT_TABLE()
27 XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage)
28         : wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL){
29         
30         Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
31         
32         calendarStorage = dataStorage;
33                 
34         MondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
35         TuesdayText = new XCCalendarMonthViewDayTitle(this, _("Tuesday"), wxDefaultPosition, wxDefaultSize);
36         WednesdayText = new XCCalendarMonthViewDayTitle(this, _("Wednesday"), wxDefaultPosition, wxDefaultSize);
37         ThursdayText = new XCCalendarMonthViewDayTitle(this, _("Thursday"), wxDefaultPosition, wxDefaultSize);
38         FridayText = new XCCalendarMonthViewDayTitle(this, _("Friday"), wxDefaultPosition, wxDefaultSize);
39         SaturdayText = new XCCalendarMonthViewDayTitle(this, _("Saturday"), wxDefaultPosition, wxDefaultSize);
40         SundayText = new XCCalendarMonthViewDayTitle(this, _("Sunday"), wxDefaultPosition, wxDefaultSize);
41         
42         WindowSizer->Add(MondayText, 1, wxEXPAND|wxALL, 0);
43         WindowSizer->Add(TuesdayText, 1, wxEXPAND|wxALL, 0);
44         WindowSizer->Add(WednesdayText, 1, wxEXPAND|wxALL, 0);
45         WindowSizer->Add(ThursdayText, 1, wxEXPAND|wxALL, 0);
46         WindowSizer->Add(FridayText, 1, wxEXPAND|wxALL, 0);
47         WindowSizer->Add(SaturdayText, 1, wxEXPAND|wxALL, 0);   
48         WindowSizer->Add(SundayText, 1, wxEXPAND|wxALL, 0);
49         
50         ProcessGrid(grid);
51         
52         // Setup the days.
53         
54         // Setup the growable rows and columns.
55         
56         WindowSizer->AddGrowableCol(0);
57         WindowSizer->AddGrowableCol(1);
58         WindowSizer->AddGrowableCol(2);
59         WindowSizer->AddGrowableCol(3);
60         WindowSizer->AddGrowableCol(4);
61         WindowSizer->AddGrowableCol(5); 
62         WindowSizer->AddGrowableCol(6);
63         WindowSizer->SetFlexibleDirection( wxBOTH );
64         WindowSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
65         
66         this->SetSizer(WindowSizer);
67         WindowSizer->Fit(this);
68         this->Layout();
69         this->SetBackgroundColour(wxColour(0,0,0));
70         
71 }
73 XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage)
74         : wxPanel(NULL, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL){
75         
76         Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
77         
78         calendarStorage = dataStorage;
79                 
80         MondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
81         TuesdayText = new XCCalendarMonthViewDayTitle(this, _("Tuesday"), wxDefaultPosition, wxDefaultSize);
82         WednesdayText = new XCCalendarMonthViewDayTitle(this, _("Wednesday"), wxDefaultPosition, wxDefaultSize);
83         ThursdayText = new XCCalendarMonthViewDayTitle(this, _("Thursday"), wxDefaultPosition, wxDefaultSize);
84         FridayText = new XCCalendarMonthViewDayTitle(this, _("Friday"), wxDefaultPosition, wxDefaultSize);
85         SaturdayText = new XCCalendarMonthViewDayTitle(this, _("Saturday"), wxDefaultPosition, wxDefaultSize);
86         SundayText = new XCCalendarMonthViewDayTitle(this, _("Sunday"), wxDefaultPosition, wxDefaultSize);
87         
88         WindowSizer->Add(MondayText, 1, wxEXPAND|wxALL, 0);
89         WindowSizer->Add(TuesdayText, 1, wxEXPAND|wxALL, 0);
90         WindowSizer->Add(WednesdayText, 1, wxEXPAND|wxALL, 0);
91         WindowSizer->Add(ThursdayText, 1, wxEXPAND|wxALL, 0);
92         WindowSizer->Add(FridayText, 1, wxEXPAND|wxALL, 0);
93         WindowSizer->Add(SaturdayText, 1, wxEXPAND|wxALL, 0);   
94         WindowSizer->Add(SundayText, 1, wxEXPAND|wxALL, 0);
95         
96         ProcessGrid(grid);
97         
98         // Setup the days.
99         
100         // Setup the growable rows and columns.
101         
102         WindowSizer->AddGrowableCol(0);
103         WindowSizer->AddGrowableCol(1);
104         WindowSizer->AddGrowableCol(2);
105         WindowSizer->AddGrowableCol(3);
106         WindowSizer->AddGrowableCol(4);
107         WindowSizer->AddGrowableCol(5); 
108         WindowSizer->AddGrowableCol(6);
109         WindowSizer->SetFlexibleDirection( wxBOTH );
110         WindowSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
111         
112         this->SetSizer(WindowSizer);
113         WindowSizer->Fit(this);
114         this->Layout();
115         this->SetBackgroundColour(wxColour(0,0,0));
116         
119 XCCalendarMonthView::~XCCalendarMonthView(){
120         
121         
122         
125 void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid){
126         
127         // TODO: Delete the old calendar entries.
128         
129         // Add the new calendar entries.
130         
131         int Week = 0;
132         
133         for (vector<XCCalendarMonthViewGridDayWeek>::iterator WeekIter = grid->WeekList.begin();
134                 WeekIter != grid->WeekList.end(); WeekIter++){
135                         
136                 Week++;
137                         
138                 for (vector<XCCalendarMonthViewGridDayData>::iterator DayIter = (*WeekIter).DayList.begin();
139                         DayIter != (*WeekIter).DayList.end(); DayIter++){
140                                 
141                         // TODO: Add CalendarEntries.
142                                 
143                         XCCalendarDay *CalendarDayItem = new XCCalendarDay(this, "XCCalendarMonthView Test", wxPoint(50, 50), wxSize(200, 200));
144                                 
145                         // Setup the control.
146                                 
147                         CalendarDayItem->SetupControl((*DayIter).Day, (*DayIter).Month, (*DayIter).Year, (*DayIter).IsInMonth, this, calendarStorage);
148                                 
149                         CalendarDayList.push_back(CalendarDayItem);
150                         WindowSizer->Add(CalendarDayItem, 1, wxEXPAND, 5);
151                                 
152                 }
153                         
154         }
155         
156         // Add the Growable Rows.
157         
158         for (int WeekSeek = 0; WeekSeek < Week; WeekSeek++){
159                 
160                 WindowSizer->AddGrowableRow((WeekSeek + 1));
161                 
162         }
163         
166 void XCCalendarMonthView::Repaint(){
167         
168         // Draw the border.
169         
170         this->Layout();
174 void XCCalendarMonthView::PaintFrameEvent(wxPaintEvent &PaintEvent){
176         Repaint();
177         
180 void XCCalendarMonthView::ResizeFrameEvent(wxSizeEvent &SizeEvent){
182         // TODO: Check if window size is less than 120 pixels and if it is,
183         // switch to the small block mode.
184         
185         // Refresh the window.
186         
187         this->Refresh();
188         
191 void XCCalendarMonthView::DeselectOthersEvent(wxCommandEvent &DeselectEvent){
192         
193         for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
194                 DayIter != CalendarDayList.end(); DayIter++){
195                         
196                 if (DeselectEvent.GetClientData() != (void*)(*DayIter)){
197                         
198                         wxCommandEvent DeselectEvent(XCCALENDARDAY_DESELECTALLENTRIES);
199                         DeselectEvent.SetId(ID_DESELECTALLITEMS);
200                         wxPostEvent((*DayIter), DeselectEvent);
201                         
202                 }
203                         
204         }
205         
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