mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +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()
|
||||
{
|
||||
static QuickSettingController instance;
|
||||
|
@ -36,6 +36,7 @@ public:
|
||||
Q_SIGNALS:
|
||||
void pluginInserted(QuickSettingItem *);
|
||||
void pluginRemoved(QuickSettingItem *);
|
||||
void pluginUpdated(PluginsItemInterface *, const DockPart &);
|
||||
|
||||
protected:
|
||||
void startLoader();
|
||||
@ -49,6 +50,7 @@ protected:
|
||||
void requestWindowAutoHide(PluginsItemInterface * const, const QString &, const bool) override {}
|
||||
void requestRefreshWindowVisible(PluginsItemInterface * const, const QString &) override {}
|
||||
void requestSetAppletVisible(PluginsItemInterface * const, const QString &, const bool) override {}
|
||||
void updateDockInfo(PluginsItemInterface * const itemInter, const DockPart &part) override;
|
||||
|
||||
private:
|
||||
void sortPlugins();
|
||||
|
@ -36,7 +36,10 @@
|
||||
|
||||
#define BGWIDTH 128
|
||||
#define BGSIZE 36
|
||||
#define MARGINLEFTSPACE 10
|
||||
#define OPENICONSIZE 12
|
||||
#define MARGINRIGHTSPACE 12
|
||||
|
||||
static QSize expandSize = QSize(6, 10);
|
||||
|
||||
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());
|
||||
if (m_pluginInter->isPrimary()) {
|
||||
// 如果是主图标,则显示阴影背景
|
||||
int marginXSpace = xMarginSpace();
|
||||
int marginYSpace = yMarginSpace();
|
||||
QRect iconBg(marginXSpace, marginYSpace, BGSIZE, BGSIZE);
|
||||
QRect iconBg(MARGINLEFTSPACE, marginYSpace, BGSIZE, BGSIZE);
|
||||
QPixmap bgPixmap = ImageUtil::getShadowPixmap(pm, shadowColor(), QSize(BGSIZE, BGSIZE));
|
||||
painter.drawPixmap(iconBg, bgPixmap);
|
||||
// 绘制文字
|
||||
@ -140,8 +142,8 @@ void QuickSettingItem::paintEvent(QPaintEvent *e)
|
||||
pen.setColor(QColor(0, 0, 0));
|
||||
pen.setWidth(2);
|
||||
painter.setPen(pen);
|
||||
int iconLeft = rect().width() - marginXSpace - expandSize.width();
|
||||
int iconRight = rect().width() - marginXSpace;
|
||||
int iconLeft = rect().width() - MARGINRIGHTSPACE - expandSize.width();
|
||||
int iconRight = rect().width() - MARGINRIGHTSPACE;
|
||||
painter.drawLine(QPoint(iconLeft, (iconBg.y() + (iconBg.height() - expandSize.height()) / 2)),
|
||||
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()) {
|
||||
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,
|
||||
expandSize.width(), expandSize.height());
|
||||
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()
|
||||
{
|
||||
return (rect().height() - BGSIZE) / 2;
|
||||
|
@ -53,7 +53,6 @@ protected:
|
||||
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||
|
||||
private:
|
||||
int xMarginSpace();
|
||||
int yMarginSpace();
|
||||
|
||||
private:
|
||||
|
@ -52,7 +52,7 @@ public:
|
||||
void itemUpdate(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:
|
||||
void pluginLoaderFinished();
|
||||
|
@ -260,6 +260,17 @@ void QuickPluginWindow::onFixedClick()
|
||||
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)
|
||||
{
|
||||
AppDrag *drag = new AppDrag(this, new QuickDragWidget);
|
||||
@ -448,6 +459,8 @@ void QuickPluginWindow::initConnection()
|
||||
connect(QuickSettingController::instance(), &QuickSettingController::pluginRemoved, this, [ this ] (QuickSettingItem *settingItem){
|
||||
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);
|
||||
QRect pixmapRect = QRect((rect().width() - ICONHEIGHT) / 2, (rect().height() - ICONHEIGHT) / 2,
|
||||
ICONHEIGHT, ICONHEIGHT);
|
||||
|
||||
QPainter painter(this);
|
||||
painter.drawPixmap(pixmapRect, pixmap);
|
||||
}
|
||||
|
@ -34,6 +34,7 @@ class QStandardItem;
|
||||
class QMouseEvent;
|
||||
class QBoxLayout;
|
||||
class QuickDockItem;
|
||||
enum class DockPart;
|
||||
|
||||
namespace Dtk { namespace Gui { class DRegionMonitor; }
|
||||
namespace Widget { class DListView; class DStandardItem; } }
|
||||
@ -65,6 +66,7 @@ private Q_SLOTS:
|
||||
void onPluginDropItem(QDropEvent *event);
|
||||
void onPluginDragMove(QDragMoveEvent *event);
|
||||
void onFixedClick();
|
||||
void onUpdatePlugin(PluginsItemInterface *itemInter, const DockPart &dockPart);
|
||||
|
||||
private:
|
||||
void initUi();
|
||||
|
@ -283,6 +283,9 @@ void QuickSettingContainer::initUi()
|
||||
|
||||
m_pluginLayout->setContentsMargins(0, 0, 0, 0);
|
||||
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_mainlayout->addWidget(m_pluginWidget);
|
||||
|
@ -101,7 +101,7 @@ public:
|
||||
/// update display or information
|
||||
///
|
||||
///
|
||||
virtual void updateDockInfo(const DockPart &) = 0;
|
||||
virtual void updateDockInfo(PluginsItemInterface *const itemInter, const DockPart &) = 0;
|
||||
};
|
||||
|
||||
#endif // PLUGINPROXYINTERFACE_H
|
||||
|
Loading…
x
Reference in New Issue
Block a user