diff --git a/plugins/sound/soundwidget.cpp b/plugins/sound/soundwidget.cpp index df3f6f0ae..65ddfe9bf 100644 --- a/plugins/sound/soundwidget.cpp +++ b/plugins/sound/soundwidget.cpp @@ -71,6 +71,8 @@ void SoundWidget::initUi() QPixmap rightPixmap = ImageUtil::loadSvg(rightIcon(), QSize(ICON_SIZE, ICON_SIZE)); m_sliderContainer->setIcon(SliderContainer::IconPosition::LeftIcon, leftPixmap, QSize(), 12); m_sliderContainer->setIcon(SliderContainer::IconPosition::RightIcon, rightPixmap, QSize(BACKSIZE, BACKSIZE), 12); + m_sliderContainer->setRange(0, 100); + m_sliderContainer->setPageStep(2); SliderProxyStyle *proxy = new SliderProxyStyle; m_sliderContainer->setSliderProxyStyle(proxy); @@ -80,14 +82,14 @@ void SoundWidget::initUi() void SoundWidget::initConnection() { - connect(m_defaultSink, &DBusSink::VolumeChanged, this, [ this ](double value) { m_sliderContainer->updateSliderValue(value * 100); }); + connect(m_defaultSink, &DBusSink::VolumeChanged, this, [ this ](double value) {m_sliderContainer->updateSliderValue(std::round(value * 100.00));}); connect(m_dbusAudio, &DBusAudio::DefaultSinkChanged, this, [ this ](const QDBusObjectPath &value) { if (m_defaultSink) delete m_defaultSink; m_defaultSink = new DBusSink("org.deepin.daemon.Audio1", value.path(), QDBusConnection::sessionBus(), this); - m_sliderContainer->updateSliderValue(m_defaultSink->volume() * 100); + m_sliderContainer->updateSliderValue(std::round(m_defaultSink->volume() * 100.00)); connect(m_defaultSink, &DBusSink::VolumeChanged, m_sliderContainer, &SliderContainer::updateSliderValue); }); diff --git a/widgets/slidercontainer.cpp b/widgets/slidercontainer.cpp index 6ce0a95f2..fc6ef72c3 100644 --- a/widgets/slidercontainer.cpp +++ b/widgets/slidercontainer.cpp @@ -181,6 +181,16 @@ void SliderContainer::setIcon(const SliderContainer::IconPosition &iconPosition, } } +void SliderContainer::setPageStep(int step) +{ + return m_slider->setPageStep(step); +} + +void SliderContainer::setRange(int min, int max) +{ + return m_slider->setRange(min, max); +} + bool SliderContainer::eventFilter(QObject *watched, QEvent *event) { if (event->type() == QEvent::MouseButtonRelease) { diff --git a/widgets/slidercontainer.h b/widgets/slidercontainer.h index f2f8d76b7..320ae035a 100644 --- a/widgets/slidercontainer.h +++ b/widgets/slidercontainer.h @@ -55,6 +55,9 @@ public: void setIcon(const IconPosition &iconPosition, const QIcon &icon); void setIcon(const IconPosition &iconPosition, const QPixmap &icon, const QSize &shadowSize, int space); + void setPageStep(int step); + void setRange(int min, int max); + Q_SIGNALS: void iconClicked(const IconPosition &); void sliderValueChanged(int value);