diff --git a/plugins/dde-dock/common/commoniconbutton.cpp b/plugins/dde-dock/common/commoniconbutton.cpp index 1759cee9d..f5adb4a48 100644 --- a/plugins/dde-dock/common/commoniconbutton.cpp +++ b/plugins/dde-dock/common/commoniconbutton.cpp @@ -133,7 +133,12 @@ void CommonIconButton::setIcon(const QString &icon, const QString &fallback, con addDarkMark(tmp); addDarkMark(tmpFallback); } - m_icon = QIcon::fromTheme(tmp, QIcon::fromTheme(tmpFallback)); + m_icon = QIcon::fromTheme(tmp); + + if (m_icon.isNull()) { + m_icon = QIcon::fromTheme(tmpFallback); + } + if (m_icon.isNull()) { QString defaultIcon = m_fileMapping[State::Default].first; m_icon = QIcon::fromTheme(defaultIcon); diff --git a/plugins/dde-dock/onboard/icon/dcc-onboard.dci b/plugins/dde-dock/onboard/icon/dcc-onboard.dci index fc4f55e4a..8de5efdec 100644 Binary files a/plugins/dde-dock/onboard/icon/dcc-onboard.dci and b/plugins/dde-dock/onboard/icon/dcc-onboard.dci differ diff --git a/plugins/dde-dock/onboard/icon/keyboard-symbolic-dark.svg b/plugins/dde-dock/onboard/icon/keyboard-symbolic-dark.svg index 55ef65718..b6bedaad7 100644 --- a/plugins/dde-dock/onboard/icon/keyboard-symbolic-dark.svg +++ b/plugins/dde-dock/onboard/icon/keyboard-symbolic-dark.svg @@ -1,9 +1,7 @@ - + keyboard-symbolic-dark - - - - + + \ No newline at end of file diff --git a/plugins/dde-dock/onboard/icon/keyboard-symbolic.svg b/plugins/dde-dock/onboard/icon/keyboard-symbolic.svg index 509a00539..c2cc49a1a 100644 --- a/plugins/dde-dock/onboard/icon/keyboard-symbolic.svg +++ b/plugins/dde-dock/onboard/icon/keyboard-symbolic.svg @@ -1,9 +1,7 @@ - + keyboard-symbolic - - - - + + \ No newline at end of file diff --git a/plugins/dde-dock/onboard/onboarditem.cpp b/plugins/dde-dock/onboard/onboarditem.cpp deleted file mode 100644 index be4210dec..000000000 --- a/plugins/dde-dock/onboard/onboarditem.cpp +++ /dev/null @@ -1,139 +0,0 @@ -// SPDX-FileCopyrightText: 2011 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: LGPL-3.0-or-later - -#include "onboarditem.h" - -#include -#include -#include -#include -#include - -#include -#include - -DWIDGET_USE_NAMESPACE; - -OnboardItem::OnboardItem(QWidget *parent) - : QWidget(parent) - , m_hover(false) - , m_pressed(false) -{ - setMouseTracking(true); - setFixedSize(Dock::DOCK_PLUGIN_ITEM_FIXED_SIZE); - - connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] { - update(); - }); - m_icon = QIcon::fromTheme(":/icons/icon/keyboard-symbolic.svg"); -} - -void OnboardItem::paintEvent(QPaintEvent *e) -{ - Q_UNUSED(e); - - QPixmap pixmap; - QString iconName = "keyboard-symbolic"; - const int iconSize = Dock::DOCK_PLUGIN_ITEM_FIXED_WIDTH; - - QPainter painter(this); - if (std::min(width(), height()) > PLUGIN_BACKGROUND_MIN_SIZE) { - - QColor color; - if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - color = Qt::black; - painter.setOpacity(0.5); - - if (m_hover) { - painter.setOpacity(0.6); - } - - if (m_pressed) { - painter.setOpacity(0.3); - } - } else { - color = Qt::white; - painter.setOpacity(0.1); - - if (m_hover) { - painter.setOpacity(0.2); - } - - if (m_pressed) { - painter.setOpacity(0.05); - } - } - - painter.setRenderHint(QPainter::Antialiasing, true); - - DStyleHelper dstyle(style()); - const int radius = dstyle.pixelMetric(DStyle::PM_FrameRadius); - - QPainterPath path; - - int minSize = std::min(width(), height()); - QRect rc(0, 0, minSize, minSize); - rc.moveTo(rect().center() - rc.center()); - - path.addRoundedRect(rc, radius, radius); - painter.fillPath(path, color); - } else if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) { - iconName.append(PLUGIN_MIN_ICON_NAME); - } - - pixmap = loadSvg(iconName, QSize(iconSize, iconSize)); - - painter.setOpacity(1); - painter.drawPixmap(rect(), pixmap); -} - -const QPixmap OnboardItem::loadSvg(const QString &fileName, const QSize &size) const -{ - const auto ratio = devicePixelRatioF(); - - QPixmap pixmap; - QSize pixmapSize = size; // QCoreApplication::testAttribute(Qt::AA_UseHighDpiPixmaps) ? size : (size * ratio); - pixmap = QIcon::fromTheme(fileName, m_icon).pixmap(pixmapSize); - pixmap.setDevicePixelRatio(ratio); - - return pixmap; -} - -void OnboardItem::mousePressEvent(QMouseEvent *event) -{ - m_pressed = true; - update(); - - QWidget::mousePressEvent(event); -} - -void OnboardItem::mouseReleaseEvent(QMouseEvent *event) -{ - m_pressed = false; - m_hover = false; - update(); - - QWidget::mouseReleaseEvent(event); -} - -void OnboardItem::mouseMoveEvent(QMouseEvent *event) -{ - m_hover = true; - - QWidget::mouseMoveEvent(event); -} - -void OnboardItem::leaveEvent(QEvent *event) -{ - m_hover = false; - m_pressed = false; - update(); - - QWidget::leaveEvent(event); -} - -void OnboardItem::resizeEvent(QResizeEvent *event) -{ - QWidget::resizeEvent(event); -} diff --git a/plugins/dde-dock/onboard/onboarditem.h b/plugins/dde-dock/onboard/onboarditem.h deleted file mode 100644 index f62038958..000000000 --- a/plugins/dde-dock/onboard/onboarditem.h +++ /dev/null @@ -1,38 +0,0 @@ -// SPDX-FileCopyrightText: 2011 - 2022 UnionTech Software Technology Co., Ltd. -// -// SPDX-License-Identifier: LGPL-3.0-or-later - -#ifndef ONBOARDITEM_H -#define ONBOARDITEM_H - -#include "constants.h" - -#include -#include - -class OnboardItem : public QWidget -{ - Q_OBJECT - -public: - explicit OnboardItem(QWidget *parent = nullptr); - -protected: - void paintEvent(QPaintEvent *e) override; - -private: - const QPixmap loadSvg(const QString &fileName, const QSize &size) const; - void mousePressEvent(QMouseEvent *event) override; - void mouseReleaseEvent(QMouseEvent *event) override; - void mouseMoveEvent(QMouseEvent *event) override; - void leaveEvent(QEvent *event) override; - void resizeEvent(QResizeEvent *event) override; - -private: - Dock::DisplayMode m_displayMode; - bool m_hover; - bool m_pressed; - QIcon m_icon; -}; - -#endif // ONBOARDITEM_H diff --git a/plugins/dde-dock/onboard/onboardplugin.cpp b/plugins/dde-dock/onboard/onboardplugin.cpp index 61e1dde49..adf5d5524 100644 --- a/plugins/dde-dock/onboard/onboardplugin.cpp +++ b/plugins/dde-dock/onboard/onboardplugin.cpp @@ -15,7 +15,7 @@ OnboardPlugin::OnboardPlugin(QObject *parent) : QObject(parent) , m_pluginLoaded(false) , m_startupState(false) - , m_onboardItem(nullptr) + , m_onboardIcon(nullptr) , m_tipsLabel(new TipsWidget) , m_quickPanel(new QuickPanel) { @@ -47,7 +47,7 @@ QWidget *OnboardPlugin::itemWidget(const QString &itemKey) return m_quickPanel.data(); } - return m_onboardItem.data(); + return m_onboardIcon.data(); } QWidget *OnboardPlugin::itemTipsWidget(const QString &itemKey) @@ -151,7 +151,7 @@ void OnboardPlugin::displayModeChanged(const Dock::DisplayMode displayMode) Q_UNUSED(displayMode); if (!pluginIsDisable()) { - m_onboardItem->update(); + m_onboardIcon->update(); } } @@ -180,7 +180,9 @@ void OnboardPlugin::loadPlugin() m_pluginLoaded = true; - m_onboardItem.reset(new OnboardItem); + m_onboardIcon.reset(new CommonIconButton); + m_onboardIcon->setFixedSize(Dock::DOCK_PLUGIN_ITEM_FIXED_SIZE); + m_onboardIcon->setIcon(":/icons/icon/keyboard-symbolic.svg"); m_proxyInter->itemAdded(this, pluginName()); displayModeChanged(displayMode()); diff --git a/plugins/dde-dock/onboard/onboardplugin.h b/plugins/dde-dock/onboard/onboardplugin.h index ed21cb5b1..7f6dbf355 100644 --- a/plugins/dde-dock/onboard/onboardplugin.h +++ b/plugins/dde-dock/onboard/onboardplugin.h @@ -6,7 +6,6 @@ #define ONBOARDPLUGIN_H #include "pluginsiteminterface_v2.h" -#include "onboarditem.h" #include "quickpanel.h" #include "tipswidget.h" @@ -52,7 +51,7 @@ class OnboardPlugin : public QObject, public PluginsItemInterfaceV2 bool m_pluginLoaded; bool m_startupState; - QScopedPointer m_onboardItem; + QScopedPointer m_onboardIcon; QScopedPointer m_tipsLabel; QScopedPointer m_quickPanel; };