예제 #1
0
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();
}
예제 #2
0
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();
}
예제 #3
0
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");
    }
}
예제 #4
0
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");
	}
}