diff --git a/.reuse/dep5 b/.reuse/dep5
index 3e2a4628c..3741bb24c 100644
--- a/.reuse/dep5
+++ b/.reuse/dep5
@@ -24,7 +24,7 @@ Copyright: UnionTech Software Technology Co., Ltd.
License: LGPL-3.0-or-later
# png svg
-Files: plugins/*.png plugins/*.svg frame/*.svg tests/*.png tests/*.svg
+Files: plugins/*.png plugins/*.svg frame/*.svg tests/*.png tests/*.svg plugins/*.dci
Copyright: UnionTech Software Technology Co., Ltd.
License: LGPL-3.0-or-later
diff --git a/plugins/pluginmanager/resources/built-in-icons/dock-control-panel.dci.license b/plugins/pluginmanager/resources/built-in-icons/dock-control-panel.dci.license
deleted file mode 100644
index c0469f3bd..000000000
--- a/plugins/pluginmanager/resources/built-in-icons/dock-control-panel.dci.license
+++ /dev/null
@@ -1,3 +0,0 @@
-SPDX-FileCopyrightText: 2018 - 2023 UnionTech Software Technology Co., Ltd.
-
-SPDX-License-Identifier: LGPL-3.0-or-later
diff --git a/plugins/sound/CMakeLists.txt b/plugins/sound/CMakeLists.txt
index 822bade30..6f095c5ea 100644
--- a/plugins/sound/CMakeLists.txt
+++ b/plugins/sound/CMakeLists.txt
@@ -25,7 +25,7 @@ pkg_check_modules(XCB_LIBS REQUIRED IMPORTED_TARGET xcursor)
pkg_check_modules(QGSettings REQUIRED IMPORTED_TARGET gsettings-qt)
add_definitions("${QT_DEFINITIONS} -DQT_PLUGIN")
-add_library(${PLUGIN_NAME} SHARED ${SRCS})
+add_library(${PLUGIN_NAME} SHARED ${SRCS} resources/sound.qrc)
set_target_properties(${PLUGIN_NAME} PROPERTIES LIBRARY_OUTPUT_DIRECTORY ../quick-trays)
target_include_directories(${PLUGIN_NAME} PUBLIC ${DtkWidget_INCLUDE_DIRS}
./dbusinterface
diff --git a/plugins/sound/resources/built-in-icons/audio-volume-high-symbolic.dci b/plugins/sound/resources/built-in-icons/audio-volume-high-symbolic.dci
new file mode 100644
index 000000000..3cf8bdfa4
Binary files /dev/null and b/plugins/sound/resources/built-in-icons/audio-volume-high-symbolic.dci differ
diff --git a/plugins/sound/resources/built-in-icons/audio-volume-low-symbolic.dci b/plugins/sound/resources/built-in-icons/audio-volume-low-symbolic.dci
new file mode 100644
index 000000000..c6dccc57a
Binary files /dev/null and b/plugins/sound/resources/built-in-icons/audio-volume-low-symbolic.dci differ
diff --git a/plugins/sound/resources/built-in-icons/audio-volume-medium-symbolic.dci b/plugins/sound/resources/built-in-icons/audio-volume-medium-symbolic.dci
new file mode 100644
index 000000000..5c3f47a26
Binary files /dev/null and b/plugins/sound/resources/built-in-icons/audio-volume-medium-symbolic.dci differ
diff --git a/plugins/sound/resources/built-in-icons/audio-volume-muted-symbolic.dci b/plugins/sound/resources/built-in-icons/audio-volume-muted-symbolic.dci
new file mode 100644
index 000000000..6104b9ca9
Binary files /dev/null and b/plugins/sound/resources/built-in-icons/audio-volume-muted-symbolic.dci differ
diff --git a/plugins/sound/resources/built-in-icons/audio-volume-off-symbolic.dci b/plugins/sound/resources/built-in-icons/audio-volume-off-symbolic.dci
new file mode 100644
index 000000000..98176725f
Binary files /dev/null and b/plugins/sound/resources/built-in-icons/audio-volume-off-symbolic.dci differ
diff --git a/plugins/sound/resources/sound.qrc b/plugins/sound/resources/sound.qrc
new file mode 100644
index 000000000..fa66482fc
--- /dev/null
+++ b/plugins/sound/resources/sound.qrc
@@ -0,0 +1,9 @@
+
+
+ built-in-icons/audio-volume-high-symbolic.dci
+ built-in-icons/audio-volume-low-symbolic.dci
+ built-in-icons/audio-volume-medium-symbolic.dci
+ built-in-icons/audio-volume-muted-symbolic.dci
+ built-in-icons/audio-volume-off-symbolic.dci
+
+
diff --git a/plugins/sound/sounddeviceswidget.cpp b/plugins/sound/sounddeviceswidget.cpp
index ce321972b..a475dfa35 100644
--- a/plugins/sound/sounddeviceswidget.cpp
+++ b/plugins/sound/sounddeviceswidget.cpp
@@ -29,7 +29,7 @@
DWIDGET_USE_NAMESPACE
-#define HEADERHEIGHT 30
+#define HEADERHEIGHT 10
#define ITEMSPACE 16
#define ROWSPACE 5
#define DESCRIPTIONHEIGHT 20
@@ -49,7 +49,6 @@ using namespace Dock;
SoundDevicesWidget::SoundDevicesWidget(QWidget *parent)
: QWidget(parent)
, m_tipsLabel(new TipsWidget(this))
- , m_titleLabel(new QLabel(tr("Sound"), this))
, m_sliderContainer(new SliderContainer(this))
, m_descriptionLabel(new QLabel(tr("Output Device"), this))
, m_deviceList(new DListView(this))
@@ -94,9 +93,6 @@ void SoundDevicesWidget::initUi()
QVBoxLayout *layout = new QVBoxLayout(this);
layout->setContentsMargins(10, 0, 10, 0);
- m_titleLabel->setFixedHeight(HEADERHEIGHT);
- m_titleLabel->setAlignment(Qt::AlignCenter);
-
QPixmap leftPixmap = QIcon::fromTheme(QString("audio-volume-%1-symbolic").arg(m_sinkInter->mute() ? "muted" : "off")).pixmap(18, 18);
m_sliderContainer->setIcon(SliderContainer::IconPosition::LeftIcon, leftPixmap, QSize(), 5);
QPixmap rightPixmap = QIcon::fromTheme("audio-volume-high-symbolic").pixmap(18, 18);
@@ -112,7 +108,6 @@ void SoundDevicesWidget::initUi()
topLayout->setContentsMargins(7, 0, 7, 0);
topLayout->setSpacing(0);
- topLayout->addWidget(m_titleLabel);
topLayout->addWidget(m_sliderContainer);
m_descriptionLabel->setMargin(5);
@@ -220,6 +215,25 @@ void SoundDevicesWidget::initConnection()
}
emit iconChanged();
});
+
+ connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
+ // 更新右icon,左icon放在pixmap跟随refreshIcon一起更新
+ QPixmap rightPixmap = QIcon::fromTheme("audio-volume-high-symbolic").pixmap(18, 18);
+ m_sliderContainer->setIcon(SliderContainer::IconPosition::RightIcon, rightPixmap, QSize(), 7);
+ // 主题变更时更新checked的背景色
+ for (int i =0; i < m_model->rowCount() -1; i++) {
+ auto item = m_model->item(i);
+ if (item->checkState() == Qt::Checked) {
+ item->setBackground(DPaletteHelper::instance()->palette(this).highlight());
+ }
+ }
+ });
+
+ connect(m_sliderContainer, &SliderContainer::iconClicked, this, [ this ](const SliderContainer::IconPosition icon) {
+ if (SliderContainer::IconPosition::LeftIcon == icon) {
+ m_sinkInter->SetMute(!m_sinkInter->mute());
+ }
+ });
}
/**
diff --git a/plugins/sound/sounddeviceswidget.h b/plugins/sound/sounddeviceswidget.h
index 4e97a07b8..8359f0f2c 100644
--- a/plugins/sound/sounddeviceswidget.h
+++ b/plugins/sound/sounddeviceswidget.h
@@ -83,7 +83,6 @@ private Q_SLOTS:
private:
Dock::TipsWidget *m_tipsLabel;
- QLabel *m_titleLabel;
SliderContainer *m_sliderContainer;
QLabel *m_descriptionLabel;
DListView *m_deviceList;
diff --git a/plugins/sound/soundwidget.cpp b/plugins/sound/soundwidget.cpp
index 030e71316..c7ac4664a 100644
--- a/plugins/sound/soundwidget.cpp
+++ b/plugins/sound/soundwidget.cpp
@@ -23,6 +23,8 @@
#include
#include
#include
+#include
+#include
DGUI_USE_NAMESPACE
@@ -73,7 +75,11 @@ void SoundWidget::initConnection()
m_defaultSink = new DBusSink("org.deepin.dde.Audio1", value.path(), QDBusConnection::sessionBus(), this);
connect(m_defaultSink, &DBusSink::VolumeChanged, this, [ this ](double value) { m_sliderContainer->updateSliderValue(std::round(value * 100.00)); });
- connect(m_defaultSink, &DBusSink::MuteChanged, this, [ = ] { m_sliderContainer->updateSliderValue(m_defaultSink->volume() * 100); });
+ connect(m_defaultSink, &DBusSink::MuteChanged, this, [ = ] {
+ m_sliderContainer->updateSliderValue(m_defaultSink->volume() * 100);
+ m_sliderContainer->setIcon(SliderContainer::IconPosition::LeftIcon,
+ QIcon::fromTheme(leftIcon()).pixmap(ICON_SIZE, ICON_SIZE), QSize(), 10);
+ });
m_sliderContainer->updateSliderValue(std::round(m_defaultSink->volume() * 100.00));
});
@@ -90,7 +96,8 @@ void SoundWidget::initConnection()
});
connect(m_defaultSink, &DBusSink::MuteChanged, this, [ this ] {
- m_sliderContainer->setIcon(SliderContainer::IconPosition::LeftIcon, QIcon(leftIcon()));
+ m_sliderContainer->setIcon(SliderContainer::IconPosition::LeftIcon,
+ QIcon::fromTheme(leftIcon()).pixmap(ICON_SIZE, ICON_SIZE), QSize(), 10);
});
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, &SoundWidget::onThemeTypeChanged);
@@ -114,21 +121,13 @@ void SoundWidget::initConnection()
const QString SoundWidget::leftIcon()
{
const bool mute = existActiveOutputDevice() ? m_defaultSink->mute() : true;
- if (mute) {
- if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::ColorType::LightType)
- return QString(":/audio-volume-muted-symbolic-dark.svg");
-
- return QString(":/audio-volume-muted-symbolic.svg");
- }
-
- if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::ColorType::LightType)
- return QString(":/audio-volume-medium-symbolic-dark.svg");
-
- return QString(":/audio-volume-medium-symbolic.svg");
+ return QString("audio-volume-%1-symbolic").arg(mute? "muted": "medium");
}
const QString SoundWidget::rightIcon()
{
+ // TODO: broadcast ???
+ // svg from display plugins
return QString(":/icons/resources/broadcast.svg");
}
@@ -171,8 +170,8 @@ bool SoundWidget::existActiveOutputDevice() const
void SoundWidget::onThemeTypeChanged()
{
- QPixmap leftPixmap = ImageUtil::loadSvg(leftIcon(), QSize(ICON_SIZE, ICON_SIZE));
- QPixmap rightPixmap = ImageUtil::loadSvg(rightIcon(), QSize(ICON_SIZE, ICON_SIZE));
+ QPixmap leftPixmap = QIcon::fromTheme(leftIcon()).pixmap(ICON_SIZE, ICON_SIZE);
+ QPixmap rightPixmap = QIcon::fromTheme(rightIcon()).pixmap(ICON_SIZE, ICON_SIZE);
convertThemePixmap(rightPixmap);
m_sliderContainer->setIcon(SliderContainer::IconPosition::LeftIcon, leftPixmap, QSize(), 10);
m_sliderContainer->setIcon(SliderContainer::IconPosition::RightIcon, rightPixmap, QSize(BACKSIZE, BACKSIZE), 12);