Qt4 : Some work on OpenDialog. Does not work with files with spaces... More work...
authorJean-Baptiste Kempf <jb@videolan.org>
Wed, 29 Nov 2006 03:35:26 +0000 (03:35 +0000)
committerJean-Baptiste Kempf <jb@videolan.org>
Wed, 29 Nov 2006 03:35:26 +0000 (03:35 +0000)
modules/gui/qt4/components/open.cpp
modules/gui/qt4/components/open.hpp
modules/gui/qt4/dialogs/mediainfo.cpp
modules/gui/qt4/dialogs/open.cpp
modules/gui/qt4/dialogs/open.hpp
modules/gui/qt4/ui/open.ui
modules/gui/qt4/ui/open_file.ui

index 525351c..0120f02 100644 (file)
@@ -26,6 +26,7 @@
 #include "qt4.hpp"
 #include "components/open.hpp"
 
+#include <QFileDialog>
 /**************************************************************************
  * Open panel
  ***************************************************************************/
@@ -41,7 +42,12 @@ FileOpenPanel::FileOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
 {
     ui.setupUi( this );
     ui.audioGroupBox->hide();
+
     BUTTONACT( ui.extraAudioButton, toggleExtraAudio() );
+    BUTTONACT( ui.fileBrowseButton, browseFile() );
+    BUTTONACT( ui.subBrowseButton, browseFileSub() );
+    BUTTONACT( ui.audioBrowseButton, browseFileAudio() );
+    CONNECT( ui.fileInput, editTextChanged(QString ), this, updateMRL());
 }
 
 FileOpenPanel::~FileOpenPanel()
@@ -50,6 +56,53 @@ FileOpenPanel::~FileOpenPanel()
 void FileOpenPanel::sendUpdate()
 {}
 
+QStringList FileOpenPanel::browse()
+{
+    return QFileDialog::getOpenFileNames( this, qtr("Open File"), "", "" );
+}
+
+void FileOpenPanel::browseFile()
+{
+    //FIXME ! files with spaces
+    QString files = browse().join(" ");
+    ui.fileInput->setEditText( files );
+    ui.fileInput->addItem( files );
+
+    if ( ui.fileInput->count() > 8 ) ui.fileInput->removeItem(0);
+
+    updateMRL();
+}
+
+void FileOpenPanel::browseFileSub()
+{
+    ui.subInput->setEditText( browse().join(" ") );
+
+    updateSubsMRL();
+}
+
+void FileOpenPanel::browseFileAudio()
+{
+    ui.audioFileInput->setEditText( browse().join(" ") );
+}
+
+void FileOpenPanel::updateSubsMRL()
+{
+    QStringList* subsMRL = new QStringList("sub-file=");
+    subsMRL->append( ui.subInput->currentText() );
+    //FIXME !!
+    subsMRL->append( "subsdec-align=" + ui.alignSubComboBox->currentText() );
+    subsMRL->append( "sub-rel-fontsize=" + ui.sizeSubComboBox->currentText() );
+
+    subsMRL->join(" ");
+}
+
+void FileOpenPanel::updateMRL()
+{
+    QString MRL = ui.fileInput->currentText();
+
+    emit(mrlUpdated(MRL));
+}
+
 QString FileOpenPanel::getUpdatedMRL()
 {
     return ui.fileInput->currentText();
@@ -67,6 +120,14 @@ void FileOpenPanel::toggleExtraAudio()
    }
 }
 
+void FileOpenPanel::clear()
+{
+    ui.fileInput->setEditText( "");
+    ui.subInput->setEditText( "");
+    ui.audioFileInput->setEditText( "");
+}
+
+
 
 /**************************************************************************
  * Disk open
@@ -85,6 +146,7 @@ void DiskOpenPanel::sendUpdate()
 
 QString DiskOpenPanel::getUpdatedMRL()
 {
+
     //return ui.DiskInput->currentText();
     return NULL;
 }
index 3e86a36..0b46478 100644 (file)
@@ -55,13 +55,20 @@ public:
     FileOpenPanel( QWidget *, intf_thread_t * );
     virtual ~FileOpenPanel();
     virtual QString getUpdatedMRL();
+    void clear();
 private:
     Ui::OpenFile ui;
+    QStringList browse();
+    void updateSubsMRL();
 public slots:
     virtual void sendUpdate() ;
     void toggleExtraAudio() ;
+    void updateMRL();
+    void browseFile();
+    void browseFileSub();
+    void browseFileAudio();
 signals:
-    void dataUpdated( QString, QString ) ;
+    void mrlUpdated( QString ) ;
 };
 
 class NetOpenPanel: public OpenPanel
index 769e634..5c23853 100644 (file)
@@ -31,6 +31,7 @@
 #include "components/infopanels.hpp"
 #include "qt4.hpp"
 
+
 static int ItemChanged( vlc_object_t *p_this, const char *psz_var,
                         vlc_value_t oldval, vlc_value_t newval, void *param );
 MediaInfoDialog *MediaInfoDialog::instance = NULL;
index 844cb59..11aac01 100644 (file)
@@ -22,6 +22,7 @@
 
 #include <QTabWidget>
 #include <QGridLayout>
+#include <QFileDialog>
 
 #include "dialogs/open.hpp"
 #include "components/open.hpp"
@@ -36,7 +37,7 @@ OpenDialog *OpenDialog::instance = NULL;
 
 OpenDialog::OpenDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
 {
-    setWindowTitle( _("Open" ) );
+    setWindowTitle( qtr("Open" ) );
     ui.setupUi( this );
     fileOpenPanel = new FileOpenPanel(this , _p_intf );
     diskOpenPanel = new DiskOpenPanel(this , _p_intf );
@@ -46,6 +47,8 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
     ui.Tab->addTab(netOpenPanel, "Network");
     ui.advancedFrame->hide();
 
+    connect( fileOpenPanel, SIGNAL(mrlUpdated( QString )),
+            this, SLOT( updateMRL(QString)));
     BUTTONACT( ui.closeButton, ok());
     BUTTONACT( ui.cancelButton, cancel());
     BUTTONACT( ui.advancedButton , toggleAdvancedPanel() );
@@ -55,6 +58,38 @@ OpenDialog::~OpenDialog()
 {
 }
 
+void OpenDialog::showTab(int i_tab=0)
+{
+    this->show();
+    ui.Tab->setCurrentIndex(i_tab);
+}
+
+void OpenDialog::cancel()
+{
+    fileOpenPanel->clear();
+    this->toggleVisible();
+}
+
+void OpenDialog::ok()
+{
+    QStringList tempMRL = MRL.split(" ");
+    for( size_t i = 0 ; i< tempMRL.size(); i++ )
+    {
+         const char * psz_utf8 = qtu( tempMRL[i] );
+         /* Play the first one, parse and enqueue the other ones */
+         playlist_Add( THEPL, psz_utf8, NULL,
+                       PLAYLIST_APPEND | (i ? 0 : PLAYLIST_GO) |
+                       ( i ? PLAYLIST_PREPARSE : 0 ),
+                       PLAYLIST_END, VLC_TRUE );
+      }
+
+    this->toggleVisible();
+}
+
+void OpenDialog::changedTab()
+{
+}
+
 void OpenDialog::toggleAdvancedPanel()
 {
     if (ui.advancedFrame->isVisible())
@@ -67,13 +102,9 @@ void OpenDialog::toggleAdvancedPanel()
     }
 }
 
-void OpenDialog::cancel()
-{
-    this->toggleVisible();
-}
-
-void OpenDialog::ok()
+void OpenDialog::updateMRL(QString tempMRL)
 {
-    this->toggleVisible();
+    MRL = tempMRL;
+    ui.advancedLineInput->setText(MRL);
 }
 
index 09b5d65..0c23a47 100644 (file)
@@ -32,6 +32,7 @@
 
 #include <QTabWidget>
 #include <QBoxLayout>
+#include <QString>
 
 class InfoTab;
 
@@ -46,10 +47,16 @@ public:
         return instance;
     }
     virtual ~OpenDialog();
+
+    void showTab( int);
+
+    QString MRL;
 private:
     OpenDialog( intf_thread_t * );
     static OpenDialog *instance;
     input_thread_t *p_input;
+    QString mrlSub;
+
     Ui::Open ui;
     FileOpenPanel *fileOpenPanel;
     NetOpenPanel *netOpenPanel;
@@ -57,7 +64,9 @@ private:
 public slots:
     void cancel();
     void ok();
+    void changedTab();
     void toggleAdvancedPanel();
+    void updateMRL(QString);
 };
 
 #endif
index c43260c..095a09f 100644 (file)
      <item>
       <widget class="QPushButton" name="closeButton" >
        <property name="text" >
-        <string>Close</string>
+        <string>Open</string>
        </property>
       </widget>
      </item>
index c0fe79b..e2af5cd 100644 (file)
          </widget>
         </item>
         <item>
-         <widget class="QComboBox" name="sizeComboBox" >
+         <widget class="QComboBox" name="sizeSubComboBox" >
           <item>
            <property name="text" >
             <string>Very Small</string>
         </item>
         <item>
          <widget class="QComboBox" name="alignSubComboBox" >
+          <property name="currentIndex" >
+           <number>0</number>
+          </property>
+          <property name="insertPolicy" >
+           <enum>QComboBox::NoInsert</enum>
+          </property>
+          <property name="minimumContentsLength" >
+           <number>0</number>
+          </property>
           <item>
            <property name="text" >
             <string>Left</string>
        </spacer>
       </item>
       <item>
-       <widget class="QPushButton" name="audioBrowsButton" >
+       <widget class="QPushButton" name="audioBrowseButton" >
         <property name="text" >
          <string>Browse</string>
         </property>