]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/menus.cpp
a macro to automate the choice of "folder"/"directory" string version according to...
[vlc] / modules / gui / qt4 / menus.cpp
index 3503e294174e13ff859774e5db24168ec8358339..52264d5fdf7eb32c622d184cdcfc1bf738229b65 100644 (file)
@@ -43,6 +43,7 @@
 #include "input_manager.hpp"     /* Input Management */
 #include "recents.hpp"           /* Recent Items */
 #include "actions_manager.hpp"
+#include "extensions_manager.hpp"
 
 #include <QMenu>
 #include <QMenuBar>
@@ -218,10 +219,11 @@ static int VideoAutoMenuBuilder( vout_thread_t *p_object,
 {
     PUSH_INPUTVAR( "video-es" );
     PUSH_INPUTVAR( "spu-es" );
+#warning This is wrong:
     PUSH_VAR( "fullscreen" );
     PUSH_VAR( "video-on-top" );
+    PUSH_VAR( "video-wallpaper" );
 #ifdef WIN32
-    PUSH_VAR( "directx-wallpaper" );
     PUSH_VAR( "direct3d-desktop" );
 #endif
     PUSH_VAR( "video-snapshot" );
@@ -293,7 +295,7 @@ void QVLCMenu::createMenuBar( MainInterface *mi,
     BAR_DADD( VideoMenu( p_intf, bar ), qtr( "&Video" ), 2 );
 
     BAR_ADD( ToolsMenu( bar ), qtr( "&Tools" ) );
-    BAR_ADD( ViewMenu( p_intf, mi ), qtr( "V&iew" ) );
+    BAR_ADD( ViewMenu( p_intf, bar ), qtr( "V&iew" ) );
     BAR_ADD( HelpMenu( bar ), qtr( "&Help" ) );
 }
 #undef BAR_ADD
@@ -311,7 +313,7 @@ QMenu *QVLCMenu::FileMenu( intf_thread_t *p_intf, QWidget *parent )
         ":/type/file-asym", SLOT( simpleOpenDialog() ), "Ctrl+O" );
     addDPStaticEntry( menu, qtr( "Advanced Open File..." ),
         ":/type/file-asym", SLOT( openFileDialog() ), "Ctrl+Shift+O" );
-    addDPStaticEntry( menu, qtr( I_OPEN_FOLDER ),
+    addDPStaticEntry( menu, qtr( I_OP_OPDIR ),
         ":/type/folder-grey", SLOT( PLOpenDir() ), "Ctrl+F" );
     addDPStaticEntry( menu, qtr( "Open &Disc..." ),
         ":/type/disc", SLOT( openDiscDialog() ), "Ctrl+D" );
@@ -325,7 +327,7 @@ QMenu *QVLCMenu::FileMenu( intf_thread_t *p_intf, QWidget *parent )
     addDPStaticEntry( menu, qtr( "Open &Location from clipboard" ),
                       NULL, SLOT( openUrlDialog() ), "Ctrl+V" );
 
-    if( config_GetInt( p_intf, "qt-recentplay" ) )
+    if( var_InheritBool( p_intf, "qt-recentplay" ) )
     {
         recentsMenu = new QMenu( qtr( "&Recent Media" ), menu );
         updateRecents( p_intf );
@@ -374,6 +376,9 @@ QMenu *QVLCMenu::ToolsMenu( QMenu *menu )
         "Ctrl+W" );
 #endif
 
+    addDPStaticEntry( menu, qtr( "Program Guide" ), "", SLOT( epgDialog() ),
+        "" );
+
     addDPStaticEntry( menu, qtr( I_MENU_MSG ),
         ":/menu/messages", SLOT( messagesDialog() ),
         "Ctrl+M" );
@@ -393,19 +398,42 @@ QMenu *QVLCMenu::ToolsMenu( QWidget *parent )
     return ToolsMenu( new QMenu( parent ) );
 }
 
+/**
+ * Dynamic View Menu
+ * Connect signal "aboutToShow" to the creation of the View Menu
+ **/
+QMenu *QVLCMenu::ViewMenu( intf_thread_t *p_intf, QWidget* parent )
+{
+    QMenu *viewMenu = new QMenu( parent );
+    MenuFunc *f = new MenuFunc( viewMenu, 4 );
+    CONNECT( viewMenu, aboutToShow(), THEDP->menusUpdateMapper, map() );
+    THEDP->menusUpdateMapper->setMapping( viewMenu, f );
+    return viewMenu;
+}
+
 /**
  * View Menu
- * Interface Modification
+ * Interface modification, load other interfaces, activate Extensions
  **/
 QMenu *QVLCMenu::ViewMenu( intf_thread_t *p_intf,
-                            MainInterface *mi,
-                            bool with_intf )
+                           QMenu *current,
+                           bool with_intf )
 {
-    assert( mi );
+    QAction *action;
 
-    QMenu *menu = new QMenu( qtr( "V&iew" ), mi );
+    QMenu *menu;
+    if( !with_intf )
+        menu = new QMenu( qtr( "&View" ), current );
+    else
+    {
+        menu = current;
+        menu->clear();
+    }
 
-    QAction *act = menu->addAction( QIcon( ":/menu/playlist_menu" ),
+    MainInterface *mi = p_intf->p_sys->p_mi;
+    assert( mi );
+
+    menu->addAction( QIcon( ":/menu/playlist_menu" ),
             qtr( "Play&list" ), mi,
             SLOT( togglePlaylist() ), qtr( "Ctrl+L" ) );
 
@@ -418,14 +446,11 @@ QMenu *QVLCMenu::ViewMenu( intf_thread_t *p_intf,
     if( with_intf )
     {
         QMenu *intfmenu = InterfacesMenu( p_intf, menu );
-        MenuFunc *f = new MenuFunc( intfmenu, 4 );
-        CONNECT( intfmenu, aboutToShow(), THEDP->menusUpdateMapper, map() );
-        THEDP->menusUpdateMapper->setMapping( intfmenu, f );
         menu->addSeparator();
     }
 
     /* Minimal View */
-    QAction *action = menu->addAction( qtr( "Mi&nimal View" ) );
+    action = menu->addAction( qtr( "Mi&nimal View" ) );
     action->setShortcut( qtr( "Ctrl+H" ) );
     action->setCheckable( true );
     action->setChecked( !with_intf &&
@@ -467,7 +492,9 @@ QMenu *QVLCMenu::ViewMenu( intf_thread_t *p_intf,
     menu->addSeparator();
     addDPStaticEntry( menu, qtr( "Customi&ze Interface..." ),
         ":/menu/preferences", SLOT( toolbarDialog() ) );
-    menu->addSeparator();
+
+    /* Extensions */
+    ExtensionsMenu( p_intf, menu );
 
     return menu;
 }
@@ -485,6 +512,30 @@ QMenu *QVLCMenu::InterfacesMenu( intf_thread_t *p_intf, QMenu *current )
     return Populate( p_intf, current, varnames, objects );
 }
 
+/**
+ * Extensions menu: populate the current menu with extensions
+ **/
+void QVLCMenu::ExtensionsMenu( intf_thread_t *p_intf, QMenu *extMenu )
+{
+    /* Get ExtensionsManager and load extensions if needed */
+    ExtensionsManager *extMgr = ExtensionsManager::getInstance( p_intf );
+
+    if( !var_InheritBool( p_intf, "qt-autoload-extensions")
+        && !extMgr->isLoaded() )
+    {
+        return;
+    }
+
+    if( !extMgr->isLoaded() && !extMgr->cannotLoad() )
+    {
+        extMgr->loadExtensions();
+    }
+
+    /* Let the ExtensionsManager build itself the menu */
+    extMenu->addSeparator();
+    extMgr->menu( extMenu );
+}
+
 /**
  * Main Audio Menu
  **/
@@ -559,8 +610,8 @@ QMenu *QVLCMenu::VideoMenu( intf_thread_t *p_intf, QMenu *current )
 
         ACT_ADDCHECK( current, "fullscreen", qtr( "&Fullscreen" ) );
         ACT_ADDCHECK( current, "video-on-top", qtr( "Always &On Top" ) );
+        ACT_ADDCHECK( current, "video-wallpaper", qtr( "DirectX Wallpaper" ) );
 #ifdef WIN32
-        ACT_ADDCHECK( current, "directx-wallpaper", qtr( "DirectX Wallpaper" ) );
         ACT_ADDCHECK( current, "direct3d-desktop", qtr( "Direct3D Desktop mode" ) );
 #endif
         ACT_ADD( current, "video-snapshot", qtr( "Sna&pshot" ) );
@@ -658,7 +709,7 @@ QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf, QWidget *parent )
     menu->setTitle( qtr( I_PL_SD ) );
 
     char **ppsz_longnames;
-    char **ppsz_names = vlc_sd_GetNames( &ppsz_longnames );
+    char **ppsz_names = vlc_sd_GetNames( p_intf, &ppsz_longnames, NULL );
     if( !ppsz_names )
         return menu;
 
@@ -802,7 +853,7 @@ void QVLCMenu::PopupMenuStaticEntries( QMenu *menu )
     QMenu *openmenu = new QMenu( qtr( "Open Media" ), menu );
     addDPStaticEntry( openmenu, qtr( "&Open File..." ),
         ":/type/file-asym", SLOT( openFileDialog() ) );
-    addDPStaticEntry( openmenu, qtr( I_OPEN_FOLDER ),
+    addDPStaticEntry( openmenu, qtr( I_OP_OPDIR ),
         ":/type/folder-grey", SLOT( PLOpenDir() ) );
     addDPStaticEntry( openmenu, qtr( "Open &Disc..." ),
         ":/type/disc", SLOT( openDiscDialog() ) );
@@ -960,7 +1011,7 @@ void QVLCMenu::PopupMenu( intf_thread_t *p_intf, bool show )
     if( !b_isFullscreen )
     {
         QMenu *submenu = new QMenu( qtr( "Interface" ), menu );
-        QMenu *tools = ToolsMenu( submenu );
+        /*QMenu *tools =*/ ToolsMenu( submenu );
         submenu->addSeparator();
 
         /* In skins interface, append some items */
@@ -984,7 +1035,7 @@ void QVLCMenu::PopupMenu( intf_thread_t *p_intf, bool show )
                 msg_Warn( p_intf, "could not find parent interface" );
         }
         else
-            menu->addMenu( ViewMenu( p_intf, mi, false ));
+            menu->addMenu( ViewMenu( p_intf, menu, false ));
 
         menu->addMenu( submenu );
     }
@@ -1416,11 +1467,11 @@ void QVLCMenu::DoAction( QObject *data )
 
 void QVLCMenu::updateRecents( intf_thread_t *p_intf )
 {
-    if (recentsMenu)
+    if( recentsMenu )
     {
         QAction* action;
         RecentsMRL* rmrl = RecentsMRL::getInstance( p_intf );
-        QList<QString> l = rmrl->recents();
+        QStringList l = rmrl->recents();
 
         recentsMenu->clear();
 
@@ -1435,8 +1486,8 @@ void QVLCMenu::updateRecents( intf_thread_t *p_intf )
             {
                 action = recentsMenu->addAction(
                         QString( "&%1: " ).arg( i + 1 ) + l.at( i ),
-                        rmrl->signalMapper,
-                        SLOT( map() ) );
+                        rmrl->signalMapper, SLOT( map() ),
+                        i <= 9 ? QString( "Ctrl+%1" ).arg( i + 1 ) : "" );
                 rmrl->signalMapper->setMapping( action, l.at( i ) );
             }