]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs_provider.cpp
Qt: add a new "Open URL" dialog
[vlc] / modules / gui / qt4 / dialogs_provider.cpp
index aeac1142314f4e2de8fe93b7308258643709065b..e2bacb3b719e4829a1c7b3e0f7c99b63d53baec5 100644 (file)
@@ -45,6 +45,7 @@
 #include "dialogs/vlm.hpp"
 #include "dialogs/sout.hpp"
 #include "dialogs/open.hpp"
+#include "dialogs/openurl.hpp"
 #include "dialogs/help.hpp"
 #include "dialogs/gototime.hpp"
 #include "dialogs/podcast_configuration.hpp"
@@ -423,6 +424,31 @@ void DialogsProvider::simpleMLAppendDialog()
     addFromSimple( false, false );
 }
 
+/* Url & Clipboard */
+/**
+ * Open a MRL.
+ * If the clipboard contains URLs, the first is automatically 'preselected'.
+ **/
+void DialogsProvider::openUrlDialog()
+{
+    OpenUrlDialog *oud = OpenUrlDialog::getInstance( p_intf->p_sys->p_mi,
+                                                     p_intf );
+    if( oud->exec() == QDialog::Accepted )
+    {
+        QString url = oud->url();
+        if( !url.isEmpty() )
+        {
+            playlist_Add( THEPL, qtu( toNativeSeparators( url ) ),
+                          NULL, !oud->shouldEnqueue() ?
+                                  ( PLAYLIST_APPEND | PLAYLIST_GO )
+                                : ( PLAYLIST_APPEND | PLAYLIST_PREPARSE ),
+                          PLAYLIST_END, true, false );
+            RecentsMRL::getInstance( p_intf )->addRecent(
+                                     toNativeSeparators( url ) );
+        }
+    }
+}
+
 /* Directory */
 /**
  * Open a directory,
@@ -437,8 +463,7 @@ static void openDirectory( intf_thread_t *p_intf, bool pl, bool go )
     {
         QString mrl = dir.endsWith( "VIDEO_TS", Qt::CaseInsensitive ) ?
             "dvd://" : "directory://" + toNativeSeparators( dir );
-        input_item_t *p_input = input_item_NewExt( THEPL, qtu( mrl ),
-                              NULL, 0, NULL, -1 );
+        input_item_t *p_input = input_item_New( THEPL, qtu( mrl ), NULL );
 
         /* FIXME: playlist_AddInput() can fail */
         playlist_AddInput( THEPL, p_input,
@@ -503,7 +528,6 @@ void DialogsProvider::saveAPlaylist()
 
             QString file = qfd->selectedFiles().first();
             QString filter = qfd->selectedFilter();
-            const char* filt = filter.toAscii();
 
             if( file.contains( ".xsp" ) || filter.contains( "XSPF" ) )
             {
@@ -548,15 +572,12 @@ void DialogsProvider::streamingDialog( QWidget *parent, QString mrl,
 
     if( s->exec() == QDialog::Accepted )
     {
-        msg_Dbg( p_intf, "Sout mrl %s", qta( s->getMrl() ) );
-        /* Just do it */
-        int i_len = strlen( qtu( s->getMrl() ) ) + 10;
-        char *psz_option = (char*)malloc( i_len );
-        snprintf( psz_option, i_len - 1, "%s", qtu( s->getMrl() ) );
+        const char *psz_option = qtu( s->getMrl() );
 
+        msg_Dbg( p_intf, "Sout mrl %s", psz_option );
         playlist_AddExt( THEPL, qtu( mrl ), "Streaming",
                          PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END,
-                        -1, &psz_option, 1, true, pl_Unlocked );
+                        -1, 1, &psz_option, VLC_INPUT_OPTION_TRUSTED, true, pl_Unlocked );
         RecentsMRL::getInstance( p_intf )->addRecent( mrl );
     }
 }
@@ -608,7 +629,7 @@ void DialogsProvider::loadSubtitlesFile()
 
 void DialogsProvider::menuAction( QObject *data )
 {
-    QVLCMenu::DoAction( p_intf, data );
+    QVLCMenu::DoAction( data );
 }
 
 void DialogsProvider::menuUpdateAction( QObject *data )