Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
XCCalendarMonthView: Receive CalendarDataStorage pointer
[xestiacalendar/.git] / source / widgets / XCCalendarMonthView.cpp
index 9d485ab..479f59c 100644 (file)
 
 using namespace std;
 
-BEGIN_EVENT_TABLE(XCCalendarMonthView, wxFrame)
+BEGIN_EVENT_TABLE(XCCalendarMonthView, wxPanel)
 EVT_PAINT(XCCalendarMonthView::PaintFrameEvent)
 END_EVENT_TABLE()
 
-XCCalendarMonthView::XCCalendarMonthView(const wxString& title, const wxPoint& pos, const wxSize& size, XCCalendarMonthViewGrid *grid)
-        : wxFrame(NULL, wxID_ANY, title, pos, size){
+XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title, const wxPoint& pos, const wxSize& size, XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage)
+        : wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL){
        
+       Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
+       
+       calendarStorage = dataStorage;
+               
+       MondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
+       TuesdayText = new XCCalendarMonthViewDayTitle(this, _("Tuesday"), wxDefaultPosition, wxDefaultSize);
+       WednesdayText = new XCCalendarMonthViewDayTitle(this, _("Wednesday"), wxDefaultPosition, wxDefaultSize);
+       ThursdayText = new XCCalendarMonthViewDayTitle(this, _("Thursday"), wxDefaultPosition, wxDefaultSize);
+       FridayText = new XCCalendarMonthViewDayTitle(this, _("Friday"), wxDefaultPosition, wxDefaultSize);
+       SaturdayText = new XCCalendarMonthViewDayTitle(this, _("Saturday"), wxDefaultPosition, wxDefaultSize);
+       SundayText = new XCCalendarMonthViewDayTitle(this, _("Sunday"), wxDefaultPosition, wxDefaultSize);
+       
+       WindowSizer->Add(MondayText, 1, wxEXPAND|wxALL, 0);
+       WindowSizer->Add(TuesdayText, 1, wxEXPAND|wxALL, 0);
+       WindowSizer->Add(WednesdayText, 1, wxEXPAND|wxALL, 0);
+       WindowSizer->Add(ThursdayText, 1, wxEXPAND|wxALL, 0);
+       WindowSizer->Add(FridayText, 1, wxEXPAND|wxALL, 0);
+       WindowSizer->Add(SaturdayText, 1, wxEXPAND|wxALL, 0);   
+       WindowSizer->Add(SundayText, 1, wxEXPAND|wxALL, 0);
+       
+       ProcessGrid(grid);
+       
+       // Setup the days.
+       
+       // Setup the growable rows and columns.
+       
+       WindowSizer->AddGrowableCol(0);
+       WindowSizer->AddGrowableCol(1);
+       WindowSizer->AddGrowableCol(2);
+       WindowSizer->AddGrowableCol(3);
+       WindowSizer->AddGrowableCol(4);
+       WindowSizer->AddGrowableCol(5); 
+       WindowSizer->AddGrowableCol(6);
+       WindowSizer->SetFlexibleDirection( wxBOTH );
+       WindowSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
+       
+       this->SetSizer(WindowSizer);
+       WindowSizer->Fit(this);
+       this->Layout();
+       this->SetBackgroundColour(wxColour(0,0,0));
+       
+}
+
+XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage)
+        : wxPanel(NULL, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL){
+       
+       Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent));
+       
+       calendarStorage = dataStorage;
+               
        MondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize);
        TuesdayText = new XCCalendarMonthViewDayTitle(this, _("Tuesday"), wxDefaultPosition, wxDefaultSize);
        WednesdayText = new XCCalendarMonthViewDayTitle(this, _("Wednesday"), wxDefaultPosition, wxDefaultSize);
@@ -56,11 +106,6 @@ XCCalendarMonthView::XCCalendarMonthView(const wxString& title, const wxPoint& p
        WindowSizer->AddGrowableCol(4);
        WindowSizer->AddGrowableCol(5); 
        WindowSizer->AddGrowableCol(6);
-       WindowSizer->AddGrowableRow(1);
-       WindowSizer->AddGrowableRow(2);
-       WindowSizer->AddGrowableRow(3);
-       WindowSizer->AddGrowableRow(4);
-       WindowSizer->AddGrowableRow(5);
        WindowSizer->SetFlexibleDirection( wxBOTH );
        WindowSizer->SetNonFlexibleGrowMode( wxFLEX_GROWMODE_SPECIFIED );
        
@@ -83,9 +128,13 @@ void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid){
        
        // Add the new calendar entries.
        
+       int Week = 0;
+       
        for (vector<XCCalendarMonthViewGridDayWeek>::iterator WeekIter = grid->WeekList.begin();
                WeekIter != grid->WeekList.end(); WeekIter++){
-               
+                       
+               Week++;
+                       
                for (vector<XCCalendarMonthViewGridDayData>::iterator DayIter = (*WeekIter).DayList.begin();
                        DayIter != (*WeekIter).DayList.end(); DayIter++){
                                
@@ -95,7 +144,7 @@ void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid){
                                
                        // Setup the control.
                                
-                       CalendarDayItem->SetupControl((*DayIter).Day, (*DayIter).Month, (*DayIter).Year, (*DayIter).IsInMonth, this);
+                       CalendarDayItem->SetupControl((*DayIter).Day, (*DayIter).Month, (*DayIter).Year, (*DayIter).IsInMonth, this, calendarStorage);
                                
                        CalendarDayList.push_back(CalendarDayItem);
                        WindowSizer->Add(CalendarDayItem, 1, wxEXPAND, 5);
@@ -104,6 +153,14 @@ void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid){
                        
        }
        
+       // Add the Growable Rows.
+       
+       for (int WeekSeek = 0; WeekSeek < Week; WeekSeek++){
+               
+               WindowSizer->AddGrowableRow((WeekSeek + 1));
+               
+       }
+       
 }
 
 void XCCalendarMonthView::Repaint(){
@@ -129,4 +186,21 @@ void XCCalendarMonthView::ResizeFrameEvent(wxSizeEvent &SizeEvent){
        
        this->Refresh();
        
+}
+
+void XCCalendarMonthView::DeselectOthersEvent(wxCommandEvent &DeselectEvent){
+       
+       for (vector<XCCalendarDay*>::iterator DayIter = CalendarDayList.begin();
+               DayIter != CalendarDayList.end(); DayIter++){
+                       
+               if (DeselectEvent.GetClientData() != (void*)(*DayIter)){
+                       
+                       wxCommandEvent DeselectEvent(XCCALENDARDAY_DESELECTALLENTRIES);
+                       DeselectEvent.SetId(ID_DESELECTALLITEMS);
+                       wxPostEvent((*DayIter), DeselectEvent);
+                       
+               }
+                       
+       }
+       
 }
\ No newline at end of file
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