]> git.sesse.net Git - vlc/commitdiff
Qt: Implement Stream/Save in playlist popup menu
authorJean-Philippe Andre <jpeg@via.ecp.fr>
Fri, 22 Aug 2008 02:54:52 +0000 (22:54 -0400)
committerJean-Philippe Andre <jpeg@via.ecp.fr>
Fri, 22 Aug 2008 03:04:33 +0000 (23:04 -0400)
modules/gui/qt4/components/playlist/playlist_model.cpp
modules/gui/qt4/components/playlist/playlist_model.hpp

index 9eba5910d3ec0f436e8dfdf6fabe88c10bb0f76c..6d4fc637865ac09857597fca169b762e029ddade 100644 (file)
@@ -26,6 +26,7 @@
 #endif
 
 #include "qt4.hpp"
+#include "dialogs_provider.hpp"
 #include "components/playlist/playlist_model.hpp"
 #include "dialogs/mediainfo.hpp"
 #include <vlc_intf_strings.h>
@@ -396,6 +397,35 @@ int PLModel::rowCount( const QModelIndex &parent ) const
     return parentItem->childCount();
 }
 
+QStringList PLModel::selectedURIs()
+{
+    QStringList lst;
+    for( int i = 0; i < current_selection.size(); i++ )
+    {
+        PL_LOCK;
+        PLItem *item = static_cast<PLItem*>
+                    (current_selection[i].internalPointer());
+        if( !item )
+            continue;
+
+        input_item_t *p_item = input_item_GetById( p_playlist,
+                                                   item->i_input_id );
+        if( !p_item )
+            continue;
+
+        char *psz = input_item_GetURI( p_item );
+        if( !psz )
+            continue;
+        else
+        {
+            lst.append( QString( psz ) );
+            free( psz );
+        }
+        PL_UNLOCK;
+    }
+    return lst;
+}
+
 /************************* General playlist status ***********************/
 
 bool PLModel::hasRandom()
@@ -862,6 +892,7 @@ void PLModel::popupDel()
 {
     doDelete( current_selection );
 }
+
 void PLModel::popupPlay()
 {
     PL_LOCK;
@@ -888,12 +919,17 @@ void PLModel::popupInfo()
 
 void PLModel::popupStream()
 {
-     msg_Err( p_playlist, "Stream not implemented" );
+    QStringList mrls = selectedURIs();
+    if( !mrls.isEmpty() )
+        THEDP->streamingDialog( NULL, mrls[0], false );
+
 }
 
 void PLModel::popupSave()
 {
-     msg_Err( p_playlist, "Save not implemented" );
+    QStringList mrls = selectedURIs();
+    if( !mrls.isEmpty() )
+        THEDP->streamingDialog( NULL, mrls[0], true );
 }
 
 #include <QUrl>
index 19fc446d0adf60926b07c58997862421684b7a4a..a097fa63ccde04b3970be195344bce27c994e0c1 100644 (file)
@@ -96,6 +96,9 @@ public:
     int rowCount( const QModelIndex &parent = QModelIndex() ) const;
     int columnCount( const QModelIndex &parent = QModelIndex() ) const;
 
+    /* Get current selection */
+    QStringList selectedURIs();
+
     void rebuild(); void rebuild( playlist_item_t * );
     bool hasRandom(); bool hasLoop(); bool hasRepeat();