X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarList.cpp;h=92e7c5058a6334d1e671b54c9ca4c6d9101787a9;hb=8940e6e91652527a21000b2ba2d0c2618c562004;hp=84662bd386202074352863dde75194851ad05aaf;hpb=baa27c175ee6111fd4b88a3c53614a9b6be3541e;p=xestiacalendar%2F.git diff --git a/source/widgets/XCCalendarList.cpp b/source/widgets/XCCalendarList.cpp index 84662bd..92e7c50 100644 --- a/source/widgets/XCCalendarList.cpp +++ b/source/widgets/XCCalendarList.cpp @@ -25,21 +25,25 @@ XCCalendarList::XCCalendarList(wxWindow *parent) szrMain = new wxBoxSizer( wxVERTICAL ); this->SetSizer(szrMain); - this->SetSize(wxSize(350, 500)); - - //scwMain = new wxScrolledWindow(); - - //szrScrolled = new wxBoxSizer( wxHORIZONTAL ); - //scwMain->SetSizer(szrScrolled); - - //szrMain->Add(scwMain, 0, wxEXPAND, 5); - //szrMain->Layout(); - + this->SetSize(wxSize(350, 500)); } XCCalendarList::~XCCalendarList(){ + // Delete the calendar lists. + + for (vector::iterator accountCtrlIter = accountControlList.begin(); + accountCtrlIter != accountControlList.end(); accountCtrlIter++){ + + delete *accountCtrlIter; + + } + + accountControlList.clear(); + + this->SetSizer(nullptr, true); + } void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ @@ -55,7 +59,11 @@ void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ } - // TODO: Delete the old controls. + // Delete the old controls. Remember which setting the checkboxes were hidden so they + // can be restored later on. + + vector calendarHiddenAccountsList = GetHiddenAccountsList(); + vector calendarHiddenCalendarsList = GetHiddenCalendarsList(); for (vector::iterator accountCtrlIter = accountControlList.begin(); accountCtrlIter != accountControlList.end(); accountCtrlIter++){ @@ -76,9 +84,16 @@ void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ XCCalendarListAccountCtrl *newAccountCtrl = new XCCalendarListAccountCtrl(this, accountListData.accountList[AccountSeek].accountName); newAccountCtrl->SetAccountID(accountListData.accountList[AccountSeek].accountID); + newAccountCtrl->SetAccountPreferencesID(accountListData.accountList[AccountSeek].accountPreferencesID); szrMain->Add(newAccountCtrl, 0, wxEXPAND, 5); + if (find(calendarHiddenAccountsList.begin(), calendarHiddenAccountsList.end(), accountListData.accountList[AccountSeek].accountID) != calendarHiddenAccountsList.end()){ + + newAccountCtrl->SetCheckBoxValue(wxCHK_UNCHECKED); + + } + accountControlList.push_back(newAccountCtrl); // Get the list of calendars and create controls. @@ -92,6 +107,14 @@ void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ XCCalendarListCalendarCtrl *newCalendarCtrl = new XCCalendarListCalendarCtrl(this, calendarInfo.calendarName, calendarInfo.calendarColour); newCalendarCtrl->SetCalendarID(accountCalendarList.calendarList[calendarSeek]); + newCalendarCtrl->SetAccountPreferencesID(accountListData.accountList[AccountSeek].accountPreferencesID); + + if (find(calendarHiddenCalendarsList.begin(), calendarHiddenCalendarsList.end(), accountCalendarList.calendarList[calendarSeek]) != calendarHiddenCalendarsList.end()){ + + newCalendarCtrl->SetCheckBoxValue(wxCHK_UNCHECKED); + + } + newAccountCtrl->AddCalendar(newCalendarCtrl); szrMain->Add(newCalendarCtrl, 0, wxEXPAND, 5); @@ -103,6 +126,8 @@ void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ // Set the updated checksum. checksumUpdate = currentChecksum.checksumValue; + + this->Layout(); }