* $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
{
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();
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
**************************************************************************/
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);
}
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);
+}
* $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
{
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
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
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
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
{
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()
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();
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] );
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);
+ }
+}
#include <QBoxLayout>
#include <QString>
-class InfoTab;
-
class OpenDialog : public QVLCFrame
{
Q_OBJECT;
}
virtual ~OpenDialog();
- void showTab( int);
+ void showTab( int );
- QString MRL;
+ QString mainMRL;
private:
OpenDialog( intf_thread_t * );
static OpenDialog *instance;
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
<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>
<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/>
<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/>
<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/>