mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
fix: adjust the slider to set the sound multiple times
log: add a timer to set once in 50 ms
This commit is contained in:
parent
9f71814849
commit
5d87a44ac4
@ -26,6 +26,7 @@
|
|||||||
#include <QtConcurrent>
|
#include <QtConcurrent>
|
||||||
#include <QIcon>
|
#include <QIcon>
|
||||||
#include <QPixmap>
|
#include <QPixmap>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
DWIDGET_USE_NAMESPACE
|
DWIDGET_USE_NAMESPACE
|
||||||
|
|
||||||
@ -55,10 +56,13 @@ SoundDevicesWidget::SoundDevicesWidget(QWidget *parent)
|
|||||||
, m_soundInter(new DBusAudio("org.deepin.dde.Audio1", "/org/deepin/dde/Audio1", QDBusConnection::sessionBus(), this))
|
, m_soundInter(new DBusAudio("org.deepin.dde.Audio1", "/org/deepin/dde/Audio1", QDBusConnection::sessionBus(), this))
|
||||||
, m_sinkInter(new DBusSink("org.deepin.dde.Audio1", m_soundInter->defaultSink().path(), QDBusConnection::sessionBus(), this))
|
, m_sinkInter(new DBusSink("org.deepin.dde.Audio1", m_soundInter->defaultSink().path(), QDBusConnection::sessionBus(), this))
|
||||||
, m_model(new QStandardItemModel(this))
|
, m_model(new QStandardItemModel(this))
|
||||||
|
, m_setVolumeTimer(new QTimer(this))
|
||||||
{
|
{
|
||||||
initUi();
|
initUi();
|
||||||
initConnection();
|
initConnection();
|
||||||
onAudioDevicesChanged();
|
onAudioDevicesChanged();
|
||||||
|
m_setVolumeTimer->setInterval(50);
|
||||||
|
m_setVolumeTimer->setSingleShot(true);
|
||||||
|
|
||||||
QMetaObject::invokeMethod(this, [ this ] {
|
QMetaObject::invokeMethod(this, [ this ] {
|
||||||
deviceEnabled(m_ports.size() > 0);
|
deviceEnabled(m_ports.size() > 0);
|
||||||
@ -208,13 +212,18 @@ void SoundDevicesWidget::initConnection()
|
|||||||
m_sliderContainer->setRange(0, std::round(maxValue * 100.00));
|
m_sliderContainer->setRange(0, std::round(maxValue * 100.00));
|
||||||
emit iconChanged();
|
emit iconChanged();
|
||||||
});
|
});
|
||||||
connect(m_sliderContainer, &SliderContainer::sliderValueChanged, this, [ this ](int value) {
|
connect(m_setVolumeTimer, &QTimer::timeout, this, [=](){
|
||||||
|
int value = m_sliderContainer->getSliderValue();
|
||||||
m_sinkInter->SetVolume(value * 0.01, true);
|
m_sinkInter->SetVolume(value * 0.01, true);
|
||||||
if (m_sinkInter->mute()) {
|
if (m_sinkInter->mute()) {
|
||||||
m_sinkInter->SetMuteQueued(false);
|
m_sinkInter->SetMuteQueued(false);
|
||||||
}
|
}
|
||||||
emit iconChanged();
|
emit iconChanged();
|
||||||
});
|
});
|
||||||
|
connect(m_sliderContainer, &SliderContainer::sliderValueChanged, this, [=](int value) {
|
||||||
|
Q_UNUSED(value)
|
||||||
|
m_setVolumeTimer->start();
|
||||||
|
});
|
||||||
|
|
||||||
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
|
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
|
||||||
// 更新右icon,左icon放在pixmap跟随refreshIcon一起更新
|
// 更新右icon,左icon放在pixmap跟随refreshIcon一起更新
|
||||||
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <DGuiApplicationHelper>
|
#include <DGuiApplicationHelper>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
namespace Dtk { namespace Widget { class DListView; } }
|
namespace Dtk { namespace Widget { class DListView; } }
|
||||||
|
|
||||||
@ -91,6 +92,7 @@ private:
|
|||||||
DBusSink *m_sinkInter;
|
DBusSink *m_sinkInter;
|
||||||
QStandardItemModel *m_model;
|
QStandardItemModel *m_model;
|
||||||
QList<SoundDevicePort *> m_ports;
|
QList<SoundDevicePort *> m_ports;
|
||||||
|
QTimer *m_setVolumeTimer;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // VOLUMEDEVICESWIDGET_H
|
#endif // VOLUMEDEVICESWIDGET_H
|
||||||
|
@ -193,6 +193,11 @@ void SliderContainer::updateSliderValue(int value)
|
|||||||
m_slider->blockSignals(false);
|
m_slider->blockSignals(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int SliderContainer::getSliderValue()
|
||||||
|
{
|
||||||
|
return m_slider->value();
|
||||||
|
}
|
||||||
|
|
||||||
void SliderContainer::setSliderProxyStyle(QProxyStyle *proxyStyle)
|
void SliderContainer::setSliderProxyStyle(QProxyStyle *proxyStyle)
|
||||||
{
|
{
|
||||||
proxyStyle->setParent(m_slider);
|
proxyStyle->setParent(m_slider);
|
||||||
|
@ -41,6 +41,7 @@ public:
|
|||||||
|
|
||||||
void setPageStep(int step);
|
void setPageStep(int step);
|
||||||
void setRange(int min, int max);
|
void setRange(int min, int max);
|
||||||
|
int getSliderValue();
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void iconClicked(const IconPosition &);
|
void iconClicked(const IconPosition &);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user