X-Git-Url: http://Server1/repobrowser/?p=xestiacalendar%2F.git;a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarDay.cpp;h=14657b98cc307b0260f995129b143015a3de6d01;hp=bde350409c26ea3a3e10a1f02dc22f80e9c9f7d3;hb=c5716d0f27f0f917282df9121aa97eab7a1bf6b8;hpb=4d0316bf5312ee073aef9f2199f43b70aa147e7a diff --git a/source/widgets/XCCalendarDay.cpp b/source/widgets/XCCalendarDay.cpp index bde3504..14657b9 100644 --- a/source/widgets/XCCalendarDay.cpp +++ b/source/widgets/XCCalendarDay.cpp @@ -91,7 +91,12 @@ XCCalendarDay::XCCalendarDay(wxWindow *parent, const wxString& title, const wxPo Connect(ID_SHOWENTRIES, XCCALENDARDAY_SHOWACCOUNTENTRIES, wxCommandEventHandler(XCCalendarDay::ShowAccountEntries)); Connect(ID_HIDECALENDARENTRIES, XCCALENDARDAY_HIDECALENDARENTRIES, wxCommandEventHandler(XCCalendarDay::HideCalendarEntries)); Connect(ID_SHOWCALENDARENTRIES, XCCALENDARDAY_SHOWCALENDARENTRIES, wxCommandEventHandler(XCCalendarDay::ShowCalendarEntries)); - + Connect(ID_DELETECALENDARENTRIES, XCCALENDARDAY_DELETECALENDARENTRIES, wxCommandEventHandler(XCCalendarDay::DeleteCalendarEntries)); + Connect(ID_DELETEENTRY, XCCALENDARDAY_DELETEENTRY, wxCommandEventHandler(XCCalendarDay::DeleteCalendarEntry)); + Connect(ID_ADDENTRY, XCCALENDARDAY_ADDENTRY, wxCommandEventHandler(XCCalendarDay::AddCalendarEntry)); + Connect(ID_UPDATEENTRY, XCCALENDARDAY_UPDATEENTRY, wxCommandEventHandler(XCCalendarDay::UpdateCalendarEntry)); + Connect(ID_UPDATECOLOUR, XCCALENDARDAY_UPDATECALENDARCOLOUR, wxCommandEventHandler(XCCalendarDay::UpdateCalendarColour)); + } XCCalendarDay::~XCCalendarDay(){ @@ -258,6 +263,8 @@ void XCCalendarDay::DeselectAllEvent(wxCommandEvent &DeselectEvent) void XCCalendarDay::SetupControl(int SetupDay, int SetupMonth, int SetupYear, bool SetupIsInMonth, XCCalendarMonthView *MonthViewPointer, CalendarDataStorage *dataStorage, vector *hideAccounts, vector *hideCalendars) { + this->dataStorage = dataStorage; + // Set the day NumberText->SetLabel(wxString::Format("%02i", SetupDay)); @@ -308,7 +315,7 @@ void XCCalendarDay::SetupControl(int SetupDay, int SetupMonth, int SetupYear, bo for (vector::iterator hideAccountsItem = hideAccounts->begin(); hideAccountsItem != hideAccounts->end(); hideAccountsItem++){ - if (*hideAccountsItem = newEntryCalendarInfo.accountID){ + if (*hideAccountsItem == newEntryCalendarInfo.accountID){ newEntry->Show(false); newEntry->GetAfterSpacer()->Show(false); } @@ -323,7 +330,7 @@ void XCCalendarDay::SetupControl(int SetupDay, int SetupMonth, int SetupYear, bo if (*hideCalendarsItem == newEntryInfo.calendarID){ newEntry->Show(false); newEntry->GetAfterSpacer()->Show(false); - } + } } @@ -467,4 +474,189 @@ void XCCalendarDay::ShowCalendarEntries(wxCommandEvent &calendarData){ this->Refresh(); Repaint(); +} + +void XCCalendarDay::DeleteCalendarEntries(wxCommandEvent &calendarData){ + + vector::iterator> DeleteEntriesList; + + for (vector::iterator CalendarEntryIter = CalendarEntryList.begin(); + CalendarEntryIter != CalendarEntryList.end(); CalendarEntryIter++){ + + if ((*CalendarEntryIter)->GetCalendarID() == calendarData.GetInt()){ + + wxSizerItem *calendarItem = EventListFrameSizer->GetItem((*CalendarEntryIter)); + (*CalendarEntryIter)->Show(false); + + // Get the spacing and hide it as well. + + wxSizerItem *afterSpacer = (*CalendarEntryIter)->GetAfterSpacer(); + afterSpacer->Show(false); + afterSpacer->DetachSizer(); + + delete afterSpacer; + afterSpacer = nullptr; + + delete (*CalendarEntryIter); + DeleteEntriesList.push_back(CalendarEntryIter); + + } + + } + + this->Refresh(); + Repaint(); + + for (auto DeleteIter : DeleteEntriesList){ + CalendarEntryList.erase(DeleteIter); + } + +} + +void XCCalendarDay::DeleteCalendarEntry(wxCommandEvent &eventData){ + + vector::iterator> DeleteEntriesList; + + for (vector::iterator CalendarEntryIter = CalendarEntryList.begin(); + CalendarEntryIter != CalendarEntryList.end(); CalendarEntryIter++){ + + if ((*CalendarEntryIter)->GetEventID() == eventData.GetInt()){ + + wxSizerItem *calendarItem = EventListFrameSizer->GetItem((*CalendarEntryIter)); + (*CalendarEntryIter)->Show(false); + + // Get the spacing and hide it as well. + + wxSizerItem *afterSpacer = (*CalendarEntryIter)->GetAfterSpacer(); + afterSpacer->Show(false); + afterSpacer->DetachSizer(); + + delete afterSpacer; + afterSpacer = nullptr; + + delete (*CalendarEntryIter); + DeleteEntriesList.push_back(CalendarEntryIter); + + } + + } + + for (auto DeleteIter : DeleteEntriesList){ + CalendarEntryList.erase(DeleteIter); + } + + this->Refresh(); + Repaint(); + +} + +void XCCalendarDay::AddCalendarEntry(wxCommandEvent &eventData){ + + EventProperties *eventInfo = (EventProperties*)eventData.GetClientData(); + + XCCalendarDayEntry *newEntry = new XCCalendarDayEntry(EventListFrame, eventInfo->eventName, wxDefaultPosition, wxDefaultSize, eventInfo->eventID); + + CDSGetCalendarInfo calendarInfo = dataStorage->GetCalendar(eventInfo->calendarID); + + newEntry->SetColour(&calendarInfo.calendarColour); + newEntry->SetTime(eventInfo->eventHour, eventInfo->eventMinute, eventInfo->eventSecond); + newEntry->SetEntryIDs(calendarInfo.accountID, eventInfo->calendarID, eventInfo->eventID); + + EventListFrameSizer->Add(newEntry, 0, wxEXPAND, 5); + wxSizerItem *afterSpacer = EventListFrameSizer->Add(0, 5, 0, 0, 5); + + newEntry->SetAfterSpacer(afterSpacer); + + // Go through the list of calendar entries to hide by account. + + for (vector::iterator hideAccountsItem = eventInfo->hideAccountsList.begin(); + hideAccountsItem != eventInfo->hideAccountsList.end(); hideAccountsItem++){ + + if (*hideAccountsItem = calendarInfo.accountID){ + newEntry->Show(false); + newEntry->GetAfterSpacer()->Show(false); + } + + } + + // Go through the list of calendar entries to hide by calendar. + + for (vector::iterator hideCalendarsItem = eventInfo->hideCalendarsList.begin(); + hideCalendarsItem != eventInfo->hideCalendarsList.end(); hideCalendarsItem++){ + + if (*hideCalendarsItem == eventInfo->calendarID){ + newEntry->Show(false); + newEntry->GetAfterSpacer()->Show(false); + } + + } + + CalendarEntryList.push_back(newEntry); + + this->Refresh(); + Repaint(); + +} + +void XCCalendarDay::UpdateCalendarEntry(wxCommandEvent &eventData){ + + // Go thorugh each of the entries in the day and + // then update it. + + EventProperties *eventInfo = (EventProperties*)eventData.GetClientData(); + + for (vector::iterator CalendarEntryIter = CalendarEntryList.begin(); + CalendarEntryIter != CalendarEntryList.end(); CalendarEntryIter++){ + + if ((*CalendarEntryIter)->GetEventID() == eventInfo->eventID){ + + (*CalendarEntryIter)->SetEventName(eventInfo->eventName); + (*CalendarEntryIter)->SetTime(eventInfo->eventHour, eventInfo->eventMinute, eventInfo->eventSecond); + + + } + + } + + delete eventInfo; + eventInfo = nullptr; + +} + +void XCCalendarDay::UpdateCalendarColour(wxCommandEvent &colourData){ + + // Go thorugh each of the entries in the day and + // then update it. + + ColourUpdateProperties *colourInfo = (ColourUpdateProperties*)colourData.GetClientData(); + + for (vector::iterator CalendarEntryIter = CalendarEntryList.begin(); + CalendarEntryIter != CalendarEntryList.end(); CalendarEntryIter++){ + + if ((*CalendarEntryIter)->GetCalendarID() == colourInfo->calendarID){ + + (*CalendarEntryIter)->SetColour(&colourInfo->newColour); + + } + + } + +} + +int XCCalendarDay::GetCalendarDay(){ + + return calendarDay; + +} + +int XCCalendarDay::GetCalendarMonth(){ + + return calendarMonth; + +} + +int XCCalendarDay::GetCalendarYear(){ + + return calendarYear; + } \ No newline at end of file