Qt4 open:
authorClément Stenac <zorglub@videolan.org>
Sun, 3 Dec 2006 09:56:46 +0000 (09:56 +0000)
committerClément Stenac <zorglub@videolan.org>
Sun, 3 Dec 2006 09:56:46 +0000 (09:56 +0000)
* Implement MRL handling for file, disc and network
* Moved input slave option to the global dialog (not file specific and
  avoid cluttering the file subpanel)
* Initial implementation of the network panel based on ideas and work by
  Leo Spalteholz. Thanks !
* Improve layouting and handling of the advanced options subpanel

--This line, and those below, will beignored--

M    modules/gui/qt4/dialogs/open.cpp
M    modules/gui/qt4/dialogs/open.hpp
M    modules/gui/qt4/components/open.cpp
M    modules/gui/qt4/components/open.hpp
M    modules/gui/qt4/ui/open_net.ui
M    modules/gui/qt4/ui/open_disk.ui
M    modules/gui/qt4/ui/open_file.ui
M    modules/gui/qt4/ui/open.ui

modules/gui/qt4/components/open.cpp
modules/gui/qt4/components/open.hpp
modules/gui/qt4/dialogs/open.cpp
modules/gui/qt4/dialogs/open.hpp
modules/gui/qt4/ui/open.ui
modules/gui/qt4/ui/open_disk.ui
modules/gui/qt4/ui/open_file.ui
modules/gui/qt4/ui/open_net.ui

index 245b1c5..1329ff8 100644 (file)
@@ -5,7 +5,7 @@
  * $Id$
  *
  * Authors: Clément Stenac <zorglub@videolan.org>
- *          Jean-Baptiste Kempf <jb@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 "components/open.hpp"
 
 #include <QFileDialog>
-/**************************************************************************
- * Open panel
- ***************************************************************************/
-
-OpenPanel::~OpenPanel()
-{}
 
 /**************************************************************************
  * File open
@@ -42,30 +36,39 @@ FileOpenPanel::FileOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
 {
     ui.setupUi( this );
 
+
     BUTTONACT( ui.fileBrowseButton, browseFile() );
     BUTTONACT( ui.subBrowseButton, browseFileSub() );
-    BUTTONACT( ui.audioBrowseButton, browseFileAudio() );
+
+    BUTTONACT( ui.subGroupBox, updateMRL());
     CONNECT( ui.fileInput, editTextChanged(QString ), this, updateMRL());
+    CONNECT( ui.subInput, editTextChanged(QString ), this, updateMRL());
+    CONNECT( ui.alignSubComboBox, currentIndexChanged(int), this, updateMRL());
+    CONNECT( ui.sizeSubComboBox, currentIndexChanged(int), this, updateMRL());
 }
 
 FileOpenPanel::~FileOpenPanel()
 {}
 
-void FileOpenPanel::sendUpdate()
-{}
-
-QStringList FileOpenPanel::browse()
+QStringList FileOpenPanel::browse(QString help)
 {
-    return QFileDialog::getOpenFileNames( this, qtr("Open File"), "", "" );
+    return QFileDialog::getOpenFileNames( this, help, "", "" );
 }
 
 void FileOpenPanel::browseFile()
 {
-    //FIXME ! files with spaces
-    QString files = browse().join(" ");
-    ui.fileInput->setEditText( files );
-    ui.fileInput->addItem( files );
-
+    QString fileString = "";
+    QStringList files = browse( qtr("Open File") );
+    foreach( QString file, files) {
+        if( file.contains(" ") ) {
+            fileString += "\"" + file + "\"";
+        } else {
+            fileString += file;
+        }
+    }
+
+    ui.fileInput->setEditText( fileString );
+    ui.fileInput->addItem( fileString );
     if ( ui.fileInput->count() > 8 ) ui.fileInput->removeItem(0);
 
     updateMRL();
@@ -73,48 +76,30 @@ void FileOpenPanel::browseFile()
 
 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(" ");
+    ui.subInput->setEditText( browse( qtr("Open subtitles file") ).join(" ") );
+    updateMRL();
 }
 
 void FileOpenPanel::updateMRL()
 {
-    QString MRL = ui.fileInput->currentText();
-
-    emit(mrlUpdated(MRL));
-}
-
-QString FileOpenPanel::getUpdatedMRL()
-{
-    return ui.fileInput->currentText();
+    QString mrl = ui.fileInput->currentText();
+
+    if( ui.subGroupBox->isChecked() ) {
+        mrl.append( " :sub-file=" + ui.subInput->currentText() );
+        mrl.append( " :subsdec-align=" + ui.alignSubComboBox->currentText() );
+        mrl.append( " :sub-rel-fontsize=" + ui.sizeSubComboBox->currentText() );
+    }
+    emit mrlUpdated(mrl);
+    emit methodChanged( "file-caching" );
 }
 
 void FileOpenPanel::clear()
 {
     ui.fileInput->setEditText( "");
     ui.subInput->setEditText( "");
-    ui.audioFileInput->setEditText( "");
 }
 
 
-
 /**************************************************************************
  * Disk open
  **************************************************************************/
@@ -122,19 +107,55 @@ DiskOpenPanel::DiskOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
                                 OpenPanel( _parent, _p_intf )
 {
     ui.setupUi( this );
+
+    CONNECT( ui.deviceCombo, editTextChanged(QString ), this, updateMRL());
+    BUTTONACT( ui.dvdRadioButton, updateMRL());
+    BUTTONACT( ui.vcdRadioButton, updateMRL());
+    BUTTONACT( ui.audioCDRadioButton, updateMRL());
+
+    CONNECT( ui.titleSpin, valueChanged(int), this, updateMRL());
+    CONNECT( ui.chapterSpin, valueChanged(int), this, updateMRL());
 }
 
 DiskOpenPanel::~DiskOpenPanel()
 {}
 
-void DiskOpenPanel::sendUpdate()
-{}
-
-QString DiskOpenPanel::getUpdatedMRL()
+void DiskOpenPanel::clear()
 {
+    ui.titleSpin->setValue(0);
+    ui.chapterSpin->setValue(0);
+}
 
-    //return ui.DiskInput->currentText();
-    return NULL;
+void DiskOpenPanel::updateMRL()
+{
+    QString mrl = "";
+    /* DVD */
+    if( ui.dvdRadioButton->isChecked() ) {
+        mrl = "dvd://" + ui.deviceCombo->currentText();
+        emit methodChanged( "dvdnav-caching" );
+
+        if ( ui.titleSpin->value() > 0 ) {
+            mrl += QString("@%1").arg(ui.titleSpin->value());
+            if ( ui.chapterSpin->value() > 0 ) {
+                mrl+= QString(":%1").arg(ui.chapterSpin->value());
+            }
+        }
+
+    /* VCD */
+    } else if (ui.vcdRadioButton->isChecked() ) {
+        mrl = "vcd://" + ui.deviceCombo->currentText();
+        emit methodChanged( "vcd-caching" );
+
+        if( ui.titleSpin->value() > 0 ) {
+            mrl += QString("@%1").arg(ui.titleSpin->value());
+        }
+
+    /* CDDA */
+    } else {
+        mrl = "cdda://" + ui.deviceCombo->currentText();
+    }
+
+    emit mrlUpdated(mrl);
 }
 
 
@@ -146,25 +167,96 @@ NetOpenPanel::NetOpenPanel( QWidget *_parent, intf_thread_t *_p_intf ) :
                                 OpenPanel( _parent, _p_intf )
 {
     ui.setupUi( this );
+
+    CONNECT( ui.protocolCombo, currentIndexChanged(int),
+             this, updateProtocol(int) );
+    CONNECT( ui.portSpin, valueChanged(int), this, updateMRL());
+    CONNECT( ui.addressText, textChanged(QString), this, updateAddress());
+    CONNECT( ui.timeShift, clicked(), this, updateMRL());
+    CONNECT( ui.ipv6, clicked(), this, updateMRL());
+
+    ui.protocolCombo->addItem("HTTP", QVariant("http"));
+    ui.protocolCombo->addItem("FTP", QVariant("ftp"));
+    ui.protocolCombo->addItem("MMS", QVariant("mms"));
+    ui.protocolCombo->addItem("RTSP", QVariant("rtsp"));
+    ui.protocolCombo->addItem("UDP/RTP (unicast)", QVariant("udp"));
+    ui.protocolCombo->addItem("UDP/RTP (multicast)", QVariant("udp"));
 }
 
 NetOpenPanel::~NetOpenPanel()
 {}
 
-void NetOpenPanel::sendUpdate()
+void NetOpenPanel::clear()
 {}
-/*
-void NetOpenPanel::sendUpdate()
-{
-    QString *mrl = new QString();
-    QString *cache = new QString();
-    getUpdatedMRL( mrl, cache );,
-    emit dataUpdated( mrl, cache );
-}*/
 
-QString NetOpenPanel::getUpdatedMRL()
-{
-//  return ui.NetInput->currentText();
-    return NULL;
+void NetOpenPanel::updateProtocol(int idx) {
+    QString addr = ui.addressText->text();
+    QString proto = ui.protocolCombo->itemData(idx).toString();
+
+    ui.timeShift->setEnabled( idx >= 4);
+    ui.ipv6->setEnabled( idx == 4 );
+    ui.addressText->setEnabled( idx != 4 );
+    ui.portSpin->setEnabled( idx >= 4 );
+
+    /* If we already have a protocol in the address, replace it */
+    if( addr.contains( "://")) {
+        msg_Err( p_intf, "replace");
+        addr.replace(QRegExp("^.*://"), proto + "://");
+        ui.addressText->setText(addr);
+    }
+
+    updateMRL();
 }
 
+void NetOpenPanel::updateAddress() {
+    updateMRL();
+}
+
+void NetOpenPanel::updateMRL() {
+    QString mrl = "";
+    QString addr = ui.addressText->text();
+    int proto = ui.protocolCombo->currentIndex();
+
+    if( addr.contains( "://") && proto != 4 ) {
+        mrl = addr;
+    } else {
+        switch(proto) {
+        case 0:
+            mrl = "http://" + addr;
+            emit methodChanged("http-caching");
+            break;
+        case 2:
+            mrl = "mms://" + addr;
+            emit methodChanged("mms-caching");
+            break;
+        case 1:
+            mrl = "ftp://" + addr;
+            emit methodChanged("ftp-caching");
+            break;
+        case 3: /* RTSP */
+            mrl = "rtsp://" + addr;
+            emit methodChanged("rtsp-caching");
+            break;
+        case 4:
+            mrl = "udp://@";
+            if( ui.ipv6->isEnabled() && ui.ipv6->isChecked() ) {
+                mrl += "[::]";
+            }
+            mrl += QString(":%1").arg(ui.portSpin->value());
+            emit methodChanged("udp-caching");
+            break;
+        case 5: /* UDP multicast */
+            mrl = "udp://@";
+            /* Add [] to IPv6 */
+            if ( addr.contains(':') && !addr.contains('[') ) {
+                mrl += "[" + addr + "]";
+            } else mrl += addr;
+            mrl += QString(":%1").arg(ui.portSpin->value());
+            emit methodChanged("udp-caching");
+        }
+    }
+    if( ui.timeShift->isEnabled() && ui.timeShift->isChecked() ) {
+        mrl += " :access-filter=timeshift";
+    }
+    emit mrlUpdated(mrl);
+}
index 60dbe42..598d98e 100644 (file)
@@ -5,7 +5,7 @@
  * $Id$
  *
  * Authors: Clément Stenac <zorglub@videolan.org>
- *          Jean-Baptiste Kempf <jb@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
@@ -40,12 +40,15 @@ public:
     {
         p_intf = _p_intf;
     }
-    virtual ~OpenPanel();
-    virtual QString getUpdatedMRL() = 0;
-private:
+    virtual ~OpenPanel() {};
+    virtual void clear() = 0;
+protected:
     intf_thread_t *p_intf;
 public slots:
-    virtual void sendUpdate() = 0;
+    virtual void updateMRL() = 0;
+signals:
+    void mrlUpdated(QString);
+    void methodChanged( QString method );
 };
 
 class FileOpenPanel: public OpenPanel
@@ -54,20 +57,15 @@ class FileOpenPanel: public OpenPanel
 public:
     FileOpenPanel( QWidget *, intf_thread_t * );
     virtual ~FileOpenPanel();
-    virtual QString getUpdatedMRL();
-    void clear();
+    virtual void clear() ;
 private:
     Ui::OpenFile ui;
-    QStringList browse();
-    void updateSubsMRL();
+    QStringList browse( QString );
 public slots:
-    virtual void sendUpdate() ;
-    void updateMRL();
+    virtual void updateMRL();
+private slots:
     void browseFile();
     void browseFileSub();
-    void browseFileAudio();
-signals:
-    void mrlUpdated( QString ) ;
 };
 
 class NetOpenPanel: public OpenPanel
@@ -76,14 +74,14 @@ class NetOpenPanel: public OpenPanel
 public:
     NetOpenPanel( QWidget *, intf_thread_t * );
     virtual ~NetOpenPanel();
-    virtual QString getUpdatedMRL();
+    virtual void clear() ;
 private:
     Ui::OpenNetwork ui;
 public slots:
-    virtual void sendUpdate() ;
-signals:
-    void dataUpdated( QString, QString ) ;
-
+    virtual void updateMRL();
+private slots:
+    void updateProtocol(int);
+    void updateAddress();
 };
 
 class DiskOpenPanel: public OpenPanel
@@ -92,14 +90,11 @@ class DiskOpenPanel: public OpenPanel
 public:
     DiskOpenPanel( QWidget *, intf_thread_t * );
     virtual ~DiskOpenPanel();
-    virtual QString getUpdatedMRL();
+    virtual void clear() ;
 private:
     Ui::OpenDisk ui;
 public slots:
-    virtual void sendUpdate() ;
-signals:
-    void dataUpdated( QString, QString ) ;
-
+    virtual void updateMRL() ;
 };
 
 #endif
index 89e89e7..4dc589d 100644 (file)
@@ -39,20 +39,41 @@ OpenDialog::OpenDialog( intf_thread_t *_p_intf ) : QVLCFrame( _p_intf )
 {
     setWindowTitle( qtr("Open" ) );
     ui.setupUi( this );
-    ui.vboxLayout->setSizeConstraint(QLayout::SetFixedSize);
-    fileOpenPanel = new FileOpenPanel(this , _p_intf );
-    diskOpenPanel = new DiskOpenPanel(this , _p_intf );
-    netOpenPanel = new NetOpenPanel(this , _p_intf );
-    ui.Tab->addTab(fileOpenPanel, "File");
-    ui.Tab->addTab(diskOpenPanel, "Disk");
-    ui.Tab->addTab(netOpenPanel, "Network");
+    fileOpenPanel = new FileOpenPanel(this , p_intf );
+    diskOpenPanel = new DiskOpenPanel(this , p_intf );
+    netOpenPanel = new NetOpenPanel(this , p_intf );
+    ui.Tab->addTab(fileOpenPanel, qtr("File"));
+    ui.Tab->addTab(diskOpenPanel, qtr("Disk"));
+    ui.Tab->addTab(netOpenPanel, qtr("Network"));
+
     ui.advancedFrame->hide();
 
-    connect( fileOpenPanel, SIGNAL(mrlUpdated( QString )),
-            this, SLOT( updateMRL(QString)));
+    /* Force MRL update on tab change */
+    CONNECT( ui.Tab, currentChanged(int), this, signalCurrent());
+
+    CONNECT( fileOpenPanel, mrlUpdated( QString ), this, updateMRL(QString) );
+    CONNECT( netOpenPanel, mrlUpdated( QString ), this, updateMRL(QString) );
+    CONNECT( diskOpenPanel, mrlUpdated( QString ), this, updateMRL(QString) );
+
+    CONNECT( fileOpenPanel, methodChanged( QString ),
+             this, newMethod(QString) );
+    CONNECT( netOpenPanel, methodChanged( QString ),
+             this, newMethod(QString) );
+    CONNECT( diskOpenPanel, methodChanged( QString ),
+             this, newMethod(QString) );
+
+    CONNECT( ui.slaveText, textChanged(QString), this, updateMRL());
+    CONNECT( ui.cacheSpinBox, valueChanged(int), this, updateMRL());
+
     BUTTONACT( ui.closeButton, ok());
     BUTTONACT( ui.cancelButton, cancel());
-    BUTTONACT( ui.advancedButton , toggleAdvancedPanel() );
+    BUTTONACT( ui.advancedCheckBox , toggleAdvancedPanel() );
+
+    /* Initialize caching */
+    storedMethod = "";
+    newMethod("file-caching");
+
+    mainHeight = advHeight = 0;
 }
 
 OpenDialog::~OpenDialog()
@@ -65,6 +86,12 @@ void OpenDialog::showTab(int i_tab=0)
     ui.Tab->setCurrentIndex(i_tab);
 }
 
+void OpenDialog::signalCurrent() {
+    if (ui.Tab->currentWidget() != NULL) {
+        (dynamic_cast<OpenPanel*>(ui.Tab->currentWidget()))->updateMRL();
+    }
+}
+
 void OpenDialog::cancel()
 {
     fileOpenPanel->clear();
@@ -73,7 +100,8 @@ void OpenDialog::cancel()
 
 void OpenDialog::ok()
 {
-    QStringList tempMRL = MRL.split(" ");
+    QString mrl = ui.advancedLineInput->text();
+    QStringList tempMRL = mrl.split(" ");
     for( size_t i = 0 ; i< tempMRL.size(); i++ )
     {
          const char * psz_utf8 = qtu( tempMRL[i] );
@@ -93,19 +121,47 @@ void OpenDialog::changedTab()
 
 void OpenDialog::toggleAdvancedPanel()
 {
-    if (ui.advancedFrame->isVisible())
-    {
+    if (ui.advancedFrame->isVisible()) {
         ui.advancedFrame->hide();
-    }
-    else
-    {
+        setMinimumHeight(1);
+        resize( width(), mainHeight );
+
+    } else {
+        if( mainHeight == 0 )
+            mainHeight = height();
+
         ui.advancedFrame->show();
+        if( advHeight == 0 ) {
+            advHeight = height() - mainHeight;
+        }
+        resize( width(), mainHeight + advHeight );
     }
 }
 
+void OpenDialog::updateMRL() {
+    QString mrl = mainMRL;
+    if( ui.slaveCheckbox->isChecked() ) {
+        mrl += " :input-slave=" + ui.slaveText->text();
+    }
+    int i_cache = config_GetInt( p_intf, qta(storedMethod) );
+    if( i_cache != ui.cacheSpinBox->value() ) {
+        mrl += QString(" :%1=%2").arg(storedMethod).
+                                  arg(ui.cacheSpinBox->value());
+    }
+    ui.advancedLineInput->setText(mrl);
+}
+
 void OpenDialog::updateMRL(QString tempMRL)
 {
-    MRL = tempMRL;
-    ui.advancedLineInput->setText(MRL);
+    mainMRL = tempMRL;
+    updateMRL();
 }
 
+void OpenDialog::newMethod(QString method)
+{
+    if( method != storedMethod ) {
+        storedMethod = method;
+        int i_value = config_GetInt( p_intf, qta(storedMethod) );
+        ui.cacheSpinBox->setValue(i_value);
+    }
+}
index 0c23a47..ace6224 100644 (file)
@@ -34,8 +34,6 @@
 #include <QBoxLayout>
 #include <QString>
 
-class InfoTab;
-
 class OpenDialog : public QVLCFrame
 {
     Q_OBJECT;
@@ -48,9 +46,9 @@ public:
     }
     virtual ~OpenDialog();
 
-    void showTab( int);
+    void showTab( int );
 
-    QString MRL;
+    QString mainMRL;
 private:
     OpenDialog( intf_thread_t * );
     static OpenDialog *instance;
@@ -61,12 +59,18 @@ private:
     FileOpenPanel *fileOpenPanel;
     NetOpenPanel *netOpenPanel;
     DiskOpenPanel *diskOpenPanel;
-public slots:
+
+    QString storedMethod;
+    int advHeight, mainHeight;
+private slots:
     void cancel();
     void ok();
     void changedTab();
     void toggleAdvancedPanel();
     void updateMRL(QString);
+    void updateMRL();
+    void newMethod(QString);
+    void signalCurrent();
 };
 
 #endif
index 24cbe26..03439a1 100644 (file)
@@ -9,8 +9,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>435</width>
-    <height>441</height>
+    <width>525</width>
+    <height>231</height>
    </rect>
   </property>
   <property name="windowTitle" >
    </property>
    <item>
     <widget class="QTabWidget" name="Tab" >
-     <property name="sizePolicy" >
-      <sizepolicy>
-       <hsizetype>0</hsizetype>
-       <vsizetype>0</vsizetype>
-       <horstretch>0</horstretch>
-       <verstretch>0</verstretch>
-      </sizepolicy>
-     </property>
-     <property name="minimumSize" >
-      <size>
-       <width>417</width>
-       <height>290</height>
-      </size>
-     </property>
      <property name="currentIndex" >
       <number>-1</number>
      </property>
     </widget>
    </item>
    <item>
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
+    <widget class="QCheckBox" name="advancedCheckBox" >
+     <property name="text" >
+      <string>Show more options</string>
      </property>
-     <item>
-      <spacer>
-       <property name="orientation" >
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" >
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QPushButton" name="advancedButton" >
-       <property name="text" >
-        <string>More...</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
+    </widget>
    </item>
    <item>
     <widget class="QFrame" name="advancedFrame" >
      <property name="frameShadow" >
       <enum>QFrame::Raised</enum>
      </property>
-     <layout class="QGridLayout" >
+     <layout class="QHBoxLayout" >
       <property name="margin" >
        <number>9</number>
       </property>
       <property name="spacing" >
        <number>6</number>
       </property>
-      <item row="1" column="0" >
-       <widget class="QLabel" name="advancedLabel" >
-        <property name="text" >
-         <string>Personalize:</string>
-        </property>
-        <property name="alignment" >
-         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="1" >
-       <spacer>
-        <property name="orientation" >
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeType" >
-         <enum>QSizePolicy::Minimum</enum>
-        </property>
-        <property name="sizeHint" >
-         <size>
-          <width>10</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="0" column="2" >
-       <widget class="QSpinBox" name="cacheSpinBox" />
-      </item>
-      <item row="0" column="4" >
-       <spacer>
-        <property name="orientation" >
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeHint" >
-         <size>
-          <width>40</width>
-          <height>20</height>
-         </size>
-        </property>
-       </spacer>
-      </item>
-      <item row="0" column="1" >
-       <spacer>
-        <property name="orientation" >
-         <enum>Qt::Horizontal</enum>
-        </property>
-        <property name="sizeType" >
-         <enum>QSizePolicy::Minimum</enum>
+      <item>
+       <layout class="QGridLayout" >
+        <property name="margin" >
+         <number>0</number>
         </property>
-        <property name="sizeHint" >
-         <size>
-          <width>10</width>
-          <height>20</height>
-         </size>
+        <property name="spacing" >
+         <number>6</number>
         </property>
-       </spacer>
-      </item>
-      <item row="0" column="0" >
-       <widget class="QLabel" name="cacheLabel" >
-        <property name="text" >
-         <string>Caching:</string>
-        </property>
-        <property name="alignment" >
-         <set>Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter</set>
-        </property>
-       </widget>
-      </item>
-      <item row="0" column="3" >
-       <widget class="QLabel" name="label" >
-        <property name="text" >
-         <string>ms</string>
-        </property>
-       </widget>
-      </item>
-      <item row="1" column="2" colspan="3" >
-       <widget class="QLineEdit" name="advancedLineInput" />
+        <item row="0" column="2" >
+         <widget class="QLabel" name="label" >
+          <property name="text" >
+           <string>ms</string>
+          </property>
+         </widget>
+        </item>
+        <item row="2" column="0" >
+         <widget class="QLabel" name="label_2" >
+          <property name="enabled" >
+           <bool>false</bool>
+          </property>
+          <property name="text" >
+           <string>Extra media</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0" >
+         <widget class="QLabel" name="cacheLabel" >
+          <property name="sizePolicy" >
+           <sizepolicy>
+            <hsizetype>0</hsizetype>
+            <vsizetype>5</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="text" >
+           <string>Caching</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="1" >
+         <widget class="QSpinBox" name="cacheSpinBox" >
+          <property name="sizePolicy" >
+           <sizepolicy>
+            <hsizetype>0</hsizetype>
+            <vsizetype>0</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="maximum" >
+           <number>999999</number>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="0" >
+         <widget class="QLabel" name="advancedLabel" >
+          <property name="text" >
+           <string>Customize</string>
+          </property>
+         </widget>
+        </item>
+        <item row="3" column="1" colspan="2" >
+         <widget class="QLineEdit" name="advancedLineInput" />
+        </item>
+        <item row="2" column="1" colspan="2" >
+         <widget class="QLineEdit" name="slaveText" >
+          <property name="enabled" >
+           <bool>false</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0" colspan="3" >
+         <widget class="QCheckBox" name="slaveCheckbox" >
+          <property name="text" >
+           <string>Play another media synchronously (extra audio file, ...)</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
      </layout>
     </widget>
   </layout>
  </widget>
  <tabstops>
-  <tabstop>advancedButton</tabstop>
   <tabstop>cacheSpinBox</tabstop>
   <tabstop>advancedLineInput</tabstop>
   <tabstop>Tab</tabstop>
   <tabstop>cancelButton</tabstop>
  </tabstops>
  <resources/>
- <connections/>
+ <connections>
+  <connection>
+   <sender>slaveCheckbox</sender>
+   <signal>clicked(bool)</signal>
+   <receiver>label_2</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>54</x>
+     <y>384</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>63</x>
+     <y>410</y>
+    </hint>
+   </hints>
+  </connection>
+  <connection>
+   <sender>slaveCheckbox</sender>
+   <signal>clicked(bool)</signal>
+   <receiver>slaveText</receiver>
+   <slot>setEnabled(bool)</slot>
+   <hints>
+    <hint type="sourcelabel" >
+     <x>127</x>
+     <y>387</y>
+    </hint>
+    <hint type="destinationlabel" >
+     <x>136</x>
+     <y>406</y>
+    </hint>
+   </hints>
+  </connection>
+ </connections>
 </ui>
index 16fb2ad..80fa27a 100644 (file)
     <x>0</x>
     <y>0</y>
     <width>448</width>
-    <height>232</height>
+    <height>275</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <string>Form</string>
   </property>
-  <widget class="QGroupBox" name="diskTypeGroupBox" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>10</y>
-     <width>391</width>
-     <height>121</height>
-    </rect>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
    </property>
-   <property name="title" >
-    <string>Disc Type</string>
+   <property name="spacing" >
+    <number>6</number>
    </property>
-   <widget class="QWidget" name="layoutWidget" >
-    <property name="geometry" >
-     <rect>
-      <x>10</x>
-      <y>20</y>
-      <width>159</width>
-      <height>85</height>
-     </rect>
-    </property>
-    <layout class="QVBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
+   <item>
+    <widget class="QGroupBox" name="diskGroupBox" >
+     <property name="title" >
+      <string>Disc selection</string>
      </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item>
-      <layout class="QHBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
-       </property>
-       <item>
-        <widget class="QRadioButton" name="dvdRadioButton" >
-         <property name="text" >
-          <string>DVD</string>
-         </property>
-         <property name="checked" >
-          <bool>true</bool>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QCheckBox" name="menuDVDButton" >
-         <property name="text" >
-          <string>Show Menus</string>
-         </property>
-         <property name="checked" >
-          <bool>true</bool>
-         </property>
-        </widget>
-       </item>
-      </layout>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="vcdRadioButton" >
-       <property name="text" >
-        <string>SVCD/VCD</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QRadioButton" name="audioCDRAdioButton" >
-       <property name="text" >
-        <string>Audio CD</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </widget>
-  </widget>
-  <widget class="QGroupBox" name="diskOptionGroupBox" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>130</y>
-     <width>391</width>
-     <height>69</height>
-    </rect>
-   </property>
-   <property name="sizePolicy" >
-    <sizepolicy>
-     <hsizetype>5</hsizetype>
-     <vsizetype>5</vsizetype>
-     <horstretch>1</horstretch>
-     <verstretch>0</verstretch>
-    </sizepolicy>
-   </property>
-   <property name="title" >
-    <string>Device</string>
-   </property>
-   <layout class="QVBoxLayout" >
-    <property name="margin" >
-     <number>9</number>
-    </property>
-    <property name="spacing" >
-     <number>6</number>
-    </property>
-    <item>
      <layout class="QHBoxLayout" >
       <property name="margin" >
-       <number>0</number>
+       <number>9</number>
       </property>
       <property name="spacing" >
        <number>6</number>
       </property>
       <item>
-       <widget class="QComboBox" name="diskBrowseLine" >
-        <property name="sizePolicy" >
-         <sizepolicy>
-          <hsizetype>5</hsizetype>
-          <vsizetype>0</vsizetype>
-          <horstretch>1</horstretch>
-          <verstretch>0</verstretch>
-         </sizepolicy>
+       <layout class="QGridLayout" >
+        <property name="margin" >
+         <number>0</number>
         </property>
-        <property name="editable" >
-         <bool>true</bool>
+        <property name="spacing" >
+         <number>6</number>
         </property>
-       </widget>
+        <item row="0" column="1" >
+         <widget class="QRadioButton" name="vcdRadioButton" >
+          <property name="text" >
+           <string>SVCD/VCD</string>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0" >
+         <widget class="QRadioButton" name="dvdRadioButton" >
+          <property name="text" >
+           <string>DVD</string>
+          </property>
+          <property name="checked" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="2" >
+         <widget class="QRadioButton" name="audioCDRadioButton" >
+          <property name="text" >
+           <string>Audio CD</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0" >
+         <widget class="QLabel" name="label" >
+          <property name="text" >
+           <string>Disk device</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1" colspan="2" >
+         <widget class="QComboBox" name="deviceCombo" >
+          <property name="editable" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
+     </layout>
+    </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="diskOptionGroupBox" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>5</hsizetype>
+       <vsizetype>5</vsizetype>
+       <horstretch>1</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Starting position</string>
+     </property>
+     <layout class="QHBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
       <item>
-       <widget class="QPushButton" name="browseDiskButton" >
-        <property name="text" >
-         <string>Browse</string>
+       <layout class="QGridLayout" >
+        <property name="margin" >
+         <number>0</number>
+        </property>
+        <property name="spacing" >
+         <number>6</number>
         </property>
-       </widget>
+        <item row="0" column="1" >
+         <widget class="QSpinBox" name="titleSpin" >
+          <property name="autoFillBackground" >
+           <bool>false</bool>
+          </property>
+          <property name="suffix" >
+           <string/>
+          </property>
+          <property name="minimum" >
+           <number>-1</number>
+          </property>
+          <property name="value" >
+           <number>-1</number>
+          </property>
+         </widget>
+        </item>
+        <item row="0" column="0" >
+         <widget class="QLabel" name="label_2" >
+          <property name="text" >
+           <string>Title</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="0" >
+         <widget class="QLabel" name="label_3" >
+          <property name="text" >
+           <string>Chapter</string>
+          </property>
+         </widget>
+        </item>
+        <item row="1" column="1" >
+         <widget class="QSpinBox" name="chapterSpin" >
+          <property name="suffix" >
+           <string/>
+          </property>
+          <property name="prefix" >
+           <string/>
+          </property>
+          <property name="minimum" >
+           <number>-1</number>
+          </property>
+          <property name="value" >
+           <number>-1</number>
+          </property>
+         </widget>
+        </item>
+       </layout>
       </item>
      </layout>
-    </item>
-   </layout>
-  </widget>
+    </widget>
+   </item>
+  </layout>
  </widget>
  <resources/>
  <connections/>
index 8198d57..6500238 100644 (file)
@@ -6,8 +6,8 @@
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>415</width>
-    <height>305</height>
+    <width>487</width>
+    <height>151</height>
    </rect>
   </property>
   <property name="sizePolicy" >
   <property name="windowTitle" >
    <string>Form</string>
   </property>
-  <widget class="QGroupBox" name="fileGroupBox" >
-   <property name="geometry" >
-    <rect>
-     <x>9</x>
-     <y>9</y>
-     <width>397</width>
-     <height>67</height>
-    </rect>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
    </property>
-   <property name="title" >
-    <string>Media File</string>
+   <property name="spacing" >
+    <number>6</number>
    </property>
-   <widget class="QWidget" name="" >
-    <property name="geometry" >
-     <rect>
-      <x>11</x>
-      <y>28</y>
-      <width>371</width>
-      <height>29</height>
-     </rect>
-    </property>
+   <item>
     <layout class="QHBoxLayout" >
      <property name="margin" >
       <number>0</number>
      <property name="spacing" >
       <number>6</number>
      </property>
+     <item>
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>File</string>
+       </property>
+      </widget>
+     </item>
      <item>
       <widget class="QComboBox" name="fileInput" >
        <property name="sizePolicy" >
       </widget>
      </item>
     </layout>
-   </widget>
-  </widget>
-  <widget class="QGroupBox" name="subGroupBox" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>80</y>
-     <width>397</width>
-     <height>103</height>
-    </rect>
-   </property>
-   <property name="title" >
-    <string>Subtitles</string>
-   </property>
-   <property name="checkable" >
-    <bool>true</bool>
-   </property>
-   <property name="checked" >
-    <bool>false</bool>
-   </property>
-   <widget class="QWidget" name="layoutWidget" >
-    <property name="geometry" >
-     <rect>
-      <x>10</x>
-      <y>20</y>
-      <width>371</width>
-      <height>29</height>
-     </rect>
-    </property>
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="subGroupBox" >
+     <property name="title" >
+      <string>Use a subtitles file</string>
      </property>
-     <item>
-      <widget class="QComboBox" name="subInput" >
-       <property name="sizePolicy" >
-        <sizepolicy>
-         <hsizetype>7</hsizetype>
-         <vsizetype>0</vsizetype>
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="editable" >
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="subBrowseButton" >
-       <property name="text" >
-        <string>Browse</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </widget>
-   <widget class="QWidget" name="" >
-    <property name="geometry" >
-     <rect>
-      <x>10</x>
-      <y>60</y>
-      <width>371</width>
-      <height>28</height>
-     </rect>
-    </property>
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
+     <property name="checkable" >
+      <bool>true</bool>
      </property>
-     <property name="spacing" >
-      <number>6</number>
+     <property name="checked" >
+      <bool>false</bool>
      </property>
-     <item>
-      <widget class="QLabel" name="sizeSubLabel" >
-       <property name="text" >
-        <string>Size:</string>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QComboBox" name="sizeSubComboBox" >
-       <property name="minimumSize" >
-        <size>
-         <width>100</width>
-         <height>0</height>
-        </size>
-       </property>
-       <item>
-        <property name="text" >
-         <string>Very Small</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Small</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Normal</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Big</string>
-        </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Very Big</string>
+     <layout class="QVBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <layout class="QHBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
         </property>
-       </item>
-      </widget>
-     </item>
-     <item>
-      <spacer>
-       <property name="orientation" >
-        <enum>Qt::Horizontal</enum>
-       </property>
-       <property name="sizeHint" >
-        <size>
-         <width>40</width>
-         <height>20</height>
-        </size>
-       </property>
-      </spacer>
-     </item>
-     <item>
-      <widget class="QLabel" name="alignSubLabel" >
-       <property name="text" >
-        <string>Alignment:</string>
-       </property>
-       <property name="buddy" >
-        <cstring>alignSubLabel</cstring>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QComboBox" name="alignSubComboBox" >
-       <property name="minimumSize" >
-        <size>
-         <width>80</width>
-         <height>0</height>
-        </size>
-       </property>
-       <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>
+        <property name="spacing" >
+         <number>6</number>
         </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Center</string>
+        <item>
+         <widget class="QComboBox" name="subInput" >
+          <property name="sizePolicy" >
+           <sizepolicy>
+            <hsizetype>7</hsizetype>
+            <vsizetype>0</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+           </sizepolicy>
+          </property>
+          <property name="editable" >
+           <bool>true</bool>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QPushButton" name="subBrowseButton" >
+          <property name="text" >
+           <string>Browse</string>
+          </property>
+         </widget>
+        </item>
+       </layout>
+      </item>
+      <item>
+       <layout class="QHBoxLayout" >
+        <property name="margin" >
+         <number>0</number>
         </property>
-       </item>
-       <item>
-        <property name="text" >
-         <string>Right</string>
+        <property name="spacing" >
+         <number>6</number>
         </property>
-       </item>
-      </widget>
-     </item>
-    </layout>
-   </widget>
-  </widget>
-  <widget class="QGroupBox" name="audioGroupBox" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>190</y>
-     <width>397</width>
-     <height>61</height>
-    </rect>
-   </property>
-   <property name="title" >
-    <string>Extra Audio File</string>
-   </property>
-   <property name="checkable" >
-    <bool>true</bool>
-   </property>
-   <property name="checked" >
-    <bool>false</bool>
-   </property>
-   <widget class="QWidget" name="" >
-    <property name="geometry" >
-     <rect>
-      <x>10</x>
-      <y>20</y>
-      <width>371</width>
-      <height>29</height>
-     </rect>
-    </property>
-    <layout class="QHBoxLayout" >
-     <property name="margin" >
-      <number>0</number>
-     </property>
-     <property name="spacing" >
-      <number>6</number>
-     </property>
-     <item>
-      <widget class="QComboBox" name="audioFileInput" >
-       <property name="sizePolicy" >
-        <sizepolicy>
-         <hsizetype>7</hsizetype>
-         <vsizetype>0</vsizetype>
-         <horstretch>0</horstretch>
-         <verstretch>0</verstretch>
-        </sizepolicy>
-       </property>
-       <property name="editable" >
-        <bool>true</bool>
-       </property>
-      </widget>
-     </item>
-     <item>
-      <widget class="QPushButton" name="audioBrowseButton" >
-       <property name="text" >
-        <string>Browse</string>
-       </property>
-      </widget>
-     </item>
-    </layout>
-   </widget>
-  </widget>
+        <item>
+         <widget class="QLabel" name="sizeSubLabel" >
+          <property name="text" >
+           <string>Size:</string>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="sizeSubComboBox" >
+          <property name="minimumSize" >
+           <size>
+            <width>100</width>
+            <height>0</height>
+           </size>
+          </property>
+          <item>
+           <property name="text" >
+            <string>Very Small</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Small</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Normal</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Big</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Very Big</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+        <item>
+         <spacer>
+          <property name="orientation" >
+           <enum>Qt::Horizontal</enum>
+          </property>
+          <property name="sizeHint" >
+           <size>
+            <width>40</width>
+            <height>20</height>
+           </size>
+          </property>
+         </spacer>
+        </item>
+        <item>
+         <widget class="QLabel" name="alignSubLabel" >
+          <property name="text" >
+           <string>Alignment:</string>
+          </property>
+          <property name="buddy" >
+           <cstring>alignSubLabel</cstring>
+          </property>
+         </widget>
+        </item>
+        <item>
+         <widget class="QComboBox" name="alignSubComboBox" >
+          <property name="minimumSize" >
+           <size>
+            <width>80</width>
+            <height>0</height>
+           </size>
+          </property>
+          <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>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Center</string>
+           </property>
+          </item>
+          <item>
+           <property name="text" >
+            <string>Right</string>
+           </property>
+          </item>
+         </widget>
+        </item>
+       </layout>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
  </widget>
  <resources/>
  <connections/>
index dc27c4b..0edbf43 100644 (file)
    <rect>
     <x>0</x>
     <y>0</y>
-    <width>418</width>
-    <height>350</height>
+    <width>445</width>
+    <height>217</height>
    </rect>
   </property>
   <property name="windowTitle" >
    <string>Form</string>
   </property>
-  <widget class="QGroupBox" name="groupBox" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>90</y>
-     <width>391</width>
-     <height>61</height>
-    </rect>
+  <layout class="QVBoxLayout" >
+   <property name="margin" >
+    <number>9</number>
    </property>
-   <property name="title" >
-    <string>Options</string>
+   <property name="spacing" >
+    <number>6</number>
    </property>
-   <widget class="QWidget" name="layoutWidget" >
-    <property name="geometry" >
-     <rect>
-      <x>10</x>
-      <y>20</y>
-      <width>361</width>
-      <height>33</height>
-     </rect>
-    </property>
-    <layout class="QHBoxLayout" >
+   <item>
+    <layout class="QGridLayout" >
      <property name="margin" >
       <number>0</number>
      </property>
      <property name="spacing" >
       <number>6</number>
      </property>
-     <item>
-      <layout class="QHBoxLayout" >
-       <property name="margin" >
-        <number>0</number>
-       </property>
-       <property name="spacing" >
-        <number>6</number>
+     <item row="1" column="0" >
+      <widget class="QComboBox" name="protocolCombo" />
+     </item>
+     <item row="0" column="0" >
+      <widget class="QLabel" name="label" >
+       <property name="text" >
+        <string>Protocol</string>
        </property>
-       <item>
-        <widget class="QLabel" name="label_3" >
-         <property name="sizePolicy" >
-          <sizepolicy>
-           <hsizetype>7</hsizetype>
-           <vsizetype>5</vsizetype>
-           <horstretch>0</horstretch>
-           <verstretch>0</verstretch>
-          </sizepolicy>
-         </property>
-         <property name="text" >
-          <string>_("Port") :</string>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <widget class="QSpinBox" name="spinBox" >
-         <property name="minimumSize" >
-          <size>
-           <width>80</width>
-           <height>0</height>
-          </size>
-         </property>
-        </widget>
-       </item>
-       <item>
-        <spacer>
-         <property name="orientation" >
-          <enum>Qt::Horizontal</enum>
-         </property>
-         <property name="sizeHint" >
-          <size>
-           <width>40</width>
-           <height>20</height>
-          </size>
-         </property>
-        </spacer>
-       </item>
-      </layout>
+      </widget>
      </item>
-     <item>
-      <widget class="QCheckBox" name="checkBox_3" >
+     <item row="0" column="1" >
+      <widget class="QLabel" name="label_2" >
+       <property name="sizePolicy" >
+        <sizepolicy>
+         <hsizetype>5</hsizetype>
+         <vsizetype>0</vsizetype>
+         <horstretch>0</horstretch>
+         <verstretch>0</verstretch>
+        </sizepolicy>
+       </property>
        <property name="text" >
-        <string>force IPv6</string>
+        <string>Address</string>
        </property>
       </widget>
      </item>
-     <item>
-      <widget class="QCheckBox" name="checkBox_2" >
+     <item row="0" column="2" >
+      <widget class="QLabel" name="label_4" >
        <property name="text" >
-        <string>localhost</string>
+        <string>Port</string>
+       </property>
+      </widget>
+     </item>
+     <item row="1" column="2" >
+      <widget class="QSpinBox" name="portSpin" >
+       <property name="maximum" >
+        <number>65535</number>
+       </property>
+       <property name="value" >
+        <number>1234</number>
        </property>
       </widget>
      </item>
+     <item row="1" column="1" >
+      <widget class="QLineEdit" name="addressText" />
+     </item>
     </layout>
-   </widget>
-  </widget>
-  <widget class="QRadioButton" name="radioButton" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>0</y>
-     <width>101</width>
-     <height>23</height>
-    </rect>
-   </property>
-   <property name="text" >
-    <string>UDP/RTP</string>
-   </property>
-   <property name="checked" >
-    <bool>true</bool>
-   </property>
-  </widget>
-  <widget class="QRadioButton" name="radioButton_3" >
-   <property name="geometry" >
-    <rect>
-     <x>60</x>
-     <y>160</y>
-     <width>154</width>
-     <height>23</height>
-    </rect>
-   </property>
-   <property name="text" >
-    <string>HTTP/HTTPS/FTP/MMS</string>
-   </property>
-  </widget>
-  <widget class="QRadioButton" name="radioButton_4" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>160</y>
-     <width>45</width>
-     <height>23</height>
-    </rect>
-   </property>
-   <property name="text" >
-    <string>RTP</string>
-   </property>
-  </widget>
-  <widget class="QGroupBox" name="groupBox_2" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>180</y>
-     <width>391</width>
-     <height>69</height>
-    </rect>
-   </property>
-   <property name="title" >
-    <string>_("URL")</string>
-   </property>
-   <layout class="QHBoxLayout" >
-    <property name="margin" >
-     <number>9</number>
-    </property>
-    <property name="spacing" >
-     <number>6</number>
-    </property>
-    <item>
-     <widget class="QLineEdit" name="lineEdit_2" />
-    </item>
-   </layout>
-  </widget>
-  <widget class="QGroupBox" name="groupBox_3" >
-   <property name="geometry" >
-    <rect>
-     <x>10</x>
-     <y>20</y>
-     <width>391</width>
-     <height>69</height>
-    </rect>
-   </property>
-   <property name="title" >
-    <string>_("Address")</string>
-   </property>
-   <layout class="QHBoxLayout" >
-    <property name="margin" >
-     <number>9</number>
-    </property>
-    <property name="spacing" >
-     <number>6</number>
-    </property>
-    <item>
-     <widget class="QLineEdit" name="lineEdit" />
-    </item>
-   </layout>
-  </widget>
+   </item>
+   <item>
+    <widget class="QGroupBox" name="groupBox_3" >
+     <property name="sizePolicy" >
+      <sizepolicy>
+       <hsizetype>5</hsizetype>
+       <vsizetype>0</vsizetype>
+       <horstretch>0</horstretch>
+       <verstretch>0</verstretch>
+      </sizepolicy>
+     </property>
+     <property name="title" >
+      <string>Options</string>
+     </property>
+     <layout class="QHBoxLayout" >
+      <property name="margin" >
+       <number>9</number>
+      </property>
+      <property name="spacing" >
+       <number>6</number>
+      </property>
+      <item>
+       <widget class="QCheckBox" name="timeShift" >
+        <property name="text" >
+         <string>Allow timeshifting</string>
+        </property>
+       </widget>
+      </item>
+      <item>
+       <widget class="QCheckBox" name="ipv6" >
+        <property name="text" >
+         <string>Force IPv6</string>
+        </property>
+       </widget>
+      </item>
+     </layout>
+    </widget>
+   </item>
+  </layout>
  </widget>
  <resources/>
  <connections/>