]> git.sesse.net Git - vlc/blobdiff - modules/gui/qt4/main_interface.cpp
qt4 - Include cleanup.
[vlc] / modules / gui / qt4 / main_interface.cpp
index 1548e7d292cc7a98da8184905961b199bd4560fc..35311a444fdba46cd2d4a4b31d2e0cf787d28ca2 100644 (file)
@@ -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 <QKeyEvent>
 #include <QUrl>
 #include <QSystemTrayIcon>
+#include <QSize>
+#include <QMenu>
 
 #include <assert.h>
 #include <vlc_keys.h>
@@ -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 )