void ConfigWindow::SaveSettings() { // remove config views ((CenterContainer *)fConfigView)->DeleteChildren(); /*** save general settings ***/ // figure out time interval float interval; sscanf(fIntervalControl->Text(),"%f",&interval); float multiplier = 0; switch (fIntervalUnitField->Menu()->IndexOf( fIntervalUnitField->Menu()->FindMarked())) { case 1: // minutes multiplier = 60; break; case 2: // hours multiplier = 60 * 60; break; case 3: // days multiplier = 24 * 60 * 60; break; } time_t time = (time_t)(multiplier * interval); // apply and save general settings BMailSettings settings; if (fSaveSettings) { settings.SetAutoCheckInterval(time * 1e6); settings.SetCheckOnlyIfPPPUp(fPPPActiveCheckBox->Value() == B_CONTROL_ON); settings.SetSendOnlyIfPPPUp(fPPPActiveSendCheckBox->Value() == B_CONTROL_ON); settings.SetDaemonAutoStarts(fAutoStartCheckBox->Value() == B_CONTROL_ON); // status mode (alway, fetching/retrieving, ...) int32 index = fStatusModeField->Menu()->IndexOf( fStatusModeField->Menu()->FindMarked()); settings.SetShowStatusWindow(index); } else { // restore status window look settings.SetStatusWindowLook(settings.StatusWindowLook()); } settings.SetConfigWindowFrame(Frame()); settings.Save(); /*** save accounts ***/ if (fSaveSettings) Accounts::Save(); // start the mail_daemon if auto start was selected if (fSaveSettings && fAutoStartCheckBox->Value() == B_CONTROL_ON && !be_roster->IsRunning("application/x-vnd.Be-POST")) { be_roster->Launch("application/x-vnd.Be-POST"); } }
status_t TMailApp::SaveSettings() { BMailSettings accountSettings; if (fDefaultAccount != ~0L) { accountSettings.SetDefaultOutboundAccount(fDefaultAccount); accountSettings.Save(); } BPath path; status_t status = GetSettingsPath(path); if (status != B_OK) return status; path.Append("BeMail Settings~"); BFile file; status = file.SetTo(path.Path(), B_READ_WRITE | B_CREATE_FILE | B_ERASE_FILE); if (status != B_OK) return status; BMessage settings('BeMl'); settings.AddRect("MailWindowSize", fMailWindowFrame); // settings.AddInt32("ExperienceLevel", level); font_family fontFamily; font_style fontStyle; fContentFont.GetFamilyAndStyle(&fontFamily, &fontStyle); settings.AddString("FontFamily", fontFamily); settings.AddString("FontStyle", fontStyle); settings.AddFloat("FontSize", fContentFont.Size()); settings.AddRect("SignatureWindowSize", fSignatureWindowFrame); settings.AddBool("WordWrapMode", fWrapMode); settings.AddPoint("PreferencesWindowLocation", fPrefsWindowPos); settings.AddBool("AutoMarkRead", fAutoMarkRead); settings.AddString("SignatureText", fSignature); settings.AddInt32("CharacterSet", fMailCharacterSet); settings.AddString("FindString", FindWindow::GetFindString()); settings.AddInt8("ShowButtonBar", fShowToolBar); settings.AddInt32("UseAccountFrom", fUseAccountFrom); settings.AddBool("ColoredQuotes", fColoredQuotes); settings.AddString("ReplyPreamble", fReplyPreamble); settings.AddBool("AttachAttributes", fAttachAttributes); settings.AddBool("WarnAboutUnencodableCharacters", fWarnAboutUnencodableCharacters); settings.AddBool("StartWithSpellCheck", fStartWithSpellCheckOn); BEntry entry; status = entry.SetTo(path.Path()); if (status != B_OK) return status; status = settings.Flatten(&file); if (status == B_OK) { // replace original settings file status = entry.Rename("BeMail Settings", true); } else entry.Remove(); return status; }
void ConfigWindow::_SaveSettings() { // collect changed accounts BMessage changedAccounts(BPrivate::kMsgAccountsChanged); for (int32 i = 0; i < fAccounts.CountItems(); i++) { BMailAccountSettings* account = fAccounts.ItemAt(i); if (account && account->HasBeenModified()) changedAccounts.AddInt32("account", account->AccountID()); } for (int32 i = 0; i < fToDeleteAccounts.CountItems(); i++) { BMailAccountSettings* account = fToDeleteAccounts.ItemAt(i); changedAccounts.AddInt32("account", account->AccountID()); } // cleanup account directory for (int32 i = 0; i < fToDeleteAccounts.CountItems(); i++) { BMailAccountSettings* account = fToDeleteAccounts.ItemAt(i); BEntry entry(account->AccountFile()); entry.Remove(); delete account; } fToDeleteAccounts.MakeEmpty(); // Apply and save general settings BMailSettings settings; if (fSaveSettings) { bigtime_t interval = 0; if (fCheckMailCheckBox->Value() == B_CONTROL_ON) { // figure out time interval float floatInterval; sscanf(fIntervalControl->Text(), "%f", &floatInterval); interval = bigtime_t(60000000L * floatInterval); } settings.SetAutoCheckInterval(interval); settings.SetDaemonAutoStarts(!fAccounts.IsEmpty()); // status mode (alway, fetching/retrieving, ...) int32 index = fStatusModeField->Menu()->IndexOf( fStatusModeField->Menu()->FindMarked()); settings.SetShowStatusWindow(index); settings.Save(); } // Save accounts if (fSaveSettings) { for (int i = 0; i < fAccounts.CountItems(); i++) fAccounts.ItemAt(i)->Save(); } BMessenger messenger(B_MAIL_DAEMON_SIGNATURE); if (messenger.IsValid()) { // server should reload general settings messenger.SendMessage(BPrivate::kMsgSettingsUpdated); // notify server about changed accounts messenger.SendMessage(&changedAccounts); } // Start/stop the mail_daemon depending on the settings BMailDaemon daemon; if (fSaveSettings) { if (settings.DaemonAutoStarts() && !daemon.IsRunning()) daemon.Launch(); else if (!settings.DaemonAutoStarts() && daemon.IsRunning()) daemon.Quit(); } }
void ConfigWindow::_SaveSettings() { // remove config views (trigger view archive) fConfigView->DeleteChildren(); // collect changed accounts BMessage changedAccounts(kMsgAccountsChanged); for (int32 i = 0; i < fAccounts.CountItems(); i++) { BMailAccountSettings* account = fAccounts.ItemAt(i); if (account && account->HasBeenModified()) changedAccounts.AddInt32("account", account->AccountID()); } for (int32 i = 0; i < fToDeleteAccounts.CountItems(); i++) { BMailAccountSettings* account = fToDeleteAccounts.ItemAt(i); changedAccounts.AddInt32("account", account->AccountID()); } // cleanup account directory for (int32 i = 0; i < fToDeleteAccounts.CountItems(); i++) { BMailAccountSettings* account = fToDeleteAccounts.ItemAt(i); BEntry entry(account->AccountFile()); entry.Remove(); delete account; } fToDeleteAccounts.MakeEmpty(); /*** save general settings ***/ // figure out time interval float interval; sscanf(fIntervalControl->Text(),"%f",&interval); float multiplier = 0; switch (fIntervalUnitField->Menu()->IndexOf( fIntervalUnitField->Menu()->FindMarked())) { case 1: // minutes multiplier = 60; break; case 2: // hours multiplier = 60 * 60; break; case 3: // days multiplier = 24 * 60 * 60; break; } time_t time = (time_t)(multiplier * interval); // apply and save general settings BMailSettings settings; if (fSaveSettings) { settings.SetAutoCheckInterval(time * 1e6); settings.SetCheckOnlyIfPPPUp(fPPPActiveCheckBox->Value() == B_CONTROL_ON); settings.SetSendOnlyIfPPPUp(fPPPActiveSendCheckBox->Value() == B_CONTROL_ON); settings.SetDaemonAutoStarts(fAutoStartCheckBox->Value() == B_CONTROL_ON); // status mode (alway, fetching/retrieving, ...) int32 index = fStatusModeField->Menu()->IndexOf( fStatusModeField->Menu()->FindMarked()); settings.SetShowStatusWindow(index); } else { // restore status window look settings.SetStatusWindowLook(settings.StatusWindowLook()); } settings.SetConfigWindowFrame(Frame()); settings.Save(); /*** save accounts ***/ if (fSaveSettings) { for (int i = 0; i < fAccounts.CountItems(); i++) fAccounts.ItemAt(i)->Save(); } BMessenger messenger("application/x-vnd.Be-POST"); if (messenger.IsValid()) { // server should reload general settings messenger.SendMessage(kMsgSettingsUpdated); // notify server about changed accounts messenger.SendMessage(&changedAccounts); } // start the mail_daemon if auto start was selected if (fSaveSettings && fAutoStartCheckBox->Value() == B_CONTROL_ON && !be_roster->IsRunning("application/x-vnd.Be-POST")) { be_roster->Launch("application/x-vnd.Be-POST"); } }