*
* 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"
#include <QKeyEvent>
#include <QUrl>
#include <QSystemTrayIcon>
+#include <QSize>
+#include <QMenu>
#include <assert.h>
#include <vlc_keys.h>
bgWidget = NULL; videoWidget = NULL; playlistWidget = NULL;
embeddedPlaylistWasActive = videoIsActive = false;
+ input_name = "";
+
videoEmbeddedFlag = false;
if( config_GetInt( p_intf, "embedded-video" ) ) videoEmbeddedFlag = true;
setFocusPolicy( Qt::StrongFocus );
setAcceptDrops(true);
+ /* Systray */
+ systray = NULL;
+ if( QSystemTrayIcon::isSystemTrayAvailable() &&
+ ( config_GetInt( p_intf, "qt-start-mininimized") == 1) )
+ {
+ hide();
+ createSystrayMenu();
+ }
+ if( QSystemTrayIcon::isSystemTrayAvailable() &&
+ ( config_GetInt( p_intf, "qt-system-tray") == 1) )
+ createSystrayMenu();
+
/* Init input manager */
MainInputManager::getInstance( p_intf );
ON_TIMEOUT( updateOnTimer() );
/* Naming in the controller */
CONNECT( THEMIM->getIM(), nameChanged( QString ), this,
setName( QString ) );
+ if( config_GetInt( p_intf, "qt-system-tray" ) && systray )
+ {
+ CONNECT( THEMIM->getIM(), nameChanged( QString ), this,
+ updateSystrayTooltipName( QString ) );
+ }
if( config_GetInt( p_intf, "qt-name-in-title" ) )
{
CONNECT( THEMIM->getIM(), nameChanged( QString ), this,
CONNECT( THEMIM->getIM(), statusChanged( int ), this, setStatus( int ) );
CONNECT( THEMIM->getIM(), navigationChanged( int ),
this, setNavigation(int) );
+ if( config_GetInt( p_intf, "qt-system-tray" ) && systray )
+ {
+ CONNECT( THEMIM->getIM(), statusChanged( int ), this,
+ updateSystrayTooltipStatus( int ) );
+ }
CONNECT( slider, sliderDragged( float ),
THEMIM->getIM(), sliderUpdate( float ) );
var_AddCallback( p_playlist, "intf-show", IntfShowCB, p_intf );
vlc_object_release( p_playlist );
}
- if( QSystemTrayIcon::isSystemTrayAvailable() &&
- ( config_GetInt( p_intf, "qt-start-mininimized") == 1))
- {
- hide();
- createSystrayMenu();
- }
- if( QSystemTrayIcon::isSystemTrayAvailable() &&
- ( config_GetInt( p_intf, "qt-system-tray") == 1))
- createSystrayMenu();
}
p_intf->pf_control_window = NULL;
}
+/*****************************
+ * Main UI handling *
+ *****************************/
void MainInterface::setVLCWindowsTitle( QString aTitle )
{
if( aTitle.isEmpty() )
{
videoWidget = new VideoWidget( p_intf );
videoWidget->widgetSize = QSize( 1, 1 );
- videoWidget->resize( videoWidget->widgetSize );
+ //videoWidget->resize( videoWidget->widgetSize );
ui.vboxLayout->insertWidget( 0, videoWidget );
p_intf->pf_request_window = ::DoRequest;
setMinimumSize( PREF_W, addSize.height() );
}
-void MainInterface::createSystrayMenu()
+/*****************************************************************************
+ * Systray Icon and Systray Menu
+ *****************************************************************************/
+
+/**
+ * Create a SystemTray icon and a menu that would go with it.
+ * Connects to a click handler on the icon.
+ **/
+void MainInterface::createSystray()
{
QIcon iconVLC = QIcon( QPixmap( ":/vlc128.png" ) );
sysTray = new QSystemTrayIcon( iconVLC, this );
+ sysTray->setToolTip( qtr( "VLC media player" ));
+
systrayMenu = new QMenu( qtr( "VLC media player" ), this );
systrayMenu->setIcon( iconVLC );
+
QVLCMenu::updateSystrayMenu( this, p_intf, true );
sysTray->show();
+
CONNECT( sysTray, activated( QSystemTrayIcon::ActivationReason ),
this, handleSystrayClick( QSystemTrayIcon::ActivationReason ) );
}
+/**
+ * Update the menu of the Systray Icon.
+ * May be unneedded, since it just calls QVLCMenu::update
+ * FIXME !!!
+ **/
void MainInterface::updateSystrayMenu( int status )
{
QVLCMenu::updateSystrayMenu( this, p_intf ) ;
}
+/**
+ * Updates the Systray Icon's menu and toggle the main interface
+ */
void MainInterface::toggleUpdateSystrayMenu()
{
- QVLCMenu::updateSystrayMenu( this, p_intf );
toggleVisible();
+ QVLCMenu::updateSystrayMenu( this, p_intf );
}
-void MainInterface::handleSystrayClick( QSystemTrayIcon::ActivationReason reason )
+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;
}
}
+/**
+ * Updates the name of the systray Icon tooltip.
+ * Doesn't check if the systray exists, check before you call it.
+ * FIXME !!! Fusion with next function ?
+ **/
+void MainInterface::updateSystrayTooltipName( QString name )
+{
+ if( name.isEmpty() )
+ {
+ sysTray->setToolTip( qtr( "VLC media player" ) );
+ }
+ else
+ {
+ sysTray->setToolTip( name );
+ }
+}
+
+/**
+ * Updates the status of the systray Icon tooltip.
+ * Doesn't check if the systray exists, check before you call it.
+ **/
+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
**********************************************************************/
void MainInterface::setName( QString name )
{
+ input_name = name;
nameLabel->setText( " " + name+" " );
-
}
void MainInterface::setStatus( int status )
ui.playButton->setIcon( QIcon( ":/pixmaps/pause.png" ) );
else
ui.playButton->setIcon( QIcon( ":/pixmaps/play.png" ) );
- updateSystrayMenu( status );
+ if( systrayMenu )
+ updateSystrayMenu( status );
}
#define HELP_MENU N_("Menu")
void MainInterface::closeEvent( QCloseEvent *e )
{
hide();
- p_intf->b_die = VLC_TRUE;
+ vlc_object_kill( p_intf );
}
void MainInterface::updateVolume( int sliderVolume )