X-Git-Url: http://Server1/repobrowser/?a=blobdiff_plain;f=source%2Fwidgets%2FXCCalendarList.cpp;h=9dae3fcf34a9d89a79b5fd7d918b0c9a0e491572;hb=0c16b6458c0fdc03b94288c17d7a685b95f122fc;hp=6fc7f7abc637c4f68143d511789bacad5f1336ef;hpb=172322316537049f6ced59877a3b5bd3d2f64f2c;p=xestiacalendar%2F.git diff --git a/source/widgets/XCCalendarList.cpp b/source/widgets/XCCalendarList.cpp index 6fc7f7a..9dae3fc 100644 --- a/source/widgets/XCCalendarList.cpp +++ b/source/widgets/XCCalendarList.cpp @@ -25,16 +25,7 @@ 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)); } @@ -55,7 +46,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++){ @@ -75,9 +70,17 @@ void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ // Create the control and add it to the list. 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. @@ -89,6 +92,15 @@ void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ CDSGetCalendarInfo calendarInfo = dataStorage->GetCalendar(accountListData.accountList[AccountSeek].accountName, accountCalendarList.calendarListTextID[calendarSeek]); 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); @@ -101,5 +113,63 @@ void XCCalendarList::UpdateCalendarList(CalendarDataStorage *dataStorage){ // Set the updated checksum. checksumUpdate = currentChecksum.checksumValue; + + this->Layout(); + +} + +std::vector XCCalendarList::GetHiddenAccountsList(){ + + std::vector accountList; + + // Go through each of the account controls and work + // out which entries should be hidden based on account. + + for (std::vector::iterator accountListIter = accountControlList.begin(); + accountListIter != accountControlList.end(); accountListIter++){ + + if ((*accountListIter)->GetShowCheckboxState() == wxCHK_UNCHECKED){ + + accountList.push_back((*accountListIter)->GetAccountID()); + + } + + } + + return accountList; + +} + +std::vector XCCalendarList::GetHiddenCalendarsList(){ + + std::vector calendarList; + + // Go through each of the calendar controls and + // work out which entries should be hidden based on + // calendar. + + for (std::vector::iterator accountListIter = accountControlList.begin(); + accountListIter != accountControlList.end(); accountListIter++){ + + // Get the list of hidden calendars. + + vector calendarHiddenList = (*accountListIter)->GetHiddenCalendarList(); + + for (vector::iterator calendarHiddenIter = calendarHiddenList.begin(); + calendarHiddenIter != calendarHiddenList.end(); calendarHiddenIter++){ + + vector::iterator calendarHiddenFind = find(calendarList.begin(), calendarList.end(), *calendarHiddenIter); + + if (calendarHiddenFind == calendarList.end()){ + + calendarList.push_back(*calendarHiddenIter); + + } + + } + + } + + return calendarList; } \ No newline at end of file