]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs_provider.cpp
Fix the drag'n drop of directories on windows. Thanks to rohanpm on #qt for the idea...
[vlc] / modules / gui / qt4 / dialogs_provider.cpp
index 67831d5865ce13aef3c5ecbe8740c0b2e70ea270..c18488e48c1955c7a7d93ec7f0de84c1d8f06fe8 100644 (file)
@@ -21,6 +21,9 @@
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
  *****************************************************************************/
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
 
 #include <QEvent>
 #include <QApplication>
@@ -69,8 +72,17 @@ DialogsProvider::DialogsProvider( intf_thread_t *_p_intf ) :
 
 DialogsProvider::~DialogsProvider()
 {
+    msg_Dbg( p_intf, "Destroying the Dialog Provider" );
     PlaylistDialog::killInstance();
     MediaInfoDialog::killInstance();
+    MessagesDialog::killInstance();
+    ExtendedDialog::killInstance();
+    BookmarksDialog::killInstance();
+    HelpDialog::killInstance();
+#ifdef UPDATE_CHECK
+    UpdateDialog::killInstance();
+#endif
+
     fixed_timer->stop();
 }
 
@@ -305,7 +317,7 @@ void DialogsProvider::addFromSimple( bool pl, bool go)
                                                ( i ? PLAYLIST_PREPARSE : 0 ) )
                          : ( PLAYLIST_APPEND | PLAYLIST_PREPARSE ),
                       PLAYLIST_END,
-                      pl ? VLC_TRUE : VLC_FALSE, VLC_FALSE );
+                      pl ? true : false, false );
         i++;
     }
 }
@@ -339,10 +351,12 @@ static void openDirectory( intf_thread_t *p_intf, bool pl, bool go )
                                         qtu( "directory://" + dir ), NULL,
                                         0, NULL, -1 );
 
+        /* FIXME: playlist_AddInput() can fail */
         playlist_AddInput( THEPL, p_input,
                        go ? ( PLAYLIST_APPEND | PLAYLIST_GO ) : PLAYLIST_APPEND,
-                       PLAYLIST_END, pl, VLC_FALSE );
-        input_Read( THEPL, p_input, VLC_FALSE );
+                       PLAYLIST_END, pl, false );
+        input_Read( THEPL, p_input, false );
+        vlc_gc_decref( p_input );
     }
 }
 
@@ -424,7 +438,7 @@ void DialogsProvider::streamingDialog( QWidget *parent, QString mrl,
 
     if( s->exec() == QDialog::Accepted )
     {
-        msg_Err( p_intf, "Sout mrl %s", qta( s->getMrl() ) );
+        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 );
@@ -432,7 +446,7 @@ void DialogsProvider::streamingDialog( QWidget *parent, QString mrl,
 
         playlist_AddExt( THEPL, qtu( mrl ), "Streaming",
                          PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END,
-                        -1, &psz_option, 1, VLC_TRUE, VLC_FALSE );
+                        -1, &psz_option, 1, true, false );
     }
 }
 
@@ -489,6 +503,17 @@ void DialogsProvider::doInteraction( intf_dialog_args_t *p_arg )
         qdialog = (InteractionDialog*)(p_dialog->p_private);
         if( qdialog )
             qdialog->update();
+        else
+        {
+            /* The INTERACT_NEW message was forgotten
+               so we must create the dialog and update it*/
+            qdialog = new InteractionDialog( p_intf, p_dialog );
+            p_dialog->p_private = (void*)qdialog;
+            if( !(p_dialog->i_status == ANSWERED_DIALOG) )
+                qdialog->show();
+            if( qdialog )
+                qdialog->update();
+        }
         break;
     case INTERACT_HIDE:
         qdialog = (InteractionDialog*)(p_dialog->p_private);
@@ -504,13 +529,3 @@ void DialogsProvider::doInteraction( intf_dialog_args_t *p_arg )
         break;
     }
 }
-
-void DialogsProvider::switchToSkins()
-{
-    var_SetString( p_intf, "intf-switch", "skins2" );
-}
-
-void DialogsProvider::switchToWx()
-{
-    var_SetString( p_intf, "intf-switch", "wxwidgets" );
-}