]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/main_interface.cpp
input_manager: Don't send name event all the time
[vlc] / modules / gui / qt4 / main_interface.cpp
index 22679fe44d70c6b077db2bfd2bae0e3bd99c7212..ff22c46ab115e05fbd337eda6f98a3d9b362b61d 100644 (file)
@@ -93,6 +93,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,24 +126,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,
-                 setName( QString ) );
+             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(),
@@ -288,6 +306,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 ),
@@ -320,6 +339,42 @@ void MainInterface::handleSystrayClick( QSystemTrayIcon::ActivationReason reason
     }
 }
 
+
+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
  **********************************************************************/
@@ -725,8 +780,9 @@ void MainInterface::setDisplay( float pos, int time, int length )
 
 void MainInterface::setName( QString name )
 {
+    input_name = name;
     nameLabel->setText( " " + name+" " );
-    setVLCWindowsTitle( name );
+
 }
 
 void MainInterface::setStatus( int status )
@@ -735,6 +791,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")