]> git.sesse.net Git - vlc/commitdiff
Qt4: cache currentItem index
authorIlkka Ollakka <ileoo@videolan.org>
Wed, 23 Jun 2010 09:42:08 +0000 (12:42 +0300)
committerIlkka Ollakka <ileoo@videolan.org>
Wed, 23 Jun 2010 09:52:27 +0000 (12:52 +0300)
Not sure if it's the best way, but this enables
to show the current item even when input is stopped.

modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/playlist_model.hpp

index ae6d7b73292d289fd2c2d7fd199b4474cd4d63d3..756ee00d0f86eba2b02282b15dd5eb491249fbdc 100644 (file)
@@ -73,6 +73,7 @@ PLModel::PLModel( playlist_t *_p_playlist,  /* THEPL */
     i_cached_input_id = -1;
     i_popup_item      = i_popup_parent = -1;
     sortingMenu       = NULL;
+    current_index     = QModelIndex();
 
     rootItem          = NULL; /* PLItem rootItem, will be set in rebuild( ) */
 
@@ -98,6 +99,8 @@ PLModel::PLModel( playlist_t *_p_playlist,  /* THEPL */
              this, processItemAppend( int, int ) );
     CONNECT( THEMIM, playlistItemRemoved( int ),
              this, processItemRemoval( int ) );
+    CONNECT( this, currentChanged( const QModelIndex &) ,
+             this, cacheCurrent( const QModelIndex &) );
 }
 
 PLModel::~PLModel()
@@ -380,7 +383,7 @@ QVariant PLModel::data( const QModelIndex &index, int role ) const
 
 bool PLModel::isCurrent( const QModelIndex &index ) const
 {
-    return getItem( index )->p_input == THEMIM->currentInputItem();
+    return index == current_index;
 }
 
 int PLModel::itemId( const QModelIndex &index ) const
@@ -429,12 +432,14 @@ QModelIndex PLModel::index( PLItem *item, int column ) const
     return QModelIndex();
 }
 
+void PLModel::cacheCurrent( const QModelIndex &current )
+{
+    current_index = current;
+}
+
 QModelIndex PLModel::currentIndex()
 {
-    input_thread_t *p_input_thread = THEMIM->getInput();
-    if( !p_input_thread ) return QModelIndex();
-    PLItem *item = findByInput( rootItem, input_GetItem( p_input_thread )->i_id );
-    return index( item, 0 );
+    return current_index;
 }
 
 QModelIndex PLModel::parent( const QModelIndex &index ) const
index 494df32046354865822aa1e55be75471757b113c..033cdc691ac1e576ee82d64c273d2b3c7e40bbe2 100644 (file)
@@ -161,6 +161,7 @@ private:
     PLItem *p_cached_item_bi;
     int i_cached_id;
     int i_cached_input_id;
+    QModelIndex current_index;
 
 private slots:
     void popupPlay();
@@ -175,6 +176,7 @@ private slots:
     void processInputItemUpdate( input_thread_t* p_input );
     void processItemRemoval( int i_id );
     void processItemAppend( int item, int parent );
+    void cacheCurrent( const QModelIndex & );
 };
 
 class PlMimeData : public QMimeData