X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarMonthView.cpp;h=ffc2346aa2b502780aa66d9b47118347fd3ac30f;hb=baa27c175ee6111fd4b88a3c53614a9b6be3541e;hp=9d485ab30881a7f51c053958748b6721d7af8f1f;hpb=c9db1bda434713b98f282ef6bb9abd5a2337bb9e;p=xestiacalendar%2F.git diff --git a/source/widgets/XCCalendarMonthView.cpp b/source/widgets/XCCalendarMonthView.cpp index 9d485ab..ffc2346 100644 --- a/source/widgets/XCCalendarMonthView.cpp +++ b/source/widgets/XCCalendarMonthView.cpp @@ -20,13 +20,15 @@ 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, std::vector *hideAccounts, std::vector *hideCalendars) + : wxPanel(parent, wxID_ANY, pos, size, wxTAB_TRAVERSAL){ + calendarStorage = dataStorage; + MondayText = new XCCalendarMonthViewDayTitle(this, _("Monday"), wxDefaultPosition, wxDefaultSize); TuesdayText = new XCCalendarMonthViewDayTitle(this, _("Tuesday"), wxDefaultPosition, wxDefaultSize); WednesdayText = new XCCalendarMonthViewDayTitle(this, _("Wednesday"), wxDefaultPosition, wxDefaultSize); @@ -43,7 +45,59 @@ XCCalendarMonthView::XCCalendarMonthView(const wxString& title, const wxPoint& p WindowSizer->Add(SaturdayText, 1, wxEXPAND|wxALL, 0); WindowSizer->Add(SundayText, 1, wxEXPAND|wxALL, 0); - ProcessGrid(grid); + ProcessGrid(grid, hideAccounts, hideCalendars); + + // 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)); + + Connect(ID_MONTHVIEWCLEARSELECTION, XCCALENDARMONTH_DESELECTOTHERENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeselectOthersEvent)); + Connect(ID_HIDEENTRIES, XCCALENDARMONTH_HIDEACCOUNTENTRIES, wxCommandEventHandler(XCCalendarMonthView::HideAccountEntries)); + Connect(ID_SHOWENTRIES, XCCALENDARMONTH_SHOWACCOUNTENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowAccountEntries)); + Connect(ID_HIDECALENDARENTRIES, XCCALENDARMONTH_HIDECALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::HideCalendarEntries)); + Connect(ID_SHOWCALENDARENTRIES, XCCALENDARMONTH_SHOWCALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowCalendarEntries)); + +} + +XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage, std::vector *hideAccounts, std::vector *hideCalendars) + : 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); + 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, hideAccounts, hideCalendars); // Setup the days. @@ -56,11 +110,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 ); @@ -77,15 +126,19 @@ XCCalendarMonthView::~XCCalendarMonthView(){ } -void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid){ +void XCCalendarMonthView::ProcessGrid(XCCalendarMonthViewGrid *grid, std::vector *hideAccounts, std::vector *hideCalendars){ // TODO: Delete the old calendar entries. // Add the new calendar entries. + int Week = 0; + for (vector::iterator WeekIter = grid->WeekList.begin(); WeekIter != grid->WeekList.end(); WeekIter++){ - + + Week++; + for (vector::iterator DayIter = (*WeekIter).DayList.begin(); DayIter != (*WeekIter).DayList.end(); DayIter++){ @@ -95,7 +148,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, hideAccounts, hideCalendars); CalendarDayList.push_back(CalendarDayItem); WindowSizer->Add(CalendarDayItem, 1, wxEXPAND, 5); @@ -104,6 +157,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 +190,77 @@ void XCCalendarMonthView::ResizeFrameEvent(wxSizeEvent &SizeEvent){ this->Refresh(); +} + +void XCCalendarMonthView::DeselectOthersEvent(wxCommandEvent &DeselectEvent){ + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + if (DeselectEvent.GetClientData() != (void*)(*DayIter)){ + + wxCommandEvent DeselectEvent(XCCALENDARDAY_DESELECTALLENTRIES); + DeselectEvent.SetId(ID_DESELECTALLITEMS); + wxPostEvent((*DayIter), DeselectEvent); + + } + + } + +} + +void XCCalendarMonthView::HideAccountEntries(wxCommandEvent &accountData){ + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + wxCommandEvent HideEvent(XCCALENDARDAY_HIDEACCOUNTENTRIES); + HideEvent.SetInt(accountData.GetInt()); + HideEvent.SetId(ID_HIDEENTRIES); + wxPostEvent((*DayIter), HideEvent); + + } + +} + +void XCCalendarMonthView::ShowAccountEntries(wxCommandEvent &accountData){ + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + wxCommandEvent ShowEvent(XCCALENDARDAY_SHOWACCOUNTENTRIES); + ShowEvent.SetInt(accountData.GetInt()); + ShowEvent.SetId(ID_SHOWENTRIES); + wxPostEvent((*DayIter), ShowEvent); + + } + +} + +void XCCalendarMonthView::HideCalendarEntries(wxCommandEvent &accountData){ + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + wxCommandEvent HideEvent(XCCALENDARDAY_HIDECALENDARENTRIES); + HideEvent.SetInt(accountData.GetInt()); + HideEvent.SetId(ID_HIDECALENDARENTRIES); + wxPostEvent((*DayIter), HideEvent); + + } + +} + +void XCCalendarMonthView::ShowCalendarEntries(wxCommandEvent &accountData){ + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + wxCommandEvent HideEvent(XCCALENDARDAY_SHOWCALENDARENTRIES); + HideEvent.SetInt(accountData.GetInt()); + HideEvent.SetId(ID_SHOWCALENDARENTRIES); + wxPostEvent((*DayIter), HideEvent); + + } + } \ No newline at end of file