]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/menus.cpp
Qt4 - Try to use a Tool Dialog for the GotoTime dialog.
[vlc] / modules / gui / qt4 / menus.cpp
index 1455516cc9bbb49a3811ed3a4b30904f941ec690..7ca28f64304db7943c3c5bc7b3b8ca2b7ad5fda5 100644 (file)
@@ -165,7 +165,7 @@ void QVLCMenu::createMenuBar( MainInterface *mi, intf_thread_t *p_intf,
                               bool playlist, bool adv_controls_enabled,
                               bool visual_selector_enabled )
 {
-#ifndef WIN32    
+#ifndef WIN32
     /* Ugly klugde
      * Remove SIGCHLD from the ignored signal the time to initialise
      * Qt because it call gconf to get the icon theme */
@@ -195,14 +195,14 @@ void QVLCMenu::createMenuBar( MainInterface *mi, intf_thread_t *p_intf,
 QMenu *QVLCMenu::FileMenu()
 {
     QMenu *menu = new QMenu();
-/*    DP_SADD( qtr("Quick &Open File...") , "", "", simpleOpenDialog() );*/
     DP_SADD( qtr("Open &File..." ), "", "", openFileDialog(), "Ctrl+O" );
     DP_SADD( qtr("Open &Disc..." ), "", "", openDiscDialog(), "Ctrl+D" );
     DP_SADD( qtr("Open &Network..." ), "", "", openNetDialog(), "Ctrl+N" );
     DP_SADD( qtr("Open &Capture Device..." ), "", "", openCaptureDialog(),
             "Ctrl+C" );
     menu->addSeparator();
-    DP_SADD( qtr("&Streaming..."), "", "", streamingDialog(), "Ctrl+S" );
+    DP_SADD( qtr("&Streaming..."), "", "", openThenStreamingDialogs(), 
+            "Ctrl+S" );
     menu->addSeparator();
     DP_SADD( qtr("&Quit") , "", "", quit(), "Ctrl+Q");
     return menu;
@@ -416,9 +416,6 @@ QMenu *QVLCMenu::HelpMenu()
 
 #define POPUP_STATIC_ENTRIES \
     vlc_value_t val; \
-    MIM_SADD( qtr("Stop"), "", "", stop() ); \
-    MIM_SADD( qtr("Previous"), "", "", prev() ); \
-    MIM_SADD( qtr("Next"), "", "", next() ); \
     if( p_input ) \
     { \
         var_Get( p_input, "state", &val ); \
@@ -428,8 +425,12 @@ QMenu *QVLCMenu::HelpMenu()
             MIM_SADD( qtr("Pause"), "", "", togglePlayPause() ) \
     } \
     else if( THEPL->items.i_size && THEPL->i_enabled ) \
-        MIM_SADD( qtr("Play"), "", "", togglePlayPause() ) \
+        MIM_SADD( qtr("Play"), "", "", togglePlayPause() );\
     \
+    MIM_SADD( qtr("Stop"), "", "", stop() ); \
+    MIM_SADD( qtr("Previous"), "", "", prev() ); \
+    MIM_SADD( qtr("Next"), "", "", next() ); \
+    menu->addSeparator(); \
     QMenu *intfmenu = InterfacesMenu( p_intf, NULL ); \
     intfmenu->setTitle( qtr("Interfaces" ) ); \
     menu->addMenu( intfmenu ); \
@@ -437,6 +438,7 @@ QMenu *QVLCMenu::HelpMenu()
     QMenu *toolsmenu = ToolsMenu( p_intf, NULL, false, false ); \
     toolsmenu->setTitle( qtr("Tools" ) ); \
     menu->addMenu( toolsmenu ); \
+    DP_SADD( qtr("Quit"), "", "", quit() , "Ctrl+Q" );
 
 void QVLCMenu::VideoPopupMenu( intf_thread_t *p_intf )
 {
@@ -502,48 +504,60 @@ void QVLCMenu::MiscPopupMenu( intf_thread_t *p_intf )
     p_intf->p_sys->p_popup_menu = NULL;
 }
 
-void QVLCMenu::PopupMenu( intf_thread_t *p_intf )
+void QVLCMenu::PopupMenu( intf_thread_t *p_intf, bool show )
 {
-    POPUP_BOILERPLATE;
-    if( p_input )
+    if( show )
     {
-        vlc_object_yield( p_input );
-        InputAutoMenuBuilder( VLC_OBJECT(p_input), objects, varnames );
-
-        /* Video menu */
-        PUSH_SEPARATOR;
-        varnames.push_back( "video-es" );
-        objects.push_back( p_input->i_object_id );
-        varnames.push_back( "spu-es" );
-        objects.push_back( p_input->i_object_id );
-        vlc_object_t *p_vout = (vlc_object_t *)vlc_object_find( p_input,
-                                                VLC_OBJECT_VOUT, FIND_CHILD );
-        if( p_vout )
-        {
-            VideoAutoMenuBuilder( p_vout, objects, varnames );
-            vlc_object_release( p_vout );
-        }
-        /* Audio menu */
-        PUSH_SEPARATOR
-        varnames.push_back( "audio-es" );
-        objects.push_back( p_input->i_object_id );
-        vlc_object_t *p_aout = (vlc_object_t *)vlc_object_find( p_input,
-                                             VLC_OBJECT_AOUT, FIND_ANYWHERE );
-        if( p_aout )
-        {
-            AudioAutoMenuBuilder( p_aout, objects, varnames );
-            vlc_object_release( p_aout );
-        }
+       // create a  popup if there is none
+        if( ! p_intf->p_sys->p_popup_menu )
+       {
+           POPUP_BOILERPLATE;
+           if( p_input )
+           {
+               vlc_object_yield( p_input );
+               InputAutoMenuBuilder( VLC_OBJECT(p_input), objects, varnames );
+
+               /* Video menu */
+               PUSH_SEPARATOR;
+               varnames.push_back( "video-es" );
+               objects.push_back( p_input->i_object_id );
+               varnames.push_back( "spu-es" );
+               objects.push_back( p_input->i_object_id );
+               vlc_object_t *p_vout = (vlc_object_t *)vlc_object_find( p_input,
+                                                       VLC_OBJECT_VOUT, FIND_CHILD );
+               if( p_vout )
+               {
+                   VideoAutoMenuBuilder( p_vout, objects, varnames );
+                   vlc_object_release( p_vout );
+               }
+               /* Audio menu */
+               PUSH_SEPARATOR
+               varnames.push_back( "audio-es" );
+               objects.push_back( p_input->i_object_id );
+               vlc_object_t *p_aout = (vlc_object_t *)vlc_object_find( p_input,
+                                                    VLC_OBJECT_AOUT, FIND_ANYWHERE );
+               if( p_aout )
+               {
+                   AudioAutoMenuBuilder( p_aout, objects, varnames );
+                   vlc_object_release( p_aout );
+               }
+           }
+
+           QMenu *menu = new QMenu();
+           Populate( p_intf, menu, varnames, objects );
+           menu->addSeparator();
+           POPUP_STATIC_ENTRIES;
+
+           p_intf->p_sys->p_popup_menu = menu;
+       }
+       p_intf->p_sys->p_popup_menu->popup( QCursor::pos() );
+    }
+    else
+    {  
+       // destroy popup if there is one
+       delete p_intf->p_sys->p_popup_menu;
+       p_intf->p_sys->p_popup_menu = NULL;
     }
-
-    QMenu *menu = new QMenu();
-    Populate( p_intf, menu, varnames, objects );
-    menu->addSeparator();
-    POPUP_STATIC_ENTRIES;
-
-    p_intf->p_sys->p_popup_menu = menu;
-    menu->popup( QCursor::pos() );
-    p_intf->p_sys->p_popup_menu = NULL;
 }
 
 #undef PUSH_VAR
@@ -717,8 +731,9 @@ void QVLCMenu::CreateItem( QMenu *menu, const char *psz_var,
 
     case VLC_VAR_BOOL:
         var_Get( p_object, psz_var, &val );
+        val.b_bool = !val.b_bool;
         CreateAndConnect( menu, psz_var, TEXT_OR_VAR, "", ITEM_CHECK,
-                          p_object->i_object_id, val, i_type, val.b_bool );
+                          p_object->i_object_id, val, i_type, !val.b_bool );
         break;
     }
     FREENULL( text.psz_string );