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