!111 修复了由于DBus托盘服务注册晚导致托盘图标不显示的问题
From: @liubuguiii Reviewed-by: @tangjie02 Signed-off-by: @tangjie02
This commit is contained in:
commit
01dac6adf5
214
0011-fix-tray-icon-Fixed-an-issue-where-the-tray-icon-was.patch
Normal file
214
0011-fix-tray-icon-Fixed-an-issue-where-the-tray-icon-was.patch
Normal file
@ -0,0 +1,214 @@
|
||||
From 5160a4eab524c2208ef3f4743331a762f7f50ca7 Mon Sep 17 00:00:00 2001
|
||||
From: liuxinhao <liuxinhao@kylinsec.com.cn>
|
||||
Date: Fri, 15 Sep 2023 11:18:58 +0800
|
||||
Subject: [PATCH] fix(tray icon): Fixed an issue where the tray icon was not
|
||||
displayed due to late registration of DBus tray service
|
||||
MIME-Version: 1.0
|
||||
Content-Type: text/plain; charset=UTF-8
|
||||
Content-Transfer-Encoding: 8bit
|
||||
|
||||
- 修复了由于DBus托盘服务注册晚导致托盘图标不显示的问题
|
||||
|
||||
Closes #14006,#11856
|
||||
---
|
||||
plugins/audio/src/system-tray/main.cpp | 63 ++++++++----------------
|
||||
plugins/network/src/tray/main.cpp | 67 ++++++++++----------------
|
||||
2 files changed, 47 insertions(+), 83 deletions(-)
|
||||
|
||||
diff --git a/plugins/audio/src/system-tray/main.cpp b/plugins/audio/src/system-tray/main.cpp
|
||||
index 169eb4d..431e6c9 100644
|
||||
--- a/plugins/audio/src/system-tray/main.cpp
|
||||
+++ b/plugins/audio/src/system-tray/main.cpp
|
||||
@@ -20,13 +20,13 @@
|
||||
#include <QApplication>
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
+#include <QDBusServiceWatcher>
|
||||
#include <QDBusReply>
|
||||
#include <QDateTime>
|
||||
#include <QFile>
|
||||
-#include <QTimer>
|
||||
#include <QTranslator>
|
||||
|
||||
-#define MAX_WAIT_COUNTS 10
|
||||
+#define DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER "org.kde.StatusNotifierWatcher"
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
@@ -39,56 +39,35 @@ int main(int argc, char *argv[])
|
||||
if (translator.load(QLocale(), "kiran-cpanel-audio", ".", TRANSLATE_PREFIX, ".qm"))
|
||||
{
|
||||
a.installTranslator(&translator);
|
||||
- KLOG_INFO() << "installTranslator load:" << a.installTranslator(&translator);
|
||||
+ KLOG_DEBUG() << "installTranslator load:" << a.installTranslator(&translator);
|
||||
}
|
||||
else
|
||||
- KLOG_INFO() << "installTranslator failed";
|
||||
+ {
|
||||
+ KLOG_WARNING() << "installTranslator failed";
|
||||
+ }
|
||||
|
||||
AudioSystemTray *audioSystemTray = nullptr;
|
||||
|
||||
- QTimer timer;
|
||||
- timer.setInterval(1000);
|
||||
- int waitCounts = 0;
|
||||
- QObject::connect(&timer, &QTimer::timeout, [&]()
|
||||
- {
|
||||
- if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher"))
|
||||
- {
|
||||
- KLOG_INFO() << "org.kde.StatusNotifierWatcher isServiceRegistered" << QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher");
|
||||
- KLOG_INFO() << "SessionDaemon.Audio isServiceRegistered " << QDBusConnection::sessionBus().interface()->isServiceRegistered("com.kylinsec.Kiran.SessionDaemon.Audio");
|
||||
- KLOG_INFO() << "QSystemTrayIcon::isSystemTrayAvailable():" << QSystemTrayIcon::isSystemTrayAvailable();
|
||||
-
|
||||
- KLOG_INFO() << "init AudioSystemTray";
|
||||
- audioSystemTray = new AudioSystemTray;
|
||||
- KLOG_INFO() << "wait loop : new AudioSystemTray sucess ";
|
||||
- KLOG_INFO() << "currentDateTime:"<<QDateTime::currentDateTime();
|
||||
- timer.stop();
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- waitCounts++;
|
||||
- KLOG_INFO() << "waitCounts:" << waitCounts;
|
||||
- if (waitCounts > MAX_WAIT_COUNTS)
|
||||
- {
|
||||
- KLOG_INFO() << "超过等待次数,程序退出";
|
||||
- return QApplication::quit();
|
||||
- }
|
||||
- } });
|
||||
-
|
||||
- if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher"))
|
||||
+ if (QDBusConnection::sessionBus().interface()->isServiceRegistered(DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER))
|
||||
{
|
||||
- KLOG_INFO() << "org.kde.StatusNotifierWatcher isServiceRegistered" << QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher");
|
||||
- KLOG_INFO() << "SessionDaemon.Audio isServiceRegistered " << QDBusConnection::sessionBus().interface()->isServiceRegistered("com.kylinsec.Kiran.SessionDaemon.Audio");
|
||||
- KLOG_INFO() << "QSystemTrayIcon::isSystemTrayAvailable():" << QSystemTrayIcon::isSystemTrayAvailable();
|
||||
-
|
||||
- KLOG_INFO() << "init AudioSystemTray";
|
||||
+ KLOG_DEBUG() << DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER << "is registered,create audio tray icon";
|
||||
audioSystemTray = new AudioSystemTray;
|
||||
- KLOG_INFO() << "new AudioSystemTray sucess ";
|
||||
}
|
||||
else
|
||||
{
|
||||
- timer.start();
|
||||
- KLOG_INFO() << "start wait loop";
|
||||
- KLOG_INFO() << "currentDateTime:" << QDateTime::currentDateTime();
|
||||
+ KLOG_WARNING() << DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER << "is not registered,wait";
|
||||
+ QDBusServiceWatcher* dbusServiceWatcher = new QDBusServiceWatcher;
|
||||
+ dbusServiceWatcher->setConnection(QDBusConnection::sessionBus());
|
||||
+ dbusServiceWatcher->addWatchedService(DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER);
|
||||
+ QObject::connect(dbusServiceWatcher, &QDBusServiceWatcher::serviceRegistered,
|
||||
+ [&dbusServiceWatcher, &audioSystemTray](const QString& service)
|
||||
+ {
|
||||
+ if (service != DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER)
|
||||
+ return;
|
||||
+ KLOG_INFO() << DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER << "is registered,create audio tray icon";
|
||||
+ audioSystemTray = new AudioSystemTray;
|
||||
+ dbusServiceWatcher->removeWatchedService(DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER);
|
||||
+ });
|
||||
}
|
||||
return QApplication::exec();
|
||||
}
|
||||
diff --git a/plugins/network/src/tray/main.cpp b/plugins/network/src/tray/main.cpp
|
||||
index 26b04c7..2a62bf1 100644
|
||||
--- a/plugins/network/src/tray/main.cpp
|
||||
+++ b/plugins/network/src/tray/main.cpp
|
||||
@@ -17,67 +17,52 @@
|
||||
#include <QApplication>
|
||||
#include <QDBusConnection>
|
||||
#include <QDBusConnectionInterface>
|
||||
-#include <QTimer>
|
||||
+#include <QDBusServiceWatcher>
|
||||
#include <QTranslator>
|
||||
#include "config.h"
|
||||
#include "network-tray.h"
|
||||
-#define MAX_WAIT_COUNTS 10
|
||||
|
||||
-int main(int argc, char *argv[]) {
|
||||
+#define DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER "org.kde.StatusNotifierWatcher"
|
||||
+
|
||||
+int main(int argc, char* argv[])
|
||||
+{
|
||||
KiranApplication a(argc, argv);
|
||||
klog_qt5_init("", "kylinsec-session", "kiran-cpanel-network", "kiran-cpanel-network");
|
||||
|
||||
KLOG_INFO() << "autostart!";
|
||||
+
|
||||
QTranslator translator;
|
||||
if (translator.load(QLocale(), "kiran-cpanel-network", ".", TRANSLATE_PREFIX, ".qm"))
|
||||
{
|
||||
a.installTranslator(&translator);
|
||||
- KLOG_INFO() << "installTranslator load:" << a.installTranslator(&translator);
|
||||
+ KLOG_DEBUG() << "installTranslator load:" << a.installTranslator(&translator);
|
||||
}
|
||||
else
|
||||
- KLOG_INFO() << "installTranslator failed";
|
||||
-
|
||||
- NetworkTray *tray = nullptr;
|
||||
- QTimer timer;
|
||||
- timer.setInterval(1000);
|
||||
- int waitCounts = 0;
|
||||
- QObject::connect(&timer, &QTimer::timeout, [&]() {
|
||||
- if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher"))
|
||||
- {
|
||||
- KLOG_INFO() << "org.kde.StatusNotifierWatcher isServiceRegistered" << QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher");
|
||||
- KLOG_INFO() << "QSystemTrayIcon::isSystemTrayAvailable():" << QSystemTrayIcon::isSystemTrayAvailable();
|
||||
-
|
||||
- KLOG_INFO() << "init NetworkTray";
|
||||
- tray = new NetworkTray;
|
||||
- KLOG_INFO() << "wait loop : new NetworkTray sucess ";
|
||||
- KLOG_INFO() << "currentDateTime:"<<QDateTime::currentDateTime();
|
||||
- timer.stop();
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- waitCounts++;
|
||||
- KLOG_INFO() << "waitCounts:" << waitCounts;
|
||||
- if (waitCounts > MAX_WAIT_COUNTS)
|
||||
- {
|
||||
- KLOG_INFO() << "超过等待次数,程序退出";
|
||||
- return QApplication::quit();
|
||||
- }
|
||||
- }
|
||||
- });
|
||||
+ {
|
||||
+ KLOG_WARNING() << "installTranslator failed";
|
||||
+ }
|
||||
|
||||
- if (QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher"))
|
||||
+ NetworkTray* tray = nullptr;
|
||||
+ if (QDBusConnection::sessionBus().interface()->isServiceRegistered(DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER))
|
||||
{
|
||||
- KLOG_INFO() << "org.kde.StatusNotifierWatcher isServiceRegistered" << QDBusConnection::sessionBus().interface()->isServiceRegistered("org.kde.StatusNotifierWatcher");
|
||||
- KLOG_INFO() << "QSystemTrayIcon::isSystemTrayAvailable():" << QSystemTrayIcon::isSystemTrayAvailable();
|
||||
- KLOG_INFO() << "init NetworkTray";
|
||||
+ KLOG_DEBUG() << DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER << "is registered,create network tray icon";
|
||||
tray = new NetworkTray;
|
||||
- KLOG_INFO() << "new NetworkTray sucess ";
|
||||
}
|
||||
else
|
||||
{
|
||||
- timer.start();
|
||||
- KLOG_INFO() << "start wait loop";
|
||||
- KLOG_INFO() << "currentDateTime:" << QDateTime::currentDateTime();
|
||||
+ KLOG_WARNING() << DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER << "is not registered,wait";
|
||||
+ QDBusServiceWatcher* dbusServiceWatcher = new QDBusServiceWatcher;
|
||||
+ dbusServiceWatcher->setConnection(QDBusConnection::sessionBus());
|
||||
+ dbusServiceWatcher->addWatchedService(DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER);
|
||||
+ QObject::connect(dbusServiceWatcher, &QDBusServiceWatcher::serviceRegistered,
|
||||
+ [&dbusServiceWatcher, &tray](const QString& service)
|
||||
+ {
|
||||
+ if (service != DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER)
|
||||
+ return;
|
||||
+ KLOG_INFO() << DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER << "is registered,create network tray icon";
|
||||
+ tray = new NetworkTray;
|
||||
+ dbusServiceWatcher->removeWatchedService(DBUS_SERVICE_KDE_STATUS_NOTIFIER_WATCHER);
|
||||
+ });
|
||||
}
|
||||
|
||||
return QApplication::exec();
|
||||
--
|
||||
2.33.0
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
Name: kiran-control-panel
|
||||
Version: 2.5.5
|
||||
Release: 8%{?dist}
|
||||
Release: 9%{?dist}
|
||||
Summary: Kiran Control Panel
|
||||
Summary(zh_CN): Kiran桌面控制面板
|
||||
|
||||
@ -16,7 +16,8 @@ Patch0006: 0006-feature-network-When-the-gateway-setting-item-is-0.0.patch
|
||||
Patch0007: 0007-fix-audio-Fix-parsing-error-when-json-contains-Chine.patch
|
||||
Patch0008: 0008-fix-audio-tray-Fixed-an-issue-where-the-volume-tray-.patch
|
||||
Patch0009: 0009-fix-audio-The-Sink-Source-device-list-displays-only-.patch
|
||||
Patch0010: 0010-fix-kiran-control-panel-fits-the-Qt5.9.7-interface.patch
|
||||
Patch0010: 0010-fix-kiran-control-panel-fits-the-Qt5.9.7-interface.patch
|
||||
Patch0011: 0011-fix-tray-icon-Fixed-an-issue-where-the-tray-icon-was.patch
|
||||
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: cmake >= 3.2
|
||||
@ -173,6 +174,9 @@ make %{?_smp_mflags}
|
||||
rm -rf %{buildroot}
|
||||
|
||||
%changelog
|
||||
* Fri Sep 15 2023 liuxinhao <liuxinhao@kylinsec.com.cn> - 2.5.5-9
|
||||
- KYOS-F: Fixed an issue where the tray icon was not displayed due to late registration of DBus tray service(#14006,#11856)
|
||||
|
||||
* Tue Sep 12 2023 yinhongchang <yinhongchang@kylinsec.com.cn> - 2.5.5-8
|
||||
- KYOS-F: fits the Qt5.9.7 interface(#15019)
|
||||
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user