]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs_provider.cpp
modules/gui/qt4: add an update dialog box to the help menu. (Patch by Remi Duraffort...
[vlc] / modules / gui / qt4 / dialogs_provider.cpp
index 58dd46013635a4f70eb549efbb4c17e41509d38c..1eb9ea778123e982a20e15f9c58a09b2d8650fdc 100644 (file)
@@ -1,10 +1,11 @@
 /*****************************************************************************
  * main_inteface.cpp : Main interface
  *****************************************************************************
- * Copyright (C) 2006 the VideoLAN team
+ * Copyright (C) 2006-2007 the VideoLAN team
  * $Id$
  *
  * Authors: ClĂ©ment Stenac <zorglub@videolan.org>
+ *          Jean-Baptiste Kempf <jb@videolan.org>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
 #include "dialogs/extended.hpp"
 #include "dialogs/sout.hpp"
 #include "dialogs/open.hpp"
+#include "dialogs/vlm.hpp"
 #include "dialogs/help.hpp"
 #include "dialogs/gototime.hpp"
+#include "dialogs/podcast_configuration.hpp"
+#include "dialogs/vlm.hpp"
+
 
 DialogsProvider* DialogsProvider::instance = NULL;
 
@@ -66,11 +71,12 @@ DialogsProvider::~DialogsProvider()
 {
     PlaylistDialog::killInstance();
     MediaInfoDialog::killInstance();
+    fixed_timer->stop();
 }
 
 void DialogsProvider::quit()
 {
-    p_intf->b_die = VLC_TRUE;
+    vlc_object_kill( p_intf );
     QApplication::quit();
 }
 
@@ -91,6 +97,8 @@ void DialogsProvider::customEvent( QEvent *event )
             case INTF_DIALOG_SAT:
             case INTF_DIALOG_CAPTURE:
                 openCaptureDialog(); break;
+            case INTF_DIALOG_DIRECTORY:
+                PLAppendDir(); break;
             case INTF_DIALOG_PLAYLIST:
                 playlistDialog(); break;
             case INTF_DIALOG_MESSAGES:
@@ -103,7 +111,10 @@ void DialogsProvider::customEvent( QEvent *event )
                bookmarksDialog(); break;
             case INTF_DIALOG_EXTENDED:
                extendedDialog(); break;
-               /* We might want to make it better with custom functions */
+            case INTF_DIALOG_VLM:
+               vlmDialog(); break;
+            case INTF_DIALOG_INTERACTION:
+               doInteraction( de->p_arg ); break;
             case INTF_DIALOG_POPUPMENU:
                QVLCMenu::PopupMenu( p_intf, (de->i_arg != 0) ); break;
             case INTF_DIALOG_AUDIOPOPUPMENU:
@@ -112,10 +123,8 @@ void DialogsProvider::customEvent( QEvent *event )
                QVLCMenu::VideoPopupMenu( p_intf ); break;
             case INTF_DIALOG_MISCPOPUPMENU:
                QVLCMenu::MiscPopupMenu( p_intf ); break;
-            case INTF_DIALOG_INTERACTION:
-               doInteraction( de->p_arg ); break;
-            case INTF_DIALOG_VLM:
             case INTF_DIALOG_WIZARD:
+            case INTF_DIALOG_STREAMWIZARD:
             case INTF_DIALOG_UPDATEVLC:
             case INTF_DIALOG_EXIT:
             default:
@@ -151,11 +160,21 @@ void DialogsProvider::gotoTimeDialog()
     GotoTimeDialog::getInstance( p_intf )->toggleVisible();
 }
 
+void DialogsProvider::vlmDialog()
+{
+    VLMDialog::getInstance( p_intf )->toggleVisible();
+}
+
 void DialogsProvider::helpDialog()
 {
     HelpDialog::getInstance( p_intf )->toggleVisible();
 }
 
+void DialogsProvider::updateDialog()
+{
+    UpdateDialog::getInstance( p_intf )->toggleVisible();
+}
+
 void DialogsProvider::aboutDialog()
 {
     AboutDialog::getInstance( p_intf )->toggleVisible();
@@ -168,17 +187,30 @@ void DialogsProvider::mediaInfoDialog()
 
 void DialogsProvider::mediaCodecDialog()
 {
-    MediaInfoDialog::getInstance( p_intf )->showTab( 1 );
+    MediaInfoDialog::getInstance( p_intf )->showTab( 2 );
 }
 
 void DialogsProvider::bookmarksDialog()
 {
+    /* FIXME - Implement me */
+    /*  BookmarkDialog::getInstance( p_intf )->toggleVisible(); */
+}
+
+void DialogsProvider::podcastConfigureDialog()
+{
+    PodcastConfigDialog::getInstance( p_intf )->toggleVisible();
 }
 
+
 /****************************************************************************
  * All the open/add stuff
+ * Open Dialog first - Simple Open then
  ****************************************************************************/
 
+void DialogsProvider::openDialog( int i_tab )
+{
+    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf )->showTab( i_tab );
+}
 void DialogsProvider::openDialog()
 {
     openDialog( OPEN_FILE_TAB );
@@ -199,20 +231,26 @@ void DialogsProvider::openCaptureDialog()
 {
     openDialog( OPEN_CAPTURE_TAB );
 }
-void DialogsProvider::openDialog( int i_tab )
-{
-    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf )->showTab( i_tab );
-}
 
+/* Same as the open one, but force the enqueue */
 void DialogsProvider::PLAppendDialog()
 {
+    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf, OPEN_AND_ENQUEUE)
+                            ->showTab( OPEN_FILE_TAB );
 }
+
+/* Unimplemmented yet - Usefull ? */
 void DialogsProvider::MLAppendDialog()
 {
 }
 
-/**** Simple open ****/
-QStringList DialogsProvider::showSimpleOpen( QString help, int filters,
+/**
+ * Simple open
+ * Not used anymore. Let the code until we are sure we don't want it
+ * Two opens make it confusing for the user.
+ ***/
+QStringList DialogsProvider::showSimpleOpen( QString help,
+                                             int filters,
                                              QString path )
 {
     QString fileTypes = "";
@@ -271,6 +309,40 @@ void DialogsProvider::simpleOpenDialog()
     addFromSimple( true, true );
 }
 
+/* Directory */
+
+/**
+ * Open a directory,
+ * pl helps you to choose from playlist or media library,
+ * go to start or enqueue
+ **/
+static void openDirectory( intf_thread_t *p_intf, bool pl, bool go )
+{
+    QString dir = QFileDialog::getExistingDirectory( 0, qtr("Open directory") );
+    if (!dir.isEmpty()) {
+        input_item_t *p_input = input_ItemNewExt( THEPL, qtu(dir), NULL,
+                                               0, NULL, -1 );
+
+        playlist_AddInput( THEPL, p_input,
+                       go ? ( PLAYLIST_APPEND | PLAYLIST_GO ) : PLAYLIST_APPEND,
+                       PLAYLIST_END, pl, VLC_FALSE );
+        input_Read( THEPL, p_input, VLC_FALSE );
+    }
+}
+
+void DialogsProvider::PLAppendDir()
+{
+    openDirectory( p_intf, true, false );
+}
+
+void DialogsProvider::MLAppendDir()
+{
+    openDirectory( p_intf, false , false );
+}
+
+/****************
+ * Playlist     *
+ ****************/
 void DialogsProvider::openPlaylist()
 {
     QStringList files = showSimpleOpen( qtr( "Open playlist file" ),
@@ -296,8 +368,9 @@ void DialogsProvider::savePlaylist()
     {
         if( qfd->selectedFiles().count() > 0 )
         {
-            char *psz_module, *psz_m3u = "export-m3u",
-                 *psz_xspf = "export-xspf";
+            static const char psz_xspf[] = "export-xspf",
+                              psz_m3u[] = "export-m3u";
+            const char *psz_module;
 
             QString file = qfd->selectedFiles().first();
             QString filter = qfd->selectedFilter();
@@ -323,44 +396,23 @@ void DialogsProvider::savePlaylist()
     delete qfd;
 }
 
-static void openDirectory( intf_thread_t* p_intf, bool pl, bool go )
-{
-    QString dir = QFileDialog::getExistingDirectory ( 0,
-                                                     _("Open directory") );
-    input_item_t *p_input = input_ItemNewExt( THEPL, qtu(dir), NULL,
-                                               0, NULL, -1 );
-    playlist_AddInput( THEPL, p_input,
-                       go ? ( PLAYLIST_APPEND | PLAYLIST_GO ) : PLAYLIST_APPEND,
-                       PLAYLIST_END, pl, VLC_FALSE );
-    input_Read( THEPL, p_input, VLC_FALSE );
-}
-
-void DialogsProvider::PLAppendDir()
-{
-    openDirectory( p_intf, true, false );
-}
-
-void DialogsProvider::MLAppendDir()
-{
-    openDirectory( p_intf, false , false );
-}
-
 
 /****************************************************************************
  * Sout emulation
  ****************************************************************************/
 
+//FIXME !!
 void DialogsProvider::streamingDialog( QString mrl, bool b_transcode_only )
 {
     SoutDialog *s = new SoutDialog( p_intf->p_sys->p_mi, p_intf,
                                                     b_transcode_only );
     if( s->exec() == QDialog::Accepted )
     {
-        msg_Err(p_intf, "mrl %s\n", qta(s->mrl));
+        msg_Err( p_intf, "mrl %s\n", qta( s->getMrl() ) );
         /* Just do it */
-        int i_len = strlen( qtu(s->mrl) ) + 10;
+        int i_len = strlen( qtu( s->getMrl() ) ) + 10;
         char *psz_option = (char*)malloc(i_len);
-        snprintf( psz_option, i_len - 1, ":sout=%s", qtu(s->mrl));
+        snprintf( psz_option, i_len - 1, "%s", qtu( s->getMrl() ) );
 
         playlist_AddExt( THEPL, qtu( mrl ), "Streaming",
                          PLAYLIST_APPEND | PLAYLIST_GO, PLAYLIST_END,
@@ -390,7 +442,7 @@ void DialogsProvider::streamingDialog()
         if( s->exec() == QDialog::Accepted )
         {
             msg_Err(p_intf, "mrl %s\n", qta(s->mrl));
-            /* Just do it  
+            /* Just do it
             int i_len = strlen( qtu(s->mrl) ) + 10;
             char *psz_option = (char*)malloc(i_len);
             snprintf( psz_option, i_len - 1, ":sout=%s", qtu(s->mrl));
@@ -428,11 +480,9 @@ void DialogsProvider::SDMenuAction( QString data )
         playlist_ServicesDiscoveryAdd( THEPL, psz_sd );
     else
         playlist_ServicesDiscoveryRemove( THEPL, psz_sd );
-
     free( psz_sd );
 }
 
-
 void DialogsProvider::doInteraction( intf_dialog_args_t *p_arg )
 {
     InteractionDialog *qdialog;