Beispiel #1
0
void
ConfigWindow::MessageReceived(BMessage *msg)
{
    BRect autoConfigRect(0, 0, 400, 300);
    BRect frame;

    AutoConfigWindow *autoConfigWindow = NULL;
    switch (msg->what) {
    case kMsgAccountSelected:
    {
        int32 index;
        if (msg->FindInt32("index", &index) != B_OK || index < 0) {
            // deselect current item
            ((CenterContainer *)fConfigView)->DeleteChildren();
            MakeHowToView();
            break;
        }
        AccountItem *item = (AccountItem *)fAccountsListView->ItemAt(index);
        if (item)
            item->account->Selected(item->type);
        break;
    }
    case kMsgAddAccount:
    {
        frame = Frame();
        autoConfigRect.OffsetTo(
            frame.left + (frame.Width() - autoConfigRect.Width()) / 2,
            frame.top + (frame.Width() - autoConfigRect.Height()) / 2);
        autoConfigWindow = new AutoConfigWindow(autoConfigRect, this);
        autoConfigWindow->Show();
        break;
    }
    case kMsgRemoveAccount:
    {
        int32 index = fAccountsListView->CurrentSelection();
        if (index >= 0) {
            AccountItem *item = (AccountItem *)fAccountsListView->ItemAt(
                                    index);
            if (item != NULL) {
                item->account->Remove(item->type);
                MakeHowToView();
            }
        }
        break;
    }

    case kMsgIntervalUnitChanged:
    {
        int32 index;
        if (msg->FindInt32("index",&index) == B_OK)
            fIntervalControl->SetEnabled(index != 0);
        break;
    }

    case kMsgShowStatusWindowChanged:
    {
        // the status window stuff is the only "live" setting
        BMessenger messenger("application/x-vnd.Be-POST");
        if (messenger.IsValid())
            messenger.SendMessage(msg);
        break;
    }

    case kMsgRevertSettings:
        RevertToLastSettings();
        break;
    case kMsgSaveSettings:
        fSaveSettings = true;
        SaveSettings();
        MakeHowToView();
        break;

    default:
        BWindow::MessageReceived(msg);
        break;
    }
}
Beispiel #2
0
void
ConfigWindow::MessageReceived(BMessage *msg)
{
	float fontFactor = be_plain_font->Size() / 12.0f;
	BRect autoConfigRect(0, 0, 400 * fontFactor, 300 * fontFactor);
	BRect frame;

	AutoConfigWindow *autoConfigWindow = NULL;
	switch (msg->what) {
		case B_COLORS_UPDATED:
		{
			rgb_color textColor;
			if (msg->FindColor(ui_color_name(B_PANEL_TEXT_COLOR), &textColor)
					== B_OK) {
				BFont font;
				fHowToTextView->SetFontAndColor(&font, 0, &textColor);
			}
			break;
		}

		case kMsgAccountsRightClicked:
		{
			BPoint point;
			msg->FindPoint("point", &point);
			int32 index = msg->FindInt32("index");
			AccountItem* clickedItem = dynamic_cast<AccountItem*>(
				fAccountsListView->ItemAt(index));
			if (clickedItem == NULL || clickedItem->Type() != ACCOUNT_ITEM)
				break;

			BPopUpMenu rightClickMenu("accounts", false, false);

			BMenuItem* inMenuItem = new BMenuItem(B_TRANSLATE("Incoming"),
				NULL);
			BMenuItem* outMenuItem = new BMenuItem(B_TRANSLATE("Outgoing"),
				NULL);
			rightClickMenu.AddItem(inMenuItem);
			rightClickMenu.AddItem(outMenuItem);

			BMailAccountSettings* settings = clickedItem->Account();
			if (settings->IsInboundEnabled())
				inMenuItem->SetMarked(true);
			if (settings->IsOutboundEnabled())
				outMenuItem->SetMarked(true);

			BMenuItem* selectedItem = rightClickMenu.Go(point);
			if (selectedItem == NULL)
				break;
			if (selectedItem == inMenuItem) {
				AccountItem* item = dynamic_cast<AccountItem*>(
					fAccountsListView->ItemAt(index + 1));
				if (item == NULL)
					break;
				if (settings->IsInboundEnabled()) {
					settings->SetInboundEnabled(false);
					item->SetEnabled(false);
				} else {
					settings->SetInboundEnabled(true);
					item->SetEnabled(true);
				}
			} else {
				AccountItem* item = dynamic_cast<AccountItem*>(
					fAccountsListView->ItemAt(index + 2));
				if (item == NULL)
					break;
				if (settings->IsOutboundEnabled()) {
					settings->SetOutboundEnabled(false);
					item->SetEnabled(false);
				} else {
					settings->SetOutboundEnabled(true);
					item->SetEnabled(true);
				}
			}
		}

		case kMsgAccountSelected:
		{
			int32 index;
			if (msg->FindInt32("index", &index) != B_OK || index < 0) {
				// deselect current item
				_ReplaceConfigView(_BuildHowToView());
				break;
			}
			AccountItem* item = (AccountItem*)fAccountsListView->ItemAt(index);
			if (item != NULL)
				_AccountSelected(item);
			break;
		}

		case kMsgAddAccount:
		{
			frame = Frame();
			autoConfigRect.OffsetTo(
				frame.left + (frame.Width() - autoConfigRect.Width()) / 2,
				frame.top + (frame.Width() - autoConfigRect.Height()) / 2);
			autoConfigWindow = new AutoConfigWindow(autoConfigRect, this);
			autoConfigWindow->Show();
			break;
		}

		case kMsgRemoveAccount:
		{
			int32 index = fAccountsListView->CurrentSelection();
			if (index >= 0) {
				AccountItem *item = (AccountItem *)fAccountsListView->ItemAt(
					index);
				if (item != NULL) {
					_RemoveAccount(item->Account());
					_ReplaceConfigView(_BuildHowToView());
				}
			}
			break;
		}

		case kMsgIntervalUnitChanged:
		{
			int32 index;
			if (msg->FindInt32("index",&index) == B_OK)
				fIntervalControl->SetEnabled(index != 0);
			break;
		}

		case kMsgShowStatusWindowChanged:
		{
			// the status window stuff is the only "live" setting
			BMessenger messenger("application/x-vnd.Be-POST");
			if (messenger.IsValid())
				messenger.SendMessage(msg);
			break;
		}

		case kMsgRevertSettings:
			_RevertToLastSettings();
			break;

		case kMsgSaveSettings:
			fSaveSettings = true;
			_SaveSettings();
			AccountUpdated(fLastSelectedAccount);
			_ReplaceConfigView(_BuildHowToView());
			fAccountsListView->DeselectAll();
			break;

		default:
			BWindow::MessageReceived(msg);
			break;
	}
}