X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmenus.cpp;h=28be14dafca37eebbcbb08fb169824ecf392dfe4;hb=3834b98eedc37503d888a8bffa03eb48536b1e1f;hp=5bb55b4b70b2f0e75ffeb78aceaeb271d05aa667;hpb=5216a7521d634661a05022abb8a8f8d9230adf61;p=vlc diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp index 5bb55b4b70..28be14dafc 100644 --- a/modules/gui/qt4/menus.cpp +++ b/modules/gui/qt4/menus.cpp @@ -43,6 +43,7 @@ #include "input_manager.hpp" /* Input Management */ #include "recents.hpp" /* Recent Items */ #include "actions_manager.hpp" +#include "extensions_manager.hpp" #include #include @@ -220,8 +221,8 @@ static int VideoAutoMenuBuilder( vout_thread_t *p_object, PUSH_INPUTVAR( "spu-es" ); 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 +294,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 @@ -325,7 +326,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 +375,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 +397,40 @@ 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 ) { QAction *action; - assert( mi ); + QMenu *menu; + if( !with_intf ) + menu = new QMenu( qtr( "&View" ), current ); + else + { + menu = current; + menu->clear(); + } - QMenu *menu = new QMenu( qtr( "V&iew" ), mi ); + MainInterface *mi = p_intf->p_sys->p_mi; + assert( mi ); menu->addAction( QIcon( ":/menu/playlist_menu" ), qtr( "Play&list" ), mi, @@ -420,9 +445,6 @@ 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(); } @@ -469,7 +491,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; } @@ -487,6 +511,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 **/ @@ -561,8 +609,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" ) ); @@ -660,7 +708,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 ); if( !ppsz_names ) return menu; @@ -986,7 +1034,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 ); }