From 99cd5eeb92bdd42756e075535201dd44318aa8f6 Mon Sep 17 00:00:00 2001 From: Marcus Overhagen Date: Sun, 23 Apr 2006 20:27:56 +0000 Subject: [PATCH] added some resizing support git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@17214 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/apps/mediaplayer/ControllerView.cpp | 26 ++ src/apps/mediaplayer/ControllerView.h | 23 ++ src/apps/mediaplayer/MainWin.cpp | 320 ++++++++++++++++-------- src/apps/mediaplayer/MainWin.h | 10 +- src/apps/mediaplayer/VideoView.cpp | 3 +- 5 files changed, 271 insertions(+), 111 deletions(-) diff --git a/src/apps/mediaplayer/ControllerView.cpp b/src/apps/mediaplayer/ControllerView.cpp index 96076d38b1..354f6efe41 100644 --- a/src/apps/mediaplayer/ControllerView.cpp +++ b/src/apps/mediaplayer/ControllerView.cpp @@ -1,3 +1,22 @@ +/* + * Controller.cpp - Media Player for the Haiku Operating System + * + * Copyright (C) 2006 Marcus Overhagen + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ #include #include #include @@ -17,6 +36,13 @@ ControllerView::~ControllerView() } +void +ControllerView::ResizeToPreferred() +{ + ResizeTo(300 - 1, 60 - 1); +} + + void ControllerView::AttachedToWindow() { diff --git a/src/apps/mediaplayer/ControllerView.h b/src/apps/mediaplayer/ControllerView.h index c5a56fb233..7a31967830 100644 --- a/src/apps/mediaplayer/ControllerView.h +++ b/src/apps/mediaplayer/ControllerView.h @@ -1,3 +1,23 @@ +/* + * Controller.cpp - Media Player for the Haiku Operating System + * + * Copyright (C) 2006 Marcus Overhagen + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * version 2 as published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + #ifndef __CONTROLLER_VIEW_H #define __CONTROLLER_VIEW_H @@ -11,6 +31,9 @@ class ControllerView : public BView public: ControllerView(BRect frame, Controller *ctrl); ~ControllerView(); + + void ResizeToPreferred(); + private: void AttachedToWindow(); void MessageReceived(BMessage *msg); diff --git a/src/apps/mediaplayer/MainWin.cpp b/src/apps/mediaplayer/MainWin.cpp index 2e9c64a1db..54424bc6e2 100644 --- a/src/apps/mediaplayer/MainWin.cpp +++ b/src/apps/mediaplayer/MainWin.cpp @@ -32,8 +32,10 @@ #include #include #include +#include #define NAME "MediaPlayer" +#define MIN_WIDTH 250 enum { @@ -53,7 +55,8 @@ enum M_TOGGLE_FULLSCREEN, M_TOGGLE_NO_BORDER, M_TOGGLE_NO_MENU, - M_TOGGLE_NO_BORDER_NO_MENU, + M_TOGGLE_NO_CONTROLS, + M_TOGGLE_NO_BORDER_NO_MENU_NO_CONTROLS, M_TOGGLE_ALWAYS_ON_TOP, M_TOGGLE_KEEP_ASPECT_RATIO, M_PREFERENCES, @@ -78,7 +81,7 @@ enum MainWin::MainWin() - : BWindow(BRect(200,200,0,0), NAME, B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS /* | B_WILL_ACCEPT_FIRST_CLICK */) + : BWindow(BRect(200,200,450,400), NAME, B_TITLED_WINDOW, B_ASYNCHRONOUS_CONTROLS /* | B_WILL_ACCEPT_FIRST_CLICK */) , fFilePanel(NULL) , fHasFile(false) , fHasVideo(false) @@ -88,8 +91,9 @@ MainWin::MainWin() , fAlwaysOnTop(false) , fNoMenu(false) , fNoBorder(false) - , fSourceWidth(720) - , fSourceHeight(576) + , fNoControls(false) + , fSourceWidth(0) + , fSourceHeight(0) , fWidthScale(1.0) , fHeightScale(1.0) , fMouseDownTracking(false) @@ -104,7 +108,7 @@ MainWin::MainWin() fBackground->SetViewColor(0,0,0); AddChild(fBackground); - // menu + // menu fMenuBar = new BMenuBar(fBackground->Bounds(), "menu"); CreateMenu(); fBackground->AddChild(fMenuBar); @@ -113,24 +117,30 @@ MainWin::MainWin() 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); + rect = BRect(0, fMenuBarHeight, fBackground->Bounds().right, fMenuBarHeight + 10); + fVideoView = new VideoView(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); + + // controls + rect = BRect(0, fMenuBarHeight + 11, fBackground->Bounds().right, fBackground->Bounds().bottom); + fControls = new ControllerView(rect, fController); + fBackground->AddChild(fControls); + fControls->ResizeToPreferred(); + fControlsHeight = (int)fControls->Frame().Height() + 1; + fControlsWidth = (int)fControls->Frame().Width() + 1; + fControls->SetResizingMode(B_FOLLOW_BOTTOM | B_FOLLOW_LEFT_RIGHT); + fControls->MoveTo(0, fBackground->Bounds().bottom - fControlsHeight + 1); + + fVideoView->ResizeTo(fBackground->Bounds().Width(), fBackground->Bounds().Height() - fMenuBarHeight - fControlsHeight); fController->SetVideoView(fVideoView); - fVideoView->IsOverlaySupported(); + + printf("fMenuBarHeight %d\n", fMenuBarHeight); + printf("fControlsHeight %d\n", fControlsHeight); + printf("fControlsWidth %d\n", fControlsWidth); - VideoFormatChange(fSourceWidth, fSourceHeight, fWidthScale, fHeightScale); + SetupWindow(); Show(); } @@ -180,6 +190,51 @@ MainWin::SetupWindow() fAudioMenu->ItemAt(0)->SetMarked(true); fVideoMenu->ItemAt(0)->SetMarked(true); + if (fHasVideo) { +// VideoFormatChange(int width, int height, float width_scale, float height_scale) + fSourceWidth = 320; + fSourceHeight = 240; + fWidthScale = 1.24; + fHeightScale = 1.35; + } else { + fSourceWidth = 320; + fSourceHeight = 240; + fWidthScale = 1.24; + fHeightScale = 1.35; + } + + int video_width; + int video_height; + + // get required window size + if (fHasVideo) { + video_width = 400; + video_height = 300; + } else { + video_width = 0; + video_height = 0; + } + + // Calculate and set the initial window size + int width = max_c(fControlsWidth, video_width); + int height = (fNoMenu ? 0 : fMenuBarHeight) + (fNoControls ? 0 : fControlsHeight) + video_height; + SetWindowSizeLimits(); + ResizeTo(width - 1, height - 1); + + fVideoView->MakeFocus(); + +// VideoFormatChange(fSourceWidth, fSourceHeight, fWidthScale, fHeightScale); + +} + + +void +MainWin::SetWindowSizeLimits() +{ + int min_width = fNoControls ? MIN_WIDTH : fControlsWidth; + int min_height = (fNoMenu ? 0 : fMenuBarHeight) + (fNoControls ? 0 : fControlsHeight); + + SetSizeLimits(min_width - 1, 32000, min_height - 1, fHasVideo ? 32000 : min_height - 1); } @@ -208,23 +263,24 @@ MainWin::CreateMenu() fFileMenu->AddItem(new BMenuItem("Close", new BMessage(M_FILE_CLOSE), 'W', B_COMMAND_KEY)); fFileMenu->AddItem(new BMenuItem("Quit", new BMessage(M_FILE_QUIT), 'Q', B_COMMAND_KEY)); + fViewMenu->AddItem(fAudioMenu); + fViewMenu->AddItem(fVideoMenu); + fViewMenu->AddSeparatorItem(); fViewMenu->AddItem(new BMenuItem("50% scale", new BMessage(M_VIEW_50), '0', B_COMMAND_KEY)); fViewMenu->AddItem(new BMenuItem("100% scale", new BMessage(M_VIEW_100), '1', B_COMMAND_KEY)); fViewMenu->AddItem(new BMenuItem("200% scale", new BMessage(M_VIEW_200), '2', B_COMMAND_KEY)); fViewMenu->AddItem(new BMenuItem("300% scale", new BMessage(M_VIEW_300), '3', B_COMMAND_KEY)); fViewMenu->AddItem(new BMenuItem("400% scale", new BMessage(M_VIEW_400), '4', B_COMMAND_KEY)); - fViewMenu->AddItem(new BMenuItem("Full Screen", new BMessage(M_TOGGLE_FULLSCREEN), 'F', B_COMMAND_KEY)); - fViewMenu->SetRadioMode(true); fViewMenu->AddSeparatorItem(); - fViewMenu->AddItem(new BMenuItem("Always on Top", new BMessage(M_TOGGLE_ALWAYS_ON_TOP), 'T', B_COMMAND_KEY)); + fViewMenu->AddItem(new BMenuItem("Full Screen", new BMessage(M_TOGGLE_FULLSCREEN), 'F', B_COMMAND_KEY)); +// fViewMenu->SetRadioMode(true); +// fViewMenu->AddSeparatorItem(); +// fViewMenu->AddItem(new BMenuItem("Always on Top", new BMessage(M_TOGGLE_ALWAYS_ON_TOP), 'T', B_COMMAND_KEY)); - fSettingsMenu->AddItem(fAudioMenu); - fSettingsMenu->AddItem(fVideoMenu); - fSettingsMenu->AddItem(new BMenuItem("Scale to native size", new BMessage(M_SCALE_TO_NATIVE_SIZE), 'N', B_COMMAND_KEY)); - fSettingsMenu->AddItem(new BMenuItem("Full Screen", new BMessage(M_TOGGLE_FULLSCREEN), 'F', B_COMMAND_KEY)); - fSettingsMenu->AddSeparatorItem(); +// fSettingsMenu->AddSeparatorItem(); fSettingsMenu->AddItem(new BMenuItem("No Menu", new BMessage(M_TOGGLE_NO_MENU), 'M', B_COMMAND_KEY)); fSettingsMenu->AddItem(new BMenuItem("No Border", new BMessage(M_TOGGLE_NO_BORDER), 'B', B_COMMAND_KEY)); + fSettingsMenu->AddItem(new BMenuItem("No Controls", new BMessage(M_TOGGLE_NO_CONTROLS), 'C', B_COMMAND_KEY)); fSettingsMenu->AddItem(new BMenuItem("Always on Top", new BMessage(M_TOGGLE_ALWAYS_ON_TOP), 'T', B_COMMAND_KEY)); fSettingsMenu->AddItem(new BMenuItem("Keep Aspect Ratio", new BMessage(M_TOGGLE_KEEP_ASPECT_RATIO), 'K', B_COMMAND_KEY)); fSettingsMenu->AddSeparatorItem(); @@ -240,13 +296,14 @@ MainWin::CreateMenu() fAudioMenu->SetRadioMode(true); fVideoMenu->SetRadioMode(true); - +/* fSettingsMenu->ItemAt(3)->SetMarked(fIsFullscreen); fSettingsMenu->ItemAt(5)->SetMarked(fNoMenu); fSettingsMenu->ItemAt(6)->SetMarked(fNoBorder); fSettingsMenu->ItemAt(7)->SetMarked(fAlwaysOnTop); fSettingsMenu->ItemAt(8)->SetMarked(fKeepAspectRatio); fSettingsMenu->ItemAt(10)->SetEnabled(false); // XXX disable unused preference menu +*/ } @@ -313,7 +370,7 @@ MainWin::MouseDown(BMessage *msg) if (2 == buttons && msg->FindInt32("clicks") % 2 == 0) { BRect r(screen_where.x - 1, screen_where.y - 1, screen_where.x + 1, screen_where.y + 1); if (r.Contains(fMouseDownMousePos)) { - PostMessage(M_TOGGLE_NO_BORDER_NO_MENU); + PostMessage(M_TOGGLE_NO_BORDER_NO_MENU_NO_CONTROLS); return; } } @@ -446,6 +503,7 @@ MainWin::VideoFormatChange(int width, int height, float width_scale, float heigh fWidthScale = width_scale; fHeightScale = height_scale; +/* // ResizeWindow(Bounds().Width() + 1, Bounds().Height() + 1, true); if (fIsFullscreen) { @@ -453,6 +511,7 @@ MainWin::VideoFormatChange(int width, int height, float width_scale, float heigh } else { AdjustWindowedRenderer(false); } +*/ printf("VideoFormatChange leave\n"); @@ -469,13 +528,34 @@ MainWin::Zoom(BPoint rec_position, float rec_width, float rec_height) void MainWin::FrameResized(float new_width, float new_height) { - // called when the window got resized - fFrameResizedCalled = true; - if (new_width != Bounds().Width() || new_height != Bounds().Height()) { debugger("size wrong\n"); } + + printf("FrameResized enter: new_width %.0f, new_height %.0f\n", new_width, new_height); + + int max_video_width = new_width + 1; + int max_video_height = new_height + 1; + if (!fNoMenu) + max_video_height -= fMenuBarHeight; + if (!fNoControls) + max_video_height -= fControlsHeight; + ASSERT(max_video_height >= 0); + + if (max_video_height == 0 && !fVideoView->IsHidden()) + fVideoView->Hide(); + if (max_video_height != 0 && fVideoView->IsHidden()) + fVideoView->Show(); + + fVideoViewBounds = BRect(0, fNoMenu ? 0 : fMenuBarHeight, max_video_width - 1, max_video_height - 1); + + +/* + + + +return; printf("FrameResized enter: new_width %.0f, new_height %.0f, bounds width %.0f, bounds height %.0f\n", new_width, new_height, Bounds().Width(), Bounds().Height()); @@ -508,11 +588,17 @@ MainWin::FrameResized(float new_width, float new_height) } } +*/ printf("FrameResized leave\n"); } +void +MainWin::ShowFileInfo() +{ +} + void MainWin::UpdateWindowTitle() @@ -522,7 +608,7 @@ MainWin::UpdateWindowTitle() SetTitle(buf); } - +/* void MainWin::AdjustFullscreenRenderer() { @@ -609,7 +695,7 @@ MainWin::AdjustWindowedRenderer(bool user_resized) printf("AdjustWindowedRenderer leave\n"); } - +*/ void MainWin::ToggleNoBorderNoMenu() @@ -634,6 +720,11 @@ MainWin::ToggleFullscreen() { printf("ToggleFullscreen enter\n"); + if (!fHasVideo) { + printf("ToggleFullscreen - ignoring, as we don't have a video\n"); + return; + } + if (!fFrameResizedCalled) { printf("ToggleFullscreen - ignoring, as FrameResized wasn't called since last switch\n"); return; @@ -681,22 +772,44 @@ MainWin::ToggleFullscreen() printf("ToggleFullscreen leave\n"); } +void +MainWin::ToggleNoControls() +{ + printf("ToggleNoControls enter\n"); + + if (fIsFullscreen) { + // fullscreen is always without menu + printf("ToggleNoControls leave, doing nothing, we are fullscreen\n"); + return; + } + + fNoControls = !fNoControls; + SetWindowSizeLimits(); + + if (fNoControls) { + fControls->Hide(); + ResizeBy(0, - fControlsHeight); + } else { + fControls->Show(); + ResizeBy(0, fControlsHeight); + } + + printf("ToggleNoControls leave\n"); +} void MainWin::ToggleNoMenu() { printf("ToggleNoMenu enter\n"); - fNoMenu = !fNoMenu; - if (fIsFullscreen) { // fullscreen is always without menu printf("ToggleNoMenu leave, doing nothing, we are fullscreen\n"); return; } -// fFrameResizedTriggeredAutomatically = true; - fIgnoreFrameResized = true; + fNoMenu = !fNoMenu; + SetWindowSizeLimits(); if (fNoMenu) { fMenuBar->Hide(); @@ -704,14 +817,12 @@ MainWin::ToggleNoMenu() fVideoView->ResizeBy(0, fMenuBarHeight); MoveBy(0, fMenuBarHeight); ResizeBy(0, - fMenuBarHeight); -// Sync(); } else { fMenuBar->Show(); fVideoView->MoveTo(0, fMenuBarHeight); - fVideoView->ResizeBy(0, -fMenuBarHeight); + fVideoView->ResizeBy(0, - fMenuBarHeight); MoveBy(0, - fMenuBarHeight); ResizeBy(0, fMenuBarHeight); -// Sync(); } printf("ToggleNoMenu leave\n"); @@ -723,7 +834,6 @@ MainWin::ToggleNoBorder() { printf("ToggleNoBorder enter\n"); fNoBorder = !fNoBorder; -// SetLook(fNoBorder ? B_NO_BORDER_WINDOW_LOOK : B_TITLED_WINDOW_LOOK); SetLook(fNoBorder ? B_BORDERED_WINDOW_LOOK : B_TITLED_WINDOW_LOOK); printf("ToggleNoBorder leave\n"); } @@ -744,14 +854,7 @@ MainWin::ToggleKeepAspectRatio() { printf("ToggleKeepAspectRatio enter\n"); fKeepAspectRatio = !fKeepAspectRatio; - - fFrameResizedTriggeredAutomatically = true; FrameResized(Bounds().Width(), Bounds().Height()); -// if (fIsFullscreen) { -// AdjustFullscreenRenderer(); -// } else { -// AdjustWindowedRenderer(false); -// } printf("ToggleKeepAspectRatio leave\n"); } @@ -798,7 +901,7 @@ MainWin::KeyDown(BMessage *msg) switch (raw_char) { case B_SPACE: - PostMessage(M_TOGGLE_NO_BORDER_NO_MENU); + PostMessage(M_TOGGLE_NO_BORDER_NO_MENU_NO_CONTROLS); return B_OK; case B_ESCAPE: @@ -949,8 +1052,10 @@ MainWin::MessageReceived(BMessage *msg) if (msg->HasRef("refs")) RefsReceived(msg); break; + case M_FILE_NEWPLAYER: + gMainApp->NewWindow(); + break; case M_FILE_OPEN: - { if (!fFilePanel) { fFilePanel = new BFilePanel(); fFilePanel->SetTarget(BMessenger(0, this)); @@ -958,7 +1063,62 @@ MainWin::MessageReceived(BMessage *msg) } fFilePanel->Show(); break; - } + case M_FILE_INFO: + ShowFileInfo(); + break; + case M_FILE_ABOUT: + BAlert *alert; + alert = new BAlert("about", NAME"\n\n Written by Marcus Overhagen","Thanks"); + if (fAlwaysOnTop) { + ToggleAlwaysOnTop(); + alert->Go(); + ToggleAlwaysOnTop(); + } else { + alert->Go(); + } + break; + case M_FILE_CLOSE: + PostMessage(B_QUIT_REQUESTED); + break; + case M_FILE_QUIT: + be_app->PostMessage(B_QUIT_REQUESTED); + 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_CONTROLS: + ToggleNoControls(); +// fSettingsMenu->ItemAt(3)->SetMarked(fNoControls); + 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_NO_CONTROLS: + ToggleNoBorderNoMenu(); + break; + + /* case B_ACQUIRE_OVERLAY_LOCK: @@ -1046,36 +1206,6 @@ MainWin::MessageReceived(BMessage *msg) 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_ABOUT: - BAlert *alert; - alert = new BAlert("about", NAME"\n\n" - INFO1 - "\n\nCopyright "COPYRIGHT"\n\nVersion "VERSION"\n\nRevision "REVISION"\n\nBuild "BUILD, "Thanks"); - if (fAlwaysOnTop) { - ToggleAlwaysOnTop(); - alert->Go(); - ToggleAlwaysOnTop(); - } else { - alert->Go(); - } - 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) { @@ -1086,34 +1216,6 @@ MainWin::MessageReceived(BMessage *msg) // 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; diff --git a/src/apps/mediaplayer/MainWin.h b/src/apps/mediaplayer/MainWin.h index d483a271b2..b05d14cb2b 100644 --- a/src/apps/mediaplayer/MainWin.h +++ b/src/apps/mediaplayer/MainWin.h @@ -51,6 +51,9 @@ public: void OpenFile(const entry_ref &ref); void SetupWindow(); void SetupTrackMenus(); + void SetWindowSizeLimits(); + + void ShowFileInfo(); void VideoFormatChange(int width, int height, float width_scale, float height_scale); @@ -64,6 +67,7 @@ public: void ToggleAlwaysOnTop(); void ToggleNoBorder(); void ToggleNoMenu(); + void ToggleNoControls(); void ToggleNoBorderNoMenu(); void ShowContextMenu(const BPoint &screen_point); @@ -72,7 +76,7 @@ public: BView * fBackground; VideoView * fVideoView; BFilePanel * fFilePanel; - ControllerView * fControllerView; + ControllerView * fControls; BMenu * fFileMenu; BMenu * fViewMenu; @@ -90,11 +94,14 @@ public: volatile bool fAlwaysOnTop; volatile bool fNoMenu; volatile bool fNoBorder; + volatile bool fNoControls; int fSourceWidth; int fSourceHeight; float fWidthScale; float fHeightScale; int fMenuBarHeight; + int fControlsHeight; + int fControlsWidth; BRect fSavedFrame; bool fMouseDownTracking; BPoint fMouseDownMousePos; @@ -102,6 +109,7 @@ public: bool fFrameResizedTriggeredAutomatically; bool fIgnoreFrameResized; bool fFrameResizedCalled; + BRect fVideoViewBounds; }; #endif diff --git a/src/apps/mediaplayer/VideoView.cpp b/src/apps/mediaplayer/VideoView.cpp index f7aed5ee92..b976d7ce28 100644 --- a/src/apps/mediaplayer/VideoView.cpp +++ b/src/apps/mediaplayer/VideoView.cpp @@ -29,7 +29,8 @@ VideoView::VideoView(BRect frame, const char *name, uint32 resizeMask, uint32 fl , fController(NULL) , fOverlayActive(false) { - SetViewColor(B_TRANSPARENT_COLOR); +// SetViewColor(B_TRANSPARENT_COLOR); + SetViewColor(127,255,127); }