Commit 2891094d authored by Eric Petit's avatar Eric Petit

* Fixed title / chapter menus

 * Clean up
parent d5fe9f34
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* InterfaceWindow.cpp: beos interface * InterfaceWindow.cpp: beos interface
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN * 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> * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -64,8 +64,7 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name, ...@@ -64,8 +64,7 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name,
p_intf( p_interface ), p_intf( p_interface ),
fFilePanel( NULL ), fFilePanel( NULL ),
fSubtitlesPanel( NULL ), fSubtitlesPanel( NULL ),
fLastUpdateTime( system_time() ), fLastUpdateTime( system_time() )
fSettings( new BMessage( 'sett' ) )
{ {
p_intf = p_interface; p_intf = p_interface;
p_wrapper = p_intf->p_sys->p_wrapper; p_wrapper = p_intf->p_sys->p_wrapper;
...@@ -186,8 +185,6 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name, ...@@ -186,8 +185,6 @@ InterfaceWindow::InterfaceWindow( BRect frame, const char *name,
_SetMenusEnabled( false ); _SetMenusEnabled( false );
p_mediaControl->SetEnabled( false ); p_mediaControl->SetEnabled( false );
_RestoreSettings();
Show(); Show();
} }
...@@ -195,7 +192,6 @@ InterfaceWindow::~InterfaceWindow() ...@@ -195,7 +192,6 @@ InterfaceWindow::~InterfaceWindow()
{ {
if (fPlaylistWindow) if (fPlaylistWindow)
fPlaylistWindow->ReallyQuit(); fPlaylistWindow->ReallyQuit();
delete fSettings;
} }
/***************************************************************************** /*****************************************************************************
...@@ -260,7 +256,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) ...@@ -260,7 +256,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
if( p_message->FindString( "device", &psz_device ) == B_OK ) if( p_message->FindString( "device", &psz_device ) == B_OK )
{ {
BString device( psz_device ); BString device( psz_device );
p_wrapper->openDisc( type, device, 0, 0 ); p_wrapper->OpenDisc( type, device, 0, 0 );
} }
_UpdatePlaylist(); _UpdatePlaylist();
} }
...@@ -405,8 +401,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) ...@@ -405,8 +401,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
if ( playback_status > UNDEF_S ) if ( playback_status > UNDEF_S )
{ {
int32 index; int32 index;
if ( p_message->FindInt32( "index", &index ) == B_OK ) if( p_message->FindInt32( "index", &index ) == B_OK )
p_wrapper->toggleTitle( index ); p_wrapper->ToggleTitle( index );
} }
break; break;
case PREV_CHAPTER: case PREV_CHAPTER:
...@@ -423,8 +419,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) ...@@ -423,8 +419,8 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
if ( playback_status > UNDEF_S ) if ( playback_status > UNDEF_S )
{ {
int32 index; int32 index;
if ( p_message->FindInt32( "index", &index ) == B_OK ) if( p_message->FindInt32( "index", &index ) == B_OK )
p_wrapper->toggleChapter( index ); p_wrapper->ToggleChapter( index );
} }
break; break;
case PREV_FILE: case PREV_FILE:
...@@ -435,10 +431,10 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) ...@@ -435,10 +431,10 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
break; break;
// general next/prev functionality (skips to whatever makes most sense) // general next/prev functionality (skips to whatever makes most sense)
case NAVIGATE_PREV: case NAVIGATE_PREV:
p_wrapper->navigatePrev(); p_wrapper->NavigatePrev();
break; break;
case NAVIGATE_NEXT: case NAVIGATE_NEXT:
p_wrapper->navigateNext(); p_wrapper->NavigateNext();
break; break;
// drag'n'drop and system messages // drag'n'drop and system messages
case B_REFS_RECEIVED: case B_REFS_RECEIVED:
...@@ -526,7 +522,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message ) ...@@ -526,7 +522,7 @@ void InterfaceWindow::MessageReceived( BMessage * p_message )
} }
} }
// give the list to VLC // give the list to VLC
p_wrapper->openFiles(&files, replace); p_wrapper->OpenFiles(&files, replace);
_UpdatePlaylist(); _UpdatePlaylist();
} }
break; break;
...@@ -559,8 +555,6 @@ bool InterfaceWindow::QuitRequested() ...@@ -559,8 +555,6 @@ bool InterfaceWindow::QuitRequested()
p_intf->b_die = 1; p_intf->b_die = 1;
_StoreSettings();
return( true ); return( true );
} }
...@@ -573,7 +567,7 @@ void InterfaceWindow::updateInterface() ...@@ -573,7 +567,7 @@ void InterfaceWindow::updateInterface()
{ {
if ( acquire_sem( p_mediaControl->fScrubSem ) == B_OK ) if ( acquire_sem( p_mediaControl->fScrubSem ) == B_OK )
{ {
p_wrapper->setTimeAsFloat(p_mediaControl->GetSeekTo()); p_wrapper->SetTimeAsFloat(p_mediaControl->GetSeekTo());
} }
else if ( Lock() ) else if ( Lock() )
{ {
...@@ -582,7 +576,7 @@ void InterfaceWindow::updateInterface() ...@@ -582,7 +576,7 @@ void InterfaceWindow::updateInterface()
bool hasChapters = p_wrapper->HasChapters(); bool hasChapters = p_wrapper->HasChapters();
p_mediaControl->SetStatus( p_wrapper->InputStatus(), p_mediaControl->SetStatus( p_wrapper->InputStatus(),
p_wrapper->InputRate() ); p_wrapper->InputRate() );
p_mediaControl->SetProgress( p_wrapper->getTimeAsFloat() ); p_mediaControl->SetProgress( p_wrapper->GetTimeAsFloat() );
_SetMenusEnabled( true, hasChapters, hasTitles ); _SetMenusEnabled( true, hasChapters, hasTitles );
_UpdateSpeedMenu( p_wrapper->InputRate() ); _UpdateSpeedMenu( p_wrapper->InputRate() );
...@@ -590,7 +584,7 @@ void InterfaceWindow::updateInterface() ...@@ -590,7 +584,7 @@ void InterfaceWindow::updateInterface()
// enable/disable skip buttons // enable/disable skip buttons
bool canSkipPrev; bool canSkipPrev;
bool canSkipNext; bool canSkipNext;
p_wrapper->getNavCapabilities( &canSkipPrev, &canSkipNext ); p_wrapper->GetNavCapabilities( &canSkipPrev, &canSkipNext );
p_mediaControl->SetSkippable( canSkipPrev, canSkipNext ); p_mediaControl->SetSkippable( canSkipPrev, canSkipNext );
if ( p_wrapper->HasAudio() ) if ( p_wrapper->HasAudio() )
...@@ -716,99 +710,11 @@ InterfaceWindow::_UpdateSpeedMenu( int rate ) ...@@ -716,99 +710,11 @@ InterfaceWindow::_UpdateSpeedMenu( int rate )
void void
InterfaceWindow::_InputStreamChanged() InterfaceWindow::_InputStreamChanged()
{ {
//printf("InterfaceWindow::_InputStreamChanged()\n");
// TODO: move more stuff from updateInterface() here! // TODO: move more stuff from updateInterface() here!
snooze( 400000 ); snooze( 400000 );
p_wrapper->SetVolume( p_mediaControl->GetVolume() ); 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 void
make_sure_frame_is_within_limits( BRect& frame, float minWidth, float minHeight, make_sure_frame_is_within_limits( BRect& frame, float minWidth, float minHeight,
float maxWidth, float maxHeight ) float maxWidth, float maxHeight )
...@@ -823,87 +729,6 @@ make_sure_frame_is_within_limits( BRect& frame, float minWidth, float minHeight, ...@@ -823,87 +729,6 @@ make_sure_frame_is_within_limits( BRect& frame, float minWidth, float minHeight,
frame.bottom = frame.top + maxHeight; 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 * CDMenu::CDMenu
*****************************************************************************/ *****************************************************************************/
...@@ -1026,7 +851,7 @@ void LanguageMenu::_GetChannels() ...@@ -1026,7 +851,7 @@ void LanguageMenu::_GetChannels()
BMenuItem *item; BMenuItem *item;
BList *list; BList *list;
if( ( list = p_wrapper->InputGetChannels( kind ) ) == NULL ) if( ( list = p_wrapper->GetChannels( kind ) ) == NULL )
return; return;
for( int i = 0; i < list->CountItems(); i++ ) for( int i = 0; i < list->CountItems(); i++ )
...@@ -1061,36 +886,21 @@ TitleMenu::~TitleMenu() ...@@ -1061,36 +886,21 @@ TitleMenu::~TitleMenu()
*****************************************************************************/ *****************************************************************************/
void TitleMenu::AttachedToWindow() void TitleMenu::AttachedToWindow()
{ {
// make title menu empty BMenuItem *item;
while ( BMenuItem* item = RemoveItem( 0L ) ) BList *list;
while( ( item = RemoveItem( 0L ) ) )
delete item; delete item;
#if 0 if( ( list = p_intf->p_sys->p_wrapper->GetTitles() ) == NULL )
input_thread_t* input = p_intf->p_sys->p_input; return;
if ( input )
{ for( int i = 0; i < list->CountItems(); i++ )
// 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 ); item = (BMenuItem*)list->ItemAt( i );
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 ); AddItem( item );
} }
}
// done messing with stream
vlc_mutex_unlock( &input->stream.stream_lock );
}
#endif
BMenu::AttachedToWindow(); BMenu::AttachedToWindow();
} }
...@@ -1116,35 +926,21 @@ ChapterMenu::~ChapterMenu() ...@@ -1116,35 +926,21 @@ ChapterMenu::~ChapterMenu()
*****************************************************************************/ *****************************************************************************/
void ChapterMenu::AttachedToWindow() void ChapterMenu::AttachedToWindow()
{ {
// make title menu empty BMenuItem *item;
while ( BMenuItem* item = RemoveItem( 0L ) ) BList *list;
while( ( item = RemoveItem( 0L ) ) )
delete item; delete item;
#if 0 if( ( list = p_intf->p_sys->p_wrapper->GetChapters() ) == NULL )
input_thread_t* input = p_intf->p_sys->p_input; return;
if ( input )
{ for( int i = 0; i < list->CountItems(); i++ )
// 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 ); item = (BMenuItem*)list->ItemAt( i );
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 ); AddItem( item );
} }
}
// done messing with stream
vlc_mutex_unlock( &input->stream.stream_lock );
}
BMenu::AttachedToWindow(); BMenu::AttachedToWindow();
#endif
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* InterfaceWindow.h: BeOS interface window class prototype * InterfaceWindow.h: BeOS interface window class prototype
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN * 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> * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Tony Castley <tcastley@mail.powerup.com.au> * Tony Castley <tcastley@mail.powerup.com.au>
...@@ -114,14 +114,6 @@ class InterfaceWindow : public BWindow ...@@ -114,14 +114,6 @@ class InterfaceWindow : public BWindow
bool hasTitles = false ); bool hasTitles = false );
void _UpdateSpeedMenu( int rate ); void _UpdateSpeedMenu( int rate );
void _InputStreamChanged(); 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; intf_thread_t* p_intf;
es_descriptor_t* p_spu_es; es_descriptor_t* p_spu_es;
...@@ -150,8 +142,6 @@ class InterfaceWindow : public BWindow ...@@ -150,8 +142,6 @@ class InterfaceWindow : public BWindow
BMenu* fSpeedMenu; BMenu* fSpeedMenu;
BMenu* fSettingsMenu; BMenu* fSettingsMenu;
bigtime_t fLastUpdateTime; bigtime_t fLastUpdateTime;
BMessage* fSettings; // we keep the message arround
// for forward compatibility
VlcWrapper * p_wrapper; VlcWrapper * p_wrapper;
}; };
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* ListViews.h: BeOS interface list view class implementation * ListViews.h: BeOS interface list view class implementation
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN * 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> * Authors: Stephan Aßmus <stippi@yellowbites.com>
* *
...@@ -475,7 +475,8 @@ DragSortableListView::DrawItem( BListItem *item, BRect itemFrame, bool complete ...@@ -475,7 +475,8 @@ DragSortableListView::DrawItem( BListItem *item, BRect itemFrame, bool complete
/***************************************************************************** /*****************************************************************************
* PlaylistView class * PlaylistView class
*****************************************************************************/ *****************************************************************************/
PlaylistView::PlaylistView( BRect frame, InterfaceWindow* mainWindow ) PlaylistView::PlaylistView( BRect frame, InterfaceWindow* mainWindow,
VlcWrapper * p_wrapper )
: DragSortableListView( frame, "playlist listview", : DragSortableListView( frame, "playlist listview",
B_MULTIPLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES, B_MULTIPLE_SELECTION_LIST, B_FOLLOW_ALL_SIDES,
B_WILL_DRAW | B_NAVIGABLE | B_PULSE_NEEDED B_WILL_DRAW | B_NAVIGABLE | B_PULSE_NEEDED
...@@ -484,6 +485,7 @@ PlaylistView::PlaylistView( BRect frame, InterfaceWindow* mainWindow ) ...@@ -484,6 +485,7 @@ PlaylistView::PlaylistView( BRect frame, InterfaceWindow* mainWindow )
fPlaying( false ), fPlaying( false ),
fMainWindow( mainWindow ) fMainWindow( mainWindow )
{ {
this->p_wrapper = p_wrapper;
} }
PlaylistView::~PlaylistView() PlaylistView::~PlaylistView()
...@@ -516,7 +518,7 @@ PlaylistView::MouseDown( BPoint where ) ...@@ -516,7 +518,7 @@ PlaylistView::MouseDown( BPoint where )
{ {
if ( clicks == 2 ) if ( clicks == 2 )
{ {
/* Intf_VLCWrapper::playlistJumpTo( i ); */ p_wrapper->PlaylistJumpTo( i );
handled = true; handled = true;
} }
else if ( i == fCurrentIndex ) else if ( i == fCurrentIndex )
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* ListViews.h: BeOS interface list view class prototype * ListViews.h: BeOS interface list view class prototype
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN * 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> * Authors: Stephan Aßmus <stippi@yellowbites.com>
* *
...@@ -87,7 +87,8 @@ class PlaylistView : public DragSortableListView ...@@ -87,7 +87,8 @@ class PlaylistView : public DragSortableListView
{ {
public: public:
PlaylistView( BRect frame, PlaylistView( BRect frame,
InterfaceWindow* mainWindow ); InterfaceWindow* mainWindow,
VlcWrapper * p_wrapper );
~PlaylistView(); ~PlaylistView();
// BListView // BListView
...@@ -110,6 +111,8 @@ class PlaylistView : public DragSortableListView ...@@ -110,6 +111,8 @@ class PlaylistView : public DragSortableListView
int32 fCurrentIndex; int32 fCurrentIndex;
bool fPlaying; bool fPlaying;
InterfaceWindow* fMainWindow; InterfaceWindow* fMainWindow;
VlcWrapper * p_wrapper;
}; };
#endif // LIST_VIEWS_H #endif // LIST_VIEWS_H
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* MediaControlView.cpp: beos interface * MediaControlView.cpp: beos interface
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN * 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> * Authors: Tony Castley <tony@castley.net>
* Stephan Aßmus <stippi@yellowbites.com> * Stephan Aßmus <stippi@yellowbites.com>
...@@ -1311,13 +1311,13 @@ PositionInfoView::Pulse() ...@@ -1311,13 +1311,13 @@ PositionInfoView::Pulse()
if ( now - fLastPulseUpdate > 900000 ) if ( now - fLastPulseUpdate > 900000 )
{ {
int32 index, size; int32 index, size;
p_intf->p_sys->p_wrapper->getPlaylistInfo( index, size ); p_intf->p_sys->p_wrapper->GetPlaylistInfo( index, size );
SetFile( index, size ); SetFile( index, size );
p_intf->p_sys->p_wrapper->TitleInfo( index, size ); p_intf->p_sys->p_wrapper->TitleInfo( index, size );
SetTitle( index, size ); SetTitle( index, size );
p_intf->p_sys->p_wrapper->ChapterInfo( index, size ); p_intf->p_sys->p_wrapper->ChapterInfo( index, size );
SetChapter( index, size ); SetChapter( index, size );
SetTime( p_intf->p_sys->p_wrapper->getTimeAsString() ); SetTime( p_intf->p_sys->p_wrapper->GetTimeAsString() );
fLastPulseUpdate = now; fLastPulseUpdate = now;
} }
} }
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* PlayListWindow.cpp: beos interface * PlayListWindow.cpp: beos interface
***************************************************************************** *****************************************************************************
* Copyright (C) 1999, 2000, 2001 VideoLAN * 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> * Authors: Jean-Marc Dressler <polux@via.ecp.fr>
* Samuel Hocevar <sam@zoy.org> * Samuel Hocevar <sam@zoy.org>
...@@ -130,7 +130,7 @@ editMenu->SetEnabled( false ); ...@@ -130,7 +130,7 @@ editMenu->SetEnabled( false );
frame.top += fMenuBar->Bounds().IntegerHeight() + 1; frame.top += fMenuBar->Bounds().IntegerHeight() + 1;
frame.right -= B_V_SCROLL_BAR_WIDTH; frame.right -= B_V_SCROLL_BAR_WIDTH;
fListView = new PlaylistView( frame, fMainWindow ); fListView = new PlaylistView( frame, fMainWindow, p_wrapper );
fBackgroundView = new BScrollView( "playlist scrollview", fBackgroundView = new BScrollView( "playlist scrollview",
fListView, B_FOLLOW_ALL_SIDES, fListView, B_FOLLOW_ALL_SIDES,
0, false, true, 0, false, true,
......
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* VlcWrapper.cpp: BeOS plugin for vlc (derived from MacOS X port) * VlcWrapper.cpp: BeOS plugin for vlc (derived from MacOS X port)
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * 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> * Authors: Florian G. Pflug <fgp@phlo.org>
* Jon Lech Johansen <jon-vl@nanocrew.net> * Jon Lech Johansen <jon-vl@nanocrew.net>
...@@ -106,11 +106,8 @@ bool VlcWrapper::UpdateInputAndAOut() ...@@ -106,11 +106,8 @@ bool VlcWrapper::UpdateInputAndAOut()
bool VlcWrapper::HasInput() bool VlcWrapper::HasInput()
{ {
return ( p_input != NULL ); 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() int VlcWrapper::InputStatus()
{ {
if( !p_input ) if( !p_input )
...@@ -145,7 +142,7 @@ void VlcWrapper::InputFaster() ...@@ -145,7 +142,7 @@ void VlcWrapper::InputFaster()
} }
} }
BList * VlcWrapper::InputGetChannels( int i_cat ) BList * VlcWrapper::GetChannels( int i_cat )
{ {
if( p_input ) if( p_input )
{ {
...@@ -219,50 +216,6 @@ BList * VlcWrapper::InputGetChannels( int i_cat ) ...@@ -219,50 +216,6 @@ BList * VlcWrapper::InputGetChannels( int i_cat )
return NULL; 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 ) void VlcWrapper::ToggleLanguage( int i_language )
{ {
es_descriptor_t * p_es = NULL; es_descriptor_t * p_es = NULL;
...@@ -331,7 +284,7 @@ void VlcWrapper::ToggleSubtitle( int i_subtitle ) ...@@ -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 ]; static char psz_currenttime[ OFFSETTOTIME_MAX_SIZE ];
...@@ -347,7 +300,7 @@ const char* VlcWrapper::getTimeAsString() ...@@ -347,7 +300,7 @@ const char* VlcWrapper::getTimeAsString()
return(psz_currenttime); return(psz_currenttime);
} }
float VlcWrapper::getTimeAsFloat() float VlcWrapper::GetTimeAsFloat()
{ {
float f_time = 0.0; float f_time = 0.0;
...@@ -363,7 +316,7 @@ float VlcWrapper::getTimeAsFloat() ...@@ -363,7 +316,7 @@ float VlcWrapper::getTimeAsFloat()
return( f_time ); return( f_time );
} }
void VlcWrapper::setTimeAsFloat(float f_position) void VlcWrapper::SetTimeAsFloat( float f_position )
{ {
if( p_input != NULL ) if( p_input != NULL )
{ {
...@@ -399,9 +352,49 @@ bool VlcWrapper::IsPlaying() ...@@ -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() int VlcWrapper::PlaylistSize()
{ {
vlc_mutex_lock( &p_playlist->object_lock ); vlc_mutex_lock( &p_playlist->object_lock );
...@@ -410,7 +403,7 @@ int VlcWrapper::PlaylistSize() ...@@ -410,7 +403,7 @@ int VlcWrapper::PlaylistSize()
return i_size; return i_size;
} }
char *VlcWrapper::PlaylistItemName( int i ) char * VlcWrapper::PlaylistItemName( int i )
{ {
return p_playlist->pp_items[i]->psz_name; return p_playlist->pp_items[i]->psz_name;
} }
...@@ -420,11 +413,6 @@ int VlcWrapper::PlaylistCurrent() ...@@ -420,11 +413,6 @@ int VlcWrapper::PlaylistCurrent()
return p_playlist->i_index; return p_playlist->i_index;
} }
int VlcWrapper::PlaylistStatus()
{
return p_playlist->i_status;
}
bool VlcWrapper::PlaylistPlay() bool VlcWrapper::PlaylistPlay()
{ {
if( PlaylistSize() ) if( PlaylistSize() )
...@@ -457,48 +445,7 @@ void VlcWrapper::PlaylistPrev() ...@@ -457,48 +445,7 @@ void VlcWrapper::PlaylistPrev()
playlist_Prev( p_playlist ); playlist_Prev( p_playlist );
} }
void VlcWrapper::PlaylistSkip( int i ) void VlcWrapper::GetPlaylistInfo( int32& currentIndex, int32& maxIndex )
{
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 )
{ {
currentIndex = -1; currentIndex = -1;
maxIndex = -1; maxIndex = -1;
...@@ -512,31 +459,12 @@ void VlcWrapper::getPlaylistInfo( int32& currentIndex, int32& maxIndex ) ...@@ -512,31 +459,12 @@ void VlcWrapper::getPlaylistInfo( int32& currentIndex, int32& maxIndex )
} }
} }
void VlcWrapper::PlaylistJumpTo( int pos ) void VlcWrapper::PlaylistJumpTo( int pos )
{ {
#if 0 playlist_Goto( p_playlist, pos );
// sanity checks }
if ( pos < 0 )
pos = 0; void VlcWrapper::GetNavCapabilities( bool *canSkipPrev, bool *canSkipNext )
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 )
{ {
if ( canSkipPrev && canSkipNext ) if ( canSkipPrev && canSkipNext )
{ {
...@@ -580,7 +508,7 @@ void VlcWrapper::getNavCapabilities( bool *canSkipPrev, bool *canSkipNext ) ...@@ -580,7 +508,7 @@ void VlcWrapper::getNavCapabilities( bool *canSkipPrev, bool *canSkipNext )
} }
} }
void VlcWrapper::navigatePrev() void VlcWrapper::NavigatePrev()
{ {
bool hasSkiped = false; bool hasSkiped = false;
...@@ -607,7 +535,7 @@ void VlcWrapper::navigatePrev() ...@@ -607,7 +535,7 @@ void VlcWrapper::navigatePrev()
if ( currentChapter >= 0 ) if ( currentChapter >= 0 )
{ {
toggleChapter( currentChapter ); ToggleChapter( currentChapter );
hasSkiped = true; hasSkiped = true;
} }
} }
...@@ -619,7 +547,7 @@ void VlcWrapper::navigatePrev() ...@@ -619,7 +547,7 @@ void VlcWrapper::navigatePrev()
// disallow area 0 since it is used for video_ts.vob // disallow area 0 since it is used for video_ts.vob
if( currentTitle > 0 ) if( currentTitle > 0 )
{ {
toggleTitle(currentTitle); ToggleTitle(currentTitle);
hasSkiped = true; hasSkiped = true;
} }
} }
...@@ -630,7 +558,7 @@ void VlcWrapper::navigatePrev() ...@@ -630,7 +558,7 @@ void VlcWrapper::navigatePrev()
PlaylistPrev(); PlaylistPrev();
} }
void VlcWrapper::navigateNext() void VlcWrapper::NavigateNext()
{ {
bool hasSkiped = false; bool hasSkiped = false;
...@@ -656,7 +584,7 @@ void VlcWrapper::navigateNext() ...@@ -656,7 +584,7 @@ void VlcWrapper::navigateNext()
currentChapter++; currentChapter++;
if ( currentChapter < numChapters ) if ( currentChapter < numChapters )
{ {
toggleChapter( currentChapter ); ToggleChapter( currentChapter );
hasSkiped = true; hasSkiped = true;
} }
} }
...@@ -668,7 +596,7 @@ void VlcWrapper::navigateNext() ...@@ -668,7 +596,7 @@ void VlcWrapper::navigateNext()
// disallow area 0 since it is used for video_ts.vob // disallow area 0 since it is used for video_ts.vob
if ( currentTitle < numTitles - 1 ) if ( currentTitle < numTitles - 1 )
{ {
toggleTitle(currentTitle); ToggleTitle(currentTitle);
hasSkiped = true; hasSkiped = true;
} }
} }
...@@ -680,9 +608,14 @@ void VlcWrapper::navigateNext() ...@@ -680,9 +608,14 @@ void VlcWrapper::navigateNext()
} }
/*************************** /*********
* audio infos and control * * audio *
***************************/ *********/
bool VlcWrapper::HasAudio()
{
return( p_aout != NULL );
}
unsigned short VlcWrapper::GetVolume() unsigned short VlcWrapper::GetVolume()
{ {
...@@ -731,14 +664,10 @@ bool VlcWrapper::IsMuted() ...@@ -731,14 +664,10 @@ bool VlcWrapper::IsMuted()
return p_intf->p_sys->b_mute; return p_intf->p_sys->b_mute;
} }
bool VlcWrapper::HasAudio()
{
return( p_aout != NULL );
}
/******* /*******
* DVD * * DVD *
*******/ *******/
bool VlcWrapper::HasTitles() bool VlcWrapper::HasTitles()
{ {
if( !p_input ) if( !p_input )
...@@ -748,13 +677,41 @@ bool VlcWrapper::HasTitles() ...@@ -748,13 +677,41 @@ bool VlcWrapper::HasTitles()
return ( p_input->stream.i_area_nb > 1 ); 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() void VlcWrapper::PrevTitle()
{ {
int i_id; int i_id;
i_id = p_input->stream.p_selected_area->i_id - 1; i_id = p_input->stream.p_selected_area->i_id - 1;
if( i_id > 0 ) if( i_id > 0 )
{ {
toggleTitle(i_id); ToggleTitle(i_id);
} }
} }
...@@ -764,7 +721,38 @@ void VlcWrapper::NextTitle() ...@@ -764,7 +721,38 @@ void VlcWrapper::NextTitle()
i_id = p_input->stream.p_selected_area->i_id + 1; i_id = p_input->stream.p_selected_area->i_id + 1;
if( i_id < p_input->stream.i_area_nb ) 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 );
} }
} }
...@@ -777,13 +765,42 @@ bool VlcWrapper::HasChapters() ...@@ -777,13 +765,42 @@ bool VlcWrapper::HasChapters()
return ( p_input->stream.p_selected_area->i_part_nb > 1 ); 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() void VlcWrapper::PrevChapter()
{ {
int i_id; int i_id;
i_id = p_input->stream.p_selected_area->i_part - 1; i_id = p_input->stream.p_selected_area->i_part - 1;
if( i_id >= 0 ) if( i_id >= 0 )
{ {
toggleChapter(i_id); ToggleChapter(i_id);
} }
} }
...@@ -793,24 +810,19 @@ void VlcWrapper::NextChapter() ...@@ -793,24 +810,19 @@ void VlcWrapper::NextChapter()
i_id = p_input->stream.p_selected_area->i_part + 1; i_id = p_input->stream.p_selected_area->i_part + 1;
if( i_id >= 0 ) 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; if( p_input != NULL )
maxIndex = -1;
if ( p_input )
{ {
vlc_mutex_lock( &p_input->stream.stream_lock ); p_input->stream.p_selected_area->i_part = i_chapter;
input_ChangeArea( p_input,
maxIndex = p_input->stream.i_area_nb - 1; p_input->stream.p_selected_area );
if ( maxIndex > 0)
currentIndex = p_input->stream.p_selected_area->i_id;
else
maxIndex = -1;
vlc_mutex_lock( &p_input->stream.stream_lock );
vlc_mutex_unlock( &p_input->stream.stream_lock ); vlc_mutex_unlock( &p_input->stream.stream_lock );
} }
} }
...@@ -833,28 +845,11 @@ void VlcWrapper::ChapterInfo( int32 &currentIndex, int32 &maxIndex ) ...@@ -833,28 +845,11 @@ void VlcWrapper::ChapterInfo( int32 &currentIndex, int32 &maxIndex )
} }
} }
void VlcWrapper::toggleTitle(int i_title) /****************
{ * Miscellanous *
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) void VlcWrapper::LoadSubFile( char * psz_file )
{ {
if( p_input != NULL ) config_PutPsz( p_intf, "sub-file", strdup( psz_file ) );
{
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 );
}
} }
...@@ -2,7 +2,7 @@ ...@@ -2,7 +2,7 @@
* VlcWrapper.h: BeOS plugin for vlc (derived from MacOS X port) * VlcWrapper.h: BeOS plugin for vlc (derived from MacOS X port)
***************************************************************************** *****************************************************************************
* Copyright (C) 2001 VideoLAN * 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> * Authors: Florian G. Pflug <fgp@phlo.org>
* Jon Lech Johansen <jon-vl@nanocrew.net> * Jon Lech Johansen <jon-vl@nanocrew.net>
...@@ -62,66 +62,66 @@ public: ...@@ -62,66 +62,66 @@ public:
bool UpdateInputAndAOut(); bool UpdateInputAndAOut();
/* input */ /* Input */
bool HasInput(); bool HasInput();
int InputStatus(); int InputStatus();
int InputRate(); int InputRate();
void InputSlower(); void InputSlower();
void InputFaster(); void InputFaster();
BList * InputGetChannels( int i_cat ); BList * GetChannels( 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 ToggleLanguage( int i_language );
void ToggleSubtitle( int i_subtitle ); void ToggleSubtitle( int i_subtitle );
const char* getTimeAsString(); const char * GetTimeAsString();
float getTimeAsFloat(); float GetTimeAsFloat();
void setTimeAsFloat( float i_offset ); void SetTimeAsFloat( float i_offset );
bool IsPlaying(); bool IsPlaying();
/* Playlist */ /* Playlist */
void OpenFiles( BList *o_files, bool replace = true );
void OpenDisc( BString o_type, BString o_device,
int i_title, int i_chapter );
int PlaylistSize(); int PlaylistSize();
char *PlaylistItemName( int ); char * PlaylistItemName( int );
int PlaylistCurrent(); int PlaylistCurrent();
int PlaylistStatus();
bool PlaylistPlay(); bool PlaylistPlay();
void PlaylistPause(); void PlaylistPause();
void PlaylistStop(); void PlaylistStop();
void PlaylistNext(); void PlaylistNext();
void PlaylistPrev(); void PlaylistPrev();
void PlaylistSkip(int i);
void PlaylistGoto(int i);
void PlaylistLoop();
BList* PlaylistAsArray();
bool PlaylistPlaying(); bool PlaylistPlaying();
void getPlaylistInfo( int32& currentIndex, void GetPlaylistInfo( int32& currentIndex,
int32& maxIndex ); int32& maxIndex );
void PlaylistJumpTo( int ); void PlaylistJumpTo( int );
void getNavCapabilities( bool* canSkipPrev, void GetNavCapabilities( bool * canSkipPrev,
bool* canSkipNext ); bool * canSkipNext );
void navigatePrev(); void NavigatePrev();
void navigateNext(); void NavigateNext();
/* audio */ /* Audio */
bool HasAudio();
unsigned short GetVolume(); unsigned short GetVolume();
void SetVolume( int value ); void SetVolume( int value );
void VolumeMute(); void VolumeMute();
void VolumeRestore(); void VolumeRestore();
bool IsMuted(); bool IsMuted();
bool HasAudio();
/* DVD */ /* DVD */
bool HasTitles(); bool HasTitles();
BList * GetTitles();
void PrevTitle(); void PrevTitle();
void NextTitle(); void NextTitle();
void ToggleTitle( int i_title );
void TitleInfo( int32& currentIndex, int32& maxIndex );
bool HasChapters(); bool HasChapters();
BList * GetChapters();
void PrevChapter(); void PrevChapter();
void NextChapter(); void NextChapter();
void TitleInfo( int32& currentIndex, int32& maxIndex ); void ToggleChapter( int i_chapter );
void ChapterInfo( int32& currentIndex, int32& maxIndex ); void ChapterInfo( int32& currentIndex, int32& maxIndex );
void toggleTitle( int i_title );
void toggleChapter( int i_chapter ); /* Miscellanous */
void LoadSubFile( char * psz_file );
private: private:
intf_thread_t * p_intf; intf_thread_t * p_intf;
...@@ -129,4 +129,3 @@ private: ...@@ -129,4 +129,3 @@ private:
playlist_t * p_playlist; playlist_t * p_playlist;
aout_instance_t * p_aout; aout_instance_t * p_aout;
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment