Sound: set minimum volume

Change-Id: I49a39b6c3d936e1a84d733337992d8a0982ca492
This commit is contained in:
kirigaya 2017-06-21 16:39:37 +08:00 committed by Deepin Code Review
parent db3fe712d3
commit 070c55d208
Notes: Deepin Code Review 2017-06-27 09:27:14 +08:00
Verified+1: Anonymous Coward #1000004
Code-Review+1: 石博文 <sbw@sbw.so>
Verified+1: <yefei@linuxdeepin.com>
Code-Review+2: kirigaya <kirigaya@mkacg.com>
Submitted-by: kirigaya <kirigaya@mkacg.com>
Submitted-at: Tue, 27 Jun 2017 09:27:08 +0800
Reviewed-on: https://cr.deepin.io/23975
Project: dde/dde-dock
Branch: refs/heads/master
5 changed files with 24 additions and 9 deletions

1
debian/control vendored
View File

@ -10,6 +10,7 @@ Build-Depends: debhelper (>= 8.0.0), pkg-config,
libxcb-icccm4-dev, libxtst-dev,
libdtkbase-dev, libdtkutil-dev, libdtkwidget-dev, qttools5-dev-tools, libxcb-icccm4-dev,
libdframeworkdbus-dev,
libgsettings-qt-dev,
clang [mipsel mips64el]
Standards-Version: 3.9.4
Homepage: http://www.deepin.org/

View File

@ -4,7 +4,7 @@ include(../../interfaces/interfaces.pri)
QT += widgets svg dbus
TEMPLATE = lib
CONFIG += plugin c++11 link_pkgconfig
PKGCONFIG += dtkbase dtkwidget
PKGCONFIG += dtkbase dtkwidget gsettings-qt
TARGET = $$qtLibraryTarget(sound)
DESTDIR = $$_PRO_FILE_PWD_/../

View File

@ -24,6 +24,8 @@ SoundApplet::SoundApplet(QWidget *parent)
{
// QIcon::setThemeName("deepin");
m_gsetting = new QGSettings("com.deepin.dde.audio", "", this);
m_volumeBtn->setAccessibleName("volume-button");
m_volumeSlider->setAccessibleName("volume-slider");
@ -121,10 +123,14 @@ void SoundApplet::defaultSinkChanged()
void SoundApplet::onVolumeChanged()
{
const double volmue = m_defSinkInter->volume();
const float volmue = m_defSinkInter->volume();
const bool mute = m_defSinkInter->mute();
m_volumeSlider->setValue(std::min(1000.0, volmue * 1000));
//Keep the same units. slider is 1000.0f, maxVolue need multiplication 10.
float m_maxVolume = std::min(1000, m_gsetting->get("output-volume-max").toInt() * 10);
m_volumeSlider->setValue(std::min(1000.0f, volmue * 1000.0f / (m_maxVolume / 1000.0f)));
emit volumeChanged(m_volumeSlider->value());
QString volumeString;
@ -142,7 +148,10 @@ void SoundApplet::onVolumeChanged()
void SoundApplet::volumeSliderValueChanged()
{
m_defSinkInter->SetVolume(double(m_volumeSlider->value()) / 1000, false);
//Keep the same units. slider is 1000.0f, maxVolue need multiplication 10.
float m_maxVolume = std::min(1000, m_gsetting->get("output-volume-max").toInt() * 10);
m_defSinkInter->SetVolume(m_volumeSlider->value() / 1000.0f * (m_maxVolume / 1000.0f), false);
}
void SoundApplet::sinkInputsChanged()

View File

@ -9,7 +9,7 @@
#include <QVBoxLayout>
#include <QLabel>
#include <QSlider>
#include <QGSettings>
#include <dimagebutton.h>
class SoundApplet : public QScrollArea
@ -44,6 +44,7 @@ private:
DBusAudio *m_audioInter;
DBusSink *m_defSinkInter;
QGSettings *m_gsetting;
};
#endif // SOUNDAPPLET_H

View File

@ -132,7 +132,7 @@ void SoundItem::refershIcon()
if (!m_sinkInter)
return;
const double volmue = m_sinkInter->volume();
const double volmue = m_applet->volumeValue();
const bool mute = m_sinkInter->mute();
const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
@ -140,12 +140,13 @@ void SoundItem::refershIcon()
if (displayMode == Dock::Fashion)
{
QString volumeString;
if (volmue >= 1.0)
if (volmue >= 1000)
volumeString = "100";
else
volumeString = QString("0") + ('0' + int(volmue * 10)) + "0";
volumeString = QString("0") + ('0' + int(volmue / 100)) + "0";
iconString = ":/icons/image/audio-volume-" + volumeString;
if (mute)
iconString += "-muted";
} else {
@ -181,7 +182,10 @@ void SoundItem::refershTips(const bool force)
if (m_sinkInter->mute()) {
value = QString("0") + '%';
} else {
value = QString::number(m_applet->volumeValue() / 10) + '%';
if (m_sinkInter->volume() * 1000 < m_applet->volumeValue())
value = QString::number(m_applet->volumeValue() / 10) + '%';
else
value = QString::number(m_sinkInter->volume() * 100) + '%';
}
m_tipsLabel->setText(QString(tr("Current Volume %1").arg(value)));
}