void ConfigWindow::RevertToLastSettings() { // revert general settings BMailSettings settings; // restore status window look settings.SetStatusWindowLook(settings.StatusWindowLook()); status_t status = SetToGeneralSettings(&settings); if (status != B_OK) { char text[256]; sprintf(text, B_TRANSLATE( "\nThe general settings couldn't be reverted.\n\n" "Error retrieving general settings:\n%s\n"), strerror(status)); (new BAlert("Error", text, "OK", NULL, NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT))->Go(); } // revert account data if (fAccountsListView->CurrentSelection() != -1) ((CenterContainer *)fConfigView)->DeleteChildren(); Accounts::Delete(); Accounts::Create(fAccountsListView,fConfigView); if (fConfigView->CountChildren() == 0) MakeHowToView(); }
void ConfigWindow::LoadSettings() { Accounts::Delete(); Accounts::Create(fAccountsListView, fConfigView); // load in general settings BMailSettings settings; status_t status = SetToGeneralSettings(&settings); if (status == B_OK) { // move own window MoveTo(settings.ConfigWindowFrame().LeftTop()); } else { fprintf(stderr, B_TRANSLATE("Error retrieving general settings: %s\n"), strerror(status)); } BScreen screen(this); BRect screenFrame(screen.Frame().InsetByCopy(0, 5)); if (!screenFrame.Contains(Frame().LeftTop()) || !screenFrame.Contains(Frame().RightBottom())) status = B_ERROR; if (status != B_OK) { // center window on screen MoveTo((screenFrame.Width() - Frame().Width()) / 2, (screenFrame.Height() - Frame().Height()) / 2); } }
void ConfigWindow::_LoadSettings() { // load accounts for (int i = 0; i < fAccounts.CountItems(); i++) delete fAccounts.ItemAt(i); fAccounts.MakeEmpty(); _LoadAccounts(); // load in general settings BMailSettings settings; status_t status = _SetToGeneralSettings(&settings); if (status == B_OK) { // move own window MoveTo(settings.ConfigWindowFrame().LeftTop()); } else { fprintf(stderr, B_TRANSLATE("Error retrieving general settings: %s\n"), strerror(status)); } BScreen screen(this); BRect screenFrame(screen.Frame().InsetByCopy(0, 5)); if (!screenFrame.Contains(Frame().LeftTop()) || !screenFrame.Contains(Frame().RightBottom())) status = B_ERROR; if (status != B_OK) { // center window on screen MoveTo((screenFrame.Width() - Frame().Width()) / 2, (screenFrame.Height() - Frame().Height()) / 2); } }
void ConfigWindow::LoadSettings() { Accounts::Delete(); Accounts::Create(fAccountsListView,fConfigView); // load in general settings BMailSettings *settings = new BMailSettings(); status_t status = SetToGeneralSettings(settings); if (status == B_OK) { // adjust own window frame BScreen screen(this); BRect screenFrame(screen.Frame().InsetByCopy(0,5)); BRect frame(settings->ConfigWindowFrame()); if (screenFrame.Contains(frame.LeftTop())) MoveTo(frame.LeftTop()); else // center on screen MoveTo((screenFrame.Width() - frame.Width()) / 2,(screenFrame.Height() - frame.Height()) / 2); } else fprintf(stderr, MDR_DIALECT_CHOICE ( "Error retrieving general settings: %s\n", "一般設定の収得に失敗: %s\n"), strerror(status)); delete settings; }
BEmailMessage::BEmailMessage(const entry_ref *ref, uint32 defaultCharSet) : BMailContainer(defaultCharSet), _bcc(NULL), _num_components(0), _body(NULL), _text_body(NULL) { BMailSettings settings; _account_id = settings.DefaultOutboundAccount(); fData = new BFile(); _status = static_cast<BFile *>(fData)->SetTo(ref,B_READ_ONLY); if (_status == B_OK) SetToRFC822(fData,-1); }
BEmailMessage::BEmailMessage(BPositionIO *file, bool own, uint32 defaultCharSet) : BMailContainer (defaultCharSet), fData(NULL), _status(B_NO_ERROR), _bcc(NULL), _num_components(0), _body(NULL), _text_body(NULL) { BMailSettings settings; _account_id = settings.DefaultOutboundAccount(); if (own) fData = file; if (file != NULL) SetToRFC822(file,-1); }
void ConfigWindow::_RevertToLastSettings() { // revert general settings BMailSettings settings; // restore status window look settings.SetStatusWindowLook(settings.StatusWindowLook()); status_t status = _SetToGeneralSettings(&settings); if (status != B_OK) { char text[256]; sprintf(text, B_TRANSLATE( "\nThe general settings couldn't be reverted.\n\n" "Error retrieving general settings:\n%s\n"), strerror(status)); BAlert* alert = new BAlert(B_TRANSLATE("Error"), text, B_TRANSLATE("OK"), NULL, NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT); alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE); alert->Go(); } // revert account data if (fAccountsListView->CurrentSelection() != -1) fConfigView->DeleteChildren(); for (int32 i = 0; i < fAccounts.CountItems(); i++) { BMailAccountSettings* account = fAccounts.ItemAt(i); _RemoveAccountFromListView(account); delete account; } fAccounts.MakeEmpty(); _LoadAccounts(); if (fConfigView->CountChildren() == 0) _MakeHowToView(); }
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"); } }
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(); } }
status_t TMailApp::LoadSettings() { BMailSettings accountSettings; fDefaultAccount = accountSettings.DefaultOutboundAccount(); 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_ONLY); if (status != B_OK) return LoadOldSettings(); BMessage settings; status = settings.Unflatten(&file); if (status < B_OK || settings.what != 'BeMl') { // the current settings are corrupted, try old ones return LoadOldSettings(); } BRect rect; if (settings.FindRect("MailWindowSize", &rect) == B_OK) fMailWindowFrame = rect; int32 int32Value; // if (settings.FindInt32("ExperienceLevel", &int32Value) == B_OK) // level = int32Value; const char *fontFamily; if (settings.FindString("FontFamily", &fontFamily) == B_OK) { const char *fontStyle; if (settings.FindString("FontStyle", &fontStyle) == B_OK) { float size; if (settings.FindFloat("FontSize", &size) == B_OK) { if (size >= 7) fContentFont.SetSize(size); if (fontFamily[0] && fontStyle[0]) { fContentFont.SetFamilyAndStyle(fontFamily[0] ? fontFamily : NULL, fontStyle[0] ? fontStyle : NULL); } } } } if (settings.FindRect("SignatureWindowSize", &rect) == B_OK) fSignatureWindowFrame = rect; bool boolValue; if (settings.FindBool("WordWrapMode", &boolValue) == B_OK) fWrapMode = boolValue; BPoint point; if (settings.FindPoint("PreferencesWindowLocation", &point) == B_OK) fPrefsWindowPos = point; if (settings.FindBool("AutoMarkRead", &boolValue) == B_OK) fAutoMarkRead = boolValue; const char *string; if (settings.FindString("SignatureText", &string) == B_OK) { free(fSignature); fSignature = strdup(string); } if (settings.FindInt32("CharacterSet", &int32Value) == B_OK) fMailCharacterSet = int32Value; if (fMailCharacterSet != B_MAIL_UTF8_CONVERSION && fMailCharacterSet != B_MAIL_US_ASCII_CONVERSION && BCharacterSetRoster::GetCharacterSetByConversionID(fMailCharacterSet) == NULL) fMailCharacterSet = B_MS_WINDOWS_CONVERSION; if (settings.FindString("FindString", &string) == B_OK) FindWindow::SetFindString(string); int8 int8Value; if (settings.FindInt8("ShowButtonBar", &int8Value) == B_OK) fShowToolBar = int8Value; if (settings.FindInt32("UseAccountFrom", &int32Value) == B_OK) fUseAccountFrom = int32Value; if (fUseAccountFrom < ACCOUNT_USE_DEFAULT || fUseAccountFrom > ACCOUNT_FROM_MAIL) fUseAccountFrom = ACCOUNT_USE_DEFAULT; if (settings.FindBool("ColoredQuotes", &boolValue) == B_OK) fColoredQuotes = boolValue; if (settings.FindString("ReplyPreamble", &string) == B_OK) { free(fReplyPreamble); fReplyPreamble = strdup(string); } if (settings.FindBool("AttachAttributes", &boolValue) == B_OK) fAttachAttributes = boolValue; if (settings.FindBool("WarnAboutUnencodableCharacters", &boolValue) == B_OK) fWarnAboutUnencodableCharacters = boolValue; if (settings.FindBool("StartWithSpellCheck", &boolValue) == B_OK) fStartWithSpellCheckOn = boolValue; return B_OK; }
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() { // 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"); } }