From 71af9a15235418719935a0596a0f4e4c891aafa2 Mon Sep 17 00:00:00 2001 From: luoqing Date: Fri, 8 Sep 2023 11:20:25 +0800 Subject: [PATCH] fix(audio-tray):Fixed an issue where the volume tray icon did not change with the volume after the default Sink was changed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修复默认Sink变更后,音量托盘图标不随音量大小改变的问题 Closed #14124 --- ...ixed-an-issue-where-the-volume-tray-.patch | 153 ++++++++++++++++++ kiran-control-panel.spec | 6 +- 2 files changed, 158 insertions(+), 1 deletion(-) create mode 100644 0008-fix-audio-tray-Fixed-an-issue-where-the-volume-tray-.patch diff --git a/0008-fix-audio-tray-Fixed-an-issue-where-the-volume-tray-.patch b/0008-fix-audio-tray-Fixed-an-issue-where-the-volume-tray-.patch new file mode 100644 index 0000000..5a72931 --- /dev/null +++ b/0008-fix-audio-tray-Fixed-an-issue-where-the-volume-tray-.patch @@ -0,0 +1,153 @@ +From 2c6ae961ff33c45c9d9d7758715af3b52d2db052 Mon Sep 17 00:00:00 2001 +From: luoqing +Date: Thu, 7 Sep 2023 19:21:39 +0800 +Subject: [PATCH] fix(audio-tray):Fixed an issue where the volume tray icon did + not change with the volume after the default Sink was changed +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +- 修复默认Sink变更后,音量托盘图标不随音量大小改变的问题 + +Closed #14124 +--- + .../src/system-tray/audio-system-tray.cpp | 27 +++++++++++-------- + .../audio/src/system-tray/audio-system-tray.h | 1 - + .../src/system-tray/volume-setting-page.cpp | 2 ++ + .../src/system-tray/volume-setting-page.h | 22 ++++++++------- + 4 files changed, 30 insertions(+), 22 deletions(-) + +diff --git a/plugins/audio/src/system-tray/audio-system-tray.cpp b/plugins/audio/src/system-tray/audio-system-tray.cpp +index 00e90f7..0c6aca6 100644 +--- a/plugins/audio/src/system-tray/audio-system-tray.cpp ++++ b/plugins/audio/src/system-tray/audio-system-tray.cpp +@@ -41,7 +41,6 @@ AudioSystemTray::AudioSystemTray(QWidget *parent) : QWidget(parent) + initVolumeSettingPage(defaultSinkPath); + initMixedSettingPage(); + +- m_sink = new AudioDeviceInterface(AUDIO_DBUS_NAME, defaultSinkPath, QDBusConnection::sessionBus()); + m_statusNotifierManager = new StatusNotifierManagerInterface(STATUS_NOTIFIER_MANAGER, STATUS_NOTIFIER_MANAGER_OBJECT_NAME, QDBusConnection::sessionBus(), this); + m_systemTray = new QSystemTrayIcon(); + +@@ -82,8 +81,11 @@ void AudioSystemTray::initMixedSettingPage() + void AudioSystemTray::initTrayIcon() + { + getTrayIconStyle(); +- double currentVolumeDouble = m_sink->volume() * 100; +- KLOG_INFO() << "currentVolumeDouble" << round(currentVolumeDouble); ++ ++ QDBusPendingReply defaultSinkPath = m_audioInterface->GetDefaultSink(); ++ AudioDeviceInterface defaultSink (AUDIO_DBUS_NAME, defaultSinkPath, QDBusConnection::sessionBus()); ++ double currentVolumeDouble = defaultSink.volume() * 100; ++ KLOG_INFO() << "current Volume Double" << round(currentVolumeDouble); + setTrayIcon(round(currentVolumeDouble)); + } + +@@ -117,11 +119,12 @@ void AudioSystemTray::initConnect() + { + connect(m_systemTray, &QSystemTrayIcon::activated, this, &AudioSystemTray::handleAudioTrayClicked); + +- connect(m_sink, &AudioDeviceInterface::volumeChanged, [=](double value) +- { +- int currentVolume = round(value * 100); //表示数值的时候向上取整 +- KLOG_DEBUG() << "m_sink volumeChanged :" << currentVolume; +- setTrayIcon(currentVolume); }); ++ connect(m_volumeSettingPage,&VolumeSettingPage::volumeChanged,[=](double value) ++ { ++ int currentVolume = round(value * 100); //表示数值的时候向上取整 ++ KLOG_DEBUG() << "m_sink volumeChanged :" << currentVolume; ++ setTrayIcon(currentVolume); ++ }); + + connect(m_statusNotifierManager, &StatusNotifierManagerInterface::StyleChanged, [=](const QString &style) + { +@@ -129,9 +132,11 @@ void AudioSystemTray::initConnect() + //重新获取style + getTrayIconStyle(); + //获取当前音量值重新设置TrayIcon +- m_sink->volume(); +- double currentVolumeDouble = m_sink->volume() * 100; +- setTrayIcon(round(currentVolumeDouble)); }); ++ QDBusPendingReply defaultSinkPath = m_audioInterface->GetDefaultSink(); ++ AudioDeviceInterface defaultSink (AUDIO_DBUS_NAME, defaultSinkPath, QDBusConnection::sessionBus()); ++ double currentVolumeDouble = defaultSink.volume() * 100; ++ setTrayIcon(round(currentVolumeDouble)); ++ }); + } + + void AudioSystemTray::handleAudioTrayClicked(QSystemTrayIcon::ActivationReason reason) +diff --git a/plugins/audio/src/system-tray/audio-system-tray.h b/plugins/audio/src/system-tray/audio-system-tray.h +index 16846e6..a61284e 100644 +--- a/plugins/audio/src/system-tray/audio-system-tray.h ++++ b/plugins/audio/src/system-tray/audio-system-tray.h +@@ -68,7 +68,6 @@ private: + + StatusNotifierManagerInterface* m_statusNotifierManager; + AudioInterface* m_audioInterface; +- AudioDeviceInterface* m_sink; + + QString m_colorTheme; + int xTray, yTray, heightTray, widthTray; +diff --git a/plugins/audio/src/system-tray/volume-setting-page.cpp b/plugins/audio/src/system-tray/volume-setting-page.cpp +index fac69a6..54b8f10 100644 +--- a/plugins/audio/src/system-tray/volume-setting-page.cpp ++++ b/plugins/audio/src/system-tray/volume-setting-page.cpp +@@ -132,6 +132,7 @@ void VolumeSettingPage::handleVolumeChanged(double value) + setVolumeIcon(currentVolume); + ui->volumeSetting->setValue(currentVolume); + ui->volumeSetting->blockSignals(false); ++ emit volumeChanged(value); + } + + void VolumeSettingPage::handleMuteButtonClicked() +@@ -144,6 +145,7 @@ void VolumeSettingPage::handleMuteButtonClicked() + + void VolumeSettingPage::handleDefaultSinkChanged(int index) + { ++ KLOG_DEBUG() << "Default Sink Changed"; + // delete and restart init defaultSink + if (m_sink != nullptr) + { +diff --git a/plugins/audio/src/system-tray/volume-setting-page.h b/plugins/audio/src/system-tray/volume-setting-page.h +index 4719021..80f0098 100644 +--- a/plugins/audio/src/system-tray/volume-setting-page.h ++++ b/plugins/audio/src/system-tray/volume-setting-page.h +@@ -40,16 +40,6 @@ public: + QPixmap trayIconColorSwitch(const QString &iconPath); + void disableSettings(); + +-private: +- void initDbusServiceWatcher(); +- void initAudioDevice(); +- void initAudioStream(); +- template +- void initSettings(Audio *audio); +- template +- void clickMuteButton(Audio *audio); +- +- + public slots: + void handleVolumeChanged(double value); + void handleMuteButtonClicked(); +@@ -60,6 +50,18 @@ public slots: + void setVolumeIcon(int value); + void hideLine(); + ++private: ++ void initDbusServiceWatcher(); ++ void initAudioDevice(); ++ void initAudioStream(); ++ template ++ void initSettings(Audio *audio); ++ template ++ void clickMuteButton(Audio *audio); ++ ++signals: ++ void volumeChanged(double value); ++ + private: + Ui::VolumeSettingPage *ui; + AudioInterface *m_audioInterface; +-- +2.33.0 + diff --git a/kiran-control-panel.spec b/kiran-control-panel.spec index b5e4538..a94e7f3 100644 --- a/kiran-control-panel.spec +++ b/kiran-control-panel.spec @@ -1,6 +1,6 @@ Name: kiran-control-panel Version: 2.5.5 -Release: 5%{?dist} +Release: 6%{?dist} Summary: Kiran Control Panel Summary(zh_CN): Kiran桌面控制面板 @@ -14,6 +14,7 @@ Patch0004: 0004-fix-wallpaper-don-t-call-xmlWriter-if-system-backgro.patch Patch0005: 0005-fix-account-Fixed-issues-related-to-creating-and-del.patch 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 BuildRequires: gcc-c++ BuildRequires: cmake >= 3.2 @@ -171,6 +172,9 @@ make %{?_smp_mflags} rm -rf %{buildroot} %changelog +* Fri Sep 08 2023 luoqing - 2.5.5-6 +- KYOS-F: Fixed an issue where the volume tray icon did not change with the volume after the default Sink was changed(#14124) + * Wed Aug 30 2023 luoqing - 2.5.5-5 - KYOS-F: Fix parsing error when json contains Chinese character(#13261) - KYOS-F: When the gateway setting item is 0.0.0.0, the gateway setting item is null(#13150) -- Gitee