X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmenus.cpp;h=77a76dcc91cee9e6e6221c1417c5435f826e4988;hb=b5077c0ef45f56e5b4126f78b71aadecf8f2857f;hp=605595bc3fc1edbfde01badb0937e6bf40e119c8;hpb=68b2161a58257620fce16fb034b6fd16f0294694;p=vlc diff --git a/modules/gui/qt4/menus.cpp b/modules/gui/qt4/menus.cpp index 605595bc3f..77a76dcc91 100644 --- a/modules/gui/qt4/menus.cpp +++ b/modules/gui/qt4/menus.cpp @@ -1,11 +1,12 @@ /***************************************************************************** * menus.cpp : Qt menus ***************************************************************************** - * Copyright ( C ) 2006-2007 the VideoLAN team + * Copyright © 2006-2008 the VideoLAN team * $Id$ * * 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 @@ -46,6 +47,22 @@ #include #include +/* + This file defines the main menus and the pop-up menu (right-click menu) + and the systray menu (in that order in the file) + + There are 3 menus that have to be rebuilt everytime there are called: + Audio, Video, Navigation + 3 functions are building those menus: AudioMenu, VideoMenu, NavigMenu + and 3 functions associated are collecting the objects : + InputAutoMenuBuilder, AudioAutoMenuBuilder, VideoAutoMenuBuilder. + + A QSignalMapper decides when to rebuild those menus cf MenuFunc in the .hpp + Just before one of those menus are aboutToShow(), they are rebuild. + + + */ + enum { ITEM_NORMAL, @@ -55,13 +72,17 @@ enum static QActionGroup *currentGroup; +/* HACK for minimalView to go around a Qt bug/feature + * that doesn't update the QAction checked state when QMenu is hidden */ +QAction *QVLCMenu::minimalViewAction = NULL; + // Add static entries to menus void addDPStaticEntry( QMenu *menu, const QString text, const char *help, const char *icon, const char *member, - const char *shortcut ) + const char *shortcut = NULL ) { QAction *action = NULL; if( !EMPTY_STR( icon ) > 0 ) @@ -106,7 +127,7 @@ void EnableDPStaticEntries( QMenu *menu, bool enable = true ) return; QAction *action; - Q_FOREACH( action, menu->actions() ) + foreach( action, menu->actions() ) { if( action->data().toString() == "_static_" ) action->setEnabled( enable ); @@ -122,7 +143,7 @@ int DeleteNonStaticEntries( QMenu *menu ) QAction *action; if( !menu ) return VLC_EGENERIC; - Q_FOREACH( action, menu->actions() ) + foreach( action, menu->actions() ) { if( action->data().toString() != "_static_" ) delete action; @@ -197,14 +218,13 @@ static int AudioAutoMenuBuilder( vlc_object_t *p_object, PUSH_VAR( "audio-device" ); PUSH_VAR( "audio-channels" ); PUSH_VAR( "visual" ); - PUSH_VAR( "equalizer" ); return VLC_SUCCESS; } static QAction * FindActionWithVar( QMenu *menu, const char *psz_var ) { QAction *action; - Q_FOREACH( action, menu->actions() ) + foreach( action, menu->actions() ) { if( action->data().toString() == psz_var ) return action; @@ -215,7 +235,7 @@ static QAction * FindActionWithVar( QMenu *menu, const char *psz_var ) static QAction * FindActionWithText( QMenu *menu, QString &text ) { QAction *action; - Q_FOREACH( action, menu->actions() ) + foreach( action, menu->actions() ) { if( action->text() == text ) return action; @@ -273,27 +293,27 @@ QMenu *QVLCMenu::FileMenu() QMenu *menu = new QMenu(); addDPStaticEntry( menu, qtr( "&Open File..." ), "", - ":/pixmaps/file-asym_16px.png", SLOT( openFileDialog() ), "Ctrl+O" ); + ":/file-asym", SLOT( openFileDialog() ), "Ctrl+O" ); addDPStaticEntry( menu, qtr( I_OPEN_FOLDER ), "", - ":/pixmaps/folder-grey_16px.png", SLOT( PLAppendDir() ), "Ctrl+F" ); + ":/folder-grey", SLOT( PLAppendDir() ), "Ctrl+F" ); addDPStaticEntry( menu, qtr( "Open &Disc..." ), "", - ":/pixmaps/disc_16px.png", SLOT( openDiscDialog() ), "Ctrl+D" ); + ":/disc", SLOT( openDiscDialog() ), "Ctrl+D" ); addDPStaticEntry( menu, qtr( "Open &Network..." ), "", - ":/pixmaps/network_16px.png", SLOT( openNetDialog() ), "Ctrl+N" ); + ":/network", SLOT( openNetDialog() ), "Ctrl+N" ); addDPStaticEntry( menu, qtr( "Open &Capture Device..." ), "", - ":/pixmaps/capture-card_16px.png", SLOT( openCaptureDialog() ), + ":/capture-card", SLOT( openCaptureDialog() ), "Ctrl+C" ); menu->addSeparator(); addDPStaticEntry( menu, qtr( "&Streaming..." ), "", - ":/pixmaps/menus_stream_16px.png", SLOT( openThenStreamingDialogs() ), + ":/stream", SLOT( openThenStreamingDialogs() ), "Ctrl+S" ); addDPStaticEntry( menu, qtr( "Conve&rt / Save..." ), "", "", SLOT( openThenTranscodingDialogs() ), "Ctrl+R" ); menu->addSeparator(); addDPStaticEntry( menu, qtr( "&Quit" ) , "", - ":/pixmaps/menus_quit_16px.png", SLOT( quit() ), "Ctrl+Q" ); + ":/quit", SLOT( quit() ), "Ctrl+Q" ); return menu; } @@ -302,7 +322,7 @@ QMenu *QVLCMenu::PlaylistMenu( intf_thread_t *p_intf, MainInterface *mi ) { QMenu *menu = new QMenu(); menu->addMenu( SDMenu( p_intf ) ); - menu->addAction( QIcon( ":/pixmaps/playlist_16px.png" ), + menu->addAction( QIcon( ":/playlist_menu" ), qtr( "Show Playlist" ), mi, SLOT( togglePlaylist() ) ); menu->addSeparator(); @@ -310,9 +330,9 @@ QMenu *QVLCMenu::PlaylistMenu( intf_thread_t *p_intf, MainInterface *mi ) "Ctrl+X" ); addDPStaticEntry( menu, qtr( I_PL_SAVE ), "", "", SLOT( saveAPlaylist() ), "Ctrl+Y" ); - menu->addSeparator(); - menu->addAction( qtr( "Undock from interface" ), mi, - SLOT( undockPlaylist() ), qtr( "Ctrl+U" ) ); + /*menu->addSeparator(); + menu->addAction( qtr( "Undock from Interface" ), mi, + SLOT( undockPlaylist() ), qtr( "Ctrl+U" ) );*/ return menu; } @@ -331,12 +351,14 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, QMenu *menu = new QMenu( current ); if( mi ) { - menu->addAction( QIcon( ":/pixmaps/playlist_16px.png" ), - qtr( "Playlist..." ), mi, SLOT( togglePlaylist() ), - qtr( "Ctrl+L" ) ); + QAction *act= + menu->addAction( QIcon( ":/playlist_menu" ), + qtr( "Playlist..." ), mi, SLOT( togglePlaylist() ), + qtr( "Ctrl+L" ) ); + act->setData( "_static_" ); } addDPStaticEntry( menu, qtr( I_MENU_EXT ), "", - ":/pixmaps/menus_settings_16px.png", SLOT( extendedDialog() ), + ":/settings", SLOT( extendedDialog() ), "Ctrl+E" ); menu->addSeparator(); @@ -344,30 +366,33 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, if( with_intf ) { QMenu *intfmenu = InterfacesMenu( p_intf, menu ); - intfmenu->setTitle( qtr( "Add Interfaces" ) ); MenuFunc *f = new MenuFunc( intfmenu, 4 ); CONNECT( intfmenu, aboutToShow(), THEDP->menusUpdateMapper, map() ); THEDP->menusUpdateMapper->setMapping( intfmenu, f ); - menu->addMenu( intfmenu ); menu->addSeparator(); } if( mi ) { /* Minimal View */ - QAction *action=menu->addAction( qtr( "Minimal View..." ), mi, - SLOT( toggleMinimalView() ), qtr( "Ctrl+H" ) ); + QAction *action = menu->addAction( qtr( "Minimal View..." ), mi, + SLOT( toggleMinimalView() ), qtr( "Ctrl+H" ) ); action->setCheckable( true ); + action->setData( "_static_" ); if( mi->getControlsVisibilityStatus() & CONTROLS_VISIBLE ) action->setChecked( true ); + minimalViewAction = action; /* HACK for minimalView */ /* FullScreen View */ - action = menu->addAction( qtr( "Toggle Fullscreen Interface" ), mi, - SLOT( toggleFullScreen() ), qtr( "F11" ) ); + action = menu->addAction( qtr( "Fullscreen Interface" ), mi, + SLOT( toggleFullScreen() ), QString( "F11" ) ); + action->setCheckable( true ); + action->setData( "_static_" ); /* Advanced Controls */ - action = menu->addAction( qtr( "Advanced controls" ), mi, - SLOT( toggleAdvanced() ) ); + action = menu->addAction( qtr( "Advanced Controls" ), mi, + SLOT( toggleAdvanced() ) ); action->setCheckable( true ); + action->setData( "_static_" ); if( mi->getControlsVisibilityStatus() & CONTROLS_ADVANCED ) action->setChecked( true ); #if 0 /* For Visualisations. Not yet working */ @@ -381,12 +406,12 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, menu->addSeparator(); addDPStaticEntry( menu, qtr( I_MENU_MSG ), "", - ":/pixmaps/menus_messages_16px.png", SLOT( messagesDialog() ), + ":/messages", SLOT( messagesDialog() ), "Ctrl+M" ); addDPStaticEntry( menu, qtr( I_MENU_INFO ) , "", "", SLOT( mediaInfoDialog() ), "Ctrl+I" ); addDPStaticEntry( menu, qtr( I_MENU_CODECINFO ) , "", - ":/pixmaps/menus_info_16px.png", SLOT( mediaCodecDialog() ), "Ctrl+J" ); + ":/info", SLOT( mediaCodecDialog() ), "Ctrl+J" ); addDPStaticEntry( menu, qtr( I_MENU_BOOKMARK ), "","", SLOT( bookmarksDialog() ), "Ctrl+B" ); #ifdef ENABLE_VLM @@ -396,7 +421,7 @@ QMenu *QVLCMenu::ToolsMenu( intf_thread_t *p_intf, menu->addSeparator(); addDPStaticEntry( menu, qtr( "Preferences..." ), "", - ":/pixmaps/menus_preferences_16px.png", SLOT( prefsDialog() ), "Ctrl+P" ); + ":/preferences", SLOT( prefsDialog() ), "Ctrl+P" ); return menu; } @@ -411,10 +436,7 @@ QMenu *QVLCMenu::InterfacesMenu( intf_thread_t *p_intf, QMenu *current ) varnames.push_back( "intf-add" ); objects.push_back( p_intf->i_object_id ); - QMenu *submenu = new QMenu( current ); - QMenu *menu = Populate( p_intf, submenu, varnames, objects ); - - return menu; + return Populate( p_intf, current, varnames, objects ); } /** @@ -424,32 +446,31 @@ QMenu *QVLCMenu::AudioMenu( intf_thread_t *p_intf, QMenu * current ) { vector objects; vector varnames; - vlc_object_t *p_object; + vlc_object_t *p_aout; input_thread_t *p_input; - if( !current ) - current = new QMenu(); + if( !current ) current = new QMenu(); if( current->isEmpty() ) { ACT_ADD( current, "audio-es", qtr( "Audio &Track" ) ); ACT_ADD( current, "audio-device", qtr( "Audio &Device" ) ); ACT_ADD( current, "audio-channels", qtr( "Audio &Channels" ) ); + current->addSeparator(); ACT_ADD( current, "visual", qtr( "&Visualizations" ) ); - ACT_ADD( current, "equalizer", qtr( "&Equalizer" ) ); } p_input = THEMIM->getInput(); if( p_input ) vlc_object_yield( p_input ); - p_object = ( vlc_object_t * ) vlc_object_find( p_intf, - VLC_OBJECT_AOUT, - FIND_ANYWHERE ); + p_aout = ( vlc_object_t * ) vlc_object_find( p_intf, + VLC_OBJECT_AOUT, + FIND_ANYWHERE ); - AudioAutoMenuBuilder( p_object, p_input, objects, varnames ); + AudioAutoMenuBuilder( p_aout, p_input, objects, varnames ); - if( p_object ) - vlc_object_release( p_object ); + if( p_aout ) + vlc_object_release( p_aout ); if( p_input ) vlc_object_release( p_input ); @@ -462,13 +483,12 @@ QMenu *QVLCMenu::AudioMenu( intf_thread_t *p_intf, QMenu * current ) **/ QMenu *QVLCMenu::VideoMenu( intf_thread_t *p_intf, QMenu *current ) { - vlc_object_t *p_object; + vlc_object_t *p_vout; input_thread_t *p_input; vector objects; vector varnames; - if( !current ) - current = new QMenu(); + if( !current ) current = new QMenu(); if( current->isEmpty() ) { @@ -478,11 +498,11 @@ QMenu *QVLCMenu::VideoMenu( intf_thread_t *p_intf, QMenu *current ) QMenu *submenu = new QMenu( qtr( "&Subtitles Track" ), current ); action = current->addMenu( submenu ); action->setData( "spu-es" ); - action = submenu->addAction( qfu( "Load File..." ), THEDP, - SLOT( loadSubtitlesFile() ) ); - action->setData( "_static_" ); + addDPStaticEntry( submenu, qtr( "Load File..." ), "", "", + SLOT( loadSubtitlesFile() ) ); + submenu->addSeparator(); - 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" ) ); @@ -496,13 +516,13 @@ QMenu *QVLCMenu::VideoMenu( intf_thread_t *p_intf, QMenu *current ) p_input = THEMIM->getInput(); if( p_input ) vlc_object_yield( p_input ); - p_object = ( vlc_object_t * )vlc_object_find( p_intf, VLC_OBJECT_VOUT, + p_vout = ( vlc_object_t * )vlc_object_find( p_intf, VLC_OBJECT_VOUT, FIND_ANYWHERE ); - VideoAutoMenuBuilder( p_object, p_input, objects, varnames ); + VideoAutoMenuBuilder( p_vout, p_input, objects, varnames ); - if( p_object ) - vlc_object_release( p_object ); + if( p_vout ) + vlc_object_release( p_vout ); if( p_input ) vlc_object_release( p_input ); @@ -519,10 +539,7 @@ QMenu *QVLCMenu::NavigMenu( intf_thread_t *p_intf, QMenu *menu ) vector objects; vector varnames; - if( !menu ) - { - menu = new QMenu(); - } + if( !menu ) menu = new QMenu(); if( menu->isEmpty() ) { @@ -578,7 +595,7 @@ QMenu *QVLCMenu::SDMenu( intf_thread_t *p_intf ) if( !strcmp( *ppsz_name, "podcast" ) ) { - QAction *b = new QAction( qfu( "Configure podcasts..." ), menu ); + QAction *b = new QAction( qtr( "Configure podcasts..." ), menu ); //b->setEnabled( a->isChecked() ); menu->addAction( b ); CONNECT( b, triggered(), THEDP, podcastConfigureDialog() ); @@ -597,18 +614,17 @@ QMenu *QVLCMenu::HelpMenu( QMenu *current ) { QMenu *menu = new QMenu( current ); addDPStaticEntry( menu, qtr( "Help..." ) , "", - ":/pixmaps/menus_help_16px.png", SLOT( helpDialog() ), "F1" ); + ":/help", SLOT( helpDialog() ), "F1" ); #ifdef UPDATE_CHECK - addDPStaticEntry( menu, qtr( "Check for updates..." ) , "", "", SLOT( updateDialog() ), ""); + addDPStaticEntry( menu, qtr( "Check for Updates..." ) , "", "", + SLOT( updateDialog() ), ""); #endif menu->addSeparator(); - addDPStaticEntry( menu, qtr( I_MENU_ABOUT ), "", "", SLOT( aboutDialog() ), - "Ctrl+F1" ); + addDPStaticEntry( menu, qtr( I_MENU_ABOUT ), "", ":/info", + SLOT( aboutDialog() ), "Ctrl+F1" ); return menu; } -#undef ACT_ADD - /***************************************************************************** * Popup menus - Right Click menus * *****************************************************************************/ @@ -635,46 +651,56 @@ void QVLCMenu::PopupMenuControlEntries( QMenu *menu, var_Get( p_input, "state", &val ); if( val.i_int == PLAYING_S ) addMIMStaticEntry( p_intf, menu, qtr( "Pause" ), "", - ":/pixmaps/pause_16px.png", SLOT( togglePlayPause() ) ); + ":/pause", SLOT( togglePlayPause() ) ); else addMIMStaticEntry( p_intf, menu, qtr( "Play" ), "", - ":/pixmaps/play_16px.png", SLOT( togglePlayPause() ) ); + ":/play", SLOT( togglePlayPause() ) ); } else if( THEPL->items.i_size ) addMIMStaticEntry( p_intf, menu, qtr( "Play" ), "", - ":/pixmaps/play_16px.png", SLOT( togglePlayPause() ) ); + ":/play", SLOT( togglePlayPause() ) ); + else + addDPStaticEntry( menu, qtr( "Play" ), "", + ":/play", SLOT( openDialog() ) ); addMIMStaticEntry( p_intf, menu, qtr( "Stop" ), "", - ":/pixmaps/stop_16px.png", SLOT( stop() ) ); + ":/stop", SLOT( stop() ) ); addMIMStaticEntry( p_intf, menu, qtr( "Previous" ), "", - ":/pixmaps/previous_16px.png", SLOT( prev() ) ); + ":/previous", SLOT( prev() ) ); addMIMStaticEntry( p_intf, menu, qtr( "Next" ), "", - ":/pixmaps/next_16px.png", SLOT( next() ) ); - } + ":/next", SLOT( next() ) ); +} 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, - SLOT( openFileDialog() ) ); - openmenu->addAction( qtr( "Open &Disc..." ), THEDP, - SLOT( openDiscDialog() ) ); - openmenu->addAction( qtr( "Open &Network..." ), THEDP, - SLOT( openNetDialog() ) ); - openmenu->addAction( qtr( "Open &Capture Device..." ), THEDP, - SLOT( openCaptureDialog() ) ); + addDPStaticEntry( openmenu, qtr( "&Open File..." ), "", + ":/file-asym", SLOT( openFileDialog() ) ); + addDPStaticEntry( openmenu, qtr( I_OPEN_FOLDER ), "", + ":/folder-grey", SLOT( PLAppendDir() ) ); + addDPStaticEntry( openmenu, qtr( "Open &Disc..." ), "", + ":/disc", SLOT( openDiscDialog() ) ); + addDPStaticEntry( openmenu, qtr( "Open &Network..." ), "", + ":/network", SLOT( openNetDialog() ) ); + addDPStaticEntry( openmenu, qtr( "Open &Capture Device..." ), "", + ":/capture-card", SLOT( openCaptureDialog() ) ); 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" ); + addDPStaticEntry( menu, qtr( "Quit" ), "", ":/quit", + SLOT( quit() ), "Ctrl+Q" ); } /* Video Tracks and Subtitles tracks */ @@ -746,45 +772,93 @@ 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; + bool b_isFullscreen = false; + + POPUP_BOILERPLATE; + + PopupMenuControlEntries( menu, p_intf, p_input ); + menu->addSeparator(); + + if( p_input ) { - POPUP_BOILERPLATE; - if( p_input ) + 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 ); + b_isFullscreen = !( !val.b_bool ); + if( b_isFullscreen ) + CreateAndConnect( menu, "fullscreen", + qtr( "Leave Fullscreen" ),"" , ITEM_NORMAL, + p_vout->i_object_id, val, VLC_VAR_BOOL, + b_isFullscreen ); + vlc_object_release( p_vout ); } - QMenu *menu = new QMenu(); - Populate( p_intf, menu, varnames, objects ); menu->addSeparator(); - PopupMenuControlEntries( menu, p_intf, p_input ); - menu->addSeparator(); - PopupMenuStaticEntries( p_intf, menu ); - p_intf->p_sys->p_popup_menu = menu; + vlc_object_yield( p_input ); + InputAutoMenuBuilder( VLC_OBJECT( p_input ), objects, varnames ); + vlc_object_release( p_input ); + + submenu = new QMenu( menu ); + action = menu->addMenu( AudioMenu( p_intf, submenu ) ); + action->setText( qtr( "&Audio" ) ); + if( action->menu()->isEmpty() ) + action->setEnabled( false ); + + submenu = new QMenu( menu ); + action = menu->addMenu( VideoMenu( p_intf, submenu ) ); + action->setText( qtr( "&Video" ) ); + if( action->menu()->isEmpty() ) + action->setEnabled( false ); + + submenu = new QMenu( menu ); + action = menu->addMenu( NavigMenu( p_intf, submenu ) ); + action->setText( qtr( "&Playback" ) ); + if( action->menu()->isEmpty() ) + action->setEnabled( false ); + } + + menu->addSeparator(); + + /* Add some special entries for windowed mode: Interface Menu */ + if( !b_isFullscreen ) + { + submenu = new QMenu( qtr( "Interface" ), menu ); + submenu->addAction( QIcon( ":/playlist" ), + qtr( "Show Playlist" ), mi, SLOT( togglePlaylist() ) ); + addDPStaticEntry( submenu, qtr( I_MENU_EXT ), "", + ":/settings", SLOT( extendedDialog() ) ); + action = submenu->addAction( QIcon( "" ), + qtr( "Minimal View..." ), mi, SLOT( toggleMinimalView() ) ); + action->setCheckable( true ); + action->setChecked( !( mi->getControlsVisibilityStatus() & + CONTROLS_VISIBLE ) ); + action = submenu->addAction( QIcon( "" ), + qtr( "Toggle Fullscreen Interface" ), + mi, SLOT( toggleFullScreen() ) ); + action->setCheckable( true ); + action->setChecked( mi->isFullScreen() ); + 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 @@ -795,6 +869,8 @@ void QVLCMenu::PopupMenu( intf_thread_t *p_intf, bool show ) } } +#undef ACT_ADD + /************************************************************************ * Systray Menu * ************************************************************************/ @@ -813,14 +889,14 @@ void QVLCMenu::updateSystrayMenu( MainInterface *mi, if( mi->isVisible() || b_force_visible ) { sysMenu->addAction( QIcon( ":/vlc16.png" ), - qtr( "Hide VLC media player in taskbar" ), mi, - SLOT( toggleUpdateSystrayMenu() ) ); + qtr( "Hide VLC media player in taskbar" ), mi, + SLOT( toggleUpdateSystrayMenu() ) ); } else { sysMenu->addAction( QIcon( ":/vlc16.png" ), - qtr( "Show VLC media player" ), mi, - SLOT( toggleUpdateSystrayMenu() ) ); + qtr( "Show VLC media player" ), mi, + SLOT( toggleUpdateSystrayMenu() ) ); } sysMenu->addSeparator(); @@ -828,9 +904,9 @@ void QVLCMenu::updateSystrayMenu( MainInterface *mi, sysMenu->addSeparator(); addDPStaticEntry( sysMenu, qtr( "&Open Media" ), "", - ":/pixmaps/file-wide_16px.png", SLOT( openFileDialog() ), "" ); + ":/file-wide", SLOT( openFileDialog() ), "" ); addDPStaticEntry( sysMenu, qtr( "&Quit" ) , "", - ":/pixmaps/menus_quit_16px.png", SLOT( quit() ), "" ); + ":/quit", SLOT( quit() ), "" ); /* Set the menu */ mi->getSysTray()->setContextMenu( sysMenu ); @@ -849,12 +925,11 @@ QMenu * QVLCMenu::Populate( intf_thread_t *p_intf, bool append ) { QMenu *menu = current; - if( !menu ) - menu = new QMenu(); + if( !menu ) menu = new QMenu(); /* Disable all non static entries */ QAction *p_action; - Q_FOREACH( p_action, menu->actions() ) + foreach( p_action, menu->actions() ) { if( p_action->data().toString() != "_static_" ) p_action->setEnabled( false ); @@ -887,11 +962,7 @@ QMenu * QVLCMenu::Populate( intf_thread_t *p_intf, } } - /* Ugly specific stuff */ - if( strstr( varnames[i], "intf-add" ) ) - UpdateItem( p_intf, menu, varnames[i], p_object, false ); - else - UpdateItem( p_intf, menu, varnames[i], p_object, true ); + UpdateItem( p_intf, menu, varnames[i], p_object, true ); if( p_object ) vlc_object_release( p_object ); }