feat(tray):dock mini size change dark icon

This commit is contained in:
shaojun 2019-10-11 10:08:24 +08:00
parent dd53d1cf7c
commit 398b0484f2
6 changed files with 35 additions and 12 deletions

View File

@ -25,6 +25,7 @@
#include "networkplugin.h"
#include "../util/imageutil.h"
#include "../widgets/tipswidget.h"
#include <DGuiApplicationHelper>
#include <QPainter>
#include <QMouseEvent>
@ -32,6 +33,7 @@
#include <QApplication>
using namespace dde::network;
DGUI_USE_NAMESPACE
WiredItem::WiredItem(WiredDevice *device)
: DeviceItem(device),
@ -52,6 +54,9 @@ WiredItem::WiredItem(WiredDevice *device)
connect(m_device, static_cast<void (NetworkDevice::*)(NetworkDevice::DeviceStatus) const>(&NetworkDevice::statusChanged), this, &WiredItem::deviceStateChanged);
connect(static_cast<WiredDevice *>(m_device.data()), &WiredDevice::connectionsChanged, this, &WiredItem::deviceStateChanged);
connect(static_cast<WiredDevice *>(m_device.data()), &WiredDevice::activeWiredConnectionInfoChanged, this, &WiredItem::deviceStateChanged);
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
refreshIcon();
});
QTimer::singleShot(0, this, &WiredItem::refreshTips);
QTimer::singleShot(0, this, &WiredItem::refreshIcon);
@ -179,7 +184,7 @@ void WiredItem::reloadIcon()
iconName.append("-symbolic");
// 最小尺寸时采用深色图标
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE)
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType)
iconName.append(PLUGIN_MIN_ICON_NAME);
m_icon = QIcon::fromTheme(iconName).pixmap(iconSize * ratio, iconSize * ratio);

View File

@ -23,6 +23,7 @@
#include "networkplugin.h"
#include "../util/imageutil.h"
#include "../widgets/tipswidget.h"
#include <DGuiApplicationHelper>
#include <QPainter>
#include <QMouseEvent>
@ -30,6 +31,7 @@
#include <QIcon>
using namespace dde::network;
DGUI_USE_NAMESPACE
WirelessItem::WirelessItem(WirelessDevice *device)
: DeviceItem(device),
@ -54,6 +56,9 @@ WirelessItem::WirelessItem(WirelessDevice *device)
connect(m_device, static_cast<void (NetworkDevice::*)(const QString &statStr) const>(&NetworkDevice::statusChanged), this, &WirelessItem::deviceStateChanged);
connect(static_cast<WirelessDevice *>(m_device.data()), &WirelessDevice::activeApInfoChanged, m_refreshTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
connect(static_cast<WirelessDevice *>(m_device.data()), &WirelessDevice::activeWirelessConnectionInfoChanged, m_refreshTimer, static_cast<void (QTimer::*)()>(&QTimer::start));
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
update();
});
//QMetaObject::invokeMethod(this, "init", Qt::QueuedConnection);
QTimer::singleShot(0, this, &WirelessItem::refreshTips);
@ -208,7 +213,7 @@ const QPixmap WirelessItem::iconPix(const Dock::DisplayMode displayMode, const i
key = "network-wireless-warning-symbolic";
}
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE)
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType)
key.append(PLUGIN_MIN_ICON_NAME);
return cachedPix(key, size);

View File

@ -39,6 +39,10 @@ OnboardItem::OnboardItem(QWidget *parent)
{
setMouseTracking(true);
setMinimumSize(PLUGIN_BACKGROUND_MIN_SIZE, PLUGIN_BACKGROUND_MIN_SIZE);
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
update();
});
}
QSize OnboardItem::sizeHint() const
@ -53,11 +57,6 @@ void OnboardItem::paintEvent(QPaintEvent *e)
QPixmap pixmap;
QString iconName = "deepin-virtualkeyboard";
int iconSize = PLUGIN_ICON_MAX_SIZE;
const Dock::DisplayMode displayMode = qApp->property(PROP_DISPLAY_MODE).value<Dock::DisplayMode>();
if (displayMode == Dock::Efficient) {
iconName = iconName + "-symbolic";
}
QPainter painter(this);
if (std::min(width(), height()) > PLUGIN_BACKGROUND_MIN_SIZE) {
@ -100,7 +99,7 @@ void OnboardItem::paintEvent(QPaintEvent *e)
path.addRoundedRect(rc, radius, radius);
painter.fillPath(path, color);
} else {
} else if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) {
iconName.append(PLUGIN_MIN_ICON_NAME);
}

View File

@ -39,6 +39,10 @@ PluginWidget::PluginWidget(QWidget *parent)
{
setMouseTracking(true);
setMinimumSize(PLUGIN_BACKGROUND_MIN_SIZE, PLUGIN_BACKGROUND_MIN_SIZE);
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
update();
});
}
QSize PluginWidget::sizeHint() const
@ -96,7 +100,7 @@ void PluginWidget::paintEvent(QPaintEvent *e)
path.addRoundedRect(rc, radius, radius);
painter.fillPath(path, color);
} else {
} else if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) {
// 最小尺寸时,不画背景,采用深色图标
iconName.append(PLUGIN_MIN_ICON_NAME);
}

View File

@ -29,12 +29,14 @@
#include <DApplication>
#include <DDBusSender>
#include "../widgets/tipswidget.h"
#include <DGuiApplicationHelper>
// menu actions
#define MUTE "mute"
#define SETTINGS "settings"
DWIDGET_USE_NAMESPACE
DGUI_USE_NAMESPACE
SoundItem::SoundItem(QWidget *parent)
: QWidget(parent),
@ -50,6 +52,10 @@ SoundItem::SoundItem(QWidget *parent)
connect(m_applet, static_cast<void (SoundApplet::*)(DBusSink*) const>(&SoundApplet::defaultSinkChanged), this, &SoundItem::sinkChanged);
connect(m_applet, &SoundApplet::volumeChanged, this, &SoundItem::refreshTips, Qt::QueuedConnection);
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
refreshIcon();
});
}
QWidget *SoundItem::tipsWidget()
@ -180,7 +186,7 @@ void SoundItem::refreshIcon()
const auto ratio = devicePixelRatioF();
int iconSize = PLUGIN_ICON_MAX_SIZE;
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE)
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType)
iconString.append(PLUGIN_MIN_ICON_NAME);
const QIcon icon = QIcon::fromTheme(iconString);

View File

@ -48,6 +48,10 @@ FashionTrayControlWidget::FashionTrayControlWidget(Dock::Position position, QWid
setMinimumSize(PLUGIN_BACKGROUND_MIN_SIZE, PLUGIN_BACKGROUND_MIN_SIZE);
setMaximumSize(PLUGIN_BACKGROUND_MAX_SIZE, PLUGIN_BACKGROUND_MAX_SIZE);
connect(DGuiApplicationHelper::instance(), &DGuiApplicationHelper::themeTypeChanged, this, [ = ] {
update();
});
}
void FashionTrayControlWidget::setDockPostion(Dock::Position pos)
@ -211,11 +215,11 @@ void FashionTrayControlWidget::refreshArrowPixmap()
break;
}
if (DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::DarkType) {
if (height() <= PLUGIN_BACKGROUND_MIN_SIZE && DGuiApplicationHelper::instance()->themeType() == DGuiApplicationHelper::LightType) {
iconPath.append("-dark");
}
const auto ratio = devicePixelRatioF();
m_arrowPix = QIcon::fromTheme(iconPath,QIcon(QString(":/icons/resources/%1").arg(iconPath))).pixmap(QSize(PLUGIN_ICON_MAX_SIZE, PLUGIN_ICON_MAX_SIZE) * ratio);
m_arrowPix = QIcon::fromTheme(iconPath, QIcon(QString(":/icons/resources/%1").arg(iconPath))).pixmap(QSize(PLUGIN_ICON_MAX_SIZE, PLUGIN_ICON_MAX_SIZE) * ratio);
m_arrowPix.setDevicePixelRatio(ratio);
}