]> git.sesse.net Git - vlc/commitdiff
Misc cleanups in Qt4. (Closes:#736)
authorClément Stenac <zorglub@videolan.org>
Sat, 9 Dec 2006 18:12:05 +0000 (18:12 +0000)
committerClément Stenac <zorglub@videolan.org>
Sat, 9 Dec 2006 18:12:05 +0000 (18:12 +0000)
Fix m3u export

NEWS
include/vlc_intf_strings.h
modules/gui/qt4/components/playlist/standardpanel.cpp
modules/gui/qt4/dialogs/messages.cpp
modules/gui/qt4/dialogs_provider.cpp
modules/gui/qt4/dialogs_provider.hpp
modules/gui/qt4/menus.cpp
modules/misc/playlist/m3u.c

diff --git a/NEWS b/NEWS
index 24d6d7237b1fb15fa4fdbfeabadf36dbf051f411..61ffa6d7c230b92215b460b1dadb39d337eb0252 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -11,9 +11,11 @@ Important notes:
    XXX: DETAILED INSTRUCTIONS HERE :XXX
  * 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: 
-   "Streaming wizard" and "VLM control". These features will be replaced
-   by a better alternative in the next version. If you absolutely need these
-   features, we advise you to keep vlc 0.8.6
+   - "Streaming wizard" and "VLM control". These features will be replaced
+     by a better alternative in the next version. If you absolutely need these
+     features, we advise you to keep vlc 0.8.6
+   - Similarly, "Bookmarks" will be reintroduced in an improved version at a 
+     later point
 
 Changes:
 --------
index f0d110d06d92ec2bd5f0c46cab58bf69ba3cfb59..4f2d9e9fbecddec0c741e9774d9c5c0ba719a777 100644 (file)
 
 /*************** 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 *****************/
 
+#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 */
 #define I_POP_PLAY N_("Play")
 #define I_POP_PREPARSE N_("Fetch information")
 #define I_POP_STREAM N_("Stream...")
 #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 *************/
 
 #define I_HIDDEN_ADV N_( "Some options are available but hidden. "\
index e873141a20482d3fcf2c645c118604b3e527658b..cde0a792ed0667c501527ddce97dd6700278bc5d 100644 (file)
@@ -27,6 +27,8 @@
 #include "components/playlist/panels.hpp"
 #include "util/customwidgets.hpp"
 
+#include <vlc_intf_strings.h>
+
 #include <QTreeView>
 #include <QPushButton>
 #include <QHBoxLayout>
@@ -53,7 +55,7 @@ StandardPLPanel::StandardPLPanel( BasePlaylistWidget *_parent,
     view->setIconSize( QSize(20,20) );
     view->setAlternatingRowColors( true );
     view->header()->resizeSection( 0, 230 );
-    view->header()->resizeSection( 2, 60 );
+    view->header()->resizeSection( 1, 170 );
     view->header()->setSortIndicatorShown( true );
     view->header()->setClickable( true );
 
@@ -95,9 +97,9 @@ StandardPLPanel::StandardPLPanel( BasePlaylistWidget *_parent,
 
     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 );
-    searchLine = new  ClickLineEdit( qfu( "Playlist filter" ), 0 );
+    searchLine = new  ClickLineEdit( qtr(I_PL_FILTER), 0 );
     CONNECT( searchLine, textChanged(QString), this, search(QString));
     buttons->addWidget( searchLine ); filter->setBuddy( searchLine );
 
@@ -117,17 +119,17 @@ void StandardPLPanel::toggleRepeat()
     if( model->hasRepeat() )
     {
         model->setRepeat( false ); model->setLoop( true );
-        repeatButton->setText( qtr( "Repeat All" ) );
+        repeatButton->setText( qtr(I_PL_LOOP) );
     }
     else if( model->hasLoop() )
     {
         model->setRepeat( false ) ; model->setLoop( false );
-        repeatButton->setText( qtr( "No Repeat" ) );
+        repeatButton->setText( qtr(I_PL_NOREPEAT) );
     }
     else
     {
         model->setRepeat( true );
-        repeatButton->setText( qtr( "Repeat One" ) );
+        repeatButton->setText( qtr(I_PL_REPEAT) );
     }
 }
 
@@ -135,7 +137,7 @@ void StandardPLPanel::toggleRandom()
 {
     bool prev = model->hasRandom();
     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 )
@@ -159,13 +161,13 @@ void StandardPLPanel::setCurrentRootId( int _new )
         currentRootId == THEPL->p_local_onelevel->i_id  )
     {
         addButton->setEnabled( true );
-        addButton->setToolTip( qtr("Add to playlist" ) );
+        addButton->setToolTip( qtr(I_PL_ADDPL) );
     }
     else if( currentRootId == THEPL->p_ml_category->i_id ||
              currentRootId == THEPL->p_ml_onelevel->i_id )
     {
         addButton->setEnabled( true );
-        addButton->setToolTip( qtr("Add to media library" ) );
+        addButton->setToolTip( qtr(I_PL_ADDML) );
     }
     else
         addButton->setEnabled( false );
@@ -177,15 +179,16 @@ void StandardPLPanel::add()
     if( currentRootId == THEPL->p_local_category->i_id ||
         currentRootId == THEPL->p_local_onelevel->i_id )
     {
-        popup->addAction( qtr("Add file"), THEDP, SLOT( simplePLAppendDialog() ) );
-        popup->addAction( qtr("Advanced add"), THEDP, SLOT( PLAppendDialog() ) );
+        popup->addAction( qtr(I_PL_ADDF), THEDP, SLOT(simplePLAppendDialog()));
+        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 ||
              currentRootId == THEPL->p_ml_onelevel->i_id )
     {
-        popup->addAction( qtr("Add file"), THEDP, SLOT( simpleMLAppendDialog() ) );
-        popup->addAction( qtr("Advanced add"), THEDP, SLOT( MLAppendDialog() ) );
-        popup->addAction( qtr("Directory"), THEDP, SLOT( openMLDirectory() ) );
+        popup->addAction( qtr(I_PL_ADDF), THEDP, SLOT(simpleMLAppendDialog()));
+        popup->addAction( qtr(I_PL_ADVADD), THEDP, SLOT( MLAppendDialog() ) );
+        popup->addAction( qtr(I_PL_ADDDIR), THEDP, SLOT( MLAppendDir() ) );
     }
     popup->popup( QCursor::pos() );
 }
index 31f81b575d5d7f132d13d9220fc4e8d7640cfff4..c2a69c32ac2077c970e6f8a1dee32c6659abda08 100644 (file)
@@ -156,7 +156,7 @@ bool MessagesDialog::save()
             p_intf->p_libvlc->psz_homedir,
             "Texts / Logs (*.log *.txt);; All (*.*) ");
 
-    if( saveLogFileName != NULL )
+    if( !saveLogFileName.isNull() )
     {
         QFile file(saveLogFileName);
         if (!file.open(QFile::WriteOnly | QFile::Text)) {
index 21b39b3d8f4951172b7ba64dc03dfc151730efa3..622820b4a3846271a52231fe35a4456b9af91d81 100644 (file)
@@ -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 )
 {
-
 }
index f92906c88a71f955eb43496748ad32513e8dd20b..ef00415445dc859509a55b918db4dde28becaec2 100644 (file)
@@ -70,11 +70,12 @@ private:
     intf_thread_t *p_intf;
     static DialogsProvider *instance;
     QStringList showSimpleOpen();
+    void addFromSimple( bool, bool );
 
 public slots:
     void playlistDialog();
     void bookmarksDialog();
-    void MediaInfoDialog();
+    void mediaInfoDialog();
     void prefsDialog();
     void extendedDialog();
     void messagesDialog();
@@ -92,8 +93,9 @@ public slots:
     void SDMenuAction( QString );
     void streamingDialog();
     void openPlaylist();
-    void openDirectory();
-    void openMLDirectory();
+    void savePlaylist();
+    void PLAppendDir();
+    void MLAppendDir();
     void quit();
     void switchToSkins();
     void helpDialog();
index 404c4926500d4f34a459e2410396e37ab264b3e7..5d7c4939847f6db6764e5ef961e5c824172a0537 100644 (file)
@@ -27,8 +27,9 @@
 #include <QActionGroup>
 #include <QSignalMapper>
 
-#include "main_interface.hpp"
+#include <vlc_intf_strings.h>
 
+#include "main_interface.hpp"
 #include "menus.hpp"
 #include "dialogs_provider.hpp"
 #include "input_manager.hpp"
@@ -155,8 +156,8 @@ QMenu *QVLCMenu::PlaylistMenu( MainInterface *mi, intf_thread_t *p_intf )
     menu->addMenu( SDMenu( p_intf ) );
     menu->addSeparator();
 
-    DP_SADD( qtr( "Open playlist file"), "", "", openPlaylist() );
-//    DP_SADD( qtr( "Save playlist to file" ), "", "", savePlaylist() );
+    DP_SADD( qtr(I_PL_LOAD), "", "", openPlaylist() );
+    DP_SADD( qtr(I_PL_SAVE), "", "", savePlaylist() );
     menu->addSeparator();
     menu->addAction( qtr("Undock from interface"), mi,
                      SLOT( undockPlaylist() ) );
@@ -175,10 +176,9 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, MainInterface *mi,
         menu->addMenu( intfmenu );
         menu->addSeparator();
     }
-    DP_SADD( qtr("Messages" ), "", "", messagesDialog() );
-    DP_SADD( qtr("Information") , "", "", MediaInfoDialog() );
-    DP_SADD( qtr("Bookmarks"), "", "", bookmarksDialog() );
-    DP_SADD( qtr("Extended settings"), "","",extendedDialog() );
+    DP_SADD( qtr(I_MENU_MSG), "", "", messagesDialog() );
+    DP_SADD( qtr(I_MENU_INFO) , "", "", mediaInfoDialog() );
+    DP_SADD( qtr(I_MENU_EXT), "","",extendedDialog() );
     if( mi )
     {
         menu->addSeparator();
@@ -290,7 +290,7 @@ QMenu *QVLCMenu::NavigMenu( intf_thread_t *p_intf, QMenu *current )
 QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf )
 {
     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,
                                         FIND_ANYWHERE );
     int i_num = 0;
@@ -331,7 +331,7 @@ QMenu *QVLCMenu::HelpMenu()
     QMenu *menu = new QMenu();
     DP_SADD( qtr("Help") , "", "", helpDialog() );
                 menu->addSeparator();
-    DP_SADD( qtr("About VLC media player..."), "", "", aboutDialog() );
+    DP_SADD( qtr(I_MENU_ABOUT), "", "", aboutDialog() );
     return menu;
 }
 
index 4bbc9cd5ee449eb1ea2ec948502e649108356c84..1773a4eaeee7940d63cea55b5449c2169fcb7866 100644 (file)
@@ -42,24 +42,26 @@ int Export_M3U ( vlc_object_t * );
 /*****************************************************************************
  * 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;
 
-    msg_Dbg(p_playlist, "saving using M3U format");
-
-    /* Write header */
-    fprintf( p_export->p_file, "#EXTM3U\n" );
-
     /* 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 )
             continue;
 
+        if( p_current->i_children >= 0 )
+        {
+            DoChildren( p_playlist, p_export, p_current );
+            continue;
+        }
+
+        assert( p_current->p_input->psz_uri );
+
         /* General info */
         if( p_current->p_input->psz_name &&
              strcmp( p_current->p_input->psz_uri,
@@ -99,5 +101,19 @@ int Export_M3U( vlc_object_t *p_this )
         fprintf( p_export->p_file, "%s\n",
                  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;
 }
+