From f025433b9a8d04ddbed9ac7d1bf1e3b9a63958c8 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Andre Date: Thu, 21 Aug 2008 22:54:52 -0400 Subject: [PATCH] Qt: Implement Stream/Save in playlist popup menu --- .../components/playlist/playlist_model.cpp | 40 ++++++++++++++++++- .../components/playlist/playlist_model.hpp | 3 ++ 2 files changed, 41 insertions(+), 2 deletions(-) diff --git a/modules/gui/qt4/components/playlist/playlist_model.cpp b/modules/gui/qt4/components/playlist/playlist_model.cpp index 9eba5910d3..6d4fc63786 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.cpp +++ b/modules/gui/qt4/components/playlist/playlist_model.cpp @@ -26,6 +26,7 @@ #endif #include "qt4.hpp" +#include "dialogs_provider.hpp" #include "components/playlist/playlist_model.hpp" #include "dialogs/mediainfo.hpp" #include @@ -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 + (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 diff --git a/modules/gui/qt4/components/playlist/playlist_model.hpp b/modules/gui/qt4/components/playlist/playlist_model.hpp index 19fc446d0a..a097fa63cc 100644 --- a/modules/gui/qt4/components/playlist/playlist_model.hpp +++ b/modules/gui/qt4/components/playlist/playlist_model.hpp @@ -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(); -- 2.39.2