]> git.sesse.net Git - vlc/commitdiff
Clean popup menu
authorJean-Philippe Andre <jpeg@via.ecp.fr>
Mon, 16 Jun 2008 21:41:16 +0000 (23:41 +0200)
committerJean-Baptiste Kempf <jb@videolan.org>
Tue, 17 Jun 2008 02:58:33 +0000 (19:58 -0700)
Signed-off-by: Jean-Baptiste Kempf <jb@videolan.org>
modules/gui/qt4/menus.cpp

index 34bd9571daf41b7a7ab9c25491580c118266d906..31524639150357938435842484f14551c861289c 100644 (file)
@@ -654,9 +654,11 @@ void QVLCMenu::PopupMenuControlEntries( QMenu *menu,
 
 void QVLCMenu::PopupMenuStaticEntries( intf_thread_t *p_intf, QMenu *menu )
 {
+#if 0
     QMenu *toolsmenu = ToolsMenu( p_intf, menu, false, true );
     toolsmenu->setTitle( qtr( "Tools" ) );
     menu->addMenu( toolsmenu );
+#endif
 
     QMenu *openmenu = new QMenu( qtr( "Open" ), menu );
     openmenu->addAction( qtr( "Open &File..." ), THEDP,
@@ -670,9 +672,11 @@ void QVLCMenu::PopupMenuStaticEntries( intf_thread_t *p_intf, QMenu *menu )
     menu->addMenu( openmenu );
 
     menu->addSeparator();
+#if 0
     QMenu *helpmenu = HelpMenu( menu );
     helpmenu->setTitle( qtr( "Help" ) );
     menu->addMenu( helpmenu );
+#endif
 
     addDPStaticEntry( menu, qtr( "Quit" ), "", "", SLOT( quit() ) , "Ctrl+Q" );
 }
@@ -748,43 +752,57 @@ void QVLCMenu::PopupMenu( intf_thread_t *p_intf, bool show )
 {
     if( show )
     {
-        // create a  popup if there is none
-        if( ! p_intf->p_sys->p_popup_menu )
+        /* Delete and recreate a popup if there is one */
+        if( p_intf->p_sys->p_popup_menu )
+            delete p_intf->p_sys->p_popup_menu;
+
+        QMenu *menu = new QMenu();
+        QMenu *submenu;
+        QAction *action;
+
+        POPUP_BOILERPLATE;
+
+        PopupMenuControlEntries( menu, p_intf, p_input );
+        menu->addSeparator();
+
+        if( p_input )
         {
-            POPUP_BOILERPLATE;
-            if( p_input )
-            {
-                vlc_object_yield( p_input );
-                InputAutoMenuBuilder( VLC_OBJECT( p_input ), objects, varnames );
-
-                /* Audio menu */
-                PUSH_SEPARATOR;
-                vlc_object_t *p_aout = ( vlc_object_t * )
-                    vlc_object_find( p_input, VLC_OBJECT_AOUT, FIND_ANYWHERE );
-                AudioAutoMenuBuilder( p_aout, p_input, objects, varnames );
-                if( p_aout )
-                    vlc_object_release( p_aout );
-
-                /* Video menu */
-                PUSH_SEPARATOR;
-                vlc_object_t *p_vout = ( vlc_object_t * )
-                    vlc_object_find( p_input, VLC_OBJECT_VOUT, FIND_CHILD );
-                VideoAutoMenuBuilder( p_vout, p_input, objects, varnames );
-                if( p_vout )
-                    vlc_object_release( p_vout );
-
-                vlc_object_release( p_input );
-            }
+            vlc_object_yield( p_input );
+            InputAutoMenuBuilder( VLC_OBJECT( p_input ), objects, varnames );
+
+            /* Audio menu */
+            vlc_object_t *p_aout = ( vlc_object_t * )
+                vlc_object_find( p_input, VLC_OBJECT_AOUT, FIND_ANYWHERE );
+            AudioAutoMenuBuilder( p_aout, p_input, objects, varnames );
+            if( p_aout )
+                vlc_object_release( p_aout );
+            submenu = Populate( p_intf, NULL, varnames, objects );
+            varnames.clear(); objects.clear();
+            action = menu->addMenu( submenu );
+            action->setText( qtr( "Audio" ) );
+            if( submenu->isEmpty() )
+                action->setEnabled( false );
 
-            QMenu *menu = new QMenu();
-            Populate( p_intf, menu, varnames, objects );
-            menu->addSeparator();
-            PopupMenuControlEntries( menu, p_intf, p_input );
-            menu->addSeparator();
-            PopupMenuStaticEntries( p_intf, menu );
+            /* Video menu */
+            vlc_object_t *p_vout = ( vlc_object_t * )
+                vlc_object_find( p_input, VLC_OBJECT_VOUT, FIND_CHILD );
+            VideoAutoMenuBuilder( p_vout, p_input, objects, varnames );
+            if( p_vout )
+                vlc_object_release( p_vout );
+            submenu = Populate( p_intf, NULL, varnames, objects );
+            varnames.clear(); objects.clear();
+            action = menu->addMenu( submenu );
+            action->setText( qtr( "Video" ) );
+            if( submenu->isEmpty() )
+                action->setEnabled( false );
 
-            p_intf->p_sys->p_popup_menu = menu;
+            vlc_object_release( p_input );
         }
+
+        menu->addSeparator();
+        PopupMenuStaticEntries( p_intf, menu );
+
+        p_intf->p_sys->p_popup_menu = menu;
         p_intf->p_sys->p_popup_menu->popup( QCursor::pos() );
     }
     else