[vlc-devel] commit: Qt/Menu: ViewMenu is now dynamic (uses aboutToShow) ( Jean-Philippe André )
git version control
git at videolan.org
Thu Jan 28 16:22:14 CET 2010
vlc | branch: master | Jean-Philippe André <jpeg at videolan.org> | Thu Jan 28 15:26:57 2010 +0100| [67c51e4b99e225d8285ead2d7f95f566e9af6aec] | committer: Jean-Philippe André
Qt/Menu: ViewMenu is now dynamic (uses aboutToShow)
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=67c51e4b99e225d8285ead2d7f95f566e9af6aec
---
modules/gui/qt4/menus.cpp | 81 ++++++++++++++++++++------------------------
modules/gui/qt4/menus.hpp | 10 +++---
2 files changed, 42 insertions(+), 49 deletions(-)
diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp
index d7d9146..aec591b 100644
--- a/modules/gui/qt4/menus.cpp
+++ b/modules/gui/qt4/menus.cpp
@@ -294,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
@@ -398,18 +398,39 @@ QMenu *QVLCMenu::ToolsMenu( QWidget *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,
@@ -424,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();
}
@@ -473,14 +491,11 @@ QMenu *QVLCMenu::ViewMenu( intf_thread_t *p_intf,
menu->addSeparator();
addDPStaticEntry( menu, qtr( "Customi&ze Interface..." ),
":/menu/preferences", SLOT( toolbarDialog() ) );
- menu->addSeparator();
/* Extensions */
+ /// @todo Check configuration variable "auto load extensions"
menu->addSeparator();
- QMenu *extmenu = ExtensionsMenu( p_intf, menu );
- MenuFunc *f = new MenuFunc( menu, 5 );
- CONNECT( menu, aboutToShow(), THEDP->menusUpdateMapper, map() );
- THEDP->menusUpdateMapper->setMapping( menu, f );
+ ExtensionsMenu( p_intf, menu );
return menu;
}
@@ -499,41 +514,19 @@ QMenu *QVLCMenu::InterfacesMenu( intf_thread_t *p_intf, QMenu *current )
}
/**
- * Extensions Sub-Menu
- * EXPERIMENTAL
+ * Extensions menu: populate the current menu with extensions
**/
-QMenu *QVLCMenu::ExtensionsMenu( intf_thread_t *p_intf, QMenu *current )
+void QVLCMenu::ExtensionsMenu( intf_thread_t *p_intf, QMenu *extMenu )
{
- QAction *extAction = NULL;
- foreach( QAction *action, current->actions() )
- {
- if( action->text() == qtr( "&Extensions" ) )
- {
- extAction = action;
- break;
- }
- }
-
+ /* Get ExtensionsManager and load extensions if needed */
ExtensionsManager *extMgr = ExtensionsManager::getInstance( p_intf );
-
- QMenu *extMenu = new QMenu( qtr( "&Extensions" ), current );
- if( extMgr->isLoaded() )
- {
- /* Let the ExtensionsManager build itself the menu */
- extMgr->menu( extMenu );
- }
- else
+ if( !extMgr->isLoaded() && !extMgr->cannotLoad() )
{
- extMenu->addAction( qtr( "&Load extensions" ),
- extMgr, SLOT( loadExtensions() ) );
+ extMgr->loadExtensions();
}
- if( extAction )
- extAction->setMenu( extMenu );
- else
- current->addMenu( extMenu );
-
- return extMenu;
+ /* Let the ExtensionsManager build itself the menu */
+ extMgr->menu( extMenu );
}
/**
@@ -1035,7 +1028,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 );
}
diff --git a/modules/gui/qt4/menus.hpp b/modules/gui/qt4/menus.hpp
index b31e85e..9fa4f58 100644
--- a/modules/gui/qt4/menus.hpp
+++ b/modules/gui/qt4/menus.hpp
@@ -106,10 +106,11 @@ private:
static QMenu *ToolsMenu( QMenu * );
static QMenu *ToolsMenu( QWidget * );
- static QMenu *ViewMenu( intf_thread_t *, MainInterface *,
- bool with = true );
+ static QMenu *ViewMenu( intf_thread_t *, QWidget *parent );
+ static QMenu *ViewMenu( intf_thread_t *, QMenu *, bool with_intf );
+
static QMenu *InterfacesMenu( intf_thread_t *p_intf, QMenu * );
- static QMenu *ExtensionsMenu( intf_thread_t *p_intf, QMenu * );
+ static void ExtensionsMenu( intf_thread_t *p_intf, QMenu * );
static QMenu *NavigMenu( intf_thread_t *, QMenu * );
static QMenu *NavigMenu( intf_thread_t *, QWidget * );
@@ -163,8 +164,7 @@ public:
case 1: QVLCMenu::AudioMenu( p_intf, menu ); break;
case 2: QVLCMenu::VideoMenu( p_intf, menu ); break;
case 3: QVLCMenu::RebuildNavigMenu( p_intf, menu ); break;
- case 4: QVLCMenu::InterfacesMenu( p_intf, menu ); break;
- case 5: QVLCMenu::ExtensionsMenu( p_intf, menu ); break;
+ case 4: QVLCMenu::ViewMenu( p_intf, menu, true ); break;
}
}
private:
More information about the vlc-devel
mailing list