]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/components/playlist/selector.cpp
luasd: use a configuration chain to pass parameters to SD
[vlc] / modules / gui / qt4 / components / playlist / selector.cpp
index 9a59a9fd55ffc10af5785faa5d6128677c0d7a22..4c4d8d72dd96b1e4f1bde5b94c654df91680508e 100644 (file)
@@ -101,9 +101,9 @@ PLSelector::PLSelector( QWidget *p, intf_thread_t *_p_intf )
     setFrameStyle( QFrame::NoFrame );
     viewport()->setAutoFillBackground( false );
     setIconSize( QSize( 24,24 ) );
-    setIndentation( 10 );
+    setIndentation( 14 );
     header()->hide();
-    setRootIsDecorated( false );
+    setRootIsDecorated( true );
     setAlternatingRowColors( false );
     podcastsParent = NULL;
     podcastsParentId = -1;
@@ -122,6 +122,9 @@ PLSelector::PLSelector( QWidget *p, intf_thread_t *_p_intf )
     createItems();
     CONNECT( this, itemActivated( QTreeWidgetItem *, int ),
              this, setSource( QTreeWidgetItem *) );
+    CONNECT( this, itemClicked( QTreeWidgetItem *, int ),
+             this, setSource( QTreeWidgetItem *) );
+
     /* I believe this is unnecessary, seeing
        QStyle::SH_ItemView_ActivateItemOnSingleClick
         CONNECT( view, itemClicked( QTreeWidgetItem *, int ),
@@ -170,7 +173,7 @@ void PLSelector::setSource( QTreeWidgetItem *item )
 
     if( i_type == SD_TYPE )
     {
-        pl_item = playlist_ChildSearchName( THEPL->p_root_category, qtu( item->data(0, LONGNAME_ROLE ).toString() ) );
+        pl_item = playlist_ChildSearchName( THEPL->p_root, qtu( item->data(0, NAME_ROLE ).toString() ) );
         if( item->data( 0, SPECIAL_ROLE ).toInt() == IS_PODCAST )
         {
             if( pl_item && !sd_loaded )
@@ -238,24 +241,19 @@ PLSelItem *PLSelector::addPodcastItem( playlist_item_t *p_item )
 void PLSelector::createItems()
 {
     PLSelItem *pl = putPLData( addItem( PL_ITEM_TYPE, qtr( "Playlist" ), true ),
-                              THEPL->p_local_category );
+                              THEPL->p_playing );
     pl->treeItem()->setData( 0, SPECIAL_ROLE, QVariant( IS_PL ) );
 
     PLSelItem *ml = putPLData( addItem( PL_ITEM_TYPE, qtr( "Media Library" ), true ),
-                              THEPL->p_ml_category );
+                              THEPL->p_media_library );
     ml->treeItem()->setData( 0, SPECIAL_ROLE, QVariant( IS_ML ) );
 
-    QTreeWidgetItem *msrc = addItem( CATEGORY_TYPE, qtr( "Media Sources" ),
-                                      false )->treeItem();
-
     QTreeWidgetItem *mfldrs = NULL;
 
     QTreeWidgetItem *shouts = NULL;
 
-    msrc->setExpanded( true );
-
     char **ppsz_longnames;
-    char **ppsz_names = vlc_sd_GetNames( &ppsz_longnames );
+    char **ppsz_names = vlc_sd_GetNames( THEPL, &ppsz_longnames );
     if( !ppsz_names )
         return;
 
@@ -269,21 +267,21 @@ void PLSelector::createItems()
             SD_IS("frenchtv") || SD_IS("freebox") )
         {
             if( !shouts ) shouts = addItem( CATEGORY_TYPE, qtr( "Shoutcast" ),
-                                            false, msrc )->treeItem();
+                                            false )->treeItem();
             putSDData( addItem( SD_TYPE, *ppsz_longname, false, shouts ),
                        *ppsz_name, *ppsz_longname );
         }
         else if( SD_IS("video_dir") || SD_IS("audio_dir") || SD_IS("picture_dir") )
         {
             if( !mfldrs ) mfldrs = addItem( CATEGORY_TYPE, qtr( "Media Folders" ),
-                                            false, msrc )->treeItem();
+                                            false )->treeItem();
             putSDData( addItem( SD_TYPE, *ppsz_longname, false, mfldrs ),
                        *ppsz_name, *ppsz_longname );
         }
         else if( SD_IS("podcast") )
         {
 
-            PLSelItem *podItem = addItem( SD_TYPE, qtr( "Podcasts" ), false, msrc );
+            PLSelItem *podItem = addItem( SD_TYPE, qtr( "Podcasts" ), false );
             putSDData( podItem, *ppsz_name, *ppsz_longname );
             podItem->treeItem()->setData( 0, SPECIAL_ROLE, QVariant( IS_PODCAST ) );
             podItem->addAction( ADD_ACTION, qtr( "Subscribe to a podcast" ) );
@@ -293,7 +291,7 @@ void PLSelector::createItems()
         }
         else
         {
-            putSDData( addItem( SD_TYPE, qtr( *ppsz_longname ), false, msrc ),
+            putSDData( addItem( SD_TYPE, qtr( *ppsz_longname ), false ),
                        *ppsz_name, *ppsz_longname );
         }
 
@@ -463,4 +461,17 @@ void PLSelector::podcastRemove( PLSelItem* item )
 PLSelItem * PLSelector::itemWidget( QTreeWidgetItem *item )
 {
     return ( static_cast<PLSelItem*>( QTreeWidget::itemWidget( item, 0 ) ) );
-}
\ No newline at end of file
+}
+
+void PLSelector::drawBranches ( QPainter * painter, const QRect & rect, const QModelIndex & index ) const
+{
+    if( !model()->hasChildren( index ) ) return;
+    QStyleOption option;
+    option.initFrom( this );
+    option.rect = rect;
+    /*option.state = QStyle::State_Children;
+    if( isExpanded( index ) ) option.state |=  QStyle::State_Open;*/
+    style()->drawPrimitive( isExpanded( index ) ?
+                            QStyle::PE_IndicatorArrowDown :
+                            QStyle::PE_IndicatorArrowRight, &option, painter );
+}