X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fbeos%2FInterfaceWindow.cpp;h=7963152fbeae0b6c6f72796493b2d1ed316cf43d;hb=d79a68397146126b899966f9e7816e063ec270c1;hp=8abc37dc99bd14d7c290599f87170d320983ecb7;hpb=ec48ad6cc8facaa1986dd58fefbf6326caf3bfce;p=vlc diff --git a/modules/gui/beos/InterfaceWindow.cpp b/modules/gui/beos/InterfaceWindow.cpp index 8abc37dc99..7963152fbe 100644 --- a/modules/gui/beos/InterfaceWindow.cpp +++ b/modules/gui/beos/InterfaceWindow.cpp @@ -2,7 +2,7 @@ * InterfaceWindow.cpp: beos interface ***************************************************************************** * Copyright (C) 1999, 2000, 2001 VideoLAN - * $Id: InterfaceWindow.cpp,v 1.37 2003/05/07 14:49:19 titer Exp $ + * $Id$ * * Authors: Jean-Marc Dressler * Samuel Hocevar @@ -204,10 +204,10 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char* name, screen_rect.right - 150, screen_rect.top + 250 ); fPlaylistWindow = new PlayListWindow( window_rect, _("Playlist"), this, p_intf ); - window_rect.Set( screen_rect.right - 500, + window_rect.Set( screen_rect.right - 550, screen_rect.top + 300, screen_rect.right - 150, - screen_rect.top + 600 ); + screen_rect.top + 500 ); fMessagesWindow = new MessagesWindow( p_intf, window_rect, _("Messages") ); // the media control view @@ -244,7 +244,7 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char* name, fileMenu->AddItem( new BMenuItem( _AddEllipsis(_("Open Subtitles")), new BMessage( LOAD_SUBFILE ) ) ); - + fileMenu->AddSeparatorItem(); BMenuItem* item = new BMenuItem( _AddEllipsis(_("About")), new BMessage( B_ABOUT_REQUESTED ), 'A'); @@ -263,8 +263,8 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char* name, fPrevTitleMI = new BMenuItem( _("Prev Title"), new BMessage( PREV_TITLE ) ); fNextTitleMI = new BMenuItem( _("Next Title"), new BMessage( NEXT_TITLE ) ); - fPrevChapterMI = new BMenuItem( _("Prev Chapter"), new BMessage( PREV_CHAPTER ) ); - fNextChapterMI = new BMenuItem( _("Next Chapter"), new BMessage( NEXT_CHAPTER ) ); + fPrevChapterMI = new BMenuItem( _("Previous chapter"), new BMessage( PREV_CHAPTER ) ); + fNextChapterMI = new BMenuItem( _("Next chapter"), new BMessage( NEXT_CHAPTER ) ); fGotoMenuMI = new BMenuItem( _("Goto Menu"), new BMessage( NAVIGATE_MENU ) ); /* Add the Navigation menu */ @@ -283,29 +283,37 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char* name, /* Add the Speed menu */ fSpeedMenu = new BMenu( _("Speed") ); fSpeedMenu->SetRadioMode( true ); - fSpeedMenu->AddItem( fSlowerMI = new BMenuItem( _("Slower"), new BMessage( SLOWER_PLAY ) ) ); - fNormalMI = new BMenuItem( _("Normal"), new BMessage( NORMAL_PLAY ) ); - fNormalMI->SetMarked(true); // default to normal speed - fSpeedMenu->AddItem( fNormalMI ); - fSpeedMenu->AddItem( fFasterMI = new BMenuItem( _("Faster"), new BMessage( FASTER_PLAY) ) ); - fSpeedMenu->SetTargetForItems( this ); + fSpeedMenu->AddItem( + fHeighthMI = new BMenuItem( "1/8x", new BMessage( HEIGHTH_PLAY ) ) ); + fSpeedMenu->AddItem( + fQuarterMI = new BMenuItem( "1/4x", new BMessage( QUARTER_PLAY ) ) ); + fSpeedMenu->AddItem( + fHalfMI = new BMenuItem( "1/2x", new BMessage( HALF_PLAY ) ) ); + fSpeedMenu->AddItem( + fNormalMI = new BMenuItem( "1x", new BMessage( NORMAL_PLAY ) ) ); + fSpeedMenu->AddItem( + fTwiceMI = new BMenuItem( "2x", new BMessage( TWICE_PLAY ) ) ); + fSpeedMenu->AddItem( + fFourMI = new BMenuItem( "4x", new BMessage( FOUR_PLAY ) ) ); + fSpeedMenu->AddItem( + fHeightMI = new BMenuItem( "8x", new BMessage( HEIGHT_PLAY ) ) ); fMenuBar->AddItem( fSpeedMenu ); /* Add the Show menu */ fShowMenu = new BMenu( _("Window") ); - fShowMenu->AddItem( new BMenuItem( _AddEllipsis(_("Play List")), + fShowMenu->AddItem( new BMenuItem( _AddEllipsis(_("Playlist")), new BMessage( OPEN_PLAYLIST ), 'P') ); fShowMenu->AddItem( new BMenuItem( _AddEllipsis(_("Messages")), new BMessage( OPEN_MESSAGES ), 'M' ) ); fShowMenu->AddItem( new BMenuItem( _AddEllipsis(_("Preferences")), new BMessage( OPEN_PREFERENCES ), 'S' ) ); - fMenuBar->AddItem( fShowMenu ); + fMenuBar->AddItem( fShowMenu ); /* Prepare fow showing */ _SetMenusEnabled( false ); p_mediaControl->SetEnabled( false ); - _RestoreSettings(); + _RestoreSettings(); Show(); } @@ -359,13 +367,13 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) } case TOGGLE_ON_TOP: break; - + case OPEN_FILE: - _ShowFilePanel( B_REFS_RECEIVED, _("VideoLAN Client: Open Media Files") ); + _ShowFilePanel( B_REFS_RECEIVED, _("VLC media player: Open Media Files") ); break; case LOAD_SUBFILE: - _ShowFilePanel( SUBFILE_RECEIVED, _("VideoLAN Client: Open Subtitle File") ); + _ShowFilePanel( SUBFILE_RECEIVED, _("VLC media player: Open Subtitle File") ); break; case OPEN_PLAYLIST: @@ -390,7 +398,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) _UpdatePlaylist(); } break; - + case SUBFILE_RECEIVED: { entry_ref ref; @@ -402,13 +410,13 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) } break; } - + case STOP_PLAYBACK: // this currently stops playback not nicely if (playback_status > UNDEF_S) { p_wrapper->PlaylistStop(); - p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE); + p_mediaControl->SetStatus(UNDEF_S, DEFAULT_RATE); } break; @@ -436,30 +444,34 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) } break; - case FASTER_PLAY: - /* cycle the fast playback modes */ - if (playback_status > UNDEF_S) - { - p_wrapper->InputFaster(); - } + case HEIGHTH_PLAY: + p_wrapper->InputSetRate( DEFAULT_RATE * 8 ); break; - - case SLOWER_PLAY: - /* cycle the slow playback modes */ - if (playback_status > UNDEF_S) - { - p_wrapper->InputSlower(); - } + + case QUARTER_PLAY: + p_wrapper->InputSetRate( DEFAULT_RATE * 4 ); break; - + + case HALF_PLAY: + p_wrapper->InputSetRate( DEFAULT_RATE * 2 ); + break; + case NORMAL_PLAY: - /* restore speed to normal if already playing */ - if (playback_status > UNDEF_S) - { - p_wrapper->PlaylistPlay(); - } + p_wrapper->InputSetRate( DEFAULT_RATE ); break; - + + case TWICE_PLAY: + p_wrapper->InputSetRate( DEFAULT_RATE / 2 ); + break; + + case FOUR_PLAY: + p_wrapper->InputSetRate( DEFAULT_RATE / 4 ); + break; + + case HEIGHT_PLAY: + p_wrapper->InputSetRate( DEFAULT_RATE / 8 ); + break; + case SEEK_PLAYBACK: /* handled by semaphores */ break; @@ -710,7 +722,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) bool InterfaceWindow::QuitRequested() { p_wrapper->PlaylistStop(); - p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE); + p_mediaControl->SetStatus(UNDEF_S, DEFAULT_RATE); _StoreSettings(); @@ -846,8 +858,7 @@ InterfaceWindow::_SetMenusEnabled(bool hasFile, bool hasChapters, bool hasTitles if ( fSpeedMenu->IsEnabled() != hasFile ) fSpeedMenu->SetEnabled( hasFile ); // "goto menu" menu item - bool hasMenu = config_GetInt( p_intf, "beos-dvdmenus" ) ? - hasTitles : false; + bool hasMenu = p_wrapper->IsUsingMenus(); if ( fGotoMenuMI->IsEnabled() != hasMenu ) fGotoMenuMI->SetEnabled( hasMenu ); Unlock(); @@ -860,32 +871,41 @@ InterfaceWindow::_SetMenusEnabled(bool hasFile, bool hasChapters, bool hasTitles void InterfaceWindow::_UpdateSpeedMenu( int rate ) { - if ( rate == DEFAULT_RATE ) - { - if ( !fNormalMI->IsMarked() ) - fNormalMI->SetMarked( true ); - } - else if ( rate < DEFAULT_RATE ) - { - if ( !fFasterMI->IsMarked() ) - fFasterMI->SetMarked( true ); - } - else + BMenuItem * toMark = NULL; + + switch( rate ) { - if ( !fSlowerMI->IsMarked() ) - fSlowerMI->SetMarked( true ); + case ( DEFAULT_RATE * 8 ): + toMark = fHeighthMI; + break; + + case ( DEFAULT_RATE * 4 ): + toMark = fQuarterMI; + break; + + case ( DEFAULT_RATE * 2 ): + toMark = fHalfMI; + break; + + case ( DEFAULT_RATE ): + toMark = fNormalMI; + break; + + case ( DEFAULT_RATE / 2 ): + toMark = fTwiceMI; + break; + + case ( DEFAULT_RATE / 4 ): + toMark = fFourMI; + break; + + case ( DEFAULT_RATE / 8 ): + toMark = fHeightMI; + break; } -} -/***************************************************************************** - * InterfaceWindow::_InputStreamChanged - *****************************************************************************/ -void -InterfaceWindow::_InputStreamChanged() -{ - // TODO: move more stuff from updateInterface() here! - snooze( 400000 ); - p_wrapper->SetVolume( p_mediaControl->GetVolume() ); + if ( !toMark->IsMarked() ) + toMark->SetMarked( true ); } /***************************************************************************** @@ -965,9 +985,9 @@ InterfaceWindow::_RestoreSettings() set_window_pos( fMessagesWindow, frame ); if (fSettings->FindRect( "settings frame", &frame ) == B_OK ) { - /* FIXME: Preferences horizontal resizing doesn't work - correctly now */ + /* FIXME: Preferences resizing doesn't work correctly yet */ frame.right = frame.left + fPreferencesWindow->Frame().Width(); + frame.bottom = frame.top + fPreferencesWindow->Frame().Height(); set_window_pos( fPreferencesWindow, frame ); } @@ -991,6 +1011,11 @@ InterfaceWindow::_RestoreSettings() void InterfaceWindow::_StoreSettings() { + /* Save the volume */ + config_PutInt( p_intf, "volume", p_mediaControl->GetVolume() ); + config_SaveConfigFile( p_intf, "main" ); + + /* Save the windows positions */ if ( fSettings->ReplaceRect( "main frame", Frame() ) != B_OK ) fSettings->AddRect( "main frame", Frame() ); if ( fPlaylistWindow->Lock() ) @@ -1083,7 +1108,7 @@ int CDMenu::GetCD( const char *directory ) /***************************************************************************** * LanguageMenu::LanguageMenu *****************************************************************************/ -LanguageMenu::LanguageMenu( const char *name, int menu_kind, +LanguageMenu::LanguageMenu( const char *name, int menu_kind, VlcWrapper *p_wrapper ) :BMenu(name) {