From 9619df590c297154a0b991b1c40fd7d2edd307d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8C=83=E6=9C=8B=E7=A8=8B?= Date: Fri, 23 Dec 2022 10:03:32 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=A3=B0=E9=9F=B3=E6=8F=92=E4=BB=B6?= =?UTF-8?q?=E6=BB=9A=E8=BD=AE=E8=B0=83=E8=8A=82=E9=9F=B3=E9=87=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 未考虑音量增强的情况,以及修复音量在1时无法继续减少,在99时无法继续增加的问题 Log: Influence: 将鼠标放在任务栏声音图标上,滚动滚轮,观察音量大小是否调节 Bug: https://pms.uniontech.com/bug-view-172417.html Change-Id: I07878e9c967152698f4c72323b98f1ed19c9c41d --- plugins/sound/soundplugin.cpp | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/plugins/sound/soundplugin.cpp b/plugins/sound/soundplugin.cpp index 3313d4c3c..bd97c5d9a 100644 --- a/plugins/sound/soundplugin.cpp +++ b/plugins/sound/soundplugin.cpp @@ -191,16 +191,24 @@ bool SoundPlugin::eventHandler(QEvent *event) QDBusReply volumePath = volumeCall.reply(); double volume = volumePath.value().value(); + // 获取当前默认声音设备的最大音量 + DDBusSender audioDBus = DDBusSender().service("org.deepin.dde.Audio1") + .path("/org/deepin/dde/Audio1").interface("org.deepin.dde.Audio1"); + QDBusPendingCall call = audioDBus.property("MaxUIVolume").get(); + call.waitForFinished(); + QDBusReply maxVolumeReply = call.reply(); + double maxVolume = maxVolumeReply.value().value(); + // 根据滚轮的动作来增加音量或者减小音量 QWheelEvent *wheelEvent = static_cast(event); if (wheelEvent->angleDelta().y() > 0) { // 向上滚动,增大音量 - if (volume < 1) - sinkDBus.method("SetVolume").arg(volume + 0.02).arg(true).call(); + if (volume < maxVolume) + sinkDBus.method("SetVolume").arg(qMin(volume + 0.02, maxVolume)).arg(true).call(); } else { // 向下滚动,调小音量 if (volume > 0) - sinkDBus.method("SetVolume").arg(volume - 0.02).arg(true).call(); + sinkDBus.method("SetVolume").arg(qMax(volume - 0.02, 0.0)).arg(true).call(); } return true;