X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmenus.cpp;h=1db1097ad45ab31798592f35f4721ea7cd4d60de;hb=5fc62fec2e919d54c0fd8ccd0c6aad457a8aa9af;hp=34bd9571daf41b7a7ab9c25491580c118266d906;hpb=02e74e703ed99bfe33c88f5adf2b3d6482a075ae;p=vlc diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp index 34bd9571da..1db1097ad4 100644 --- a/modules/gui/qt4/menus.cpp +++ b/modules/gui/qt4/menus.cpp @@ -6,6 +6,7 @@ * * Authors: Clément Stenac * Jean-Baptiste Kempf + * Jean-Philippe André * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -482,7 +483,7 @@ QMenu *QVLCMenu::VideoMenu( intf_thread_t *p_intf, QMenu *current ) SLOT( loadSubtitlesFile() ) ); action->setData( "_static_" ); - ACT_ADD( current, "fullscreen", qtr( "&Fullscreen" ) ); + ACT_ADD( current, "fullscreen", qtr( "Toggle &Fullscreen" ) ); ACT_ADD( current, "zoom", qtr( "&Zoom" ) ); ACT_ADD( current, "deinterlace", qtr( "&Deinterlace" ) ); ACT_ADD( current, "aspect-ratio", qtr( "&Aspect Ratio" ) ); @@ -654,9 +655,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 +673,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" ); } @@ -746,45 +751,84 @@ void QVLCMenu::MiscPopupMenu( intf_thread_t *p_intf ) /* Main Menu that sticks everything together */ void QVLCMenu::PopupMenu( intf_thread_t *p_intf, bool show ) { + MainInterface *mi = p_intf->p_sys->p_mi; 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(); + bool b_fullscreen; + + if( p_input ) { - POPUP_BOILERPLATE; - if( p_input ) + vlc_object_yield( p_input ); + InputAutoMenuBuilder( VLC_OBJECT( p_input ), objects, varnames ); + + vlc_object_t *p_aout = ( vlc_object_t * ) + vlc_object_find( p_input, VLC_OBJECT_AOUT, FIND_ANYWHERE ); + vlc_object_t *p_vout = ( vlc_object_t * ) + vlc_object_find( p_input, VLC_OBJECT_VOUT, FIND_CHILD ); + + /* Add a fullscreen switch button */ + if( p_vout ) { - 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_value_t val; + var_Get( p_vout, "fullscreen", &val ); + val.b_bool = !val.b_bool; + CreateAndConnect( menu, "fullscreen", qtr( "Toggle fullscreen" ), "", + ITEM_CHECK, p_vout->i_object_id, val, VLC_VAR_BOOL, + !val.b_bool ); + b_fullscreen = !val.b_bool; } - QMenu *menu = new QMenu(); - Populate( p_intf, menu, varnames, objects ); - menu->addSeparator(); - PopupMenuControlEntries( menu, p_intf, p_input ); - menu->addSeparator(); - PopupMenuStaticEntries( p_intf, menu ); + /* Audio menu */ + 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 ); + + /* Video menu */ + 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(); + + /* Add some special entries for windowed mode */ + if( !b_fullscreen ) + { + submenu = new QMenu( qtr( "Interface" ), menu ); + submenu->addAction( QIcon( ":/pixmaps/playlist_16px.png" ), + qtr( "Show Playlist" ), mi, SLOT( togglePlaylist() ) ); + menu->addMenu( submenu ); + } + + PopupMenuStaticEntries( p_intf, menu ); + + p_intf->p_sys->p_popup_menu = menu; p_intf->p_sys->p_popup_menu->popup( QCursor::pos() ); } else