Commit a94647f0 authored by Clément Stenac's avatar Clément Stenac

Misc cleanups in Qt4. (Closes:#736)

Fix m3u export
parent ff5e7fa7
...@@ -11,9 +11,11 @@ Important notes: ...@@ -11,9 +11,11 @@ Important notes:
XXX: DETAILED INSTRUCTIONS HERE :XXX XXX: DETAILED INSTRUCTIONS HERE :XXX
* This version of VLC contains a new interface for Windows and Linux. This * This version of VLC contains a new interface for Windows and Linux. This
interface lacks a few features that used to be present in vlc 0.8.6: interface lacks a few features that used to be present in vlc 0.8.6:
"Streaming wizard" and "VLM control". These features will be replaced - "Streaming wizard" and "VLM control". These features will be replaced
by a better alternative in the next version. If you absolutely need these by a better alternative in the next version. If you absolutely need these
features, we advise you to keep vlc 0.8.6 features, we advise you to keep vlc 0.8.6
- Similarly, "Bookmarks" will be reintroduced in an improved version at a
later point
Changes: Changes:
-------- --------
......
...@@ -30,10 +30,20 @@ ...@@ -30,10 +30,20 @@
/*************** Open dialogs **************/ /*************** Open dialogs **************/
#define I_POP_SEL_FILES N_("Select one or more files to open") #define I_OP_OPF N_("Quick &Open File...")
#define I_OP_ADVOP N_("&Advanced Open...")
#define I_OP_OPDIR N_("Open &Directory...")
#define I_OP_SEL_FILES N_("Select one or more files to open")
/******************* Menus *****************/ /******************* Menus *****************/
#define I_MENU_INFO N_("Information...")
#define I_MENU_MSG N_("Messages...")
#define I_MENU_EXT N_("Extended settings...")
#define I_MENU_ABOUT N_("About VLC media player...")
/* Playlist popup */ /* Playlist popup */
#define I_POP_PLAY N_("Play") #define I_POP_PLAY N_("Play")
#define I_POP_PREPARSE N_("Fetch information") #define I_POP_PREPARSE N_("Fetch information")
...@@ -44,6 +54,30 @@ ...@@ -44,6 +54,30 @@
#define I_POP_STREAM N_("Stream...") #define I_POP_STREAM N_("Stream...")
#define I_POP_SAVE N_("Save...") #define I_POP_SAVE N_("Save...")
/*************** Playlist *************/
#define I_PL_LOOP N_("Repeat all")
#define I_PL_REPEAT N_("Repeat one")
#define I_PL_NOREPEAT N_("No repeat")
#define I_PL_RANDOM N_("Random")
#define I_PL_NORANDOM N_("No random")
#define I_PL_ADDPL N_("Add to playlist")
#define I_PL_ADDML N_("Add to media library")
#define I_PL_ADDF N_("Add file...")
#define I_PL_ADVADD N_("Advanced open...")
#define I_PL_ADDDIR N_("Add directory...")
#define I_PL_SAVE N_("Save playlist to file...")
#define I_PL_LOAD N_("Load playlist file...")
#define I_PL_SEARCH N_("Search")
#define I_PL_FILTER N_("Search filter")
#define I_PL_SD N_("Additional sources")
/*************** Preferences *************/ /*************** Preferences *************/
#define I_HIDDEN_ADV N_( "Some options are available but hidden. "\ #define I_HIDDEN_ADV N_( "Some options are available but hidden. "\
......
...@@ -27,6 +27,8 @@ ...@@ -27,6 +27,8 @@
#include "components/playlist/panels.hpp" #include "components/playlist/panels.hpp"
#include "util/customwidgets.hpp" #include "util/customwidgets.hpp"
#include <vlc_intf_strings.h>
#include <QTreeView> #include <QTreeView>
#include <QPushButton> #include <QPushButton>
#include <QHBoxLayout> #include <QHBoxLayout>
...@@ -53,7 +55,7 @@ StandardPLPanel::StandardPLPanel( BasePlaylistWidget *_parent, ...@@ -53,7 +55,7 @@ StandardPLPanel::StandardPLPanel( BasePlaylistWidget *_parent,
view->setIconSize( QSize(20,20) ); view->setIconSize( QSize(20,20) );
view->setAlternatingRowColors( true ); view->setAlternatingRowColors( true );
view->header()->resizeSection( 0, 230 ); view->header()->resizeSection( 0, 230 );
view->header()->resizeSection( 2, 60 ); view->header()->resizeSection( 1, 170 );
view->header()->setSortIndicatorShown( true ); view->header()->setSortIndicatorShown( true );
view->header()->setClickable( true ); view->header()->setClickable( true );
...@@ -95,9 +97,9 @@ StandardPLPanel::StandardPLPanel( BasePlaylistWidget *_parent, ...@@ -95,9 +97,9 @@ StandardPLPanel::StandardPLPanel( BasePlaylistWidget *_parent,
QSpacerItem *spacer = new QSpacerItem( 10, 20 );buttons->addItem( spacer ); QSpacerItem *spacer = new QSpacerItem( 10, 20 );buttons->addItem( spacer );
QLabel *filter = new QLabel( qfu( "&Search:" ) + " " ); QLabel *filter = new QLabel( qtr(I_PL_SEARCH) + " " );
buttons->addWidget( filter ); buttons->addWidget( filter );
searchLine = new ClickLineEdit( qfu( "Playlist filter" ), 0 ); searchLine = new ClickLineEdit( qtr(I_PL_FILTER), 0 );
CONNECT( searchLine, textChanged(QString), this, search(QString)); CONNECT( searchLine, textChanged(QString), this, search(QString));
buttons->addWidget( searchLine ); filter->setBuddy( searchLine ); buttons->addWidget( searchLine ); filter->setBuddy( searchLine );
...@@ -117,17 +119,17 @@ void StandardPLPanel::toggleRepeat() ...@@ -117,17 +119,17 @@ void StandardPLPanel::toggleRepeat()
if( model->hasRepeat() ) if( model->hasRepeat() )
{ {
model->setRepeat( false ); model->setLoop( true ); model->setRepeat( false ); model->setLoop( true );
repeatButton->setText( qtr( "Repeat All" ) ); repeatButton->setText( qtr(I_PL_LOOP) );
} }
else if( model->hasLoop() ) else if( model->hasLoop() )
{ {
model->setRepeat( false ) ; model->setLoop( false ); model->setRepeat( false ) ; model->setLoop( false );
repeatButton->setText( qtr( "No Repeat" ) ); repeatButton->setText( qtr(I_PL_NOREPEAT) );
} }
else else
{ {
model->setRepeat( true ); model->setRepeat( true );
repeatButton->setText( qtr( "Repeat One" ) ); repeatButton->setText( qtr(I_PL_REPEAT) );
} }
} }
...@@ -135,7 +137,7 @@ void StandardPLPanel::toggleRandom() ...@@ -135,7 +137,7 @@ void StandardPLPanel::toggleRandom()
{ {
bool prev = model->hasRandom(); bool prev = model->hasRandom();
model->setRandom( !prev ); model->setRandom( !prev );
randomButton->setText( prev ? qtr( "No Random" ) : qtr( "Random" ) ); randomButton->setText( prev ? qtr(I_PL_NORANDOM) : qtr(I_PL_RANDOM) );
} }
void StandardPLPanel::handleExpansion( const QModelIndex &index ) void StandardPLPanel::handleExpansion( const QModelIndex &index )
...@@ -159,13 +161,13 @@ void StandardPLPanel::setCurrentRootId( int _new ) ...@@ -159,13 +161,13 @@ void StandardPLPanel::setCurrentRootId( int _new )
currentRootId == THEPL->p_local_onelevel->i_id ) currentRootId == THEPL->p_local_onelevel->i_id )
{ {
addButton->setEnabled( true ); addButton->setEnabled( true );
addButton->setToolTip( qtr("Add to playlist" ) ); addButton->setToolTip( qtr(I_PL_ADDPL) );
} }
else if( currentRootId == THEPL->p_ml_category->i_id || else if( currentRootId == THEPL->p_ml_category->i_id ||
currentRootId == THEPL->p_ml_onelevel->i_id ) currentRootId == THEPL->p_ml_onelevel->i_id )
{ {
addButton->setEnabled( true ); addButton->setEnabled( true );
addButton->setToolTip( qtr("Add to media library" ) ); addButton->setToolTip( qtr(I_PL_ADDML) );
} }
else else
addButton->setEnabled( false ); addButton->setEnabled( false );
...@@ -177,15 +179,16 @@ void StandardPLPanel::add() ...@@ -177,15 +179,16 @@ void StandardPLPanel::add()
if( currentRootId == THEPL->p_local_category->i_id || if( currentRootId == THEPL->p_local_category->i_id ||
currentRootId == THEPL->p_local_onelevel->i_id ) currentRootId == THEPL->p_local_onelevel->i_id )
{ {
popup->addAction( qtr("Add file"), THEDP, SLOT( simplePLAppendDialog() ) ); popup->addAction( qtr(I_PL_ADDF), THEDP, SLOT(simplePLAppendDialog()));
popup->addAction( qtr("Advanced add"), THEDP, SLOT( PLAppendDialog() ) ); popup->addAction( qtr(I_PL_ADVADD), THEDP, SLOT(PLAppendDialog()) );
popup->addAction( qtr(I_PL_ADDDIR), THEDP, SLOT( PLAppendDir()) );
} }
else if( currentRootId == THEPL->p_ml_category->i_id || else if( currentRootId == THEPL->p_ml_category->i_id ||
currentRootId == THEPL->p_ml_onelevel->i_id ) currentRootId == THEPL->p_ml_onelevel->i_id )
{ {
popup->addAction( qtr("Add file"), THEDP, SLOT( simpleMLAppendDialog() ) ); popup->addAction( qtr(I_PL_ADDF), THEDP, SLOT(simpleMLAppendDialog()));
popup->addAction( qtr("Advanced add"), THEDP, SLOT( MLAppendDialog() ) ); popup->addAction( qtr(I_PL_ADVADD), THEDP, SLOT( MLAppendDialog() ) );
popup->addAction( qtr("Directory"), THEDP, SLOT( openMLDirectory() ) ); popup->addAction( qtr(I_PL_ADDDIR), THEDP, SLOT( MLAppendDir() ) );
} }
popup->popup( QCursor::pos() ); popup->popup( QCursor::pos() );
} }
......
...@@ -156,7 +156,7 @@ bool MessagesDialog::save() ...@@ -156,7 +156,7 @@ bool MessagesDialog::save()
p_intf->p_libvlc->psz_homedir, p_intf->p_libvlc->psz_homedir,
"Texts / Logs (*.log *.txt);; All (*.*) "); "Texts / Logs (*.log *.txt);; All (*.*) ");
if( saveLogFileName != NULL ) if( !saveLogFileName.isNull() )
{ {
QFile file(saveLogFileName); QFile file(saveLogFileName);
if (!file.open(QFile::WriteOnly | QFile::Text)) { if (!file.open(QFile::WriteOnly | QFile::Text)) {
......
...@@ -66,6 +66,12 @@ DialogsProvider::~DialogsProvider() ...@@ -66,6 +66,12 @@ DialogsProvider::~DialogsProvider()
MediaInfoDialog::killInstance(); MediaInfoDialog::killInstance();
} }
void DialogsProvider::quit()
{
p_intf->b_die = VLC_TRUE;
QApplication::quit();
}
void DialogsProvider::customEvent( QEvent *event ) void DialogsProvider::customEvent( QEvent *event )
{ {
if( event->type() == DialogEvent_Type ) if( event->type() == DialogEvent_Type )
...@@ -90,7 +96,7 @@ void DialogsProvider::customEvent( QEvent *event ) ...@@ -90,7 +96,7 @@ void DialogsProvider::customEvent( QEvent *event )
case INTF_DIALOG_MISCPOPUPMENU: case INTF_DIALOG_MISCPOPUPMENU:
popupMenu( de->i_dialog ); break; popupMenu( de->i_dialog ); break;
case INTF_DIALOG_FILEINFO: case INTF_DIALOG_FILEINFO:
MediaInfoDialog(); break; mediaInfoDialog(); break;
case INTF_DIALOG_INTERACTION: case INTF_DIALOG_INTERACTION:
doInteraction( de->p_arg ); break; doInteraction( de->p_arg ); break;
case INTF_DIALOG_VLM: case INTF_DIALOG_VLM:
...@@ -103,11 +109,51 @@ void DialogsProvider::customEvent( QEvent *event ) ...@@ -103,11 +109,51 @@ void DialogsProvider::customEvent( QEvent *event )
} }
} }
/****************************************************************************
* Individual simple dialogs
****************************************************************************/
void DialogsProvider::playlistDialog() void DialogsProvider::playlistDialog()
{ {
PlaylistDialog::getInstance( p_intf )->toggleVisible(); 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() void DialogsProvider::openDialog()
{ {
openDialog( 0 ); openDialog( 0 );
...@@ -123,49 +169,144 @@ void DialogsProvider::openDialog( int i_tab ) ...@@ -123,49 +169,144 @@ void DialogsProvider::openDialog( int i_tab )
OpenDialog::getInstance( p_intf->p_sys->p_mi , p_intf )->showTab( 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; QString FileTypes;
interaction_dialog_t *p_dialog = p_arg->p_dialog; FileTypes = _("Media Files");
switch( p_dialog->i_action ) 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: const char * psz_utf8 = qtu( file );
qdialog = new InteractionDialog( p_intf, p_dialog ); playlist_Add( THEPL, psz_utf8, NULL,
p_dialog->p_private = (void*)qdialog; go ? ( PLAYLIST_APPEND | ( i ? 0 : PLAYLIST_GO ) |
if( !(p_dialog->i_status == ANSWERED_DIALOG) ) ( i ? PLAYLIST_PREPARSE : 0 ) )
qdialog->show(); : ( PLAYLIST_APPEND | PLAYLIST_PREPARSE ),
break; PLAYLIST_END,
case INTERACT_UPDATE: pl ? VLC_TRUE : VLC_FALSE );
qdialog = (InteractionDialog*)(p_dialog->p_private); i++;
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::quit() void DialogsProvider::simplePLAppendDialog()
{ {
p_intf->b_die = VLC_TRUE; addFromSimple( true, false );
QApplication::quit();
} }
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() void DialogsProvider::streamingDialog()
{ {
OpenDialog *o = new OpenDialog( p_intf->p_sys->p_mi, p_intf, true ); OpenDialog *o = new OpenDialog( p_intf->p_sys->p_mi, p_intf, true );
...@@ -189,29 +330,9 @@ void DialogsProvider::streamingDialog() ...@@ -189,29 +330,9 @@ void DialogsProvider::streamingDialog()
delete o; delete o;
} }
void DialogsProvider::prefsDialog() /****************************************************************************
{ * Menus / Interaction
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::menuAction( QObject *data ) void DialogsProvider::menuAction( QObject *data )
{ {
...@@ -234,115 +355,43 @@ void DialogsProvider::SDMenuAction( QString data ) ...@@ -234,115 +355,43 @@ void DialogsProvider::SDMenuAction( QString data )
} }
void DialogsProvider::simplePLAppendDialog() void DialogsProvider::doInteraction( intf_dialog_args_t *p_arg )
{
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()
{ {
QStringList files = showSimpleOpen(); InteractionDialog *qdialog;
QString file; interaction_dialog_t *p_dialog = p_arg->p_dialog;
for( size_t i = 0 ; i< files.size(); i++ ) switch( p_dialog->i_action )
{ {
const char * psz_utf8 = qtu( files[i] ); case INTERACT_NEW:
playlist_Import( THEPL, psz_utf8 ); 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() void DialogsProvider::switchToSkins()
{ {
var_SetString( p_intf, "intf-switch", "skins2" ); var_SetString( p_intf, "intf-switch", "skins2" );
} }
void DialogsProvider::bookmarksDialog()
{
}
void DialogsProvider::popupMenu( int i_dialog ) void DialogsProvider::popupMenu( int i_dialog )
{ {
} }
...@@ -70,11 +70,12 @@ private: ...@@ -70,11 +70,12 @@ private:
intf_thread_t *p_intf; intf_thread_t *p_intf;
static DialogsProvider *instance; static DialogsProvider *instance;
QStringList showSimpleOpen(); QStringList showSimpleOpen();
void addFromSimple( bool, bool );
public slots: public slots:
void playlistDialog(); void playlistDialog();
void bookmarksDialog(); void bookmarksDialog();
void MediaInfoDialog(); void mediaInfoDialog();
void prefsDialog(); void prefsDialog();
void extendedDialog(); void extendedDialog();
void messagesDialog(); void messagesDialog();
...@@ -92,8 +93,9 @@ public slots: ...@@ -92,8 +93,9 @@ public slots:
void SDMenuAction( QString ); void SDMenuAction( QString );
void streamingDialog(); void streamingDialog();
void openPlaylist(); void openPlaylist();
void openDirectory(); void savePlaylist();
void openMLDirectory(); void PLAppendDir();
void MLAppendDir();
void quit(); void quit();
void switchToSkins(); void switchToSkins();
void helpDialog(); void helpDialog();
......
...@@ -27,8 +27,9 @@ ...@@ -27,8 +27,9 @@
#include <QActionGroup> #include <QActionGroup>
#include <QSignalMapper> #include <QSignalMapper>
#include "main_interface.hpp" #include <vlc_intf_strings.h>
#include "main_interface.hpp"
#include "menus.hpp" #include "menus.hpp"
#include "dialogs_provider.hpp" #include "dialogs_provider.hpp"
#include "input_manager.hpp" #include "input_manager.hpp"
...@@ -155,8 +156,8 @@ QMenu *QVLCMenu::PlaylistMenu( MainInterface *mi, intf_thread_t *p_intf ) ...@@ -155,8 +156,8 @@ QMenu *QVLCMenu::PlaylistMenu( MainInterface *mi, intf_thread_t *p_intf )
menu->addMenu( SDMenu( p_intf ) ); menu->addMenu( SDMenu( p_intf ) );
menu->addSeparator(); menu->addSeparator();
DP_SADD( qtr( "Open playlist file"), "", "", openPlaylist() ); DP_SADD( qtr(I_PL_LOAD), "", "", openPlaylist() );
// DP_SADD( qtr( "Save playlist to file" ), "", "", savePlaylist() ); DP_SADD( qtr(I_PL_SAVE), "", "", savePlaylist() );
menu->addSeparator(); menu->addSeparator();
menu->addAction( qtr("Undock from interface"), mi, menu->addAction( qtr("Undock from interface"), mi,
SLOT( undockPlaylist() ) ); SLOT( undockPlaylist() ) );
...@@ -175,10 +176,9 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, MainInterface *mi, ...@@ -175,10 +176,9 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, MainInterface *mi,
menu->addMenu( intfmenu ); menu->addMenu( intfmenu );
menu->addSeparator(); menu->addSeparator();
} }
DP_SADD( qtr("Messages" ), "", "", messagesDialog() ); DP_SADD( qtr(I_MENU_MSG), "", "", messagesDialog() );
DP_SADD( qtr("Information") , "", "", MediaInfoDialog() ); DP_SADD( qtr(I_MENU_INFO) , "", "", mediaInfoDialog() );
DP_SADD( qtr("Bookmarks"), "", "", bookmarksDialog() ); DP_SADD( qtr(I_MENU_EXT), "","",extendedDialog() );
DP_SADD( qtr("Extended settings"), "","",extendedDialog() );
if( mi ) if( mi )
{ {
menu->addSeparator(); menu->addSeparator();
...@@ -290,7 +290,7 @@ QMenu *QVLCMenu::NavigMenu( intf_thread_t *p_intf, QMenu *current ) ...@@ -290,7 +290,7 @@ QMenu *QVLCMenu::NavigMenu( intf_thread_t *p_intf, QMenu *current )
QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf ) QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf )
{ {
QMenu *menu = new QMenu(); QMenu *menu = new QMenu();
menu->setTitle( qtr( "Additional sources" ) ); menu->setTitle( qtr(I_PL_SD) );
vlc_list_t *p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE, vlc_list_t *p_list = vlc_list_find( p_intf, VLC_OBJECT_MODULE,
FIND_ANYWHERE ); FIND_ANYWHERE );
int i_num = 0; int i_num = 0;
...@@ -331,7 +331,7 @@ QMenu *QVLCMenu::HelpMenu() ...@@ -331,7 +331,7 @@ QMenu *QVLCMenu::HelpMenu()
QMenu *menu = new QMenu(); QMenu *menu = new QMenu();
DP_SADD( qtr("Help") , "", "", helpDialog() ); DP_SADD( qtr("Help") , "", "", helpDialog() );
menu->addSeparator(); menu->addSeparator();
DP_SADD( qtr("About VLC media player..."), "", "", aboutDialog() ); DP_SADD( qtr(I_MENU_ABOUT), "", "", aboutDialog() );
return menu; return menu;
} }
......
...@@ -42,24 +42,26 @@ int Export_M3U ( vlc_object_t * ); ...@@ -42,24 +42,26 @@ int Export_M3U ( vlc_object_t * );
/***************************************************************************** /*****************************************************************************
* Export_M3U: main export function * Export_M3U: main export function
*****************************************************************************/ *****************************************************************************/
int Export_M3U( vlc_object_t *p_this ) static void DoChildren( playlist_t *p_playlist, playlist_export_t *p_export,
playlist_item_t *p_root )
{ {
playlist_t *p_playlist = (playlist_t*)p_this;
playlist_export_t *p_export = (playlist_export_t *)p_playlist->p_private;
int i, j; int i, j;
msg_Dbg(p_playlist, "saving using M3U format");
/* Write header */
fprintf( p_export->p_file, "#EXTM3U\n" );
/* Go through the playlist and add items */ /* Go through the playlist and add items */
for( i = 0; i< p_export->p_root->i_children ; i++) for( i = 0; i< p_root->i_children ; i++)
{ {
playlist_item_t *p_current = p_export->p_root->pp_children[i]; playlist_item_t *p_current = p_root->pp_children[i];
if( p_current->i_flags & PLAYLIST_SAVE_FLAG ) if( p_current->i_flags & PLAYLIST_SAVE_FLAG )
continue; continue;
if( p_current->i_children >= 0 )
{
DoChildren( p_playlist, p_export, p_current );
continue;
}
assert( p_current->p_input->psz_uri );
/* General info */ /* General info */
if( p_current->p_input->psz_name && if( p_current->p_input->psz_name &&
strcmp( p_current->p_input->psz_uri, strcmp( p_current->p_input->psz_uri,
...@@ -99,5 +101,19 @@ int Export_M3U( vlc_object_t *p_this ) ...@@ -99,5 +101,19 @@ int Export_M3U( vlc_object_t *p_this )
fprintf( p_export->p_file, "%s\n", fprintf( p_export->p_file, "%s\n",
p_current->p_input->psz_uri ); p_current->p_input->psz_uri );
} }
}
int Export_M3U( vlc_object_t *p_this )
{
playlist_t *p_playlist = (playlist_t*)p_this;
playlist_export_t *p_export = (playlist_export_t *)p_playlist->p_private;
msg_Dbg(p_playlist, "saving using M3U format");
/* Write header */
fprintf( p_export->p_file, "#EXTM3U\n" );
DoChildren( p_playlist, p_export, p_export->p_root );
return VLC_SUCCESS; return VLC_SUCCESS;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment