]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/dialogs_provider.cpp
Qt4 - make GNOME and KDE people happy.
[vlc] / modules / gui / qt4 / dialogs_provider.cpp
index da304ad4ea6d03e4fc95e97cf8b70ba152f80d51..362189537445b11aa73f7772473f636d866c924b 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,15 +111,20 @@ void DialogsProvider::customEvent( QEvent *event )
                bookmarksDialog(); break;
             case INTF_DIALOG_EXTENDED:
                extendedDialog(); break;
+            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:
+               QVLCMenu::AudioPopupMenu( p_intf ); break;
             case INTF_DIALOG_VIDEOPOPUPMENU:
+               QVLCMenu::VideoPopupMenu( p_intf ); break;
             case INTF_DIALOG_MISCPOPUPMENU:
-               popupMenu( de->i_dialog ); break;
-            case INTF_DIALOG_INTERACTION:
-               doInteraction( de->p_arg ); break;
-            case INTF_DIALOG_VLM:
+               QVLCMenu::MiscPopupMenu( p_intf ); break;
             case INTF_DIALOG_WIZARD:
+            case INTF_DIALOG_STREAMWIZARD:
             case INTF_DIALOG_UPDATEVLC:
             case INTF_DIALOG_EXIT:
             default:
@@ -147,6 +160,11 @@ void DialogsProvider::gotoTimeDialog()
     GotoTimeDialog::getInstance( p_intf )->toggleVisible();
 }
 
+void DialogsProvider::vlmDialog()
+{
+    VLMDialog::getInstance( p_intf )->toggleVisible();
+}
+
 void DialogsProvider::helpDialog()
 {
     HelpDialog::getInstance( p_intf )->toggleVisible();
@@ -164,51 +182,69 @@ 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( 0 );
+    openDialog( OPEN_FILE_TAB );
 }
 void DialogsProvider::openFileDialog()
 {
-    openDialog( 0 );
+    openDialog( OPEN_FILE_TAB );
 }
 void DialogsProvider::openDiscDialog()
 {
-    openDialog( 1 );
+    openDialog( OPEN_DISC_TAB );
 }
 void DialogsProvider::openNetDialog()
 {
-    openDialog( 2 );
+    openDialog( OPEN_NETWORK_TAB );
 }
 void DialogsProvider::openCaptureDialog()
 {
-    openDialog( 3 );
-}
-void DialogsProvider::openDialog( int i_tab )
-{
-    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf )->showTab( i_tab );
+    openDialog( OPEN_CAPTURE_TAB );
 }
 
+/* Same as the open one, but force the enqueue */
 void DialogsProvider::PLAppendDialog()
 {
+    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf, ENQUEUE)->showTab(0);
 }
+
+/* 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 = "";
@@ -267,6 +303,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" ),
@@ -292,8 +362,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();
@@ -319,43 +390,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
  ****************************************************************************/
 
-void DialogsProvider::streamingDialog( QString mrl)
+//FIXME !!
+void DialogsProvider::streamingDialog( QString mrl, bool b_transcode_only )
 {
-    SoutDialog *s = new SoutDialog( p_intf->p_sys->p_mi, p_intf );
+    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,
@@ -366,7 +417,14 @@ void DialogsProvider::streamingDialog( QString mrl)
 
 void DialogsProvider::openThenStreamingDialogs()
 {
-    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf, true )->showTab( 0 );
+    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf, OPEN_AND_STREAM )
+                                ->showTab( 0 );
+}
+
+void DialogsProvider::openThenTranscodingDialogs()
+{
+    OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf, OPEN_AND_SAVE )
+                                ->showTab( 0 );
 }
 /*
 void DialogsProvider::streamingDialog()
@@ -378,7 +436,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));
@@ -416,11 +474,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;
@@ -457,7 +513,3 @@ void DialogsProvider::switchToSkins()
 {
     var_SetString( p_intf, "intf-switch", "skins2" );
 }
-
-void DialogsProvider::popupMenu( int i_dialog )
-{
-}