void MainWin::SelectInterface(int i) { printf("MainWin::SelectInterface %d\n", i); printf(" CurrentInterface %d\n", fController->CurrentInterface()); printf(" CurrentChannel %d\n", fController->CurrentChannel()); // i = -1 means "None" if (i < 0) { fController->DisconnectInterface(); goto done; } if (!fController->IsInterfaceAvailable(i)) { BString s; s << B_TRANSLATE("Error, interface is busy:\n\n"); s << gDeviceRoster->DeviceName(i); BAlert* alert = new BAlert("error", s.String(), B_TRANSLATE("OK")); alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE); alert->Go(); return; } fController->DisconnectInterface(); if (fController->ConnectInterface(i) != B_OK) { BString s; s << B_TRANSLATE("Error, connecting to interface failed:\n\n"); s << gDeviceRoster->DeviceName(i); BAlert* alert = new BAlert("error", s.String(), B_TRANSLATE("OK")); alert->SetFlags(alert->Flags() | B_CLOSE_ON_ESCAPE); alert->Go(); } done: printf("MainWin::SelectInterface done:\n"); printf(" CurrentInterface %d\n", fController->CurrentInterface()); printf(" CurrentChannel %d\n", fController->CurrentChannel()); SetInterfaceMenuMarker(); SetupChannelMenu(); SetChannelMenuMarker(); }
MainWin::MainWin(BRect frame_rect) : BWindow(frame_rect, B_TRANSLATE_SYSTEM_NAME(NAME), B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS /* | B_WILL_ACCEPT_FIRST_CLICK */) , fController(new Controller) , fIsFullscreen(false) , fKeepAspectRatio(true) , fAlwaysOnTop(false) , fNoMenu(false) , fNoBorder(false) , fSourceWidth(720) , fSourceHeight(576) , fWidthScale(1.0) , fHeightScale(1.0) , fMouseDownTracking(false) , fFrameResizedTriggeredAutomatically(false) , fIgnoreFrameResized(false) , fFrameResizedCalled(true) { BRect rect = Bounds(); // background fBackground = new BView(rect, "background", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE); fBackground->SetViewColor(0,0,0); AddChild(fBackground); // menu fMenuBar = new BMenuBar(fBackground->Bounds(), "menu"); CreateMenu(); fBackground->AddChild(fMenuBar); fMenuBar->ResizeToPreferred(); fMenuBarHeight = (int)fMenuBar->Frame().Height() + 1; fMenuBar->SetResizingMode(B_FOLLOW_TOP | B_FOLLOW_LEFT_RIGHT); // video view BRect video_rect = BRect(0, fMenuBarHeight, rect.right, rect.bottom); fVideoView = new VideoView(video_rect, "video display", B_FOLLOW_ALL, B_WILL_DRAW | B_FULL_UPDATE_ON_RESIZE); fBackground->AddChild(fVideoView); fVideoView->MakeFocus(); // SetSizeLimits(fControlViewMinWidth - 1, 32767, // fMenuBarHeight + fControlViewHeight - 1, fMenuBarHeight // + fControlViewHeight - 1); // SetSizeLimits(320 - 1, 32767, 240 + fMenuBarHeight - 1, 32767); SetSizeLimits(0, 32767, fMenuBarHeight - 1, 32767); fController->SetVideoView(fVideoView); fController->SetVideoNode(fVideoView->Node()); fVideoView->IsOverlaySupported(); SetupInterfaceMenu(); SelectInitialInterface(); SetInterfaceMenuMarker(); SetupChannelMenu(); SetChannelMenuMarker(); VideoFormatChange(fSourceWidth, fSourceHeight, fWidthScale, fHeightScale); CenterOnScreen(); }