void DialUpView::SelectInterface(int32 index, bool isNew) { BMenuItem *item = fInterfaceMenu->FindMarked(); if(fCurrentItem && item == fCurrentItem) return; if(fCurrentItem && !SaveSettingsToFile()) (new BAlert(kErrorTitle, kErrorSavingFailed, kLabelOK, NULL, NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT))->Go(NULL); if(index >= CountInterfaces() || index < 0) { if(CountInterfaces() > 0) SelectInterface(0); else { fCurrentItem = NULL; WatchInterface(PPP_UNDEFINED_INTERFACE_ID); } } else { fCurrentItem = fInterfaceMenu->ItemAt(index); if(!fCurrentItem) { SelectInterface(0); return; } fCurrentItem->SetMarked(true); fDeleterItem->SetEnabled(true); WatchInterface(fListener.Manager().InterfaceWithName(fCurrentItem->Label())); } if(!fCurrentItem) LoadSettings(false); // tell modules to unload all settings else if(!isNew && !LoadSettings(false)) { (new BAlert(kErrorTitle, kErrorLoadingFailed, kLabelOK, NULL, NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT))->Go(NULL); LoadSettings(true); } else if(isNew && !LoadSettings(true)) (new BAlert(kErrorTitle, kErrorLoadingFailed, kLabelOK, NULL, NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT))->Go(NULL); }
bool DialUpView::SelectInterfaceNamed(const char *name) { BMenuItem *item = fInterfaceMenu->FindItem(name); int32 index = fInterfaceMenu->IndexOf(item); if(!item || index >= CountInterfaces()) return false; SelectInterface(index); return true; }
void DialUpView::AddInterface(const char *name, bool isNew) { if(fInterfaceMenu->FindItem(name)) { (new BAlert(kErrorTitle, kErrorInterfaceExists, kLabelOK, NULL, NULL, B_WIDTH_AS_USUAL, B_WARNING_ALERT))->Go(NULL); return; } BMenuItem *item = new BMenuItem(name, new BMessage(kMsgSelectInterface)); item->SetTarget(this); int32 index = FindNextMenuInsertionIndex(fInterfaceMenu, name); if(index > CountInterfaces()) index = CountInterfaces(); fInterfaceMenu->AddItem(item, index); UpdateControls(); item->SetMarked(true); SelectInterface(index, isNew); }
void MainWin::MessageReceived(BMessage *msg) { switch (msg->what) { case B_ACQUIRE_OVERLAY_LOCK: printf("B_ACQUIRE_OVERLAY_LOCK\n"); fVideoView->OverlayLockAcquire(); break; case B_RELEASE_OVERLAY_LOCK: printf("B_RELEASE_OVERLAY_LOCK\n"); fVideoView->OverlayLockRelease(); break; case B_MOUSE_WHEEL_CHANGED: { printf("B_MOUSE_WHEEL_CHANGED\n"); float dx = msg->FindFloat("be:wheel_delta_x"); float dy = msg->FindFloat("be:wheel_delta_y"); bool inv = modifiers() & B_COMMAND_KEY; if (dx > 0.1) PostMessage(inv ? M_VOLUME_DOWN : M_CHANNEL_PREV); if (dx < -0.1) PostMessage(inv ? M_VOLUME_UP : M_CHANNEL_NEXT); if (dy > 0.1) PostMessage(inv ? M_CHANNEL_PREV : M_VOLUME_DOWN); if (dy < -0.1) PostMessage(inv ? M_CHANNEL_NEXT : M_VOLUME_UP); break; } case M_CHANNEL_NEXT: { printf("M_CHANNEL_NEXT\n"); int chan = fController->CurrentChannel(); if (chan != -1) { chan++; if (chan < fController->ChannelCount()) SelectChannel(chan); } break; } case M_CHANNEL_PREV: { printf("M_CHANNEL_PREV\n"); int chan = fController->CurrentChannel(); if (chan != -1) { chan--; if (chan >= 0) SelectChannel(chan); } break; } case M_VOLUME_UP: printf("M_VOLUME_UP\n"); fController->VolumeUp(); break; case M_VOLUME_DOWN: printf("M_VOLUME_DOWN\n"); fController->VolumeDown(); break; case M_ASPECT_100000_1: VideoFormatChange(fSourceWidth, fSourceHeight, 1.0, 1.0); break; case M_ASPECT_106666_1: VideoFormatChange(fSourceWidth, fSourceHeight, 1.06666, 1.0); break; case M_ASPECT_109091_1: VideoFormatChange(fSourceWidth, fSourceHeight, 1.09091, 1.0); break; case M_ASPECT_141176_1: VideoFormatChange(fSourceWidth, fSourceHeight, 1.41176, 1.0); break; case M_ASPECT_720_576: VideoFormatChange(720, 576, 1.06666, 1.0); break; case M_ASPECT_704_576: VideoFormatChange(704, 576, 1.09091, 1.0); break; case M_ASPECT_544_576: VideoFormatChange(544, 576, 1.41176, 1.0); break; case B_REFS_RECEIVED: printf("MainWin::MessageReceived: B_REFS_RECEIVED\n"); // RefsReceived(msg); break; case B_SIMPLE_DATA: printf("MainWin::MessageReceived: B_SIMPLE_DATA\n"); // if (msg->HasRef("refs")) // RefsReceived(msg); break; case M_FILE_QUIT: // be_app->PostMessage(B_QUIT_REQUESTED); PostMessage(B_QUIT_REQUESTED); break; case M_SCALE_TO_NATIVE_SIZE: printf("M_SCALE_TO_NATIVE_SIZE\n"); if (fIsFullscreen) { ToggleFullscreen(); } ResizeTo(int(fSourceWidth * fWidthScale), int(fSourceHeight * fHeightScale) + (fNoMenu ? 0 : fMenuBarHeight)); // Sync(); break; case M_TOGGLE_FULLSCREEN: ToggleFullscreen(); fSettingsMenu->ItemAt(1)->SetMarked(fIsFullscreen); break; case M_TOGGLE_NO_MENU: ToggleNoMenu(); fSettingsMenu->ItemAt(3)->SetMarked(fNoMenu); break; case M_TOGGLE_NO_BORDER: ToggleNoBorder(); fSettingsMenu->ItemAt(4)->SetMarked(fNoBorder); break; case M_TOGGLE_ALWAYS_ON_TOP: ToggleAlwaysOnTop(); fSettingsMenu->ItemAt(5)->SetMarked(fAlwaysOnTop); break; case M_TOGGLE_KEEP_ASPECT_RATIO: ToggleKeepAspectRatio(); fSettingsMenu->ItemAt(6)->SetMarked(fKeepAspectRatio); break; case M_TOGGLE_NO_BORDER_NO_MENU: ToggleNoBorderNoMenu(); break; case M_PREFERENCES: break; default: if (msg->what >= M_SELECT_CHANNEL && msg->what <= M_SELECT_CHANNEL_END) { SelectChannel(msg->what - M_SELECT_CHANNEL); break; } if (msg->what >= M_SELECT_INTERFACE && msg->what <= M_SELECT_INTERFACE_END) { SelectInterface(msg->what - M_SELECT_INTERFACE - 1); break; } } }
void DialUpView::MessageReceived(BMessage *message) { switch(message->what) { case PPP_REPORT_MESSAGE: HandleReportMessage(message); break; // ------------------------------------------------- case kMsgCreateNew: { (new TextRequestDialog(kLabelCreateNewInterface, kTextChooseInterfaceName, kLabelInterfaceName))->Go( new BInvoker(new BMessage(kMsgFinishCreateNew), this)); } break; case kMsgFinishCreateNew: { int32 which; message->FindInt32("which", &which); const char *name = message->FindString("text"); if(which == 1 && name && strlen(name) > 0) AddInterface(name, true); if(fCurrentItem) fCurrentItem->SetMarked(true); } break; // ------------------------------------------------- case kMsgDeleteCurrent: { if(!fCurrentItem) return; fInterfaceMenu->RemoveItem(fCurrentItem); BDirectory settings, profile; GetPPPDirectories(&settings, &profile); BEntry entry; settings.FindEntry(fCurrentItem->Label(), &entry); entry.Remove(); profile.FindEntry(fCurrentItem->Label(), &entry); entry.Remove(); delete fCurrentItem; fCurrentItem = NULL; BMenuItem *marked = fInterfaceMenu->FindMarked(); if(marked) marked->SetMarked(false); UpdateControls(); SelectInterface(0); // this stops watching the deleted interface } break; case kMsgSelectInterface: { int32 index; message->FindInt32("index", &index); SelectInterface(index); } break; case kMsgConnectButton: { if(!fCurrentItem || fUpDownThread != -1) return; fUpDownThread = spawn_thread(up_down_thread, "up_down_thread", B_NORMAL_PRIORITY, this); resume_thread(fUpDownThread); } break; default: BView::MessageReceived(message); } }
DialUpView::DialUpView(BRect frame) : BView(frame, "DialUpView", B_FOLLOW_ALL, 0), fListener(this), fUpDownThread(-1), fDriverSettings(NULL), fCurrentItem(NULL), fWatching(PPP_UNDEFINED_INTERFACE_ID), fKeepLabel(false) { BRect bounds = Bounds(); // for caching SetViewUIColor(B_PANEL_BACKGROUND_COLOR); // add messenger to us so add-ons can contact us BMessenger messenger(this); fAddons.AddMessenger(DUN_MESSENGER, messenger); // create pop-up with all interfaces and "New..."/"Delete current" items fInterfaceMenu = new BPopUpMenu(kLabelCreateNew); BRect rect = bounds; rect.InsetBy(5, 5); rect.bottom = rect.top + 20; fMenuField = new BMenuField(rect, "Interfaces", kLabelInterface, fInterfaceMenu); fMenuField->SetDivider(StringWidth(fMenuField->Label()) + 5); rect.top = rect.bottom + 10; rect.bottom = bounds.bottom - 20 // height of bottom controls - 20; // space for bottom controls fTabView = new BTabView(rect, "TabView", B_WIDTH_FROM_LABEL); BRect tabViewRect(fTabView->Bounds()); tabViewRect.bottom -= fTabView->TabHeight(); fAddons.AddRect(DUN_TAB_VIEW_RECT, tabViewRect); BRect tmpRect(rect); tmpRect.top += (tmpRect.Height() - 15) / 2; tmpRect.bottom = tmpRect.top + 15; fStringView = new BStringView(tmpRect, "NoInterfacesFound", kTextNoInterfacesFound); fStringView->SetAlignment(B_ALIGN_CENTER); fStringView->Hide(); tmpRect.top = tmpRect.bottom + 10; tmpRect.bottom = tmpRect.top + 25; fCreateNewButton = new BButton(tmpRect, "CreateNewButton", kLabelCreateNewInterface, new BMessage(kMsgCreateNew)); fCreateNewButton->ResizeToPreferred(); tmpRect.left = (rect.Width() - fCreateNewButton->Bounds().Width()) / 2 + rect.left; fCreateNewButton->MoveTo(tmpRect.left, tmpRect.top); fCreateNewButton->Hide(); rect.top = rect.bottom + 15; rect.bottom = rect.top + 15; rect.right = rect.left + 200; fStatusView = new BStringView(rect, "StatusView", kTextNotConnected, B_FOLLOW_BOTTOM); rect.InsetBy(0, -5); rect.left = rect.right + 5; rect.right = bounds.right - 5; fConnectButton = new BButton(rect, "ConnectButton", kLabelConnect, new BMessage(kMsgConnectButton), B_FOLLOW_BOTTOM); AddChild(fMenuField); AddChild(fTabView); AddChild(fStringView); AddChild(fCreateNewButton); AddChild(fStatusView); AddChild(fConnectButton); // initialize LoadInterfaces(); LoadAddons(); CreateTabs(); fCurrentItem = NULL; // reset, otherwise SelectInterface will not load the settings SelectInterface(0); UpdateControls(); }