!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
|
Name: kiran-control-panel
|
||||||
Version: 2.5.5
|
Version: 2.5.5
|
||||||
Release: 8%{?dist}
|
Release: 9%{?dist}
|
||||||
Summary: Kiran Control Panel
|
Summary: Kiran Control Panel
|
||||||
Summary(zh_CN): Kiran桌面控制面板
|
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
|
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
|
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
|
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: gcc-c++
|
||||||
BuildRequires: cmake >= 3.2
|
BuildRequires: cmake >= 3.2
|
||||||
@ -173,6 +174,9 @@ make %{?_smp_mflags}
|
|||||||
rm -rf %{buildroot}
|
rm -rf %{buildroot}
|
||||||
|
|
||||||
%changelog
|
%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
|
* Tue Sep 12 2023 yinhongchang <yinhongchang@kylinsec.com.cn> - 2.5.5-8
|
||||||
- KYOS-F: fits the Qt5.9.7 interface(#15019)
|
- KYOS-F: fits the Qt5.9.7 interface(#15019)
|
||||||
|
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user