add support for a system tray icon for the server
This commit is contained in:
parent
ef661255a4
commit
f5120f272a
8 changed files with 92 additions and 31 deletions
|
@ -29,7 +29,10 @@
|
||||||
CLlconServerDlg::CLlconServerDlg ( CServer* pNServP,
|
CLlconServerDlg::CLlconServerDlg ( CServer* pNServP,
|
||||||
QWidget* parent,
|
QWidget* parent,
|
||||||
Qt::WindowFlags f )
|
Qt::WindowFlags f )
|
||||||
: QDialog ( parent, f ), pServer ( pNServP )
|
: QDialog ( parent, f ),
|
||||||
|
pServer ( pNServP ),
|
||||||
|
BitmapSystemTrayInactive ( QString::fromUtf8 ( ":/png/LEDs/res/CLEDGreyArrow.png" ) ),
|
||||||
|
BitmapSystemTrayActive ( QString::fromUtf8 ( ":/png/LEDs/res/CLEDGreenArrow.png" ) )
|
||||||
{
|
{
|
||||||
setupUi ( this );
|
setupUi ( this );
|
||||||
|
|
||||||
|
@ -102,6 +105,31 @@ CLlconServerDlg::CLlconServerDlg ( CServer* pNServP,
|
||||||
"Country where the server is located combo box" ) );
|
"Country where the server is located combo box" ) );
|
||||||
|
|
||||||
|
|
||||||
|
// check if system tray icon can be used
|
||||||
|
bSystemTrayIconAvaialbe = SystemTrayIcon.isSystemTrayAvailable();
|
||||||
|
|
||||||
|
// init system tray icon
|
||||||
|
if ( bSystemTrayIconAvaialbe )
|
||||||
|
{
|
||||||
|
// prepare context menu to be added to the system tray icon
|
||||||
|
pSystemTrayIconMenu = new QMenu ( this );
|
||||||
|
|
||||||
|
pSystemTrayIconMenu->addAction ( tr ( "E&xit" ),
|
||||||
|
this, SLOT ( OnSysTrayMenuExit() ) );
|
||||||
|
|
||||||
|
pSystemTrayIconMenu->addSeparator();
|
||||||
|
|
||||||
|
pSystemTrayIconMenu->setDefaultAction ( pSystemTrayIconMenu->addAction (
|
||||||
|
tr ( "&Open " ) + APP_NAME + tr ( " server" ),
|
||||||
|
this, SLOT ( OnSysTrayMenuOpen() ) ) );
|
||||||
|
|
||||||
|
SystemTrayIcon.setContextMenu ( pSystemTrayIconMenu );
|
||||||
|
|
||||||
|
// show icon of state "inactive"
|
||||||
|
SystemTrayIcon.setIcon ( QIcon ( BitmapSystemTrayInactive ) );
|
||||||
|
SystemTrayIcon.show();
|
||||||
|
}
|
||||||
|
|
||||||
// set text for version and application name
|
// set text for version and application name
|
||||||
TextLabelNameVersion->setText ( QString ( APP_NAME ) +
|
TextLabelNameVersion->setText ( QString ( APP_NAME ) +
|
||||||
tr ( " server " ) + QString ( VERSION ) );
|
tr ( " server " ) + QString ( VERSION ) );
|
||||||
|
@ -210,6 +238,13 @@ CLlconServerDlg::CLlconServerDlg ( CServer* pNServP,
|
||||||
// timers
|
// timers
|
||||||
QObject::connect ( &Timer, SIGNAL ( timeout() ), this, SLOT ( OnTimer() ) );
|
QObject::connect ( &Timer, SIGNAL ( timeout() ), this, SLOT ( OnTimer() ) );
|
||||||
|
|
||||||
|
// other
|
||||||
|
QObject::connect ( pServer, SIGNAL ( Started() ),
|
||||||
|
this, SLOT ( OnServerStarted() ) );
|
||||||
|
|
||||||
|
QObject::connect ( pServer, SIGNAL ( Stopped() ),
|
||||||
|
this, SLOT ( OnServerStopped() ) );
|
||||||
|
|
||||||
|
|
||||||
// Timers ------------------------------------------------------------------
|
// Timers ------------------------------------------------------------------
|
||||||
// start timer for GUI controls
|
// start timer for GUI controls
|
||||||
|
@ -381,6 +416,34 @@ void CLlconServerDlg::UpdateGUIDependencies()
|
||||||
!bCurUseDefCentServAddr && bCurSerListEnabled );
|
!bCurUseDefCentServAddr && bCurSerListEnabled );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CLlconServerDlg::UpdateSystemTrayIcon ( const bool bIsActive )
|
||||||
|
{
|
||||||
|
if ( bSystemTrayIconAvaialbe )
|
||||||
|
{
|
||||||
|
if ( bIsActive )
|
||||||
|
{
|
||||||
|
SystemTrayIcon.setIcon ( QIcon ( BitmapSystemTrayActive ) );
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
SystemTrayIcon.setIcon ( QIcon ( BitmapSystemTrayInactive ) );
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void CLlconServerDlg::hideEvent ( QHideEvent* )
|
||||||
|
{
|
||||||
|
// TODO seems not to work correctly...
|
||||||
|
/*
|
||||||
|
// if we have a system tray icon, we make the window invisible if it is
|
||||||
|
// minimized
|
||||||
|
if ( bSystemTrayIconAvaialbe )
|
||||||
|
{
|
||||||
|
setVisible ( false );
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
|
||||||
void CLlconServerDlg::customEvent ( QEvent* Event )
|
void CLlconServerDlg::customEvent ( QEvent* Event )
|
||||||
{
|
{
|
||||||
if ( Event->type() == QEvent::User + 11 )
|
if ( Event->type() == QEvent::User + 11 )
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
#include <qslider.h>
|
#include <qslider.h>
|
||||||
#include <qmenubar.h>
|
#include <qmenubar.h>
|
||||||
#include <qlayout.h>
|
#include <qlayout.h>
|
||||||
|
#include <qsystemtrayicon.h>
|
||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "server.h"
|
#include "server.h"
|
||||||
#include "multicolorled.h"
|
#include "multicolorled.h"
|
||||||
|
@ -60,6 +61,11 @@ public:
|
||||||
Qt::WindowFlags f = 0 );
|
Qt::WindowFlags f = 0 );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
virtual void customEvent ( QEvent* Event );
|
||||||
|
virtual void hideEvent ( QHideEvent* );
|
||||||
|
void UpdateGUIDependencies();
|
||||||
|
void UpdateSystemTrayIcon ( const bool bIsActive );
|
||||||
|
|
||||||
QTimer Timer;
|
QTimer Timer;
|
||||||
CServer* pServer;
|
CServer* pServer;
|
||||||
|
|
||||||
|
@ -68,8 +74,11 @@ protected:
|
||||||
|
|
||||||
QMenuBar* pMenu;
|
QMenuBar* pMenu;
|
||||||
|
|
||||||
virtual void customEvent ( QEvent* Event );
|
bool bSystemTrayIconAvaialbe;
|
||||||
void UpdateGUIDependencies();
|
QSystemTrayIcon SystemTrayIcon;
|
||||||
|
QPixmap BitmapSystemTrayInactive;
|
||||||
|
QPixmap BitmapSystemTrayActive;
|
||||||
|
QMenu* pSystemTrayIconMenu;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void OnRegisterServerStateChanged ( int value );
|
void OnRegisterServerStateChanged ( int value );
|
||||||
|
@ -79,4 +88,8 @@ public slots:
|
||||||
void OnLineEditLocationCityTextChanged ( const QString& strNewCity );
|
void OnLineEditLocationCityTextChanged ( const QString& strNewCity );
|
||||||
void OnComboBoxLocationCountryActivated ( int iCntryListItem );
|
void OnComboBoxLocationCountryActivated ( int iCntryListItem );
|
||||||
void OnTimer();
|
void OnTimer();
|
||||||
|
void OnServerStarted() { UpdateSystemTrayIcon ( true ); }
|
||||||
|
void OnServerStopped() { UpdateSystemTrayIcon ( false ); }
|
||||||
|
void OnSysTrayMenuOpen() { showNormal(); raise(); }
|
||||||
|
void OnSysTrayMenuExit() { close(); }
|
||||||
};
|
};
|
||||||
|
|
|
@ -134,7 +134,7 @@ void CMultiColorLEDBar::setValue ( const int value )
|
||||||
}
|
}
|
||||||
|
|
||||||
CMultiColorLEDBar::cLED::cLED ( QWidget* parent ) :
|
CMultiColorLEDBar::cLED::cLED ( QWidget* parent ) :
|
||||||
BitmCubeRoundDisabled ( QString::fromUtf8 ( ":/png/LEDs/res/VLEDDisabledSmall.png" ) ),
|
BitmCubeRoundDisabled ( QString::fromUtf8 ( ":/png/LEDs/res/CLEDDisabledSmall.png" ) ),
|
||||||
BitmCubeRoundGrey ( QString::fromUtf8 ( ":/png/LEDs/res/HLEDGreySmall.png" ) ),
|
BitmCubeRoundGrey ( QString::fromUtf8 ( ":/png/LEDs/res/HLEDGreySmall.png" ) ),
|
||||||
BitmCubeRoundGreen ( QString::fromUtf8 ( ":/png/LEDs/res/HLEDGreenSmall.png" ) ),
|
BitmCubeRoundGreen ( QString::fromUtf8 ( ":/png/LEDs/res/HLEDGreenSmall.png" ) ),
|
||||||
BitmCubeRoundYellow ( QString::fromUtf8 ( ":/png/LEDs/res/HLEDYellowSmall.png" ) ),
|
BitmCubeRoundYellow ( QString::fromUtf8 ( ":/png/LEDs/res/HLEDYellowSmall.png" ) ),
|
||||||
|
|
BIN
src/res/CLEDGreenArrow.png
Executable file
BIN
src/res/CLEDGreenArrow.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.3 KiB |
BIN
src/res/CLEDGreyArrow.png
Executable file
BIN
src/res/CLEDGreyArrow.png
Executable file
Binary file not shown.
After Width: | Height: | Size: 1.2 KiB |
|
@ -1,41 +1,16 @@
|
||||||
<RCC>
|
<RCC>
|
||||||
<qresource prefix="/png/LEDs" >
|
<qresource prefix="/png/LEDs" >
|
||||||
<file>res/CLEDBlack.png</file>
|
|
||||||
<file>res/CLEDBlackSmall.png</file>
|
|
||||||
<file>res/CLEDDisabledSmall.png</file>
|
<file>res/CLEDDisabledSmall.png</file>
|
||||||
<file>res/CLEDGreen.png</file>
|
<file>res/CLEDGreenArrow.png</file>
|
||||||
<file>res/CLEDGreenSmall.png</file>
|
<file>res/CLEDGreenSmall.png</file>
|
||||||
<file>res/CLEDGrey.png</file>
|
<file>res/CLEDGreyArrow.png</file>
|
||||||
<file>res/CLEDGreySmall.png</file>
|
<file>res/CLEDGreySmall.png</file>
|
||||||
<file>res/CLEDRed.png</file>
|
|
||||||
<file>res/CLEDRedSmall.png</file>
|
<file>res/CLEDRedSmall.png</file>
|
||||||
<file>res/CLEDYellow.png</file>
|
|
||||||
<file>res/CLEDYellowSmall.png</file>
|
<file>res/CLEDYellowSmall.png</file>
|
||||||
<file>res/HLEDGreenSmall.png</file>
|
<file>res/HLEDGreenSmall.png</file>
|
||||||
<file>res/HLEDGreySmall.png</file>
|
<file>res/HLEDGreySmall.png</file>
|
||||||
<file>res/HLEDRedSmall.png</file>
|
<file>res/HLEDRedSmall.png</file>
|
||||||
<file>res/HLEDYellowSmall.png</file>
|
<file>res/HLEDYellowSmall.png</file>
|
||||||
<file>res/VLEDBlack.png</file>
|
|
||||||
<file>res/VLEDBlackSmall.png</file>
|
|
||||||
<file>res/VLEDDisabledSmall.png</file>
|
|
||||||
<file>res/VLEDGreen.png</file>
|
|
||||||
<file>res/VLEDGreenSmall.png</file>
|
|
||||||
<file>res/VLEDGrey.png</file>
|
|
||||||
<file>res/VLEDGreySmall.png</file>
|
|
||||||
<file>res/VLEDRed.png</file>
|
|
||||||
<file>res/VLEDRedSmall.png</file>
|
|
||||||
<file>res/VLEDYellow.png</file>
|
|
||||||
<file>res/VLEDYellowSmall.png</file>
|
|
||||||
<file>res/VRLEDBlack.png</file>
|
|
||||||
<file>res/VRLEDBlackSmall.png</file>
|
|
||||||
<file>res/VRLEDGreen.png</file>
|
|
||||||
<file>res/VRLEDGreenSmall.png</file>
|
|
||||||
<file>res/VRLEDGrey.png</file>
|
|
||||||
<file>res/VRLEDGreySmall.png</file>
|
|
||||||
<file>res/VRLEDRed.png</file>
|
|
||||||
<file>res/VRLEDRedSmall.png</file>
|
|
||||||
<file>res/VRLEDYellow.png</file>
|
|
||||||
<file>res/VRLEDYellowSmall.png</file>
|
|
||||||
</qresource>
|
</qresource>
|
||||||
<qresource prefix="/png/fader" >
|
<qresource prefix="/png/fader" >
|
||||||
<file>res/faderbackground.png</file>
|
<file>res/faderbackground.png</file>
|
||||||
|
|
|
@ -415,6 +415,9 @@ void CServer::Start()
|
||||||
|
|
||||||
// init time for response time evaluation
|
// init time for response time evaluation
|
||||||
CycleTimeVariance.Reset();
|
CycleTimeVariance.Reset();
|
||||||
|
|
||||||
|
// emit start signal
|
||||||
|
emit Started();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -431,6 +434,9 @@ void CServer::Stop()
|
||||||
|
|
||||||
// logging (add "server stopped" logging entry)
|
// logging (add "server stopped" logging entry)
|
||||||
Logging.AddServerStopped();
|
Logging.AddServerStopped();
|
||||||
|
|
||||||
|
// emit stopped signal
|
||||||
|
emit Stopped();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -224,6 +224,10 @@ protected:
|
||||||
// server list
|
// server list
|
||||||
CServerListManager ServerListManager;
|
CServerListManager ServerListManager;
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void Started();
|
||||||
|
void Stopped();
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
void OnTimer();
|
void OnTimer();
|
||||||
void OnSendProtMessage ( int iChID, CVector<uint8_t> vecMessage );
|
void OnSendProtMessage ( int iChID, CVector<uint8_t> vecMessage );
|
||||||
|
|
Loading…
Reference in a new issue