void FolderConfigWindow::_ApplyChanges() { bool haveChanges = false; for (unsigned int i = 0; i < fFolderList.size(); i++) { FolderInfo& info = fFolderList[i]; CheckBoxItem* item = (CheckBoxItem*)fFolderListView->ItemAt(i); if ((info.subscribed != item->Checked())) { haveChanges = true; break; } } if (!haveChanges) return; StatusWindow* status = new StatusWindow(B_TRANSLATE("Subcribe / Unsuscribe " "IMAP folders, have patience...")); status->Show(); for (unsigned int i = 0; i < fFolderList.size(); i++) { FolderInfo& info = fFolderList[i]; CheckBoxItem* item = (CheckBoxItem*)fFolderListView->ItemAt(i); if (info.subscribed && !item->Checked()) fIMAPFolders.UnsubscribeFolder(info.folder); else if (!info.subscribed && item->Checked()) fIMAPFolders.SubscribeFolder(info.folder); } status->PostMessage(B_QUIT_REQUESTED); }
void FolderConfigWindow::_LoadFolders() { StatusWindow* status = new StatusWindow( B_TRANSLATE("Fetching IMAP folders, have patience...")); status->Show(); BString server; fSettings.FindString("server", &server); int32 ssl; fSettings.FindInt32("flavor", &ssl); bool useSSL = false; if (ssl == 1) useSSL = true; BString username; fSettings.FindString("username", &username); BString password; char* passwd = get_passwd(&fSettings, "cpasswd"); if (passwd != NULL) { password = passwd; delete[] passwd; } fIMAPFolders.Connect(server, username, password, useSSL); fFolderList.clear(); fIMAPFolders.GetFolders(fFolderList); for (unsigned int i = 0; i < fFolderList.size(); i++) { FolderInfo& info = fFolderList[i]; CheckBoxItem* item = new CheckBoxItem(info.folder, info.subscribed); fFolderListView->AddItem(item); item->SetListView(fFolderListView); } uint64 used, total; if (fIMAPFolders.GetQuota(used, total) == B_OK) { char buffer[256]; BString quotaString = "Server storage: "; quotaString += string_for_size(used, buffer, 256); quotaString += " / "; quotaString += string_for_size(total, buffer, 256); quotaString += " used."; fQuotaView->SetText(quotaString); } status->PostMessage(B_QUIT_REQUESTED); }