* 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 <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org>
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
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');
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 */
/* 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();
}
}
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:
_UpdatePlaylist();
}
break;
-
+
case SUBFILE_RECEIVED:
{
entry_ref ref;
}
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;
}
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;
bool InterfaceWindow::QuitRequested()
{
p_wrapper->PlaylistStop();
- p_mediaControl->SetStatus(NOT_STARTED_S, DEFAULT_RATE);
+ p_mediaControl->SetStatus(UNDEF_S, DEFAULT_RATE);
_StoreSettings();
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();
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 );
}
/*****************************************************************************
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 );
}
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() )
/*****************************************************************************
* LanguageMenu::LanguageMenu
*****************************************************************************/
-LanguageMenu::LanguageMenu( const char *name, int menu_kind,
+LanguageMenu::LanguageMenu( const char *name, int menu_kind,
VlcWrapper *p_wrapper )
:BMenu(name)
{