]> git.sesse.net Git - vlc/blobdiff - modules/gui/beos/InterfaceWindow.cpp
Install new required files for skins2 on make install
[vlc] / modules / gui / beos / InterfaceWindow.cpp
index 8abc37dc99bd14d7c290599f87170d320983ecb7..7963152fbeae0b6c6f72796493b2d1ed316cf43d 100644 (file)
@@ -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 <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -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)
 {