X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;ds=sidebyside;f=modules%2Fgui%2Fbeos%2FPlayListWindow.cpp;h=069eaeba43543d83eae5bb1faff892fbf7c7c14d;hb=6ee1e193fd896ab9a4729fde14f009d9ce629815;hp=547c09900fb7c3b2cdb4d5ca27f49bf031ef5b3a;hpb=d47b33f38a60ffe3a781e9b04d25ff9434b1f424;p=vlc diff --git a/modules/gui/beos/PlayListWindow.cpp b/modules/gui/beos/PlayListWindow.cpp index 547c09900f..069eaeba43 100644 --- a/modules/gui/beos/PlayListWindow.cpp +++ b/modules/gui/beos/PlayListWindow.cpp @@ -1,8 +1,8 @@ /***************************************************************************** * PlayListWindow.cpp: beos interface ***************************************************************************** - * Copyright (C) 1999, 2000, 2001 VideoLAN - * $Id: PlayListWindow.cpp,v 1.10 2004/01/26 16:52:31 zorglub Exp $ + * Copyright (C) 1999, 2000, 2001 the VideoLAN team + * $Id$ * * Authors: Jean-Marc Dressler * Samuel Hocevar @@ -22,20 +22,18 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ - +#if 0 /* System headers */ #include #include -#include /* VLC headers */ #include -#include +#include /* BeOS interface headers */ -#include "VlcWrapper.h" #include "InterfaceWindow.h" #include "ListViews.h" #include "MsgVals.h" @@ -43,17 +41,17 @@ enum { - MSG_SELECT_ALL = 'sall', - MSG_SELECT_NONE = 'none', - MSG_RANDOMIZE = 'rndm', - MSG_SORT_REVERSE = 'srtr', - MSG_SORT_NAME = 'srtn', - MSG_SORT_PATH = 'srtp', - MSG_REMOVE = 'rmov', - MSG_REMOVE_ALL = 'rmal', - - MSG_SELECTION_CHANGED = 'slch', - MSG_SET_DISPLAY = 'stds', + MSG_SELECT_ALL = 'sall', + MSG_SELECT_NONE = 'none', + MSG_RANDOMIZE = 'rndm', + MSG_SORT_REVERSE = 'srtr', + MSG_SORT_NAME = 'srtn', + MSG_SORT_PATH = 'srtp', + MSG_REMOVE = 'rmov', + MSG_REMOVE_ALL = 'rmal', + + MSG_SELECTION_CHANGED = 'slch', + MSG_SET_DISPLAY = 'stds', }; @@ -61,118 +59,122 @@ enum * PlayListWindow::PlayListWindow *****************************************************************************/ PlayListWindow::PlayListWindow( BRect frame, const char* name, - InterfaceWindow* mainWindow, - intf_thread_t *p_interface ) - : BWindow( frame, name, B_FLOATING_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, - B_WILL_ACCEPT_FIRST_CLICK | B_ASYNCHRONOUS_CONTROLS ), - fMainWindow( mainWindow ) + InterfaceWindow* mainWindow, + intf_thread_t *p_interface ) + : BWindow( frame, name, B_FLOATING_WINDOW_LOOK, B_NORMAL_WINDOW_FEEL, + B_WILL_ACCEPT_FIRST_CLICK | B_ASYNCHRONOUS_CONTROLS ), + fMainWindow( mainWindow ) { - p_intf = p_interface; - p_wrapper = p_intf->p_sys->p_wrapper; - + char psz_tmp[1024]; +#define ADD_ELLIPSIS( a ) \ + memset( psz_tmp, 0, 1024 ); \ + snprintf( psz_tmp, 1024, "%s%s", a, B_UTF8_ELLIPSIS ); + + p_intf = p_interface; + SetName( _("playlist") ); // set up the main menu bar - fMenuBar = new BMenuBar( BRect(0.0, 0.0, frame.Width(), 15.0), "main menu", - B_FOLLOW_NONE, B_ITEMS_IN_ROW, false ); + fMenuBar = new BMenuBar( BRect(0.0, 0.0, frame.Width(), 15.0), "main menu", + B_FOLLOW_NONE, B_ITEMS_IN_ROW, false ); AddChild( fMenuBar ); - // Add the File menu - BMenu *fileMenu = new BMenu( _("File") ); - fMenuBar->AddItem( fileMenu ); - BMenuItem* item = new BMenuItem( _AddEllipsis(_("Open File")), - new BMessage( OPEN_FILE ), 'O' ); - item->SetTarget( fMainWindow ); - fileMenu->AddItem( item ); - - CDMenu* cd_menu = new CDMenu( _("Open Disc") ); - fileMenu->AddItem( cd_menu ); - - fileMenu->AddSeparatorItem(); - item = new BMenuItem( _("Close"), - new BMessage( B_QUIT_REQUESTED ), 'W' ); - fileMenu->AddItem( item ); - - // Add the Edit menu - BMenu *editMenu = new BMenu( _("Edit") ); - fMenuBar->AddItem( editMenu ); - fSelectAllMI = new BMenuItem( _("Select All"), - new BMessage( MSG_SELECT_ALL ), 'A' ); - editMenu->AddItem( fSelectAllMI ); - fSelectNoneMI = new BMenuItem( _("Select None"), - new BMessage( MSG_SELECT_NONE ), 'A', B_SHIFT_KEY ); - editMenu->AddItem( fSelectNoneMI ); - - editMenu->AddSeparatorItem(); - fSortReverseMI = new BMenuItem( _("Sort Reverse"), - new BMessage( MSG_SORT_REVERSE ), 'F' ); - editMenu->AddItem( fSortReverseMI ); - fSortNameMI = new BMenuItem( _("Sort by Name"), - new BMessage( MSG_SORT_NAME ), 'N' ); + // Add the File menu + BMenu *fileMenu = new BMenu( _("File") ); + fMenuBar->AddItem( fileMenu ); + ADD_ELLIPSIS( _("Open File") ); + BMenuItem* item = new BMenuItem( psz_tmp, new BMessage( OPEN_FILE ), 'O' ); + item->SetTarget( fMainWindow ); + fileMenu->AddItem( item ); + + CDMenu* cd_menu = new CDMenu( _("Open Disc") ); + fileMenu->AddItem( cd_menu ); + + fileMenu->AddSeparatorItem(); + item = new BMenuItem( _("Close"), + new BMessage( B_QUIT_REQUESTED ), 'W' ); + fileMenu->AddItem( item ); + + // Add the Edit menu + BMenu *editMenu = new BMenu( _("Edit") ); + fMenuBar->AddItem( editMenu ); + fSelectAllMI = new BMenuItem( _("Select All"), + new BMessage( MSG_SELECT_ALL ), 'A' ); + editMenu->AddItem( fSelectAllMI ); + fSelectNoneMI = new BMenuItem( _("Select None"), + new BMessage( MSG_SELECT_NONE ), 'A', B_SHIFT_KEY ); + editMenu->AddItem( fSelectNoneMI ); + + editMenu->AddSeparatorItem(); + fSortReverseMI = new BMenuItem( _("Sort Reverse"), + new BMessage( MSG_SORT_REVERSE ), 'F' ); + editMenu->AddItem( fSortReverseMI ); + fSortNameMI = new BMenuItem( _("Sort by Name"), + new BMessage( MSG_SORT_NAME ), 'N' ); fSortNameMI->SetEnabled( false ); - editMenu->AddItem( fSortNameMI ); - fSortPathMI = new BMenuItem( _("Sort by Path"), - new BMessage( MSG_SORT_PATH ), 'P' ); + editMenu->AddItem( fSortNameMI ); + fSortPathMI = new BMenuItem( _("Sort by Path"), + new BMessage( MSG_SORT_PATH ), 'P' ); fSortPathMI->SetEnabled( false ); - editMenu->AddItem( fSortPathMI ); - fRandomizeMI = new BMenuItem( _("Randomize"), - new BMessage( MSG_RANDOMIZE ), 'R' ); + editMenu->AddItem( fSortPathMI ); + fRandomizeMI = new BMenuItem( _("Randomize"), + new BMessage( MSG_RANDOMIZE ), 'R' ); fRandomizeMI->SetEnabled( false ); - editMenu->AddItem( fRandomizeMI ); - editMenu->AddSeparatorItem(); - fRemoveMI = new BMenuItem( _("Remove"), - new BMessage( MSG_REMOVE ) ); - editMenu->AddItem( fRemoveMI ); - fRemoveAllMI = new BMenuItem( _("Remove All"), - new BMessage( MSG_REMOVE_ALL ) ); - editMenu->AddItem( fRemoveAllMI ); - - // Add View menu - fViewMenu = new BMenu( _("View") ); - fMenuBar->AddItem( fViewMenu ); - - fViewMenu->SetRadioMode( true ); - BMessage* message = new BMessage( MSG_SET_DISPLAY ); - message->AddInt32( "mode", DISPLAY_PATH ); - item = new BMenuItem( _("Path"), message ); - item->SetMarked( true ); - fViewMenu->AddItem( item ); - - message = new BMessage( MSG_SET_DISPLAY ); - message->AddInt32( "mode", DISPLAY_NAME ); - item = new BMenuItem( _("Name"), message ); - fViewMenu->AddItem( item ); - - // make menu bar resize to correct height - float menuWidth, menuHeight; - fMenuBar->GetPreferredSize( &menuWidth, &menuHeight ); - // don't change next line! it's a workarround! - fMenuBar->ResizeTo( frame.Width(), menuHeight ); - - frame = Bounds(); - frame.top += fMenuBar->Bounds().IntegerHeight() + 1; - frame.right -= B_V_SCROLL_BAR_WIDTH; - - fListView = new PlaylistView( frame, fMainWindow, p_wrapper, - new BMessage( MSG_SELECTION_CHANGED ) ); - fBackgroundView = new BScrollView( "playlist scrollview", - fListView, B_FOLLOW_ALL_SIDES, - 0, false, true, - B_NO_BORDER ); - - AddChild( fBackgroundView ); - - // be up to date - UpdatePlaylist(); - FrameResized( Bounds().Width(), Bounds().Height() ); - SetSizeLimits( menuWidth * 1.5, menuWidth * 8.0, - menuHeight * 5.0, menuHeight * 50.0 ); - - UpdatePlaylist( true ); - // start window thread in hidden state - Hide(); - Show(); + editMenu->AddItem( fRandomizeMI ); + editMenu->AddSeparatorItem(); + fRemoveMI = new BMenuItem( _("Remove"), + new BMessage( MSG_REMOVE ) ); + editMenu->AddItem( fRemoveMI ); + fRemoveAllMI = new BMenuItem( _("Remove All"), + new BMessage( MSG_REMOVE_ALL ) ); + editMenu->AddItem( fRemoveAllMI ); + + // Add View menu + fViewMenu = new BMenu( _("View") ); + fMenuBar->AddItem( fViewMenu ); + + fViewMenu->SetRadioMode( true ); + BMessage* message = new BMessage( MSG_SET_DISPLAY ); + message->AddInt32( "mode", DISPLAY_PATH ); + item = new BMenuItem( _("Path"), message ); + item->SetMarked( true ); + fViewMenu->AddItem( item ); + + message = new BMessage( MSG_SET_DISPLAY ); + message->AddInt32( "mode", DISPLAY_NAME ); + item = new BMenuItem( _("Name"), message ); + fViewMenu->AddItem( item ); + + // make menu bar resize to correct height + float menuWidth, menuHeight; + fMenuBar->GetPreferredSize( &menuWidth, &menuHeight ); + // don't change next line! it's a workarround! + fMenuBar->ResizeTo( frame.Width(), menuHeight ); + + frame = Bounds(); + frame.top += fMenuBar->Bounds().IntegerHeight() + 1; + frame.right -= B_V_SCROLL_BAR_WIDTH; + + fListView = new PlaylistView( p_intf, frame, fMainWindow, + new BMessage( MSG_SELECTION_CHANGED ) ); + fBackgroundView = new BScrollView( "playlist scrollview", + fListView, B_FOLLOW_ALL_SIDES, + 0, false, true, + B_NO_BORDER ); + + AddChild( fBackgroundView ); + + // be up to date + UpdatePlaylist(); + FrameResized( Bounds().Width(), Bounds().Height() ); + SetSizeLimits( menuWidth * 1.5, menuWidth * 8.0, + menuHeight * 5.0, menuHeight * 50.0 ); + + UpdatePlaylist( true ); + // start window thread in hidden state + Hide(); + Show(); } /***************************************************************************** @@ -188,8 +190,8 @@ PlayListWindow::~PlayListWindow() bool PlayListWindow::QuitRequested() { - Hide(); - return false; + Hide(); + return false; } /***************************************************************************** @@ -198,53 +200,53 @@ PlayListWindow::QuitRequested() void PlayListWindow::MessageReceived( BMessage * p_message ) { - switch ( p_message->what ) - { - case OPEN_DVD: - case B_REFS_RECEIVED: - case B_SIMPLE_DATA: - // forward to interface window - fMainWindow->PostMessage( p_message ); - break; - case MSG_SELECT_ALL: - fListView->Select( 0, fListView->CountItems() - 1 ); - break; - case MSG_SELECT_NONE: - fListView->DeselectAll(); - break; - case MSG_RANDOMIZE: - break; - case MSG_SORT_REVERSE: - fListView->SortReverse(); - break; - case MSG_SORT_NAME: - break; - case MSG_SORT_PATH: - break; - case MSG_REMOVE: - fListView->RemoveSelected(); - break; - case MSG_REMOVE_ALL: - fListView->Select( 0, fListView->CountItems() - 1 ); - fListView->RemoveSelected(); - break; - case MSG_SELECTION_CHANGED: - _CheckItemsEnableState(); - break; - case MSG_SET_DISPLAY: - { - uint32 mode; - if ( p_message->FindInt32( "mode", (int32*)&mode ) == B_OK ) - SetDisplayMode( mode ); - break; - } - case B_MODIFIERS_CHANGED: - fListView->ModifiersChanged(); - break; - default: - BWindow::MessageReceived( p_message ); - break; - } + switch ( p_message->what ) + { + case OPEN_DVD: + case B_REFS_RECEIVED: + case B_SIMPLE_DATA: + // forward to interface window + fMainWindow->PostMessage( p_message ); + break; + case MSG_SELECT_ALL: + fListView->Select( 0, fListView->CountItems() - 1 ); + break; + case MSG_SELECT_NONE: + fListView->DeselectAll(); + break; + case MSG_RANDOMIZE: + break; + case MSG_SORT_REVERSE: + fListView->SortReverse(); + break; + case MSG_SORT_NAME: + break; + case MSG_SORT_PATH: + break; + case MSG_REMOVE: + fListView->RemoveSelected(); + break; + case MSG_REMOVE_ALL: + fListView->Select( 0, fListView->CountItems() - 1 ); + fListView->RemoveSelected(); + break; + case MSG_SELECTION_CHANGED: + _CheckItemsEnableState(); + break; + case MSG_SET_DISPLAY: + { + uint32 mode; + if ( p_message->FindInt32( "mode", (int32*)&mode ) == B_OK ) + SetDisplayMode( mode ); + break; + } + case B_MODIFIERS_CHANGED: + fListView->ModifiersChanged(); + break; + default: + BWindow::MessageReceived( p_message ); + break; + } } /***************************************************************************** @@ -253,14 +255,14 @@ PlayListWindow::MessageReceived( BMessage * p_message ) void PlayListWindow::FrameResized(float width, float height) { - BRect r(Bounds()); - fMenuBar->MoveTo(r.LeftTop()); - fMenuBar->ResizeTo(r.Width(), fMenuBar->Bounds().Height()); - r.top += fMenuBar->Bounds().Height() + 1.0; - fBackgroundView->MoveTo(r.LeftTop()); - // the "+ 1.0" is to make the scrollbar - // be partly covered by the window border - fBackgroundView->ResizeTo(r.Width() + 1.0, r.Height() + 1.0); + BRect r(Bounds()); + fMenuBar->MoveTo(r.LeftTop()); + fMenuBar->ResizeTo(r.Width(), fMenuBar->Bounds().Height()); + r.top += fMenuBar->Bounds().Height() + 1.0; + fBackgroundView->MoveTo(r.LeftTop()); + // the "+ 1.0" is to make the scrollbar + // be partly covered by the window border + fBackgroundView->ResizeTo(r.Width() + 1.0, r.Height() + 1.0); } /***************************************************************************** @@ -280,12 +282,18 @@ PlayListWindow::ReallyQuit() void PlayListWindow::UpdatePlaylist( bool rebuild ) { - if ( rebuild ) - fListView->RebuildList(); - fListView->SetCurrent( p_wrapper->PlaylistCurrent() ); - fListView->SetPlaying( p_wrapper->IsPlaying() ); + playlist_t * p_playlist; + + if( rebuild ) + fListView->RebuildList(); + + p_playlist = (playlist_t *) + vlc_object_find( p_intf, VLC_OBJECT_PLAYLIST, FIND_ANYWHERE ); + fListView->SetCurrent( p_playlist->i_index ); + fListView->SetPlaying( p_playlist->status.i_status == PLAYLIST_RUNNING ); + vlc_object_release( p_playlist ); - _CheckItemsEnableState(); + _CheckItemsEnableState(); } /***************************************************************************** @@ -294,25 +302,25 @@ PlayListWindow::UpdatePlaylist( bool rebuild ) void PlayListWindow::SetDisplayMode( uint32 mode ) { - if ( Lock() ) - { - // propagate to list view - fListView->SetDisplayMode( mode ); - // mark correct menu item - for ( int32 i = 0; BMenuItem* item = fViewMenu->ItemAt( i ); i++ ) - { - BMessage* message = item->Message(); - uint32 itemMode; - if ( message - && message->FindInt32( "mode", (int32*)&itemMode ) == B_OK - && itemMode == mode ) - { - item->SetMarked( true ); - break; - } - } - Unlock(); - } + if ( Lock() ) + { + // propagate to list view + fListView->SetDisplayMode( mode ); + // mark correct menu item + for ( int32 i = 0; BMenuItem* item = fViewMenu->ItemAt( i ); i++ ) + { + BMessage* message = item->Message(); + uint32 itemMode; + if ( message + && message->FindInt32( "mode", (int32*)&itemMode ) == B_OK + && itemMode == mode ) + { + item->SetMarked( true ); + break; + } + } + Unlock(); + } } /***************************************************************************** @@ -321,7 +329,7 @@ PlayListWindow::SetDisplayMode( uint32 mode ) uint32 PlayListWindow::DisplayMode() const { - return fListView->DisplayMode(); + return fListView->DisplayMode(); } /***************************************************************************** @@ -330,21 +338,21 @@ PlayListWindow::DisplayMode() const void PlayListWindow::_CheckItemsEnableState() const { - // check if one item selected - int32 test = fListView->CurrentSelection( 0 ); - bool enable1 = test >= 0; - // check if at least two items selected - test = fListView->CurrentSelection( 1 ); - bool enable2 = test >= 0; - bool notEmpty = fListView->CountItems() > 0; - _SetMenuItemEnabled( fSelectAllMI, notEmpty ); - _SetMenuItemEnabled( fSelectNoneMI, enable1 ); - _SetMenuItemEnabled( fSortReverseMI, enable2 ); -// _SetMenuItemEnabled( fSortNameMI, enable2 ); -// _SetMenuItemEnabled( fSortPathMI, enable2 ); -// _SetMenuItemEnabled( fRandomizeMI, enable2 ); - _SetMenuItemEnabled( fRemoveMI, enable1 ); - _SetMenuItemEnabled( fRemoveAllMI, notEmpty ); + // check if one item selected + int32 test = fListView->CurrentSelection( 0 ); + bool enable1 = test >= 0; + // check if at least two items selected + test = fListView->CurrentSelection( 1 ); + bool enable2 = test >= 0; + bool notEmpty = fListView->CountItems() > 0; + _SetMenuItemEnabled( fSelectAllMI, notEmpty ); + _SetMenuItemEnabled( fSelectNoneMI, enable1 ); + _SetMenuItemEnabled( fSortReverseMI, enable2 ); +// _SetMenuItemEnabled( fSortNameMI, enable2 ); +// _SetMenuItemEnabled( fSortPathMI, enable2 ); +// _SetMenuItemEnabled( fRandomizeMI, enable2 ); + _SetMenuItemEnabled( fRemoveMI, enable1 ); + _SetMenuItemEnabled( fRemoveAllMI, notEmpty ); } /***************************************************************************** @@ -353,7 +361,8 @@ PlayListWindow::_CheckItemsEnableState() const void PlayListWindow::_SetMenuItemEnabled( BMenuItem* item, bool enabled ) const { - // this check should actally be done in BMenuItem::SetEnabled(), but it is not... - if ( item->IsEnabled() != enabled ) - item->SetEnabled( enabled ); + // this check should actally be done in BMenuItem::SetEnabled(), but it is not... + if ( item->IsEnabled() != enabled ) + item->SetEnabled( enabled ); } +#endif