void BMailProtocolConfigView::SetTo(MailAddonSettings& settings) { const BMessage* archive = &settings.Settings(); BString host = archive->FindString("server"); if (archive->HasInt32("port")) host << ':' << archive->FindInt32("port"); SetTextControl(this,"host", host.String()); SetTextControl(this,"user", archive->FindString("username")); char *password = get_passwd(archive, "cpasswd"); if (password) { SetTextControl(this,"pass", password); delete[] password; } else SetTextControl(this,"pass", archive->FindString("password")); if (archive->HasInt32("flavor")) { BMenuField *menu = (BMenuField *)(FindView("flavor")); if (menu != NULL) { if (BMenuItem *item = menu->Menu()->ItemAt(archive->FindInt32("flavor"))) item->SetMarked(true); } } if (archive->HasInt32("auth_method")) { BMenuField *menu = (BMenuField *)(FindView("auth_method")); if (menu != NULL) { if (BMenuItem *item = menu->Menu()->ItemAt(archive->FindInt32("auth_method"))) { item->SetMarked(true); if (item->Command() != 'none') { enable_control("user"); enable_control("pass"); } } } } BCheckBox *box = (BCheckBox *)(FindView("leave_mail_on_server")); if (box != NULL) box->SetValue(archive->FindBool("leave_mail_on_server") ? B_CONTROL_ON : B_CONTROL_OFF); box = (BCheckBox *)(FindView("delete_remote_when_local")); if (box != NULL) { box->SetValue(archive->FindBool("delete_remote_when_local") ? B_CONTROL_ON : B_CONTROL_OFF); if (archive->FindBool("leave_mail_on_server")) box->SetEnabled(true); else box->SetEnabled(false); } if (fBodyDownloadConfig) fBodyDownloadConfig->SetTo(settings); }
void SeqEditMultiFilterWindow::SetMultiFilter(const BString& key, const BString& path) { if (!SetEntryCheck() ) return; if (!Lock()) return; mInitialKey = (const char*)NULL; mInitialAuthor = (const char*)NULL; mInitialEmail = (const char*)NULL; SetHasChanges(false); if (mMultiFilter) { AmGlobalsImpl* globals = gobals_impl(); if (globals) globals->UnregisterTemporaryMatrix(mMultiFilter->Id() ); mMultiFilter->RemoveMatrixObserver(0, this); } /* This is a bit of a hack, but the AmMultiFilter (which is the * AmPipelineMatrixI object) doesn't actually store references to itself. * So what happens is the mMultiFilter gets deleted here, then at the * end of this method the mPipelineView's matrix ref -- which is the now- * deleted mMultiFilter -- gets replaced with the new mMultiFilter. During * the replacement, the ref tries to remove a ref to the old multi filter, * and crash. So I clear it out here. */ if (mPipelineView) mPipelineView->SetMatrixRef( AmPipelineMatrixRef(NULL) ); delete mMultiFilter; mMultiFilter = NULL; if (mMultiFilterAddOn) mMultiFilterAddOn->RemReference(); mMultiFilterAddOn = NULL; const char* s = NULL; if (path.Length() > 0) s = path.String(); AmMultiFilterRoster* roster = AmMultiFilterRoster::Default(); if (roster) mMultiFilterAddOn = roster->NewFilter(key, s); if (!mMultiFilterAddOn) { const char* auth; const char* email; if (seq_get_string_preference(AUTHOR_PREF, &auth) != B_OK) auth = NULL; if (seq_get_string_preference(EMAIL_PREF, &email) != B_OK) email = NULL; mMultiFilterAddOn = new AmMultiFilterAddOn(auth, email); } if (mMultiFilterAddOn) { mMultiFilterAddOn->AddReference(); mInitialKey = mMultiFilterAddOn->Key(); mInitialAuthor = mMultiFilterAddOn->Author(); mInitialEmail = mMultiFilterAddOn->Email(); mMultiFilter = dynamic_cast<AmMultiFilter*>(mMultiFilterAddOn->NewInstance(NULL, NULL) ); if (mMultiFilter) { AmGlobalsImpl* globals = gobals_impl(); if (globals) globals->RegisterTemporaryMatrix(mMultiFilter); } SetTextControl(mNameCtrl, mMultiFilterAddOn->Label().String(), NAME_MSG); SetTextControl(mKeyCtrl, mMultiFilterAddOn->Key().String(), KEY_MSG); SetTextControl(mAuthorCtrl, mMultiFilterAddOn->Author().String(), AUTHOR_MSG); SetTextControl(mEmailCtrl, mMultiFilterAddOn->Email().String(), EMAIL_MSG); if (mShortDescriptionCtrl) mShortDescriptionCtrl->SetText( mMultiFilterAddOn->ShortDescription().String() ); if (mLongDescriptionCtrl) mLongDescriptionCtrl->SetText( mMultiFilterAddOn->LongDescriptionContents() ); if (mIconEditor) mIconEditor->SetBitmap(const_cast<BBitmap*>(mMultiFilterAddOn->Icon(BPoint(20, 20))) ); } if (mMultiFilter) { mMultiFilter->AddMatrixPipelineObserver(0, this); mMultiFilter->AddMatrixFilterObserver(0, this); } if (mPipelineView) mPipelineView->SetMatrixRef( AmPipelineMatrixRef(mMultiFilter) ); SetWindowTitle(); Unlock(); }