input_manager: Don't send name event all the time
authorChristophe Mutricy <xtophe@videolan.org>
Sat, 12 May 2007 22:48:55 +0000 (22:48 +0000)
committerChristophe Mutricy <xtophe@videolan.org>
Sat, 12 May 2007 22:48:55 +0000 (22:48 +0000)
main_interface: update the systray tooltip

modules/gui/qt4/input_manager.cpp
modules/gui/qt4/input_manager.hpp
modules/gui/qt4/main_interface.cpp
modules/gui/qt4/main_interface.hpp

index c0543f1..0dadf6d 100644 (file)
@@ -38,6 +38,7 @@ InputManager::InputManager( QObject *parent, intf_thread_t *_p_intf) :
                            QObject( parent ), p_intf( _p_intf )
 {
     i_old_playing_status = END_S;
+    old_name="";
     p_input = NULL;
     ON_TIMEOUT( update() );
 }
@@ -87,6 +88,7 @@ void InputManager::update()
         emit positionUpdated( 0.0, 0, 0 );
         msg_Dbg( p_intf, "*********** NAV 0");
         emit navigationChanged( 0 );
+        i_old_playing_status = 0;
         emit statusChanged( 0 ); // 0 = STOPPED, 1 = PLAY, 2 = PAUSE
         delInput();
         return;
@@ -150,8 +152,11 @@ void InputManager::update()
     {
         text.sprintf( "%s", input_GetItem(p_input)->psz_name );
     }
-    emit nameChanged( text );
-
+    if( old_name != text )
+    {
+        emit nameChanged( text );
+        old_name=text;
+    }
     /* Update playing status */
     var_Get( p_input, "state", &val );
     val.i_int = val.i_int == PAUSE_S ? PAUSE_S : PLAYING_S;
index bb092a2..93ef535 100644 (file)
@@ -44,7 +44,7 @@ private:
     intf_thread_t *p_intf;
     input_thread_t *p_input;
     int i_old_playing_status;
-
+    QString old_name;
 public slots:
     void togglePlayPause();
     void update(); ///< Periodic updates
index d466dec..ff22c46 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;
@@ -134,6 +136,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
     /* 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,
@@ -144,6 +151,11 @@ MainInterface::MainInterface( intf_thread_t *_p_intf ) : QVLCMW( _p_intf )
     CONNECT( THEMIM->getIM(), statusChanged( int ), this, setStatus( 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 ) );
 
@@ -294,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 ),
@@ -326,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
  **********************************************************************/
@@ -731,6 +780,7 @@ void MainInterface::setDisplay( float pos, int time, int length )
 
 void MainInterface::setName( QString name )
 {
+    input_name = name;
     nameLabel->setText( " " + name+" " );
 
 }
index dfd61a6..5c7a6c2 100644 (file)
@@ -59,7 +59,6 @@ public:
                         unsigned int *pi_height );
     void releaseVideo( void *);
     int controlVideo( void *p_window, int i_query, va_list args );
-    void setVLCWindowsTitle( QString title = "" );
 
     QSystemTrayIcon *getSysTray() { return sysTray; };
     QMenu *getSysTrayMenu() { return systrayMenu; };
@@ -77,6 +76,7 @@ private:
     QSize mainSize, addSize;
     QSystemTrayIcon *sysTray;
     QMenu *systrayMenu;
+    QString input_name;
 
     bool need_components_update;
     void calculateInterfaceSize();
@@ -122,6 +122,7 @@ private slots:
     void setNavigation( int );
     void setStatus( int );
     void setName( QString );
+    void setVLCWindowsTitle( QString title = "" );
     void setDisplay( float, int, int );
     void updateOnTimer();
     void play();
@@ -133,6 +134,8 @@ private slots:
     void updateVolume( int sliderVolume );
     void handleSystrayClick(  QSystemTrayIcon::ActivationReason );
     void updateSystrayMenu( int );
+    void updateSystrayTooltipName( QString );
+    void updateSystrayTooltipStatus( int );
 };