Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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();
}