#include "input_manager.hpp" /* Input Management */
#include "recents.hpp" /* Recent Items */
#include "actions_manager.hpp"
+#include "extensions_manager.hpp"
#include <QMenu>
#include <QMenuBar>
{
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" );
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
":/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" );
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 );
"Ctrl+W" );
#endif
+ addDPStaticEntry( menu, qtr( "Program Guide" ), "", SLOT( epgDialog() ),
+ "" );
+
addDPStaticEntry( menu, qtr( I_MENU_MSG ),
":/menu/messages", SLOT( messagesDialog() ),
"Ctrl+M" );
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" ) );
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 &&
menu->addSeparator();
addDPStaticEntry( menu, qtr( "Customi&ze Interface..." ),
":/menu/preferences", SLOT( toolbarDialog() ) );
- menu->addSeparator();
+
+ /* Extensions */
+ ExtensionsMenu( p_intf, menu );
return menu;
}
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
**/
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" ) );
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;
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() ) );
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 */
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 );
}
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();
{
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 ) );
}