X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=modules%2Fgui%2Fqt4%2Fmain_interface.cpp;h=35311a444fdba46cd2d4a4b31d2e0cf787d28ca2;hb=bad8f53f2b734cdc78f18bef8be1dc1589e5db4c;hp=1548e7d292cc7a98da8184905961b199bd4560fc;hpb=78cf351830dc47d4a46520d6128f2b874347f02d;p=vlc diff --git a/modules/gui/qt4/main_interface.cpp b/modules/gui/qt4/main_interface.cpp index 1548e7d292..35311a444f 100644 --- a/modules/gui/qt4/main_interface.cpp +++ b/modules/gui/qt4/main_interface.cpp @@ -18,7 +18,7 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA. *****************************************************************************/ #include "qt4.hpp" @@ -39,6 +39,8 @@ #include #include #include +#include +#include #include #include @@ -93,6 +95,8 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) need_components_update = false; bgWidget = NULL; videoWidget = NULL; playlistWidget = NULL; embeddedPlaylistWasActive = videoIsActive = false; + + input_name = ""; videoEmbeddedFlag = false; if( config_GetInt( p_intf, "embedded-video" ) ) videoEmbeddedFlag = true; @@ -124,21 +128,40 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf ) /* Volume control */ CONNECT( ui.volumeSlider, valueChanged(int), this, updateVolume(int) ); + /* Connect the input manager to the GUI elements it manages */ CONNECT( THEMIM->getIM(), positionUpdated( float, int, int ), slider, setPosition( float,int, int ) ); CONNECT( THEMIM->getIM(), positionUpdated( float, int, int ), this, setDisplay( float, int, int ) ); + + /* Naming in the controller */ CONNECT( THEMIM->getIM(), nameChanged( QString ), this, setName( QString ) ); + if( config_GetInt( p_intf, "qt-system-tray" ) ) + { + CONNECT( THEMIM->getIM(), nameChanged( QString ), this, + updateSystrayTooltipName(QString)); + } + if( config_GetInt( p_intf, "qt-name-in-title" ) ) + { + CONNECT( THEMIM->getIM(), nameChanged( QString ), this, + setVLCWindowsTitle( QString ) ); + } + + /* PLAY_STATUS */ CONNECT( THEMIM->getIM(), statusChanged( int ), this, setStatus( int ) ); - CONNECT( THEMIM->getIM(), statusChanged( int ), this, - updateSystrayMenu( int ) ); CONNECT( THEMIM->getIM(), navigationChanged( int ), this, setNavigation(int) ); + if( config_GetInt( p_intf, "qt-system-tray" ) ) + { + CONNECT( THEMIM->getIM(), statusChanged( int ), this, + updateSystrayTooltipStatus(int)); + } CONNECT( slider, sliderDragged( float ), THEMIM->getIM(), sliderUpdate( float ) ); + /* Buttons */ CONNECT( ui.prevSectionButton, clicked(), THEMIM->getIM(), sectionPrev() ); CONNECT( ui.nextSectionButton, clicked(), THEMIM->getIM(), @@ -285,6 +308,7 @@ void MainInterface::createSystrayMenu() sysTray = new QSystemTrayIcon( iconVLC, this ); systrayMenu = new QMenu( qtr( "VLC media player" ), this ); systrayMenu->setIcon( iconVLC ); + sysTray->setToolTip( qtr( "VLC media player" )); QVLCMenu::updateSystrayMenu( this, p_intf, true ); sysTray->show(); CONNECT( sysTray, activated( QSystemTrayIcon::ActivationReason ), @@ -298,8 +322,8 @@ void MainInterface::updateSystrayMenu( int status ) void MainInterface::toggleUpdateSystrayMenu() { - QVLCMenu::updateSystrayMenu( this, p_intf ); toggleVisible(); + QVLCMenu::updateSystrayMenu( this, p_intf ); } void MainInterface::handleSystrayClick( QSystemTrayIcon::ActivationReason reason ) @@ -307,16 +331,52 @@ void MainInterface::handleSystrayClick( QSystemTrayIcon::ActivationReason reason switch( reason ) { case QSystemTrayIcon::Trigger: - this->toggleVisible(); break; + toggleUpdateSystrayMenu(); + break; case QSystemTrayIcon::MiddleClick: sysTray->showMessage( qtr( "VLC media player" ), - qtr( "Control menu for the player" ) - + nameLabel->text() , + qtr( "Control menu for the player" ), QSystemTrayIcon::Information, 4000 ); break; } } + +void MainInterface::updateSystrayTooltipName( QString name ) +{ + if( name.isEmpty() ) + { + sysTray->setToolTip( qtr( "VLC media player" ) ); + } + else + { + sysTray->setToolTip( name ); + } +} + +void MainInterface::updateSystrayTooltipStatus( int i_status ) +{ + switch( i_status ) + { + case 0: + { + sysTray->setToolTip( qtr( "VLC media player" ) ); + break; + } + case PLAYING_S: + { + sysTray->setToolTip( input_name ); + //+ " - " + qtr( "Playing" ) ); + break; + } + case PAUSE_S: + { + sysTray->setToolTip( input_name + " - " + + qtr( "Paused") ); + break; + } + } +} /********************************************************************** * Handling of the components **********************************************************************/ @@ -722,12 +782,9 @@ void MainInterface::setDisplay( float pos, int time, int length ) void MainInterface::setName( QString name ) { + input_name = name; nameLabel->setText( " " + name+" " ); - - if( config_GetInt( p_intf, "qt-name-in-title" ) ) - { - setVLCWindowsTitle( name ); - } + } void MainInterface::setStatus( int status ) @@ -736,6 +793,7 @@ void MainInterface::setStatus( int status ) ui.playButton->setIcon( QIcon( ":/pixmaps/pause.png" ) ); else ui.playButton->setIcon( QIcon( ":/pixmaps/play.png" ) ); + updateSystrayMenu( status ); } #define HELP_MENU N_("Menu") @@ -802,7 +860,7 @@ void MainInterface::updateOnTimer() void MainInterface::closeEvent( QCloseEvent *e ) { hide(); - p_intf->b_die = VLC_TRUE; + vlc_object_kill( p_intf ); } void MainInterface::updateVolume( int sliderVolume )