1
mirror of https://code.videolan.org/videolan/vlc synced 2024-09-16 16:02:54 +02:00

Playlist simplification in leaf-to-parent management

This commit is contained in:
Jean-Baptiste Kempf 2011-05-20 18:21:21 +02:00
parent 65d1e78489
commit 874efde6d6
6 changed files with 20 additions and 26 deletions

View File

@ -109,9 +109,8 @@ TYPEDEF_ARRAY(playlist_item_t*, playlist_item_array_t)
* - "playlist-item-deleted": It will contain the playlist_item_t->i_id of a
* deleted playlist_item_t.
*
* - "leaf-to-parent": Set when an item gets subitems and is transformed to a
* node. It will contain a pointer to the input_item_t bound to the transformed
* playlist item.
* - "leaf-to-parent": It will contain the playlist_item_t->i_id of an item that is transformed
* into a node.
*
* The playlist contains rate-variable which is propagated to current input if available
* also rate-slower/rate-faster is in use

View File

@ -79,8 +79,8 @@ StandardPLPanel::StandardPLPanel( PlaylistWidget *_parent,
int i_savedViewMode = getSettings()->value( "Playlist/view-mode", TREE_VIEW ).toInt();
showView( i_savedViewMode );
DCONNECT( THEMIM, leafBecameParent( input_item_t *),
this, browseInto( input_item_t * ) );
DCONNECT( THEMIM, leafBecameParent( int ),
this, browseInto( int ) );
CONNECT( model, currentChanged( const QModelIndex& ),
this, handleExpansion( const QModelIndex& ) );
@ -451,20 +451,11 @@ void StandardPLPanel::activate( const QModelIndex &index )
}
}
void StandardPLPanel::browseInto( input_item_t *p_input )
void StandardPLPanel::browseInto( int i_id )
{
if( p_input->i_id != lastActivatedId ) return;
if( i_id != lastActivatedId ) return;
playlist_Lock( THEPL );
playlist_item_t *p_item = playlist_ItemGetByInput( THEPL, p_input );
if( !p_item )
{
playlist_Unlock( THEPL );
return;
}
QModelIndex index = model->index( p_item->i_id, 0 );
QModelIndex index = model->index( i_id, 0 );
playlist_Unlock( THEPL );
if( currentView == treeView )

View File

@ -111,7 +111,7 @@ private slots:
void activate( const QModelIndex & );
void browseInto();
void browseInto( input_item_t * );
void browseInto( int );
void gotoPlayingItem();

View File

@ -1027,8 +1027,8 @@ void MainInputManager::customEvent( QEvent *event )
notifyRepeatLoop();
return;
case LeafToParent_Type:
imEv = static_cast<IMEvent*>( event );
emit leafBecameParent( imEv->p_item );
plEv = static_cast<PLEvent*>( event );
emit leafBecameParent( plEv->i_item );
return;
default:
if( type != ItemChanged_Type ) return;
@ -1186,8 +1186,8 @@ static int LeafToParent( vlc_object_t *p_this, const char *psz_var,
VLC_UNUSED( p_this ); VLC_UNUSED( psz_var ); VLC_UNUSED( oldval );
MainInputManager *mim = (MainInputManager*)param;
IMEvent *event = new IMEvent( LeafToParent_Type,
static_cast<input_item_t*>( newval.p_address ) );
PLEvent *event = new PLEvent( LeafToParent_Type, newval.i_int );
QApplication::postEvent( mim, event );
return VLC_SUCCESS;
}

View File

@ -107,9 +107,13 @@ enum PLEventTypes
class PLEvent : public QEvent
{
public:
PLEvent( PLEventTypes t, int i, int p )
: QEvent( (QEvent::Type)t ), i_item(i), i_parent(p) {}
PLEvent( int t, int i, int p = 0 )
: QEvent( (QEvent::Type)(t) ), i_item(i), i_parent(p) {}
/* Needed for "playlist-item*" and "leaf-to-parent" callbacks
* !! Can be a input_item_t->i_id or a playlist_item_t->i_id */
int i_item;
// Needed for "playlist-item-append" callback, notably
int i_parent;
};
@ -290,7 +294,7 @@ signals:
void playlistItemRemoved( int itemId );
void randomChanged( bool );
void repeatLoopChanged( int );
void leafBecameParent( input_item_t * );
void leafBecameParent( int );
};
#endif

View File

@ -126,7 +126,7 @@ static void input_item_add_subitem_tree ( const vlc_event_t * p_event,
pos,
b_flat );
if( !b_flat ) var_SetAddress( p_playlist, "leaf-to-parent", p_input );
if( !b_flat ) var_SetAddress( p_playlist, "leaf-to-parent", p_item->i_id );
//control playback only if it was the current playing item that got subitems
if( b_current )