X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarMonthView.cpp;h=bd297587f86081a9e5b6af55bcc7bc33c1763eda;hp=ffc2346aa2b502780aa66d9b47118347fd3ac30f;hb=c5716d0f27f0f917282df9121aa97eab7a1bf6b8;hpb=4d0316bf5312ee073aef9f2199f43b70aa147e7a diff --git a/source/widgets/XCCalendarMonthView.cpp b/source/widgets/XCCalendarMonthView.cpp index ffc2346..bd29758 100644 --- a/source/widgets/XCCalendarMonthView.cpp +++ b/source/widgets/XCCalendarMonthView.cpp @@ -36,6 +36,8 @@ XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title FridayText = new XCCalendarMonthViewDayTitle(this, _("Friday"), wxDefaultPosition, wxDefaultSize); SaturdayText = new XCCalendarMonthViewDayTitle(this, _("Saturday"), wxDefaultPosition, wxDefaultSize); SundayText = new XCCalendarMonthViewDayTitle(this, _("Sunday"), wxDefaultPosition, wxDefaultSize); + + eventMenu = new XCEventMenu; WindowSizer->Add(MondayText, 1, wxEXPAND|wxALL, 0); WindowSizer->Add(TuesdayText, 1, wxEXPAND|wxALL, 0); @@ -71,7 +73,13 @@ XCCalendarMonthView::XCCalendarMonthView(wxWindow *parent, const wxString& title Connect(ID_SHOWENTRIES, XCCALENDARMONTH_SHOWACCOUNTENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowAccountEntries)); Connect(ID_HIDECALENDARENTRIES, XCCALENDARMONTH_HIDECALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::HideCalendarEntries)); Connect(ID_SHOWCALENDARENTRIES, XCCALENDARMONTH_SHOWCALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::ShowCalendarEntries)); - + Connect(ID_DELETECALENDARENTRIES, XCCALENDARMONTH_DELETECALENDARENTRIES, wxCommandEventHandler(XCCalendarMonthView::DeleteCalendarEntries)); + Connect(ID_DISPLAYEVENTMENU, XCCALENDARMONTH_DISPLAYEVENTMENU, wxCommandEventHandler(XCCalendarMonthView::ShowEventMenu)); + Connect(ID_DELETEENTRY, XCCALENDARMONTH_DELETEENTRY, wxCommandEventHandler(XCCalendarMonthView::DeleteCalendarEntry)); + Connect(ID_ADDENTRY, XCCALENDARMONTH_ADDENTRY, wxCommandEventHandler(XCCalendarMonthView::AddCalendarEntry)); + Connect(ID_UPDATEENTRY, XCCALENDARMONTH_UPDATEENTRY, wxCommandEventHandler(XCCalendarMonthView::UpdateCalendarEntry)); + Connect(ID_UPDATECOLOUR, XCCALENDARMONTH_UPDATECALENDARCOLOUR, wxCommandEventHandler(XCCalendarMonthView::UpdateCalendarColour)); + } XCCalendarMonthView::XCCalendarMonthView(XCCalendarMonthViewGrid *grid, CalendarDataStorage *dataStorage, std::vector *hideAccounts, std::vector *hideCalendars) @@ -263,4 +271,138 @@ void XCCalendarMonthView::ShowCalendarEntries(wxCommandEvent &accountData){ } +} + +void XCCalendarMonthView::DeleteCalendarEntries(wxCommandEvent &calendarData){ + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + wxCommandEvent deleteEvent(XCCALENDARDAY_DELETECALENDARENTRIES); + deleteEvent.SetInt(calendarData.GetInt()); + deleteEvent.SetId(ID_DELETECALENDARENTRIES); + wxPostEvent((*DayIter), deleteEvent); + + } + +} + +void XCCalendarMonthView::DeleteCalendarEntry(wxCommandEvent &eventData){ + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + wxCommandEvent deleteEvent(XCCALENDARDAY_DELETEENTRY); + deleteEvent.SetInt(eventData.GetInt()); + deleteEvent.SetId(ID_DELETEENTRY); + wxPostEvent((*DayIter), deleteEvent); + + } + +} + +void XCCalendarMonthView::AddCalendarEntry(wxCommandEvent &eventData){ + + EventProperties *eventInfo = (EventProperties*)eventData.GetClientData(); + bool foundDate = false; + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + // Check if the date matches with the date in the day + // widget. If it does, add the widget. + + if ((*DayIter)->GetCalendarYear() == eventInfo->eventYear && + (*DayIter)->GetCalendarMonth() == (eventInfo->eventMonth + 1) && + (*DayIter)->GetCalendarDay() == eventInfo->eventDay){ + + wxCommandEvent addEvent(XCCALENDARDAY_ADDENTRY); + addEvent.SetId(ID_ADDENTRY); + addEvent.SetClientData(eventInfo); + wxPostEvent((*DayIter), addEvent); + foundDate = true; + break; + + } + + } + + if (foundDate == false){ + + delete eventInfo; + eventInfo = nullptr; + + } + +} + +void XCCalendarMonthView::UpdateCalendarEntry(wxCommandEvent &eventData){ + + EventProperties *eventInfo = (EventProperties*)eventData.GetClientData(); + bool foundDate = false; + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + // Check if the date matches with the date in the day + // widget. If it does, update the widget. + + if ((*DayIter)->GetCalendarYear() == eventInfo->eventYear && + (*DayIter)->GetCalendarMonth() == (eventInfo->eventMonth + 1) && + (*DayIter)->GetCalendarDay() == eventInfo->eventDay){ + + wxCommandEvent addEvent(XCCALENDARDAY_UPDATEENTRY); + addEvent.SetId(ID_UPDATEENTRY); + addEvent.SetClientData(eventInfo); + wxPostEvent((*DayIter), addEvent); + foundDate = true; + break; + + } + + } + + if (foundDate == false){ + + delete eventInfo; + eventInfo = nullptr; + + } + +} + +void XCCalendarMonthView::UpdateCalendarColour(wxCommandEvent &colourData){ + + ColourUpdateProperties *colourDataInfo = (ColourUpdateProperties*)colourData.GetClientData(); + + for (vector::iterator DayIter = CalendarDayList.begin(); + DayIter != CalendarDayList.end(); DayIter++){ + + // Check if the date matches with the date in the day + // widget. If it does, update the widget. + + ColourUpdateProperties *colourDataPassInfo = colourDataInfo; + + wxCommandEvent updateColour(XCCALENDARDAY_UPDATECALENDARCOLOUR); + updateColour.SetId(ID_UPDATECOLOUR); + updateColour.SetClientData(colourDataPassInfo); + wxPostEvent((*DayIter), updateColour); + + } + +} + +void XCCalendarMonthView::ShowEventMenu(wxCommandEvent &eventData){ + + EventProperties *eventInfo = (EventProperties*)eventData.GetClientData(); + + eventMenu->SetEventID(eventInfo->eventID); + eventMenu->SetCalendarID(eventInfo->calendarID); + eventMenu->SetWindowPointer(this->GetParent()->GetParent()); + + this->PopupMenu(eventMenu, wxDefaultPosition); + + delete eventInfo; + eventInfo = nullptr; + } \ No newline at end of file