Home | News | Projects | Releases
Bugs | RFE | Repositories | Help
widgets: Widget controls updated
[xestiacalendar/.git] / source / widgets / XCCalendarDay.cpp
index bde3504..14657b9 100644 (file)
@@ -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<int> *hideAccounts, vector<int> *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<int>::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<vector<XCCalendarDayEntry*>::iterator> DeleteEntriesList;
+       
+       for (vector<XCCalendarDayEntry*>::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<vector<XCCalendarDayEntry*>::iterator> DeleteEntriesList;
+       
+       for (vector<XCCalendarDayEntry*>::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<int>::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<int>::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<XCCalendarDayEntry*>::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<XCCalendarDayEntry*>::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
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