#include <QTabWidget>
#include <QGridLayout>
#include <QFileDialog>
+#include <QRegExp>
#include "dialogs/open.hpp"
#include "components/open.hpp"
OpenDialog::OpenDialog( QWidget *parent, intf_thread_t *_p_intf, bool modal ) :
QVLCDialog( parent, _p_intf )
{
- setWindowTitle( qtr("Open" ) );
setModal( modal );
ui.setupUi( this );
- 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"));
+ setWindowTitle( qtr("Open" ) );
+ resize( 500, 300);
+
+ fileOpenPanel = new FileOpenPanel( this , p_intf );
+ diskOpenPanel = new DiskOpenPanel( this , p_intf );
+ netOpenPanel = new NetOpenPanel( this , p_intf );
+ captureOpenPanel = new CaptureOpenPanel( this, p_intf );
+
+ ui.Tab->addTab( fileOpenPanel, qtr( "&File" ) );
+ ui.Tab->addTab( diskOpenPanel, qtr( "&Disc" ) );
+ ui.Tab->addTab( netOpenPanel, qtr( "&Network" ) );
+ ui.Tab->addTab( captureOpenPanel, qtr( "Capture &Device" ) );
ui.advancedFrame->hide();
CONNECT( fileOpenPanel, mrlUpdated( QString ), this, updateMRL(QString) );
CONNECT( netOpenPanel, mrlUpdated( QString ), this, updateMRL(QString) );
CONNECT( diskOpenPanel, mrlUpdated( QString ), this, updateMRL(QString) );
+ CONNECT( captureOpenPanel, mrlUpdated( QString ), this,
+ updateMRL(QString) );
+
CONNECT( fileOpenPanel, 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.closeButton, play());
BUTTONACT( ui.cancelButton, cancel());
+ BUTTONACT( ui.enqueueButton, enqueue());
BUTTONACT( ui.advancedCheckBox , toggleAdvancedPanel() );
/* Initialize caching */
reject();
}
-void OpenDialog::ok()
+void OpenDialog::play()
+{
+ playOrEnqueue( false );
+}
+
+void OpenDialog::enqueue()
+{
+ playOrEnqueue( true );
+}
+
+void OpenDialog::playOrEnqueue( bool b_enqueue = false )
{
this->toggleVisible();
mrl = ui.advancedLineInput->text();
- QStringList tempMRL = mrl.split(" ");
+ QStringList tempMRL = mrl.split( QRegExp("\"\\s+\""),
+ QString::SkipEmptyParts );
if( !isModal() )
{
for( size_t i = 0 ; i< tempMRL.size(); i++ )
{
+ QString mrli = tempMRL[i].remove( QRegExp( "^\"" ) ).
+ remove( QRegExp( "\"\\s+$" ) );
const char * psz_utf8 = qtu( tempMRL[i] );
- /* Play the first one, parse and enqueue the other ones */
- playlist_Add( THEPL, psz_utf8, NULL,
- PLAYLIST_APPEND | (i ? 0 : PLAYLIST_GO) |
- ( i ? PLAYLIST_PREPARSE : 0 ),
- PLAYLIST_END, VLC_TRUE );
- }
+ if ( b_enqueue )
+ {
+ /* Enqueue and Preparse all items*/
+ playlist_Add( THEPL, psz_utf8, NULL,
+ PLAYLIST_APPEND | PLAYLIST_PREPARSE,
+ PLAYLIST_END, VLC_TRUE, VLC_FALSE );
+
+ }
+ else
+ {
+ /* Play the first one, parse and enqueue the other ones */
+ playlist_Add( THEPL, psz_utf8, NULL,
+ PLAYLIST_APPEND | (i ? 0 : PLAYLIST_GO) |
+ ( i ? PLAYLIST_PREPARSE : 0 ),
+ PLAYLIST_END, VLC_TRUE, VLC_FALSE );
+ }
+ }
}
else
void OpenDialog::toggleAdvancedPanel()
{
+ //FIXME does not work under Windows
if (ui.advancedFrame->isVisible()) {
ui.advancedFrame->hide();
setMinimumHeight(1);