mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +00:00
fix: 修复任务栏无法响应插件状态变化引起图标变化的问题
当快捷设置区域的图标发生变化的时候,外部插件需要响应对应的图标变化接口,修改插件区域图标 Log: Influence: 快捷设置区域-查看图标变化 Task: https://pms.uniontech.com/task-view-110311.html Change-Id: I19be98ec53145d45db3ee7023c4a0d4012e68a93
This commit is contained in:
parent
f25258ca20
commit
8bd51673bc
@ -103,6 +103,11 @@ void QuickSettingController::itemRemoved(PluginsItemInterface * const itemInter,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickSettingController::updateDockInfo(PluginsItemInterface * const itemInter, const DockPart &part)
|
||||||
|
{
|
||||||
|
Q_EMIT pluginUpdated(itemInter, part);
|
||||||
|
}
|
||||||
|
|
||||||
QuickSettingController *QuickSettingController::instance()
|
QuickSettingController *QuickSettingController::instance()
|
||||||
{
|
{
|
||||||
static QuickSettingController instance;
|
static QuickSettingController instance;
|
||||||
|
@ -36,6 +36,7 @@ public:
|
|||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void pluginInserted(QuickSettingItem *);
|
void pluginInserted(QuickSettingItem *);
|
||||||
void pluginRemoved(QuickSettingItem *);
|
void pluginRemoved(QuickSettingItem *);
|
||||||
|
void pluginUpdated(PluginsItemInterface *, const DockPart &);
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void startLoader();
|
void startLoader();
|
||||||
@ -49,6 +50,7 @@ protected:
|
|||||||
void requestWindowAutoHide(PluginsItemInterface * const, const QString &, const bool) override {}
|
void requestWindowAutoHide(PluginsItemInterface * const, const QString &, const bool) override {}
|
||||||
void requestRefreshWindowVisible(PluginsItemInterface * const, const QString &) override {}
|
void requestRefreshWindowVisible(PluginsItemInterface * const, const QString &) override {}
|
||||||
void requestSetAppletVisible(PluginsItemInterface * const, const QString &, const bool) override {}
|
void requestSetAppletVisible(PluginsItemInterface * const, const QString &, const bool) override {}
|
||||||
|
void updateDockInfo(PluginsItemInterface * const itemInter, const DockPart &part) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void sortPlugins();
|
void sortPlugins();
|
||||||
|
@ -36,7 +36,10 @@
|
|||||||
|
|
||||||
#define BGWIDTH 128
|
#define BGWIDTH 128
|
||||||
#define BGSIZE 36
|
#define BGSIZE 36
|
||||||
|
#define MARGINLEFTSPACE 10
|
||||||
#define OPENICONSIZE 12
|
#define OPENICONSIZE 12
|
||||||
|
#define MARGINRIGHTSPACE 12
|
||||||
|
|
||||||
static QSize expandSize = QSize(6, 10);
|
static QSize expandSize = QSize(6, 10);
|
||||||
|
|
||||||
QuickSettingItem::QuickSettingItem(PluginsItemInterface *const pluginInter, const QString &itemKey, QWidget *parent)
|
QuickSettingItem::QuickSettingItem(PluginsItemInterface *const pluginInter, const QString &itemKey, QWidget *parent)
|
||||||
@ -111,9 +114,8 @@ void QuickSettingItem::paintEvent(QPaintEvent *e)
|
|||||||
pa.fillRect(pm.rect(), painter.pen().brush());
|
pa.fillRect(pm.rect(), painter.pen().brush());
|
||||||
if (m_pluginInter->isPrimary()) {
|
if (m_pluginInter->isPrimary()) {
|
||||||
// 如果是主图标,则显示阴影背景
|
// 如果是主图标,则显示阴影背景
|
||||||
int marginXSpace = xMarginSpace();
|
|
||||||
int marginYSpace = yMarginSpace();
|
int marginYSpace = yMarginSpace();
|
||||||
QRect iconBg(marginXSpace, marginYSpace, BGSIZE, BGSIZE);
|
QRect iconBg(MARGINLEFTSPACE, marginYSpace, BGSIZE, BGSIZE);
|
||||||
QPixmap bgPixmap = ImageUtil::getShadowPixmap(pm, shadowColor(), QSize(BGSIZE, BGSIZE));
|
QPixmap bgPixmap = ImageUtil::getShadowPixmap(pm, shadowColor(), QSize(BGSIZE, BGSIZE));
|
||||||
painter.drawPixmap(iconBg, bgPixmap);
|
painter.drawPixmap(iconBg, bgPixmap);
|
||||||
// 绘制文字
|
// 绘制文字
|
||||||
@ -140,8 +142,8 @@ void QuickSettingItem::paintEvent(QPaintEvent *e)
|
|||||||
pen.setColor(QColor(0, 0, 0));
|
pen.setColor(QColor(0, 0, 0));
|
||||||
pen.setWidth(2);
|
pen.setWidth(2);
|
||||||
painter.setPen(pen);
|
painter.setPen(pen);
|
||||||
int iconLeft = rect().width() - marginXSpace - expandSize.width();
|
int iconLeft = rect().width() - MARGINRIGHTSPACE - expandSize.width();
|
||||||
int iconRight = rect().width() - marginXSpace;
|
int iconRight = rect().width() - MARGINRIGHTSPACE;
|
||||||
painter.drawLine(QPoint(iconLeft, (iconBg.y() + (iconBg.height() - expandSize.height()) / 2)),
|
painter.drawLine(QPoint(iconLeft, (iconBg.y() + (iconBg.height() - expandSize.height()) / 2)),
|
||||||
QPoint(iconRight, (iconBg.y() + iconBg.height() / 2)));
|
QPoint(iconRight, (iconBg.y() + iconBg.height() / 2)));
|
||||||
painter.drawLine(QPoint(iconRight, (iconBg.y() + iconBg.height() / 2)),
|
painter.drawLine(QPoint(iconRight, (iconBg.y() + iconBg.height() / 2)),
|
||||||
@ -203,7 +205,7 @@ void QuickSettingItem::mouseReleaseEvent(QMouseEvent *event)
|
|||||||
// 如果是鼠标的按下事件
|
// 如果是鼠标的按下事件
|
||||||
if (m_pluginInter->isPrimary()) {
|
if (m_pluginInter->isPrimary()) {
|
||||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
|
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
|
||||||
QRect rctExpand(rect().width() - xMarginSpace() - expandSize.width(),
|
QRect rctExpand(rect().width() - MARGINRIGHTSPACE - expandSize.width(),
|
||||||
(rect().height() - expandSize.height()) / 2,
|
(rect().height() - expandSize.height()) / 2,
|
||||||
expandSize.width(), expandSize.height());
|
expandSize.width(), expandSize.height());
|
||||||
if (rctExpand.contains(mapFromGlobal(mouseEvent->globalPos())))
|
if (rctExpand.contains(mapFromGlobal(mouseEvent->globalPos())))
|
||||||
@ -218,11 +220,6 @@ void QuickSettingItem::mouseReleaseEvent(QMouseEvent *event)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int QuickSettingItem::xMarginSpace()
|
|
||||||
{
|
|
||||||
return (rect().width() - BGWIDTH) / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
int QuickSettingItem::yMarginSpace()
|
int QuickSettingItem::yMarginSpace()
|
||||||
{
|
{
|
||||||
return (rect().height() - BGSIZE) / 2;
|
return (rect().height() - BGSIZE) / 2;
|
||||||
|
@ -53,7 +53,6 @@ protected:
|
|||||||
void mouseReleaseEvent(QMouseEvent *event) override;
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int xMarginSpace();
|
|
||||||
int yMarginSpace();
|
int yMarginSpace();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -52,7 +52,7 @@ public:
|
|||||||
void itemUpdate(PluginsItemInterface * const, const QString &) override {}
|
void itemUpdate(PluginsItemInterface * const, const QString &) override {}
|
||||||
void itemRemoved(PluginsItemInterface * const, const QString &) override {}
|
void itemRemoved(PluginsItemInterface * const, const QString &) override {}
|
||||||
|
|
||||||
void updateDockInfo(const DockPart &) override {}
|
void updateDockInfo(PluginsItemInterface *const, const DockPart &) override {}
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
void pluginLoaderFinished();
|
void pluginLoaderFinished();
|
||||||
|
@ -260,6 +260,17 @@ void QuickPluginWindow::onFixedClick()
|
|||||||
popWindow->show(popupPoint());
|
popWindow->show(popupPoint());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void QuickPluginWindow::onUpdatePlugin(PluginsItemInterface *itemInter, const DockPart &dockPart)
|
||||||
|
{
|
||||||
|
//update plugin status
|
||||||
|
if (dockPart != DockPart::QuickShow)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QuickDockItem *dockItem = getDockItemByPlugin(itemInter);
|
||||||
|
if (dockItem)
|
||||||
|
dockItem->update();
|
||||||
|
}
|
||||||
|
|
||||||
void QuickPluginWindow::startDrag(PluginsItemInterface *moveItem)
|
void QuickPluginWindow::startDrag(PluginsItemInterface *moveItem)
|
||||||
{
|
{
|
||||||
AppDrag *drag = new AppDrag(this, new QuickDragWidget);
|
AppDrag *drag = new AppDrag(this, new QuickDragWidget);
|
||||||
@ -448,6 +459,8 @@ void QuickPluginWindow::initConnection()
|
|||||||
connect(QuickSettingController::instance(), &QuickSettingController::pluginRemoved, this, [ this ] (QuickSettingItem *settingItem){
|
connect(QuickSettingController::instance(), &QuickSettingController::pluginRemoved, this, [ this ] (QuickSettingItem *settingItem){
|
||||||
removePlugin(settingItem->pluginItem());
|
removePlugin(settingItem->pluginItem());
|
||||||
});
|
});
|
||||||
|
|
||||||
|
connect(QuickSettingController::instance(), &QuickSettingController::pluginUpdated, this, &QuickPluginWindow::onUpdatePlugin);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -478,6 +491,7 @@ void QuickDockItem::paintEvent(QPaintEvent *event)
|
|||||||
QPixmap pixmap = m_pluginItem->icon(DockPart::QuickPanel).pixmap(ICONHEIGHT, ICONHEIGHT);
|
QPixmap pixmap = m_pluginItem->icon(DockPart::QuickPanel).pixmap(ICONHEIGHT, ICONHEIGHT);
|
||||||
QRect pixmapRect = QRect((rect().width() - ICONHEIGHT) / 2, (rect().height() - ICONHEIGHT) / 2,
|
QRect pixmapRect = QRect((rect().width() - ICONHEIGHT) / 2, (rect().height() - ICONHEIGHT) / 2,
|
||||||
ICONHEIGHT, ICONHEIGHT);
|
ICONHEIGHT, ICONHEIGHT);
|
||||||
|
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
painter.drawPixmap(pixmapRect, pixmap);
|
painter.drawPixmap(pixmapRect, pixmap);
|
||||||
}
|
}
|
||||||
|
@ -34,6 +34,7 @@ class QStandardItem;
|
|||||||
class QMouseEvent;
|
class QMouseEvent;
|
||||||
class QBoxLayout;
|
class QBoxLayout;
|
||||||
class QuickDockItem;
|
class QuickDockItem;
|
||||||
|
enum class DockPart;
|
||||||
|
|
||||||
namespace Dtk { namespace Gui { class DRegionMonitor; }
|
namespace Dtk { namespace Gui { class DRegionMonitor; }
|
||||||
namespace Widget { class DListView; class DStandardItem; } }
|
namespace Widget { class DListView; class DStandardItem; } }
|
||||||
@ -65,6 +66,7 @@ private Q_SLOTS:
|
|||||||
void onPluginDropItem(QDropEvent *event);
|
void onPluginDropItem(QDropEvent *event);
|
||||||
void onPluginDragMove(QDragMoveEvent *event);
|
void onPluginDragMove(QDragMoveEvent *event);
|
||||||
void onFixedClick();
|
void onFixedClick();
|
||||||
|
void onUpdatePlugin(PluginsItemInterface *itemInter, const DockPart &dockPart);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void initUi();
|
void initUi();
|
||||||
|
@ -283,6 +283,9 @@ void QuickSettingContainer::initUi()
|
|||||||
|
|
||||||
m_pluginLayout->setContentsMargins(0, 0, 0, 0);
|
m_pluginLayout->setContentsMargins(0, 0, 0, 0);
|
||||||
m_pluginLayout->setSpacing(ITEMSPACE);
|
m_pluginLayout->setSpacing(ITEMSPACE);
|
||||||
|
m_pluginLayout->setAlignment(Qt::AlignLeft);
|
||||||
|
for (int i = 0; i < COLUMNCOUNT; i++)
|
||||||
|
m_pluginLayout->setColumnMinimumWidth(i, ITEMWIDTH);
|
||||||
|
|
||||||
m_pluginWidget->setLayout(m_pluginLayout);
|
m_pluginWidget->setLayout(m_pluginLayout);
|
||||||
m_mainlayout->addWidget(m_pluginWidget);
|
m_mainlayout->addWidget(m_pluginWidget);
|
||||||
|
@ -101,7 +101,7 @@ public:
|
|||||||
/// update display or information
|
/// update display or information
|
||||||
///
|
///
|
||||||
///
|
///
|
||||||
virtual void updateDockInfo(const DockPart &) = 0;
|
virtual void updateDockInfo(PluginsItemInterface *const itemInter, const DockPart &) = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PLUGINPROXYINTERFACE_H
|
#endif // PLUGINPROXYINTERFACE_H
|
||||||
|
Loading…
x
Reference in New Issue
Block a user