|
|
|
@ -66,6 +66,12 @@ DialogsProvider::~DialogsProvider() |
|
|
|
MediaInfoDialog::killInstance(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::quit() |
|
|
|
{ |
|
|
|
p_intf->b_die = VLC_TRUE; |
|
|
|
QApplication::quit(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::customEvent( QEvent *event ) |
|
|
|
{ |
|
|
|
if( event->type() == DialogEvent_Type ) |
|
|
|
@ -90,7 +96,7 @@ void DialogsProvider::customEvent( QEvent *event ) |
|
|
|
case INTF_DIALOG_MISCPOPUPMENU: |
|
|
|
popupMenu( de->i_dialog ); break; |
|
|
|
case INTF_DIALOG_FILEINFO: |
|
|
|
MediaInfoDialog(); break; |
|
|
|
mediaInfoDialog(); break; |
|
|
|
case INTF_DIALOG_INTERACTION: |
|
|
|
doInteraction( de->p_arg ); break; |
|
|
|
case INTF_DIALOG_VLM: |
|
|
|
@ -103,11 +109,51 @@ void DialogsProvider::customEvent( QEvent *event ) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
* Individual simple dialogs |
|
|
|
****************************************************************************/ |
|
|
|
void DialogsProvider::playlistDialog() |
|
|
|
{ |
|
|
|
PlaylistDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::prefsDialog() |
|
|
|
{ |
|
|
|
PrefsDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
void DialogsProvider::extendedDialog() |
|
|
|
{ |
|
|
|
ExtendedDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::messagesDialog() |
|
|
|
{ |
|
|
|
MessagesDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::helpDialog() |
|
|
|
{ |
|
|
|
HelpDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::aboutDialog() |
|
|
|
{ |
|
|
|
AboutDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::mediaInfoDialog() |
|
|
|
{ |
|
|
|
MediaInfoDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::bookmarksDialog() |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
* All the open/add stuff |
|
|
|
****************************************************************************/ |
|
|
|
|
|
|
|
void DialogsProvider::openDialog() |
|
|
|
{ |
|
|
|
openDialog( 0 ); |
|
|
|
@ -123,49 +169,144 @@ void DialogsProvider::openDialog( int i_tab ) |
|
|
|
OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf )->showTab( i_tab ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::doInteraction( intf_dialog_args_t *p_arg ) |
|
|
|
/**** Simple open ****/ |
|
|
|
|
|
|
|
QStringList DialogsProvider::showSimpleOpen() |
|
|
|
{ |
|
|
|
InteractionDialog *qdialog; |
|
|
|
interaction_dialog_t *p_dialog = p_arg->p_dialog; |
|
|
|
switch( p_dialog->i_action ) |
|
|
|
QString FileTypes; |
|
|
|
FileTypes = _("Media Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_MEDIA; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("Video Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_VIDEO; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("Sound Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_AUDIO; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("PlayList Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_PLAYLIST; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("All Files"); |
|
|
|
FileTypes += " (*.*)"; |
|
|
|
FileTypes.replace(QString(";*"), QString(" *")); |
|
|
|
return QFileDialog::getOpenFileNames( NULL, qfu(I_OP_SEL_FILES ), |
|
|
|
p_intf->p_libvlc->psz_homedir, FileTypes ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::addFromSimple( bool pl, bool go) |
|
|
|
{ |
|
|
|
QStringList files = DialogsProvider::showSimpleOpen(); |
|
|
|
int i = 0; |
|
|
|
foreach( QString file, files ) |
|
|
|
{ |
|
|
|
case INTERACT_NEW: |
|
|
|
qdialog = new InteractionDialog( p_intf, p_dialog ); |
|
|
|
p_dialog->p_private = (void*)qdialog; |
|
|
|
if( !(p_dialog->i_status == ANSWERED_DIALOG) ) |
|
|
|
qdialog->show(); |
|
|
|
break; |
|
|
|
case INTERACT_UPDATE: |
|
|
|
qdialog = (InteractionDialog*)(p_dialog->p_private); |
|
|
|
if( qdialog) |
|
|
|
qdialog->update(); |
|
|
|
break; |
|
|
|
case INTERACT_HIDE: |
|
|
|
qdialog = (InteractionDialog*)(p_dialog->p_private); |
|
|
|
if( qdialog ) |
|
|
|
qdialog->hide(); |
|
|
|
p_dialog->i_status = HIDDEN_DIALOG; |
|
|
|
break; |
|
|
|
case INTERACT_DESTROY: |
|
|
|
qdialog = (InteractionDialog*)(p_dialog->p_private); |
|
|
|
if( !p_dialog->i_flags & DIALOG_NONBLOCKING_ERROR ) |
|
|
|
delete qdialog; |
|
|
|
p_dialog->i_status = DESTROYED_DIALOG; |
|
|
|
break; |
|
|
|
const char * psz_utf8 = qtu( file ); |
|
|
|
playlist_Add( THEPL, psz_utf8, NULL, |
|
|
|
go ? ( PLAYLIST_APPEND | ( i ? 0 : PLAYLIST_GO ) | |
|
|
|
( i ? PLAYLIST_PREPARSE : 0 ) ) |
|
|
|
: ( PLAYLIST_APPEND | PLAYLIST_PREPARSE ), |
|
|
|
PLAYLIST_END, |
|
|
|
pl ? VLC_TRUE : VLC_FALSE ); |
|
|
|
i++; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::quit() |
|
|
|
void DialogsProvider::simplePLAppendDialog() |
|
|
|
{ |
|
|
|
p_intf->b_die = VLC_TRUE; |
|
|
|
QApplication::quit(); |
|
|
|
addFromSimple( true, false ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::MediaInfoDialog() |
|
|
|
void DialogsProvider::simpleMLAppendDialog() |
|
|
|
{ |
|
|
|
MediaInfoDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
addFromSimple( false, false ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::simpleOpenDialog() |
|
|
|
{ |
|
|
|
addFromSimple( true, true ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::openPlaylist() |
|
|
|
{ |
|
|
|
QStringList files = showSimpleOpen(); |
|
|
|
foreach( QString file, files ) |
|
|
|
{ |
|
|
|
playlist_Import( THEPL, qtu(file) ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::savePlaylist() |
|
|
|
{ |
|
|
|
QFileDialog *qfd = new QFileDialog( NULL, |
|
|
|
qtr("Choose a filename to save playlist"), |
|
|
|
p_intf->p_libvlc->psz_homedir, |
|
|
|
qfu("XSPF playlist (*.xspf);; ") + |
|
|
|
qfu("M3U playlist (*.m3u);; Any (*.*) ") ); |
|
|
|
qfd->setFileMode( QFileDialog::AnyFile ); |
|
|
|
qfd->setAcceptMode( QFileDialog::AcceptSave ); |
|
|
|
qfd->setConfirmOverwrite( true ); |
|
|
|
|
|
|
|
if( qfd->exec() == QDialog::Accepted ) |
|
|
|
{ |
|
|
|
if( qfd->selectedFiles().count() > 0 ) |
|
|
|
{ |
|
|
|
char *psz_module, *psz_m3u = "export-m3u", |
|
|
|
*psz_xspf = "export-xspf"; |
|
|
|
|
|
|
|
QString file = qfd->selectedFiles().first(); |
|
|
|
QString filter = qfd->selectedFilter(); |
|
|
|
|
|
|
|
if( file.contains(".xsp") || |
|
|
|
( filter.contains(".xspf") && !file.contains(".m3u") ) ) |
|
|
|
{ |
|
|
|
psz_module = psz_xspf; |
|
|
|
if( !file.contains( ".xsp" ) ) |
|
|
|
file.append( ".xspf" ); |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
psz_module = psz_m3u; |
|
|
|
if( !file.contains( ".m3u" ) ) |
|
|
|
file.append( ".m3u" ); |
|
|
|
} |
|
|
|
|
|
|
|
playlist_Export( THEPL, qtu(file), THEPL->p_playlist_category, |
|
|
|
psz_module); |
|
|
|
} |
|
|
|
} |
|
|
|
delete qfd; |
|
|
|
} |
|
|
|
|
|
|
|
static void openDirectory( intf_thread_t* p_intf, bool pl, bool go ) |
|
|
|
{ |
|
|
|
QString dir = QFileDialog::getExistingDirectory ( 0, |
|
|
|
_("Open directory") ); |
|
|
|
input_item_t *p_input = input_ItemNewExt( THEPL, qtu(dir), NULL, |
|
|
|
0, NULL, -1 ); |
|
|
|
playlist_AddInput( THEPL, p_input, |
|
|
|
go ? ( PLAYLIST_APPEND | PLAYLIST_GO ) : PLAYLIST_APPEND, |
|
|
|
PLAYLIST_END, pl); |
|
|
|
input_Read( THEPL, p_input, VLC_FALSE ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::PLAppendDir() |
|
|
|
{ |
|
|
|
openDirectory( p_intf, true, false ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::MLAppendDir() |
|
|
|
{ |
|
|
|
openDirectory( p_intf, false , false ); |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/****************************************************************************
|
|
|
|
* Sout emulation |
|
|
|
****************************************************************************/ |
|
|
|
|
|
|
|
void DialogsProvider::streamingDialog() |
|
|
|
{ |
|
|
|
OpenDialog *o = new OpenDialog( p_intf->p_sys->p_mi, p_intf, true ); |
|
|
|
@ -189,29 +330,9 @@ void DialogsProvider::streamingDialog() |
|
|
|
delete o; |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::prefsDialog() |
|
|
|
{ |
|
|
|
PrefsDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
void DialogsProvider::extendedDialog() |
|
|
|
{ |
|
|
|
ExtendedDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::messagesDialog() |
|
|
|
{ |
|
|
|
MessagesDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::helpDialog() |
|
|
|
{ |
|
|
|
HelpDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::aboutDialog() |
|
|
|
{ |
|
|
|
AboutDialog::getInstance( p_intf )->toggleVisible(); |
|
|
|
} |
|
|
|
/****************************************************************************
|
|
|
|
* Menus / Interaction |
|
|
|
****************************************************************************/ |
|
|
|
|
|
|
|
void DialogsProvider::menuAction( QObject *data ) |
|
|
|
{ |
|
|
|
@ -234,115 +355,43 @@ void DialogsProvider::SDMenuAction( QString data ) |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
void DialogsProvider::simplePLAppendDialog() |
|
|
|
{ |
|
|
|
QStringList files = showSimpleOpen(); |
|
|
|
QString file; |
|
|
|
foreach( file, files ) |
|
|
|
{ |
|
|
|
const char * psz_utf8 = qtu( file ); |
|
|
|
playlist_Add( THEPL, psz_utf8, NULL, |
|
|
|
PLAYLIST_APPEND | PLAYLIST_PREPARSE, PLAYLIST_END, VLC_TRUE ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::simpleMLAppendDialog() |
|
|
|
{ |
|
|
|
QStringList files = showSimpleOpen(); |
|
|
|
QString file; |
|
|
|
foreach( file, files ) |
|
|
|
{ |
|
|
|
const char * psz_utf8 = qtu( file ); |
|
|
|
playlist_Add( THEPL, psz_utf8, psz_utf8, |
|
|
|
PLAYLIST_APPEND | PLAYLIST_PREPARSE, PLAYLIST_END, |
|
|
|
VLC_TRUE); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::simpleOpenDialog() |
|
|
|
{ |
|
|
|
QStringList files = showSimpleOpen(); |
|
|
|
QString file; |
|
|
|
for( size_t i = 0 ; i< files.size(); i++ ) |
|
|
|
{ |
|
|
|
const char * psz_utf8 = qtu( files[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 ); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::openPlaylist() |
|
|
|
void DialogsProvider::doInteraction( intf_dialog_args_t *p_arg ) |
|
|
|
{ |
|
|
|
QStringList files = showSimpleOpen(); |
|
|
|
QString file; |
|
|
|
for( size_t i = 0 ; i< files.size(); i++ ) |
|
|
|
InteractionDialog *qdialog; |
|
|
|
interaction_dialog_t *p_dialog = p_arg->p_dialog; |
|
|
|
switch( p_dialog->i_action ) |
|
|
|
{ |
|
|
|
const char * psz_utf8 = qtu( files[i] ); |
|
|
|
playlist_Import( THEPL, psz_utf8 ); |
|
|
|
case INTERACT_NEW: |
|
|
|
qdialog = new InteractionDialog( p_intf, p_dialog ); |
|
|
|
p_dialog->p_private = (void*)qdialog; |
|
|
|
if( !(p_dialog->i_status == ANSWERED_DIALOG) ) |
|
|
|
qdialog->show(); |
|
|
|
break; |
|
|
|
case INTERACT_UPDATE: |
|
|
|
qdialog = (InteractionDialog*)(p_dialog->p_private); |
|
|
|
if( qdialog) |
|
|
|
qdialog->update(); |
|
|
|
break; |
|
|
|
case INTERACT_HIDE: |
|
|
|
qdialog = (InteractionDialog*)(p_dialog->p_private); |
|
|
|
if( qdialog ) |
|
|
|
qdialog->hide(); |
|
|
|
p_dialog->i_status = HIDDEN_DIALOG; |
|
|
|
break; |
|
|
|
case INTERACT_DESTROY: |
|
|
|
qdialog = (InteractionDialog*)(p_dialog->p_private); |
|
|
|
if( !p_dialog->i_flags & DIALOG_NONBLOCKING_ERROR ) |
|
|
|
delete qdialog; |
|
|
|
p_dialog->i_status = DESTROYED_DIALOG; |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::openDirectory() |
|
|
|
{ |
|
|
|
QString dir = QFileDialog::getExistingDirectory ( 0, |
|
|
|
_("Open directory") ); |
|
|
|
const char *psz_utf8 = qtu( dir ); |
|
|
|
input_item_t *p_input = input_ItemNewExt( THEPL, psz_utf8, NULL, |
|
|
|
0, NULL, -1 ); |
|
|
|
playlist_AddInput( THEPL, p_input, PLAYLIST_APPEND, PLAYLIST_END, VLC_TRUE); |
|
|
|
input_Read( THEPL, p_input, VLC_FALSE ); |
|
|
|
} |
|
|
|
void DialogsProvider::openMLDirectory() |
|
|
|
{ |
|
|
|
QString dir = QFileDialog::getExistingDirectory ( 0, |
|
|
|
_("Open directory") ); |
|
|
|
const char *psz_utf8 = qtu( dir ); |
|
|
|
input_item_t *p_input = input_ItemNewExt( THEPL, psz_utf8, NULL, |
|
|
|
0, NULL, -1 ); |
|
|
|
playlist_AddInput( THEPL, p_input, PLAYLIST_APPEND, PLAYLIST_END, |
|
|
|
VLC_FALSE ); |
|
|
|
input_Read( THEPL, p_input, VLC_FALSE ); |
|
|
|
} |
|
|
|
|
|
|
|
QStringList DialogsProvider::showSimpleOpen() |
|
|
|
{ |
|
|
|
QString FileTypes; |
|
|
|
FileTypes = _("Media Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_MEDIA; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("Video Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_VIDEO; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("Sound Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_AUDIO; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("PlayList Files"); |
|
|
|
FileTypes += " ( "; |
|
|
|
FileTypes += EXTENSIONS_PLAYLIST; |
|
|
|
FileTypes += ");;"; |
|
|
|
FileTypes += _("All Files"); |
|
|
|
FileTypes += " (*.*)"; |
|
|
|
FileTypes.replace(QString(";*"), QString(" *")); |
|
|
|
return QFileDialog::getOpenFileNames( NULL, qfu(I_POP_SEL_FILES ), |
|
|
|
p_intf->p_libvlc->psz_homedir, FileTypes ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::switchToSkins() |
|
|
|
{ |
|
|
|
var_SetString( p_intf, "intf-switch", "skins2" ); |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::bookmarksDialog() |
|
|
|
{ |
|
|
|
} |
|
|
|
|
|
|
|
void DialogsProvider::popupMenu( int i_dialog ) |
|
|
|
{ |
|
|
|
|
|
|
|
} |
|
|
|
|