* Fixed title / chapter menus
authorEric Petit <titer@videolan.org>
Wed, 22 Jan 2003 01:13:22 +0000 (01:13 +0000)
committerEric Petit <titer@videolan.org>
Wed, 22 Jan 2003 01:13:22 +0000 (01:13 +0000)
 * Clean up

modules/gui/beos/InterfaceWindow.cpp
modules/gui/beos/InterfaceWindow.h
modules/gui/beos/ListViews.cpp
modules/gui/beos/ListViews.h
modules/gui/beos/MediaControlView.cpp
modules/gui/beos/PlayListWindow.cpp
modules/gui/beos/VlcWrapper.cpp
modules/gui/beos/VlcWrapper.h

index 3dd0975..8746a42 100644 (file)
@@ -2,7 +2,7 @@
  * InterfaceWindow.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: InterfaceWindow.cpp,v 1.19 2003/01/17 18:19:43 titer Exp $
+ * $Id: InterfaceWindow.cpp,v 1.20 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -64,8 +64,7 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name,
          p_intf( p_interface ),
          fFilePanel( NULL ),
          fSubtitlesPanel( NULL ),
-         fLastUpdateTime( system_time() ),
-         fSettings( new BMessage( 'sett' ) )
+         fLastUpdateTime( system_time() )
 {
     p_intf = p_interface;
     p_wrapper = p_intf->p_sys->p_wrapper;
@@ -186,8 +185,6 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name,
        _SetMenusEnabled( false );
        p_mediaControl->SetEnabled( false );
 
-       _RestoreSettings();
-
        Show();
 }
 
@@ -195,7 +192,6 @@ InterfaceWindow::~InterfaceWindow()
 {
        if (fPlaylistWindow)
                fPlaylistWindow->ReallyQuit();
-       delete fSettings;
 }
 
 /*****************************************************************************
@@ -260,7 +256,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
                                if( p_message->FindString( "device", &psz_device ) == B_OK )
                                {
                                        BString device( psz_device );
-                                       p_wrapper->openDisc( type, device, 0, 0 );
+                                       p_wrapper->OpenDisc( type, device, 0, 0 );
                                }
                                _UpdatePlaylist();
                        }
@@ -405,8 +401,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
                        if ( playback_status > UNDEF_S )
                        {
                                int32 index;
-                               if ( p_message->FindInt32( "index", &index ) == B_OK )
-                                       p_wrapper->toggleTitle( index );
+                               if( p_message->FindInt32( "index", &index ) == B_OK )
+                                       p_wrapper->ToggleTitle( index );
                        }
                        break;
                case PREV_CHAPTER:
@@ -423,8 +419,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
                        if ( playback_status > UNDEF_S )
                        {
                                int32 index;
-                               if ( p_message->FindInt32( "index", &index ) == B_OK )
-                     p_wrapper->toggleChapter( index );
+                               if( p_message->FindInt32( "index", &index ) == B_OK )
+                    p_wrapper->ToggleChapter( index );
                        }
                        break;
                case PREV_FILE:
@@ -435,10 +431,10 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
                        break;
                // general next/prev functionality (skips to whatever makes most sense)
                case NAVIGATE_PREV:
-                       p_wrapper->navigatePrev();
+                       p_wrapper->NavigatePrev();
                        break;
                case NAVIGATE_NEXT:
-                       p_wrapper->navigateNext();
+                       p_wrapper->NavigateNext();
                        break;
                // drag'n'drop and system messages
                case B_REFS_RECEIVED:
@@ -526,7 +522,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
                                        }
                                }
                                // give the list to VLC
-                               p_wrapper->openFiles(&files, replace);
+                               p_wrapper->OpenFiles(&files, replace);
                                _UpdatePlaylist();
                        }
                        break;
@@ -559,8 +555,6 @@ bool InterfaceWindow::QuitRequested()
        
        p_intf->b_die = 1;
 
-       _StoreSettings();
-
        return( true );
 }
 
@@ -573,7 +567,7 @@ void InterfaceWindow::updateInterface()
     {
                if ( acquire_sem( p_mediaControl->fScrubSem ) == B_OK )
                {
-                   p_wrapper->setTimeAsFloat(p_mediaControl->GetSeekTo());
+                   p_wrapper->SetTimeAsFloat(p_mediaControl->GetSeekTo());
                }
                else if ( Lock() )
                {
@@ -582,7 +576,7 @@ void InterfaceWindow::updateInterface()
                        bool hasChapters = p_wrapper->HasChapters();
                        p_mediaControl->SetStatus( p_wrapper->InputStatus(), 
                                                                           p_wrapper->InputRate() );
-                       p_mediaControl->SetProgress( p_wrapper->getTimeAsFloat() );
+                       p_mediaControl->SetProgress( p_wrapper->GetTimeAsFloat() );
                        _SetMenusEnabled( true, hasChapters, hasTitles );
 
                        _UpdateSpeedMenu( p_wrapper->InputRate() );
@@ -590,7 +584,7 @@ void InterfaceWindow::updateInterface()
                        // enable/disable skip buttons
                        bool canSkipPrev;
                        bool canSkipNext;
-                       p_wrapper->getNavCapabilities( &canSkipPrev, &canSkipNext );
+                       p_wrapper->GetNavCapabilities( &canSkipPrev, &canSkipNext );
                        p_mediaControl->SetSkippable( canSkipPrev, canSkipNext );
 
                        if ( p_wrapper->HasAudio() )
@@ -716,99 +710,11 @@ InterfaceWindow::_UpdateSpeedMenu( int rate )
 void
 InterfaceWindow::_InputStreamChanged()
 {
-//printf("InterfaceWindow::_InputStreamChanged()\n");
        // TODO: move more stuff from updateInterface() here!
        snooze( 400000 );
        p_wrapper->SetVolume( p_mediaControl->GetVolume() );
 }
 
-/*****************************************************************************
- * InterfaceWindow::_LoadSettings
- *****************************************************************************/
-status_t
-InterfaceWindow::_LoadSettings( BMessage* message, const char* fileName, const char* folder )
-{
-       status_t ret = B_BAD_VALUE;
-       if ( message )
-       {
-               BPath path;
-               if ( ( ret = find_directory( B_USER_SETTINGS_DIRECTORY, &path ) ) == B_OK )
-               {
-                       // passing folder is optional
-                       if ( folder )
-                               ret = path.Append( folder );
-                       if ( ret == B_OK && ( ret = path.Append( fileName ) ) == B_OK )
-                       {
-                               BFile file( path.Path(), B_READ_ONLY );
-                               if ( ( ret = file.InitCheck() ) == B_OK )
-                               {
-                                       ret = message->Unflatten( &file );
-                                       file.Unset();
-                               }
-                       }
-               }
-       }
-       return ret;
-}
-
-/*****************************************************************************
- * InterfaceWindow::_SaveSettings
- *****************************************************************************/
-status_t
-InterfaceWindow::_SaveSettings( BMessage* message, const char* fileName, const char* folder )
-{
-       status_t ret = B_BAD_VALUE;
-       if ( message )
-       {
-               BPath path;
-               if ( ( ret = find_directory( B_USER_SETTINGS_DIRECTORY, &path ) ) == B_OK )
-               {
-                       // passing folder is optional
-                       if ( folder && ( ret = path.Append( folder ) ) == B_OK )
-                               ret = create_directory( path.Path(), 0777 );
-                       if ( ret == B_OK && ( ret = path.Append( fileName ) ) == B_OK )
-                       {
-                               BFile file( path.Path(), B_WRITE_ONLY | B_CREATE_FILE | B_ERASE_FILE );
-                               if ( ( ret = file.InitCheck() ) == B_OK )
-                               {
-                                       ret = message->Flatten( &file );
-                                       file.Unset();
-                               }
-                       }
-               }
-       }
-       return ret;
-}
-
-/*****************************************************************************
- * InterfaceWindow::_RestoreSettings
- *****************************************************************************/
-bool
-make_sure_frame_is_on_screen( BRect& frame )
-{
-       BScreen screen( B_MAIN_SCREEN_ID );
-       if (frame.IsValid() && screen.IsValid()) {
-               if (!screen.Frame().Contains(frame)) {
-                       // make sure frame fits in the screen
-                       if (frame.Width() > screen.Frame().Width())
-                               frame.right -= frame.Width() - screen.Frame().Width() + 10.0;
-                       if (frame.Height() > screen.Frame().Height())
-                               frame.bottom -= frame.Height() - screen.Frame().Height() + 30.0;
-                       // frame is now at the most the size of the screen
-                       if (frame.right > screen.Frame().right)
-                               frame.OffsetBy(-(frame.right - screen.Frame().right), 0.0);
-                       if (frame.bottom > screen.Frame().bottom)
-                               frame.OffsetBy(0.0, -(frame.bottom - screen.Frame().bottom));
-                       if (frame.left < screen.Frame().left)
-                               frame.OffsetBy((screen.Frame().left - frame.left), 0.0);
-                       if (frame.top < screen.Frame().top)
-                               frame.OffsetBy(0.0, (screen.Frame().top - frame.top));
-               }
-               return true;
-       }
-       return false;
-}
-
 void
 make_sure_frame_is_within_limits( BRect& frame, float minWidth, float minHeight,
                                                                  float maxWidth, float maxHeight )
@@ -823,87 +729,6 @@ make_sure_frame_is_within_limits( BRect& frame, float minWidth, float minHeight,
                frame.bottom = frame.top + maxHeight;
 }
 
-/*****************************************************************************
- * InterfaceWindow::_RestoreSettings
- *****************************************************************************/
-void
-InterfaceWindow::_RestoreSettings()
-{
-       if ( _LoadSettings( fSettings, "interface_settings", "VideoLAN Client" ) == B_OK )
-       {
-               BRect mainFrame;
-               if ( fSettings->FindRect( "main frame", &mainFrame ) == B_OK )
-               {
-                       // sanity checks: make sure window is not too big/small
-                       // and that it's not off-screen
-                       float minWidth, maxWidth, minHeight, maxHeight;
-                       GetSizeLimits( &minWidth, &maxWidth, &minHeight, &maxHeight );
-
-                       make_sure_frame_is_within_limits( mainFrame,
-                                                                                         minWidth, minHeight, maxWidth, maxHeight );
-                       make_sure_frame_is_on_screen( mainFrame );
-
-
-                       MoveTo( mainFrame.LeftTop() );
-                       ResizeTo( mainFrame.Width(), mainFrame.Height() );
-               }
-               if ( fPlaylistWindow->Lock() )
-               {
-                       BRect playlistFrame;
-                       if (fSettings->FindRect( "playlist frame", &playlistFrame ) == B_OK )
-                       {
-                               // sanity checks: make sure window is not too big/small
-                               // and that it's not off-screen
-                               float minWidth, maxWidth, minHeight, maxHeight;
-                               fPlaylistWindow->GetSizeLimits( &minWidth, &maxWidth, &minHeight, &maxHeight );
-
-                               make_sure_frame_is_within_limits( playlistFrame,
-                                                                                                 minWidth, minHeight, maxWidth, maxHeight );
-                               make_sure_frame_is_on_screen( playlistFrame );
-
-                               fPlaylistWindow->MoveTo( playlistFrame.LeftTop() );
-                               fPlaylistWindow->ResizeTo( playlistFrame.Width(), playlistFrame.Height() );
-                       }
-                       
-                       bool showing;
-                       if ( fSettings->FindBool( "playlist showing", &showing ) == B_OK )
-                       {
-                               if ( showing )
-                               {
-                                       if ( fPlaylistWindow->IsHidden() )
-                                               fPlaylistWindow->Show();
-                               }
-                               else
-                               {
-                                       if ( !fPlaylistWindow->IsHidden() )
-                                               fPlaylistWindow->Hide();
-                               }
-                       }
-
-                       fPlaylistWindow->Unlock();
-               }
-       }
-}
-
-/*****************************************************************************
- * InterfaceWindow::_StoreSettings
- *****************************************************************************/
-void
-InterfaceWindow::_StoreSettings()
-{
-       if ( fSettings->ReplaceRect( "main frame", Frame() ) != B_OK )
-               fSettings->AddRect( "main frame", Frame() );
-       if ( fPlaylistWindow->Lock() )
-       {
-               if (fSettings->ReplaceRect( "playlist frame", fPlaylistWindow->Frame() ) != B_OK)
-                       fSettings->AddRect( "playlist frame", fPlaylistWindow->Frame() );
-               if (fSettings->ReplaceBool( "playlist showing", !fPlaylistWindow->IsHidden() ) != B_OK)
-                       fSettings->AddBool( "playlist showing", !fPlaylistWindow->IsHidden() );
-               fPlaylistWindow->Unlock();
-       }
-       _SaveSettings( fSettings, "interface_settings", "VideoLAN Client" );
-}
-
 /*****************************************************************************
  * CDMenu::CDMenu
  *****************************************************************************/
@@ -1026,7 +851,7 @@ void LanguageMenu::_GetChannels()
     BMenuItem *item;
     BList *list;
     
-    if( ( list = p_wrapper->InputGetChannels( kind ) ) == NULL )
+    if( ( list = p_wrapper->GetChannels( kind ) ) == NULL )
         return;
     
     for( int i = 0; i < list->CountItems(); i++ )
@@ -1061,36 +886,21 @@ TitleMenu::~TitleMenu()
  *****************************************************************************/
 void TitleMenu::AttachedToWindow()
 {
-       // make title menu empty
-       while ( BMenuItem* item = RemoveItem( 0L ) )
-               delete item;
+    BMenuItem *item;
+    BList *list;
 
-#if 0
-       input_thread_t* input = p_intf->p_sys->p_input;
-       if ( input )
-       {
-               // lock stream access
-               vlc_mutex_lock( &input->stream.stream_lock );
-               // populate menu according to current stream
-               int32 numTitles = input->stream.i_area_nb;
-               if ( numTitles > 1 )
-               {
-                       // disallow title 0!
-                       for ( int32 i = 1; i < numTitles; i++ )
-                       {
-                               BMessage* message = new BMessage( TOGGLE_TITLE );
-                               message->AddInt32( "index", i );
-                               BString helper( "" );
-                               helper << i;
-                               BMenuItem* item = new BMenuItem( helper.String(), message );
-                               item->SetMarked( input->stream.p_selected_area->i_id == i );
-                               AddItem( item );
-                       }
-               }
-               // done messing with stream
-               vlc_mutex_unlock( &input->stream.stream_lock );
-       }
-#endif
+       while( ( item = RemoveItem( 0L ) ) )
+               delete item;
+    
+    if( ( list = p_intf->p_sys->p_wrapper->GetTitles() ) == NULL )
+        return;
+    
+    for( int i = 0; i < list->CountItems(); i++ )
+    {
+        item = (BMenuItem*)list->ItemAt( i );
+        AddItem( item );
+    }
+    
        BMenu::AttachedToWindow();
 }
 
@@ -1116,35 +926,21 @@ ChapterMenu::~ChapterMenu()
  *****************************************************************************/
 void ChapterMenu::AttachedToWindow()
 {
-       // make title menu empty
-       while ( BMenuItem* item = RemoveItem( 0L ) )
-               delete item;
+    BMenuItem *item;
+    BList *list;
 
-#if 0
-       input_thread_t* input = p_intf->p_sys->p_input;
-       if ( input )
-       {
-               // lock stream access
-               vlc_mutex_lock( &input->stream.stream_lock );
-               // populate menu according to current stream
-               int32 numChapters = input->stream.p_selected_area->i_part_nb;
-               if ( numChapters > 1 )
-               {
-                       for ( int32 i = 0; i < numChapters; i++ )
-                       {
-                               BMessage* message = new BMessage( TOGGLE_CHAPTER );
-                               message->AddInt32( "index", i );
-                               BString helper( "" );
-                               helper << i + 1;
-                               BMenuItem* item = new BMenuItem( helper.String(), message );
-                               item->SetMarked( input->stream.p_selected_area->i_part == i );
-                               AddItem( item );
-                       }
-               }
-               // done messing with stream
-               vlc_mutex_unlock( &input->stream.stream_lock );
-       }
+       while( ( item = RemoveItem( 0L ) ) )
+               delete item;
+    
+    if( ( list = p_intf->p_sys->p_wrapper->GetChapters() ) == NULL )
+        return;
+    
+    for( int i = 0; i < list->CountItems(); i++ )
+    {
+        item = (BMenuItem*)list->ItemAt( i );
+        AddItem( item );
+    }
+    
        BMenu::AttachedToWindow();
-#endif
 }
 
index 69a0840..67300fb 100644 (file)
@@ -2,7 +2,7 @@
  * InterfaceWindow.h: BeOS interface window class prototype
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: InterfaceWindow.h,v 1.8 2003/01/14 14:48:55 titer Exp $
+ * $Id: InterfaceWindow.h,v 1.9 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Tony Castley <tcastley@mail.powerup.com.au>
@@ -114,14 +114,6 @@ class InterfaceWindow : public BWindow
                                                                                          bool hasTitles = false );
                        void                    _UpdateSpeedMenu( int rate );
                        void                    _InputStreamChanged();
-                       status_t                _LoadSettings( BMessage* message,
-                                                                                  const char* fileName,
-                                                                                  const char* subFolder = NULL );
-                       status_t                _SaveSettings( BMessage* message,
-                                                                                  const char* fileName,
-                                                                                  const char* subFolder = NULL );
-                       void                    _RestoreSettings();
-                       void                    _StoreSettings();
 
        intf_thread_t*                  p_intf;
        es_descriptor_t*                p_spu_es;
@@ -150,8 +142,6 @@ class InterfaceWindow : public BWindow
        BMenu*                                  fSpeedMenu;
        BMenu*                                  fSettingsMenu;
        bigtime_t                               fLastUpdateTime;
-       BMessage*                               fSettings;      // we keep the message arround
-                                                                               // for forward compatibility
        
        VlcWrapper * p_wrapper;
 };
index 81144f9..130cb16 100644 (file)
@@ -2,7 +2,7 @@
  * ListViews.h: BeOS interface list view class implementation
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: ListViews.cpp,v 1.1 2002/09/30 18:30:27 titer Exp $
+ * $Id: ListViews.cpp,v 1.2 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Stephan Aßmus <stippi@yellowbites.com>
  *
@@ -475,7 +475,8 @@ DragSortableListView::DrawItem( BListItem *item, BRect itemFrame, bool complete
 /*****************************************************************************
  * PlaylistView class
  *****************************************************************************/
-PlaylistView::PlaylistView( BRect frame, InterfaceWindow* mainWindow )
+PlaylistView::PlaylistView( BRect frame, InterfaceWindow* mainWindow,
+                            VlcWrapper * p_wrapper )
        : DragSortableListView( frame, "playlist listview",
                                                        B_MULTIPLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES,
                                                        B_WILL_DRAW | B_NAVIGABLE | B_PULSE_NEEDED
@@ -484,6 +485,7 @@ PlaylistView::PlaylistView( BRect frame, InterfaceWindow* mainWindow )
          fPlaying( false ),
          fMainWindow( mainWindow )
 {
+    this->p_wrapper = p_wrapper;
 }
 
 PlaylistView::~PlaylistView()
@@ -516,7 +518,7 @@ PlaylistView::MouseDown( BPoint where )
                {
                        if ( clicks == 2 )
                        {
-                               /* Intf_VLCWrapper::playlistJumpTo( i ); */
+                               p_wrapper->PlaylistJumpTo( i );
                                handled = true;
                        }
                        else if ( i == fCurrentIndex )
index 9e01962..bbe715c 100644 (file)
@@ -2,7 +2,7 @@
  * ListViews.h: BeOS interface list view class prototype
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: ListViews.h,v 1.1 2002/09/30 18:30:27 titer Exp $
+ * $Id: ListViews.h,v 1.2 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Stephan Aßmus <stippi@yellowbites.com>
  *
@@ -87,7 +87,8 @@ class PlaylistView : public DragSortableListView
 {
  public:
                                                        PlaylistView( BRect frame,
-                                                                                 InterfaceWindow* mainWindow );
+                                                                                 InterfaceWindow* mainWindow,
+                                                                                 VlcWrapper * p_wrapper );
                                                        ~PlaylistView();
 
                                                        // BListView
@@ -110,6 +111,8 @@ class PlaylistView : public DragSortableListView
        int32                                   fCurrentIndex;
        bool                                    fPlaying;
        InterfaceWindow*                fMainWindow;
+       
+       VlcWrapper *            p_wrapper;
 };
 
 #endif // LIST_VIEWS_H
index eb11b33..0cdff09 100644 (file)
@@ -2,7 +2,7 @@
  * MediaControlView.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: MediaControlView.cpp,v 1.10 2003/01/12 02:08:38 titer Exp $
+ * $Id: MediaControlView.cpp,v 1.11 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Tony Castley <tony@castley.net>
  *          Stephan Aßmus <stippi@yellowbites.com>
@@ -1311,13 +1311,13 @@ PositionInfoView::Pulse()
        if ( now - fLastPulseUpdate > 900000 )
        {
                int32 index, size;
-               p_intf->p_sys->p_wrapper->getPlaylistInfo( index, size );
+               p_intf->p_sys->p_wrapper->GetPlaylistInfo( index, size );
                SetFile( index, size );
                p_intf->p_sys->p_wrapper->TitleInfo( index, size );
                SetTitle( index, size );
                p_intf->p_sys->p_wrapper->ChapterInfo( index, size );
                SetChapter( index, size );
-               SetTime( p_intf->p_sys->p_wrapper->getTimeAsString() );
+               SetTime( p_intf->p_sys->p_wrapper->GetTimeAsString() );
                fLastPulseUpdate = now;
        }
 }
index da289eb..be8a271 100644 (file)
@@ -2,7 +2,7 @@
  * PlayListWindow.cpp: beos interface
  *****************************************************************************
  * Copyright (C) 1999, 2000, 2001 VideoLAN
- * $Id: PlayListWindow.cpp,v 1.5 2002/12/09 07:57:04 titer Exp $
+ * $Id: PlayListWindow.cpp,v 1.6 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
  *          Samuel Hocevar <sam@zoy.org>
@@ -130,7 +130,7 @@ editMenu->SetEnabled( false );
        frame.top += fMenuBar->Bounds().IntegerHeight() + 1;
        frame.right -= B_V_SCROLL_BAR_WIDTH;
 
-       fListView = new PlaylistView( frame, fMainWindow );
+       fListView = new PlaylistView( frame, fMainWindow, p_wrapper );
        fBackgroundView = new BScrollView( "playlist scrollview",
                                                                           fListView, B_FOLLOW_ALL_SIDES,
                                                                           0, false, true,
index f282269..9f9189d 100644 (file)
@@ -2,7 +2,7 @@
  * VlcWrapper.cpp: BeOS plugin for vlc (derived from MacOS X port)
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: VlcWrapper.cpp,v 1.20 2003/01/17 18:19:43 titer Exp $
+ * $Id: VlcWrapper.cpp,v 1.21 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Florian G. Pflug <fgp@phlo.org>
  *          Jon Lech Johansen <jon-vl@nanocrew.net>
@@ -106,11 +106,8 @@ bool VlcWrapper::UpdateInputAndAOut()
 bool VlcWrapper::HasInput()
 {
     return ( p_input != NULL );
-//    return ( PlaylistSize() > 0 );
 }
 
-/* status (UNDEF_S, PLAYING_S, PAUSE_S, FORWARD_S, BACKWARD_S,
-   REWIND_S, NOT_STARTED_S, START_S) */
 int VlcWrapper::InputStatus()
 {
     if( !p_input )
@@ -145,7 +142,7 @@ void VlcWrapper::InputFaster()
     }
 }
 
-BList * VlcWrapper::InputGetChannels( int i_cat )
+BList * VlcWrapper::GetChannels( int i_cat )
 {
     if( p_input )
     {
@@ -219,50 +216,6 @@ BList * VlcWrapper::InputGetChannels( int i_cat )
     return NULL;
 }
 
-void VlcWrapper::openFiles( BList* o_files, bool replace )
-{
-    BString *o_file;
-    int size = PlaylistSize();
-       bool wasEmpty = ( size < 1 );
-
-    /* delete current playlist */
-    if( replace )
-    {
-        for( int i = 0; i < size; i++ )
-        {
-            playlist_Delete( p_playlist, 0 );
-        }
-    }
-
-    /* append files */
-    while( ( o_file = (BString *)o_files->LastItem() ) )
-    {
-        playlist_Add( p_playlist, o_file->String(),
-                      PLAYLIST_APPEND, PLAYLIST_END );
-        o_files->RemoveItem(o_files->CountItems() - 1);
-    }
-    
-    /* eventually restart playing */
-    if( replace || wasEmpty )
-    {
-        playlist_Stop( p_playlist );
-        playlist_Play( p_playlist );
-    }
-}
-
-void VlcWrapper::openDisc(BString o_type, BString o_device, int i_title, int i_chapter)
-{
-    if( p_intf->p_sys->b_dvdold )
-        o_device.Prepend( "dvdold:" );
-    playlist_Add( p_playlist, o_device.String(),
-                  PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
-}
-
-void VlcWrapper::LoadSubFile( char * psz_file )
-{
-    config_PutPsz( p_intf, "sub-file", strdup( psz_file ) );
-}
-
 void VlcWrapper::ToggleLanguage( int i_language )
 {
     es_descriptor_t * p_es = NULL;
@@ -331,7 +284,7 @@ void VlcWrapper::ToggleSubtitle( int i_subtitle )
     }
 }
 
-const char*  VlcWrapper::getTimeAsString()
+const char * VlcWrapper::GetTimeAsString()
 {
     static char psz_currenttime[ OFFSETTOTIME_MAX_SIZE ];
         
@@ -347,7 +300,7 @@ const char*  VlcWrapper::getTimeAsString()
     return(psz_currenttime);
 }
 
-float  VlcWrapper::getTimeAsFloat()
+float VlcWrapper::GetTimeAsFloat()
 {
     float f_time = 0.0;
 
@@ -363,7 +316,7 @@ float  VlcWrapper::getTimeAsFloat()
     return( f_time );
 }
 
-void VlcWrapper::setTimeAsFloat(float f_position)
+void VlcWrapper::SetTimeAsFloat( float f_position )
 {
     if( p_input != NULL )
     {
@@ -399,9 +352,49 @@ bool VlcWrapper::IsPlaying()
 
 }
 
-/******************************
- * playlist infos and control *
- ******************************/
+/************
+ * playlist *
+ ************/
+
+void VlcWrapper::OpenFiles( BList* o_files, bool replace )
+{
+    BString *o_file;
+    int size = PlaylistSize();
+       bool wasEmpty = ( size < 1 );
+
+    /* delete current playlist */
+    if( replace )
+    {
+        for( int i = 0; i < size; i++ )
+        {
+            playlist_Delete( p_playlist, 0 );
+        }
+    }
+
+    /* append files */
+    while( ( o_file = (BString *)o_files->LastItem() ) )
+    {
+        playlist_Add( p_playlist, o_file->String(),
+                      PLAYLIST_APPEND, PLAYLIST_END );
+        o_files->RemoveItem(o_files->CountItems() - 1);
+    }
+    
+    /* eventually restart playing */
+    if( replace || wasEmpty )
+    {
+        playlist_Stop( p_playlist );
+        playlist_Play( p_playlist );
+    }
+}
+void VlcWrapper::OpenDisc(BString o_type, BString o_device, int i_title, int i_chapter)
+{
+    if( p_intf->p_sys->b_dvdold )
+        o_device.Prepend( "dvdold:" );
+    playlist_Add( p_playlist, o_device.String(),
+                  PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END );
+}
+
 int VlcWrapper::PlaylistSize()
 {
     vlc_mutex_lock( &p_playlist->object_lock );
@@ -410,7 +403,7 @@ int VlcWrapper::PlaylistSize()
     return i_size;
 }
 
-char *VlcWrapper::PlaylistItemName( int i )
+char * VlcWrapper::PlaylistItemName( int i )
 {
    return p_playlist->pp_items[i]->psz_name;
 }
@@ -420,11 +413,6 @@ int VlcWrapper::PlaylistCurrent()
     return p_playlist->i_index;
 }
 
-int  VlcWrapper::PlaylistStatus()
-{
-    return p_playlist->i_status;
-}
-
 bool VlcWrapper::PlaylistPlay()
 {
     if( PlaylistSize() )
@@ -457,48 +445,7 @@ void VlcWrapper::PlaylistPrev()
     playlist_Prev( p_playlist );
 }
 
-void VlcWrapper::PlaylistSkip( int i )
-{
-    playlist_Skip( p_playlist, i );
-}
-
-void VlcWrapper::PlaylistGoto( int i )
-{
-    playlist_Goto( p_playlist, i );
-}
-
-void VlcWrapper::PlaylistLoop()
-{
-    if ( p_intf->p_sys->b_loop )
-    {
-        playlist_Delete( p_playlist, p_playlist->i_size - 1 );
-    }
-    else
-    {
-        playlist_Add( p_playlist, "vlc:loop",
-                      PLAYLIST_APPEND | PLAYLIST_GO,
-                      PLAYLIST_END );
-    }
-    p_intf->p_sys->b_loop = !p_intf->p_sys->b_loop;
-}
-
-BList * VlcWrapper::PlaylistAsArray()
-{ 
-    int i;
-    BList* p_list = new BList(p_playlist->i_size);
-    
-    vlc_mutex_lock( &p_playlist->object_lock );
-
-    for( i = 0; i < p_playlist->i_size; i++ )
-    {
-        p_list->AddItem(new BString(p_playlist->pp_items[i]->psz_name));
-    }
-
-    vlc_mutex_unlock( &p_playlist->object_lock );
-    return( p_list );
-}
-
-void VlcWrapper::getPlaylistInfo( int32& currentIndex, int32& maxIndex )
+void VlcWrapper::GetPlaylistInfo( int32& currentIndex, int32& maxIndex )
 {
        currentIndex = -1;
        maxIndex = -1;
@@ -512,31 +459,12 @@ void VlcWrapper::getPlaylistInfo( int32& currentIndex, int32& maxIndex )
        }
 }
 
-
 void VlcWrapper::PlaylistJumpTo( int pos )
 {
-#if 0
-       // sanity checks
-       if ( pos < 0 )
-               pos = 0;
-       int size = playlistSize();
-       if (pos >= size)
-               pos = size - 1;
-       // weird hack
-    if( p_input_bank->pp_input[0] != NULL )
-               pos--;
-       // stop current stream
-       playlistStop();
-       // modify current position in playlist
-       playlistLock();
-       p_main->p_playlist->i_index = pos;
-       playlistUnlock();
-       // start playing
-       playlistPlay();
-#endif
-}
-
-void VlcWrapper::getNavCapabilities( bool *canSkipPrev, bool *canSkipNext )
+    playlist_Goto( p_playlist, pos );
+}
+
+void VlcWrapper::GetNavCapabilities( bool *canSkipPrev, bool *canSkipNext )
 {
        if ( canSkipPrev && canSkipNext )
        {
@@ -580,7 +508,7 @@ void VlcWrapper::getNavCapabilities( bool *canSkipPrev, bool *canSkipNext )
        }
 }
 
-void VlcWrapper::navigatePrev()
+void VlcWrapper::NavigatePrev()
 {
        bool hasSkiped = false;
 
@@ -607,7 +535,7 @@ void VlcWrapper::navigatePrev()
 
                        if ( currentChapter >= 0 )
                        {
-                               toggleChapter( currentChapter );
+                               ToggleChapter( currentChapter );
                                hasSkiped = true;
                        }
                }
@@ -619,7 +547,7 @@ void VlcWrapper::navigatePrev()
                        // disallow area 0 since it is used for video_ts.vob
                        if( currentTitle > 0 )
                        {
-                               toggleTitle(currentTitle);
+                               ToggleTitle(currentTitle);
                                hasSkiped = true;
                        }
                }
@@ -630,7 +558,7 @@ void VlcWrapper::navigatePrev()
                PlaylistPrev();
 }
 
-void VlcWrapper::navigateNext()
+void VlcWrapper::NavigateNext()
 {
        bool hasSkiped = false;
 
@@ -656,7 +584,7 @@ void VlcWrapper::navigateNext()
                        currentChapter++;
                        if ( currentChapter < numChapters )
                        {
-                               toggleChapter( currentChapter );
+                               ToggleChapter( currentChapter );
                                hasSkiped = true;
                        }
                }
@@ -668,7 +596,7 @@ void VlcWrapper::navigateNext()
                        // disallow area 0 since it is used for video_ts.vob
                        if ( currentTitle < numTitles - 1 )
                        {
-                               toggleTitle(currentTitle);
+                               ToggleTitle(currentTitle);
                                hasSkiped = true;
                        }
                }
@@ -680,9 +608,14 @@ void VlcWrapper::navigateNext()
 }
 
 
-/***************************
- * audio infos and control *
- ***************************/
+/*********
+ * audio *
+ *********/
+
+bool VlcWrapper::HasAudio()
+{
+    return( p_aout != NULL );
+}
 
 unsigned short VlcWrapper::GetVolume()
 {
@@ -731,14 +664,10 @@ bool VlcWrapper::IsMuted()
     return p_intf->p_sys->b_mute;
 }
 
-bool VlcWrapper::HasAudio()
-{
-    return( p_aout != NULL );
-}
-
 /*******
  * DVD *
  *******/
+
 bool VlcWrapper::HasTitles()
 {
     if( !p_input )
@@ -748,13 +677,41 @@ bool VlcWrapper::HasTitles()
     return ( p_input->stream.i_area_nb > 1 );
 }
 
+BList * VlcWrapper::GetTitles()
+{
+    if( p_input )
+    {
+        vlc_mutex_lock( &p_input->stream.stream_lock );
+      
+        BList *list = new BList( p_input->stream.i_area_nb );
+        BMenuItem *menuItem;
+        BMessage *message;
+        
+        for( unsigned int i = 1; i < p_input->stream.i_area_nb; i++ )
+        {
+            message = new BMessage( TOGGLE_TITLE );
+            message->AddInt32( "index", i );
+            BString helper( "" );
+            helper << i;
+            menuItem = new BMenuItem( helper.String(), message );
+            menuItem->SetMarked( p_input->stream.p_selected_area->i_id == i );
+            list->AddItem( menuItem );
+        }
+        
+        vlc_mutex_unlock( &p_input->stream.stream_lock );
+
+        return list;
+    }
+    return NULL;
+}
+
 void VlcWrapper::PrevTitle()
 {
     int i_id;
     i_id = p_input->stream.p_selected_area->i_id - 1;
     if( i_id > 0 )
     {
-        toggleTitle(i_id);
+        ToggleTitle(i_id);
     }
 }
 
@@ -764,10 +721,41 @@ void VlcWrapper::NextTitle()
     i_id = p_input->stream.p_selected_area->i_id + 1;
     if( i_id < p_input->stream.i_area_nb )
     {
-        toggleTitle(i_id);
+        ToggleTitle(i_id);
+    }
+}
+
+void VlcWrapper::ToggleTitle(int i_title)
+{
+    if( p_input != NULL )
+    {
+        input_ChangeArea( p_input,
+                          p_input->stream.pp_areas[i_title] );
+
+        vlc_mutex_lock( &p_input->stream.stream_lock );
+
+        vlc_mutex_unlock( &p_input->stream.stream_lock );
     }
 }
 
+void VlcWrapper::TitleInfo( int32 &currentIndex, int32 &maxIndex )
+{
+       currentIndex = -1;
+       maxIndex = -1;
+       if ( p_input )
+       {
+               vlc_mutex_lock( &p_input->stream.stream_lock );
+
+               maxIndex = p_input->stream.i_area_nb - 1;
+               if ( maxIndex > 0)
+                       currentIndex = p_input->stream.p_selected_area->i_id;
+               else
+                       maxIndex = -1;
+
+               vlc_mutex_unlock( &p_input->stream.stream_lock );
+       }
+}
+
 bool VlcWrapper::HasChapters()
 {
     if( !p_input )
@@ -777,13 +765,42 @@ bool VlcWrapper::HasChapters()
     return ( p_input->stream.p_selected_area->i_part_nb > 1 );
 }
 
+BList * VlcWrapper::GetChapters()
+{
+    if( p_input )
+    {
+        vlc_mutex_lock( &p_input->stream.stream_lock );
+      
+        BList *list = new BList( p_input->stream.p_selected_area->i_part_nb );
+        BMenuItem *menuItem;
+        BMessage *message;
+        
+        for( unsigned int i = 1;
+             i < p_input->stream.p_selected_area->i_part_nb + 1; i++ )
+        {
+            message = new BMessage( TOGGLE_CHAPTER );
+            message->AddInt32( "index", i );
+            BString helper( "" );
+            helper << i;
+            menuItem = new BMenuItem( helper.String(), message );
+            menuItem->SetMarked( p_input->stream.p_selected_area->i_part == i );
+            list->AddItem( menuItem );
+        }
+        
+        vlc_mutex_unlock( &p_input->stream.stream_lock );
+
+        return list;
+    }
+    return NULL;
+}
+
 void VlcWrapper::PrevChapter()
 {
     int i_id;
     i_id = p_input->stream.p_selected_area->i_part - 1;
     if( i_id >= 0 )
     {
-        toggleChapter(i_id);
+        ToggleChapter(i_id);
     }
 }
 
@@ -793,26 +810,21 @@ void VlcWrapper::NextChapter()
     i_id = p_input->stream.p_selected_area->i_part + 1;
     if( i_id >= 0 )
     {
-        toggleChapter(i_id);
+        ToggleChapter(i_id);
     }
 }
 
-void VlcWrapper::TitleInfo( int32 &currentIndex, int32 &maxIndex )
+void VlcWrapper::ToggleChapter(int i_chapter)
 {
-       currentIndex = -1;
-       maxIndex = -1;
-       if ( p_input )
-       {
-               vlc_mutex_lock( &p_input->stream.stream_lock );
-
-               maxIndex = p_input->stream.i_area_nb - 1;
-               if ( maxIndex > 0)
-                       currentIndex = p_input->stream.p_selected_area->i_id;
-               else
-                       maxIndex = -1;
+    if( p_input != NULL )
+    {
+        p_input->stream.p_selected_area->i_part = i_chapter;
+        input_ChangeArea( p_input,
+                          p_input->stream.p_selected_area );
 
-               vlc_mutex_unlock( &p_input->stream.stream_lock );
-       }
+        vlc_mutex_lock( &p_input->stream.stream_lock );
+        vlc_mutex_unlock( &p_input->stream.stream_lock );
+    }
 }
 
 void VlcWrapper::ChapterInfo( int32 &currentIndex, int32 &maxIndex )
@@ -833,28 +845,11 @@ void VlcWrapper::ChapterInfo( int32 &currentIndex, int32 &maxIndex )
        }
 }
 
-void VlcWrapper::toggleTitle(int i_title)
-{
-    if( p_input != NULL )
-    {
-        input_ChangeArea( p_input,
-                          p_input->stream.pp_areas[i_title] );
-
-        vlc_mutex_lock( &p_input->stream.stream_lock );
-
-        vlc_mutex_unlock( &p_input->stream.stream_lock );
-    }
-}
-
-void VlcWrapper::toggleChapter(int i_chapter)
+/****************
+ * Miscellanous *
+ ****************/
+void VlcWrapper::LoadSubFile( char * psz_file )
 {
-    if( p_input != NULL )
-    {
-        p_input->stream.p_selected_area->i_part = i_chapter;
-        input_ChangeArea( p_input,
-                          p_input->stream.p_selected_area );
-
-        vlc_mutex_lock( &p_input->stream.stream_lock );
-        vlc_mutex_unlock( &p_input->stream.stream_lock );
-    }
+    config_PutPsz( p_intf, "sub-file", strdup( psz_file ) );
 }
index 0d18aa0..d5596a2 100644 (file)
@@ -2,7 +2,7 @@
  * VlcWrapper.h: BeOS plugin for vlc (derived from MacOS X port)
  *****************************************************************************
  * Copyright (C) 2001 VideoLAN
- * $Id: VlcWrapper.h,v 1.14 2003/01/17 18:19:43 titer Exp $
+ * $Id: VlcWrapper.h,v 1.15 2003/01/22 01:13:22 titer Exp $
  *
  * Authors: Florian G. Pflug <fgp@phlo.org>
  *          Jon Lech Johansen <jon-vl@nanocrew.net>
@@ -62,66 +62,66 @@ public:
     
     bool UpdateInputAndAOut();
     
-    /* input */
-    bool HasInput();
-    int InputStatus();
-    int InputRate();
-    void InputSlower();
-    void InputFaster();
-    BList * InputGetChannels( int i_cat );
-    void openFiles( BList *o_files, bool replace = true );
-    void openDisc( BString o_type, BString o_device,
-                   int i_title, int i_chapter );
-    void LoadSubFile( char * psz_file );
-    void ToggleLanguage( int i_language );
-    void ToggleSubtitle( int i_subtitle );
-    const char* getTimeAsString();
-    float getTimeAsFloat();
-    void setTimeAsFloat( float i_offset );
-    bool IsPlaying();
+    /* Input */
+    bool         HasInput();
+    int          InputStatus();
+    int          InputRate();
+    void         InputSlower();
+    void         InputFaster();
+    BList *      GetChannels( int i_cat );
+    void         ToggleLanguage( int i_language );
+    void         ToggleSubtitle( int i_subtitle );
+    const char * GetTimeAsString();
+    float        GetTimeAsFloat();
+    void         SetTimeAsFloat( float i_offset );
+    bool         IsPlaying();
         
     /* Playlist */
-    int PlaylistSize();
-    char *PlaylistItemName( int );
-    int PlaylistCurrent();
-    int PlaylistStatus();
-    bool PlaylistPlay();
-    void PlaylistPause();
-    void PlaylistStop();
-    void PlaylistNext();
-    void PlaylistPrev();
-    void PlaylistSkip(int i);
-    void PlaylistGoto(int i);
-    void PlaylistLoop(); 
-    BList* PlaylistAsArray();
-    bool PlaylistPlaying();
-    void getPlaylistInfo( int32& currentIndex,
-                            int32& maxIndex );
-    void PlaylistJumpTo( int );
-    void getNavCapabilities( bool* canSkipPrev,
-                             bool* canSkipNext );
-       void navigatePrev();
-       void navigateNext();
+    void    OpenFiles( BList *o_files, bool replace = true );
+    void    OpenDisc( BString o_type, BString o_device,
+                     int i_title, int i_chapter );
+    int     PlaylistSize();
+    char *  PlaylistItemName( int );
+    int     PlaylistCurrent();
+    bool    PlaylistPlay();
+    void    PlaylistPause();
+    void    PlaylistStop();
+    void    PlaylistNext();
+    void    PlaylistPrev();
+    bool    PlaylistPlaying();
+    void    GetPlaylistInfo( int32& currentIndex,
+                             int32& maxIndex );
+    void    PlaylistJumpTo( int );
+    void    GetNavCapabilities( bool * canSkipPrev,
+                                bool * canSkipNext );
+       void    NavigatePrev();
+       void    NavigateNext();
 
-    /* audio */
+    /* Audio */
+    bool           HasAudio();
     unsigned short GetVolume();
-    void SetVolume( int value );
-    void VolumeMute();
-    void VolumeRestore();
-    bool IsMuted();
-    bool HasAudio();
+    void           SetVolume( int value );
+    void           VolumeMute();
+    void           VolumeRestore();
+    bool           IsMuted();
 
     /* DVD */
-    bool HasTitles();
-    void PrevTitle();
-    void NextTitle();
-    bool HasChapters();
-    void PrevChapter();
-    void NextChapter();
-    void TitleInfo( int32& currentIndex, int32& maxIndex );
-    void ChapterInfo( int32& currentIndex, int32& maxIndex );
-    void toggleTitle( int i_title );
-    void toggleChapter( int i_chapter );
+    bool    HasTitles();
+    BList * GetTitles();
+    void    PrevTitle();
+    void    NextTitle();
+    void    ToggleTitle( int i_title );
+    void    TitleInfo( int32& currentIndex, int32& maxIndex );
+
+    bool    HasChapters();
+    BList * GetChapters();
+    void    PrevChapter();
+    void    NextChapter();
+    void    ToggleChapter( int i_chapter );
+    void    ChapterInfo( int32& currentIndex, int32& maxIndex );
+    
+    /* Miscellanous */
+    void         LoadSubFile( char * psz_file );
     
 private:
     intf_thread_t * p_intf;
@@ -129,4 +129,3 @@ private:
     playlist_t * p_playlist;
     aout_instance_t * p_aout;
 };
-