mirror of
https://github.com/Ximi1970/systray-x.git
synced 2025-11-10 15:26:09 +01:00
Fix menu crash
This commit is contained in:
@@ -52,7 +52,8 @@ Preferences::Preferences( QObject *parent ) : QObject( parent )
|
|||||||
m_start_minimized = false;
|
m_start_minimized = false;
|
||||||
m_minimize_on_close = true;
|
m_minimize_on_close = true;
|
||||||
|
|
||||||
m_debug = false;
|
// m_debug = false;
|
||||||
|
m_debug = true;
|
||||||
|
|
||||||
m_version_major = QLatin1String( APP_VERSION_MAJOR );
|
m_version_major = QLatin1String( APP_VERSION_MAJOR );
|
||||||
m_version_minor = QLatin1String( APP_VERSION_MINOR );
|
m_version_minor = QLatin1String( APP_VERSION_MINOR );
|
||||||
|
|||||||
@@ -33,7 +33,9 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
|
|||||||
* Initialize
|
* Initialize
|
||||||
*/
|
*/
|
||||||
m_tray_icon = nullptr;
|
m_tray_icon = nullptr;
|
||||||
m_tray_icon2 = nullptr;
|
m_kde_tray_icon = nullptr;
|
||||||
|
|
||||||
|
m_tray_icon_menu = nullptr;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup preferences storage
|
* Setup preferences storage
|
||||||
@@ -67,13 +69,6 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
|
|||||||
*/
|
*/
|
||||||
m_pref_dialog = new PreferencesDialog( m_link, m_preferences );
|
m_pref_dialog = new PreferencesDialog( m_link, m_preferences );
|
||||||
|
|
||||||
/*
|
|
||||||
* Setup tray icon
|
|
||||||
*/
|
|
||||||
createMenu();
|
|
||||||
// showTrayIcon();
|
|
||||||
showTrayIconKDE();
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Setup debug window
|
* Setup debug window
|
||||||
*/
|
*/
|
||||||
@@ -86,9 +81,6 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
|
|||||||
* Connect debug link signals
|
* Connect debug link signals
|
||||||
*/
|
*/
|
||||||
connect( m_link, &SysTrayXLink::signalUnreadMail, m_debug, &DebugWidget::slotUnreadMail );
|
connect( m_link, &SysTrayXLink::signalUnreadMail, m_debug, &DebugWidget::slotUnreadMail );
|
||||||
// connect( m_link, &SysTrayXLink::signalUnreadMail, this, &SysTrayX::slotUnreadMail );
|
|
||||||
// connect( m_win_ctrl, &WindowCtrl::signalShow, this, &SysTrayX::slotShow );
|
|
||||||
// connect( m_win_ctrl, &WindowCtrl::signalHide, this, &SysTrayX::slotHide );
|
|
||||||
|
|
||||||
connect( this, &SysTrayX::signalConsole, m_debug, &DebugWidget::slotConsole );
|
connect( this, &SysTrayX::signalConsole, m_debug, &DebugWidget::slotConsole );
|
||||||
connect( m_preferences, &Preferences::signalConsole, m_debug, &DebugWidget::slotConsole );
|
connect( m_preferences, &Preferences::signalConsole, m_debug, &DebugWidget::slotConsole );
|
||||||
@@ -100,6 +92,9 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
|
|||||||
connect( m_debug, &DebugWidget::signalTest2ButtonClicked, m_win_ctrl, &WindowCtrl::slotWindowTest2 );
|
connect( m_debug, &DebugWidget::signalTest2ButtonClicked, m_win_ctrl, &WindowCtrl::slotWindowTest2 );
|
||||||
connect( m_debug, &DebugWidget::signalTest3ButtonClicked, m_win_ctrl, &WindowCtrl::slotWindowTest3 );
|
connect( m_debug, &DebugWidget::signalTest3ButtonClicked, m_win_ctrl, &WindowCtrl::slotWindowTest3 );
|
||||||
|
|
||||||
|
connect( m_win_ctrl, &WindowCtrl::signalHideDefaultIconChange, this, &SysTrayX::slotSelectIconObject );
|
||||||
|
connect( this, &SysTrayX::signalConsole, m_debug, &DebugWidget::slotConsole );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connect preferences signals
|
* Connect preferences signals
|
||||||
*/
|
*/
|
||||||
@@ -134,6 +129,8 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
|
|||||||
connect( m_preferences, &Preferences::signalMinimizeOnCloseChange, m_link, &SysTrayXLink::slotMinimizeOnCloseChange );
|
connect( m_preferences, &Preferences::signalMinimizeOnCloseChange, m_link, &SysTrayXLink::slotMinimizeOnCloseChange );
|
||||||
connect( m_preferences, &Preferences::signalDebugChange, m_link, &SysTrayXLink::slotDebugChange );
|
connect( m_preferences, &Preferences::signalDebugChange, m_link, &SysTrayXLink::slotDebugChange );
|
||||||
|
|
||||||
|
connect( m_preferences, &Preferences::signalHideDefaultIconChange, this, &SysTrayX::slotSelectIconObjectPref );
|
||||||
|
|
||||||
connect( m_preferences, &Preferences::signalDebugChange, m_debug, &DebugWidget::slotDebugChange );
|
connect( m_preferences, &Preferences::signalDebugChange, m_debug, &DebugWidget::slotDebugChange );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@@ -141,6 +138,7 @@ SysTrayX::SysTrayX( QObject *parent ) : QObject( parent )
|
|||||||
*/
|
*/
|
||||||
connect( m_link, &SysTrayXLink::signalAddOnShutdown, this, &SysTrayX::slotAddOnShutdown );
|
connect( m_link, &SysTrayXLink::signalAddOnShutdown, this, &SysTrayX::slotAddOnShutdown );
|
||||||
connect( m_link, &SysTrayXLink::signalWindowState, m_win_ctrl, &WindowCtrl::slotWindowState );
|
connect( m_link, &SysTrayXLink::signalWindowState, m_win_ctrl, &WindowCtrl::slotWindowState );
|
||||||
|
connect( m_link, &SysTrayXLink::signalKdeIntegration, this, &SysTrayX::slotSelectIconObject );
|
||||||
connect( m_link, &SysTrayXLink::signalTitle, m_win_ctrl, &WindowCtrl::slotWindowTitle );
|
connect( m_link, &SysTrayXLink::signalTitle, m_win_ctrl, &WindowCtrl::slotWindowTitle );
|
||||||
connect( m_link, &SysTrayXLink::signalVersion, this, &SysTrayX::slotVersion );
|
connect( m_link, &SysTrayXLink::signalVersion, this, &SysTrayX::slotVersion );
|
||||||
|
|
||||||
@@ -204,13 +202,31 @@ void SysTrayX::createMenu()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Destroy the icon menu
|
||||||
|
*/
|
||||||
|
void SysTrayX::destroyMenu()
|
||||||
|
{
|
||||||
|
if( m_tray_icon_menu )
|
||||||
|
{
|
||||||
|
delete m_tray_icon_menu;
|
||||||
|
m_tray_icon_menu = nullptr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Show / create tray icon
|
* Show / create tray icon
|
||||||
*/
|
*/
|
||||||
void SysTrayX::showTrayIcon()
|
void SysTrayX::showTrayIcon()
|
||||||
{
|
{
|
||||||
if( !m_tray_icon )
|
if( !m_tray_icon )
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Setup tray menu
|
||||||
|
*/
|
||||||
|
createMenu();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create system tray icon
|
* Create system tray icon
|
||||||
*/
|
*/
|
||||||
@@ -286,6 +302,11 @@ void SysTrayX::hideTrayIcon()
|
|||||||
*/
|
*/
|
||||||
delete m_tray_icon;
|
delete m_tray_icon;
|
||||||
m_tray_icon = nullptr;
|
m_tray_icon = nullptr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Destroy the mennu
|
||||||
|
*/
|
||||||
|
destroyMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -293,46 +314,51 @@ void SysTrayX::hideTrayIcon()
|
|||||||
/*
|
/*
|
||||||
* Show / create tray icon
|
* Show / create tray icon
|
||||||
*/
|
*/
|
||||||
void SysTrayX::showTrayIconKDE()
|
void SysTrayX::showKdeTrayIcon()
|
||||||
{
|
{
|
||||||
if( !m_tray_icon2 )
|
if( !m_kde_tray_icon )
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* Setup tray menu
|
||||||
|
*/
|
||||||
|
createMenu();
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Create system tray icon
|
* Create system tray icon
|
||||||
*/
|
*/
|
||||||
m_tray_icon2 = new SysTrayXStatusNotifier( m_link, m_preferences );
|
m_kde_tray_icon = new SysTrayXStatusNotifier( m_link, m_preferences );
|
||||||
m_tray_icon2->setStandardActionsEnabled( false );
|
m_kde_tray_icon->setStandardActionsEnabled( false );
|
||||||
m_tray_icon2->setContextMenu( m_tray_icon_menu );
|
m_kde_tray_icon->setContextMenu( m_tray_icon_menu );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set default icon
|
* Set default icon
|
||||||
*/
|
*/
|
||||||
m_tray_icon2->setDefaultIconMime( m_preferences->getDefaultIconMime() );
|
m_kde_tray_icon->setDefaultIconMime( m_preferences->getDefaultIconMime() );
|
||||||
m_tray_icon2->setDefaultIconData( m_preferences->getDefaultIconData() );
|
m_kde_tray_icon->setDefaultIconData( m_preferences->getDefaultIconData() );
|
||||||
m_tray_icon2->setDefaultIconType( m_preferences->getDefaultIconType() );
|
m_kde_tray_icon->setDefaultIconType( m_preferences->getDefaultIconType() );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Set icon
|
* Set icon
|
||||||
*/
|
*/
|
||||||
m_tray_icon2->setIconMime( m_preferences->getIconMime() );
|
m_kde_tray_icon->setIconMime( m_preferences->getIconMime() );
|
||||||
m_tray_icon2->setIconData( m_preferences->getIconData() );
|
m_kde_tray_icon->setIconData( m_preferences->getIconData() );
|
||||||
m_tray_icon2->setIconType( m_preferences->getIconType() );
|
m_kde_tray_icon->setIconType( m_preferences->getIconType() );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Connect the world
|
* Connect the world
|
||||||
*/
|
*/
|
||||||
connect( m_tray_icon2, &SysTrayXStatusNotifier::signalShowHide, m_win_ctrl, &WindowCtrl::slotShowHide );
|
connect( m_kde_tray_icon, &SysTrayXStatusNotifier::signalShowHide, m_win_ctrl, &WindowCtrl::slotShowHide );
|
||||||
|
|
||||||
connect( m_preferences, &Preferences::signalDefaultIconTypeChange, m_tray_icon2, &SysTrayXStatusNotifier::slotDefaultIconTypeChange );
|
connect( m_preferences, &Preferences::signalDefaultIconTypeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotDefaultIconTypeChange );
|
||||||
connect( m_preferences, &Preferences::signalDefaultIconDataChange, m_tray_icon2, &SysTrayXStatusNotifier::slotDefaultIconDataChange );
|
connect( m_preferences, &Preferences::signalDefaultIconDataChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotDefaultIconDataChange );
|
||||||
connect( m_preferences, &Preferences::signalHideDefaultIconChange, m_tray_icon2, &SysTrayXStatusNotifier::slotHideDefaultIconChange );
|
connect( m_preferences, &Preferences::signalHideDefaultIconChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotHideDefaultIconChange );
|
||||||
connect( m_preferences, &Preferences::signalIconTypeChange, m_tray_icon2, &SysTrayXStatusNotifier::slotIconTypeChange );
|
connect( m_preferences, &Preferences::signalIconTypeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotIconTypeChange );
|
||||||
connect( m_preferences, &Preferences::signalIconDataChange, m_tray_icon2, &SysTrayXStatusNotifier::slotIconDataChange );
|
connect( m_preferences, &Preferences::signalIconDataChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotIconDataChange );
|
||||||
connect( m_preferences, &Preferences::signalShowNumberChange, m_tray_icon2, &SysTrayXStatusNotifier::slotShowNumberChange );
|
connect( m_preferences, &Preferences::signalShowNumberChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotShowNumberChange );
|
||||||
connect( m_preferences, &Preferences::signalNumberColorChange, m_tray_icon2, &SysTrayXStatusNotifier::slotNumberColorChange );
|
connect( m_preferences, &Preferences::signalNumberColorChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberColorChange );
|
||||||
connect( m_preferences, &Preferences::signalNumberSizeChange, m_tray_icon2, &SysTrayXStatusNotifier::slotNumberSizeChange );
|
connect( m_preferences, &Preferences::signalNumberSizeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberSizeChange );
|
||||||
|
|
||||||
connect( m_link, &SysTrayXLink::signalUnreadMail, m_tray_icon2, &SysTrayXStatusNotifier::slotSetUnreadMail );
|
connect( m_link, &SysTrayXLink::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -340,73 +366,72 @@ void SysTrayX::showTrayIconKDE()
|
|||||||
/*
|
/*
|
||||||
* Hide / remove tray icon
|
* Hide / remove tray icon
|
||||||
*/
|
*/
|
||||||
void SysTrayX::hideTrayIconKDE()
|
void SysTrayX::hideKdeTrayIcon()
|
||||||
{
|
{
|
||||||
if( m_tray_icon2 )
|
if( m_kde_tray_icon )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Disconnect all signals
|
* Disconnect all signals
|
||||||
*/
|
*/
|
||||||
disconnect( m_tray_icon2, &SysTrayXStatusNotifier::signalShowHide, m_win_ctrl, &WindowCtrl::slotShowHide );
|
disconnect( m_kde_tray_icon, &SysTrayXStatusNotifier::signalShowHide, m_win_ctrl, &WindowCtrl::slotShowHide );
|
||||||
|
|
||||||
disconnect( m_preferences, &Preferences::signalDefaultIconTypeChange, m_tray_icon2, &SysTrayXStatusNotifier::slotDefaultIconTypeChange );
|
disconnect( m_preferences, &Preferences::signalDefaultIconTypeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotDefaultIconTypeChange );
|
||||||
disconnect( m_preferences, &Preferences::signalDefaultIconDataChange, m_tray_icon2, &SysTrayXStatusNotifier::slotDefaultIconDataChange );
|
disconnect( m_preferences, &Preferences::signalDefaultIconDataChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotDefaultIconDataChange );
|
||||||
disconnect( m_preferences, &Preferences::signalHideDefaultIconChange, m_tray_icon2, &SysTrayXStatusNotifier::slotHideDefaultIconChange );
|
disconnect( m_preferences, &Preferences::signalHideDefaultIconChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotHideDefaultIconChange );
|
||||||
disconnect( m_preferences, &Preferences::signalIconTypeChange, m_tray_icon2, &SysTrayXStatusNotifier::slotIconTypeChange );
|
disconnect( m_preferences, &Preferences::signalIconTypeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotIconTypeChange );
|
||||||
disconnect( m_preferences, &Preferences::signalIconDataChange, m_tray_icon2, &SysTrayXStatusNotifier::slotIconDataChange );
|
disconnect( m_preferences, &Preferences::signalIconDataChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotIconDataChange );
|
||||||
disconnect( m_preferences, &Preferences::signalShowNumberChange, m_tray_icon2, &SysTrayXStatusNotifier::slotShowNumberChange );
|
disconnect( m_preferences, &Preferences::signalShowNumberChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotShowNumberChange );
|
||||||
disconnect( m_preferences, &Preferences::signalNumberColorChange, m_tray_icon2, &SysTrayXStatusNotifier::slotNumberColorChange );
|
disconnect( m_preferences, &Preferences::signalNumberColorChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberColorChange );
|
||||||
disconnect( m_preferences, &Preferences::signalNumberSizeChange, m_tray_icon2, &SysTrayXStatusNotifier::slotNumberSizeChange );
|
disconnect( m_preferences, &Preferences::signalNumberSizeChange, m_kde_tray_icon, &SysTrayXStatusNotifier::slotNumberSizeChange );
|
||||||
|
|
||||||
disconnect( m_link, &SysTrayXLink::signalUnreadMail, m_tray_icon2, &SysTrayXStatusNotifier::slotSetUnreadMail );
|
disconnect( m_link, &SysTrayXLink::signalUnreadMail, m_kde_tray_icon, &SysTrayXStatusNotifier::slotSetUnreadMail );
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Remove the notifier icon
|
* Remove the notifier icon
|
||||||
*/
|
*/
|
||||||
delete m_tray_icon2;
|
delete m_kde_tray_icon;
|
||||||
m_tray_icon2 = nullptr;
|
m_kde_tray_icon = nullptr;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Destroy the mennu
|
||||||
|
*/
|
||||||
|
m_tray_icon_menu = nullptr;
|
||||||
|
//destroyMenu();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Handle icon show signal
|
* Select the prefered icon
|
||||||
*/
|
*/
|
||||||
void SysTrayX::slotShow()
|
void SysTrayX::slotSelectIconObjectPref()
|
||||||
{
|
{
|
||||||
showTrayIcon();
|
slotSelectIconObject( m_preferences->getHideDefaultIcon() );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SysTrayX::slotSelectIconObject( bool state )
|
||||||
/*
|
|
||||||
* Handle icon hide signal
|
|
||||||
*/
|
|
||||||
void SysTrayX::slotHide()
|
|
||||||
{
|
{
|
||||||
hideTrayIcon();
|
if( state )
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Hndle the unread mail signal
|
|
||||||
*/
|
|
||||||
void SysTrayX::slotUnreadMail( int unread_mail )
|
|
||||||
{
|
|
||||||
if( m_preferences->getDefaultIconType() == Preferences::PREF_DEFAULT_ICON_HIDE )
|
|
||||||
{
|
{
|
||||||
if( unread_mail > 0 )
|
// Use the KDE icon object
|
||||||
{
|
emit signalConsole("Enable KDE icon");
|
||||||
showTrayIcon();
|
|
||||||
}
|
// Remove the Qt tray icon
|
||||||
else
|
hideTrayIcon();
|
||||||
{
|
|
||||||
hideTrayIcon();
|
// Setup KDE tray icon
|
||||||
}
|
showKdeTrayIcon();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
showTrayIcon();
|
// Use default Qt system tray icon
|
||||||
|
emit signalConsole("Enable Qt icon");
|
||||||
|
|
||||||
|
// Remove KDE trsy icon
|
||||||
|
hideKdeTrayIcon();
|
||||||
|
|
||||||
|
// Setup the Qt tray icon
|
||||||
|
showTrayIcon();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -501,9 +526,9 @@ void SysTrayX::slotVersion( QString version )
|
|||||||
QSystemTrayIcon::Warning );
|
QSystemTrayIcon::Warning );
|
||||||
}
|
}
|
||||||
|
|
||||||
if( m_tray_icon2 )
|
if( m_kde_tray_icon )
|
||||||
{
|
{
|
||||||
m_tray_icon2->showMessage("SysTray-X Warning", "Version mismatch addon and app", ":/files/icons/dialog-warning.png" );
|
m_kde_tray_icon->showMessage("SysTray-X Warning", "Version mismatch addon and app", ":/files/icons/dialog-warning.png" );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -59,6 +59,11 @@ class SysTrayX : public QObject
|
|||||||
*/
|
*/
|
||||||
void createMenu();
|
void createMenu();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief destroyMenu. Destroy the menu.
|
||||||
|
*/
|
||||||
|
void destroyMenu();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief showTrayIcon. Create and show the icon.
|
* @brief showTrayIcon. Create and show the icon.
|
||||||
*/
|
*/
|
||||||
@@ -70,14 +75,14 @@ class SysTrayX : public QObject
|
|||||||
void hideTrayIcon();
|
void hideTrayIcon();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief showTrayIconKDE. Create and show the KDE icon.
|
* @brief showKdeTrayIcon. Create and show the KDE icon.
|
||||||
*/
|
*/
|
||||||
void showTrayIconKDE();
|
void showKdeTrayIcon();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief hideTrayIcon. Hide and destroy the KDE icon.
|
* @brief hideKdeTrayIcon. Hide and destroy the KDE icon.
|
||||||
*/
|
*/
|
||||||
void hideTrayIconKDE();
|
void hideKdeTrayIcon();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
@@ -102,15 +107,13 @@ class SysTrayX : public QObject
|
|||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
|
|
||||||
void slotShow();
|
|
||||||
void slotHide();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief slotUnreadMail. Handle unread mail signal.
|
* @brief slotSelectIconObject. Select the prefered icon.
|
||||||
*
|
*
|
||||||
* @param unread_mail Number of unread mail.
|
* @param state The state.
|
||||||
*/
|
*/
|
||||||
void slotUnreadMail( int unread_mail );
|
void slotSelectIconObjectPref();
|
||||||
|
void slotSelectIconObject( bool state );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief slotAddOnShutdown. Handle shutdown request from the add-on.
|
* @brief slotAddOnShutdown. Handle shutdown request from the add-on.
|
||||||
@@ -165,9 +168,9 @@ class SysTrayX : public QObject
|
|||||||
SysTrayXIcon* m_tray_icon;
|
SysTrayXIcon* m_tray_icon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief m_tray_icon2. Pointer to the KDE system tray icon.
|
* @brief m_kde_tray_icon. Pointer to the KDE system tray icon.
|
||||||
*/
|
*/
|
||||||
SysTrayXStatusNotifier* m_tray_icon2;
|
SysTrayXStatusNotifier* m_kde_tray_icon;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief m_tray_icon_menu. Pointer to the tray icon menu.
|
* @brief m_tray_icon_menu. Pointer to the tray icon menu.
|
||||||
|
|||||||
@@ -262,6 +262,13 @@ void SysTrayXLink::DecodeMessage( const QByteArray& message )
|
|||||||
{
|
{
|
||||||
QJsonObject jsonObject = jsonResponse.object();
|
QJsonObject jsonObject = jsonResponse.object();
|
||||||
|
|
||||||
|
/*
|
||||||
|
QStringList list = jsonObject.keys();
|
||||||
|
for( int i = 0 ; i < list.length() ; ++i )
|
||||||
|
{
|
||||||
|
emit signalConsole( QString("Message %1").arg(list.at(i)) );
|
||||||
|
}
|
||||||
|
*/
|
||||||
if( jsonObject.contains( "unreadMail" ) && jsonObject[ "unreadMail" ].isDouble() )
|
if( jsonObject.contains( "unreadMail" ) && jsonObject[ "unreadMail" ].isDouble() )
|
||||||
{
|
{
|
||||||
int unreadMail = jsonObject[ "unreadMail" ].toInt();
|
int unreadMail = jsonObject[ "unreadMail" ].toInt();
|
||||||
@@ -331,6 +338,18 @@ void SysTrayXLink::DecodeMessage( const QByteArray& message )
|
|||||||
emit signalWindowState( window_state );
|
emit signalWindowState( window_state );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( jsonObject.contains( "hideDefaultIcon" ) && jsonObject[ "hideDefaultIcon" ].isBool() )
|
||||||
|
{
|
||||||
|
bool hide_default_icon = jsonObject[ "hideDefaultIcon" ].toBool();
|
||||||
|
|
||||||
|
emit signalConsole(QString("hideDefaultIcon %1").arg(hide_default_icon));
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Signal the KDE integration or hide default icon
|
||||||
|
*/
|
||||||
|
emit signalKdeIntegration( hide_default_icon );
|
||||||
|
}
|
||||||
|
|
||||||
if( jsonObject.contains( "platformInfo" ) && jsonObject[ "platformInfo" ].isObject() )
|
if( jsonObject.contains( "platformInfo" ) && jsonObject[ "platformInfo" ].isObject() )
|
||||||
{
|
{
|
||||||
DecodePlatform( jsonObject[ "platformInfo" ].toObject() );
|
DecodePlatform( jsonObject[ "platformInfo" ].toObject() );
|
||||||
@@ -343,6 +362,8 @@ void SysTrayXLink::DecodeMessage( const QByteArray& message )
|
|||||||
|
|
||||||
if( jsonObject.contains( "preferences" ) && jsonObject[ "preferences" ].isObject() )
|
if( jsonObject.contains( "preferences" ) && jsonObject[ "preferences" ].isObject() )
|
||||||
{
|
{
|
||||||
|
emit signalConsole( QString("preferences") );
|
||||||
|
|
||||||
DecodePreferences( jsonObject[ "preferences" ].toObject() );
|
DecodePreferences( jsonObject[ "preferences" ].toObject() );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -481,6 +502,8 @@ void SysTrayXLink::DecodePreferences( const QJsonObject& pref )
|
|||||||
{
|
{
|
||||||
bool hide_default_icon = pref[ "hideDefaultIcon" ].toString() == "true";
|
bool hide_default_icon = pref[ "hideDefaultIcon" ].toString() == "true";
|
||||||
|
|
||||||
|
emit signalConsole(QString("hideDefaultIcon %1").arg(hide_default_icon));
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Store the new start minimized state
|
* Store the new start minimized state
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -181,6 +181,13 @@ class SysTrayXLink : public QObject
|
|||||||
*/
|
*/
|
||||||
void signalWindowState( int state );
|
void signalWindowState( int state );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief signalKdeIntegration. Signal KDE integration (and use the KStatusNotifierItem icon)
|
||||||
|
*
|
||||||
|
* @param state The prefered state
|
||||||
|
*/
|
||||||
|
void signalKdeIntegration( bool state );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief signalUnreadMail. Signal numder of unread mails.
|
* @brief signalUnreadMail. Signal numder of unread mails.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -68,6 +68,8 @@ void WindowCtrl::slotWindowTest1()
|
|||||||
|
|
||||||
// Do something.
|
// Do something.
|
||||||
|
|
||||||
|
signalHideDefaultIconChange( true );
|
||||||
|
|
||||||
// emit signalShow();
|
// emit signalShow();
|
||||||
|
|
||||||
// emit signalConsole( QString( "Found Ppid: %1" ).arg( getPpid() ) );
|
// emit signalConsole( QString( "Found Ppid: %1" ).arg( getPpid() ) );
|
||||||
@@ -91,6 +93,8 @@ void WindowCtrl::slotWindowTest2()
|
|||||||
|
|
||||||
// Do something.
|
// Do something.
|
||||||
|
|
||||||
|
signalHideDefaultIconChange( false );
|
||||||
|
|
||||||
// emit signalHide();
|
// emit signalHide();
|
||||||
|
|
||||||
// hideWindow( getWinId(), true );
|
// hideWindow( getWinId(), true );
|
||||||
|
|||||||
@@ -49,8 +49,10 @@ class WindowCtrl : public QObject
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
||||||
void signalShow();
|
// void signalShow();
|
||||||
void signalHide();
|
// void signalHide();
|
||||||
|
|
||||||
|
void signalHideDefaultIconChange(bool hide );
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
|
|
||||||
|
|||||||
@@ -3,6 +3,8 @@ var SysTrayX = {
|
|||||||
|
|
||||||
startupState: undefined,
|
startupState: undefined,
|
||||||
|
|
||||||
|
hideDefaultIcon: false,
|
||||||
|
|
||||||
platformInfo: undefined,
|
platformInfo: undefined,
|
||||||
|
|
||||||
browserInfo: undefined,
|
browserInfo: undefined,
|
||||||
@@ -31,6 +33,9 @@ SysTrayX.Messaging = {
|
|||||||
// Send version to app
|
// Send version to app
|
||||||
SysTrayX.Messaging.sendVersion();
|
SysTrayX.Messaging.sendVersion();
|
||||||
|
|
||||||
|
// Send hide default icon preference
|
||||||
|
SysTrayX.Messaging.sendHideDefaultIcon();
|
||||||
|
|
||||||
// Send preferences to app
|
// Send preferences to app
|
||||||
SysTrayX.Messaging.sendPreferences();
|
SysTrayX.Messaging.sendPreferences();
|
||||||
|
|
||||||
@@ -137,6 +142,14 @@ SysTrayX.Messaging = {
|
|||||||
SysTrayX.Link.postSysTrayXMessage({ version: SysTrayX.version });
|
SysTrayX.Link.postSysTrayXMessage({ version: SysTrayX.version });
|
||||||
},
|
},
|
||||||
|
|
||||||
|
sendHideDefaultIcon: function () {
|
||||||
|
console.debug("HideIcon:" + SysTrayX.hideDefaultIcon);
|
||||||
|
|
||||||
|
SysTrayX.Link.postSysTrayXMessage({
|
||||||
|
hideDefaultIcon: SysTrayX.hideDefaultIcon,
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
sendPreferences: function () {
|
sendPreferences: function () {
|
||||||
const getter = browser.storage.sync.get([
|
const getter = browser.storage.sync.get([
|
||||||
"debug",
|
"debug",
|
||||||
@@ -401,6 +414,10 @@ async function start() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Hide the default icon
|
||||||
|
const hideDefaultIcon = await getHideDefaultIcon();
|
||||||
|
SysTrayX.hideDefaultIcon = hideDefaultIcon;
|
||||||
|
|
||||||
// Set platform
|
// Set platform
|
||||||
SysTrayX.platformInfo = await browser.runtime
|
SysTrayX.platformInfo = await browser.runtime
|
||||||
.getPlatformInfo()
|
.getPlatformInfo()
|
||||||
|
|||||||
@@ -146,6 +146,26 @@ async function getMinimizeOnClose() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//
|
||||||
|
// Get KDE integration, default icon hide
|
||||||
|
//
|
||||||
|
async function getHideDefaultIcon() {
|
||||||
|
function getHideDefaultIconPref(result) {
|
||||||
|
const hideDefaultIcon = result.hideDefaultIcon || "false";
|
||||||
|
return hideDefaultIcon === "true";
|
||||||
|
}
|
||||||
|
|
||||||
|
function onHideDefaultIconPrefError() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
const getState = browser.storage.sync.get("hideDefaultIcon");
|
||||||
|
return await getState.then(
|
||||||
|
getHideDefaultIconPref,
|
||||||
|
onHideDefaultIconPrefError
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
// Check if the filters are for existing accounts
|
// Check if the filters are for existing accounts
|
||||||
function checkAccountFilters(filters) {
|
function checkAccountFilters(filters) {
|
||||||
let filtersChanged = false;
|
let filtersChanged = false;
|
||||||
|
|||||||
Reference in New Issue
Block a user