mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
feat: 删除插件基类的isPrimary接口
删除isPrimary()接口,插件继承的时候无需实现该接口,任务栏读取是否主插件的时候从json中读取配置即可 Log: 优化任务栏插件的接口 Influence: 安装网络插件,查看网络插件是否在快捷设置面板中显示两列图标 Task: https://pms.uniontech.com/task-view-121387.html Change-Id: I1d47e6c7b4162f4fdc36bf4879bbd85c0caaff69
This commit is contained in:
parent
1691e7188c
commit
282e933225
@ -40,7 +40,7 @@ void QuickSettingController::sortPlugins()
|
|||||||
QList<QuickSettingItem *> primarySettingItems;
|
QList<QuickSettingItem *> primarySettingItems;
|
||||||
QList<QuickSettingItem *> quickItems;
|
QList<QuickSettingItem *> quickItems;
|
||||||
for (QuickSettingItem *item : m_quickSettingItems) {
|
for (QuickSettingItem *item : m_quickSettingItems) {
|
||||||
if (item->pluginItem()->isPrimary())
|
if (item->isPrimary())
|
||||||
primarySettingItems << item;
|
primarySettingItems << item;
|
||||||
else
|
else
|
||||||
quickItems << item;
|
quickItems << item;
|
||||||
@ -70,7 +70,11 @@ void QuickSettingController::itemAdded(PluginsItemInterface * const itemInter, c
|
|||||||
if (findItemIterator != m_quickSettingItems.end())
|
if (findItemIterator != m_quickSettingItems.end())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QuickSettingItem *quickItem = new QuickSettingItem(itemInter, itemKey);
|
QPluginLoader *pluginLoader = ProxyPluginController::instance(PluginType::QuickPlugin)->pluginLoader(itemInter);
|
||||||
|
QJsonObject metaData;
|
||||||
|
if (pluginLoader)
|
||||||
|
metaData = pluginLoader->metaData().value("MetaData").toObject();
|
||||||
|
QuickSettingItem *quickItem = new QuickSettingItem(itemInter, itemKey, metaData);
|
||||||
|
|
||||||
m_quickSettingItems << quickItem;
|
m_quickSettingItems << quickItem;
|
||||||
sortPlugins();
|
sortPlugins();
|
||||||
|
@ -43,10 +43,11 @@
|
|||||||
|
|
||||||
static QSize expandSize = QSize(20, 20);
|
static QSize expandSize = QSize(20, 20);
|
||||||
|
|
||||||
QuickSettingItem::QuickSettingItem(PluginsItemInterface *const pluginInter, const QString &itemKey, QWidget *parent)
|
QuickSettingItem::QuickSettingItem(PluginsItemInterface *const pluginInter, const QString &itemKey, const QJsonObject &metaData, QWidget *parent)
|
||||||
: DockItem(parent)
|
: DockItem(parent)
|
||||||
, m_pluginInter(pluginInter)
|
, m_pluginInter(pluginInter)
|
||||||
, m_itemKey(itemKey)
|
, m_itemKey(itemKey)
|
||||||
|
, m_metaData(metaData)
|
||||||
{
|
{
|
||||||
setAcceptDrops(true);
|
setAcceptDrops(true);
|
||||||
this->installEventFilter(this);
|
this->installEventFilter(this);
|
||||||
@ -96,6 +97,14 @@ const QString QuickSettingItem::itemKey() const
|
|||||||
return m_itemKey;
|
return m_itemKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QuickSettingItem::isPrimary() const
|
||||||
|
{
|
||||||
|
if (m_metaData.contains("primary"))
|
||||||
|
return m_metaData.value("primary").toBool();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void QuickSettingItem::paintEvent(QPaintEvent *e)
|
void QuickSettingItem::paintEvent(QPaintEvent *e)
|
||||||
{
|
{
|
||||||
QWidget::paintEvent(e);
|
QWidget::paintEvent(e);
|
||||||
@ -125,7 +134,7 @@ void QuickSettingItem::paintEvent(QPaintEvent *e)
|
|||||||
QPainter pa(&pm);
|
QPainter pa(&pm);
|
||||||
pa.setCompositionMode(QPainter::CompositionMode_SourceIn);
|
pa.setCompositionMode(QPainter::CompositionMode_SourceIn);
|
||||||
pa.fillRect(pm.rect(), painter.pen().brush());
|
pa.fillRect(pm.rect(), painter.pen().brush());
|
||||||
if (m_pluginInter->isPrimary()) {
|
if (isPrimary()) {
|
||||||
// 如果是主图标,则显示阴影背景
|
// 如果是主图标,则显示阴影背景
|
||||||
int marginYSpace = yMarginSpace();
|
int marginYSpace = yMarginSpace();
|
||||||
QRect iconBg(MARGINLEFTSPACE, marginYSpace, BGSIZE, BGSIZE);
|
QRect iconBg(MARGINLEFTSPACE, marginYSpace, BGSIZE, BGSIZE);
|
||||||
@ -201,7 +210,7 @@ QColor QuickSettingItem::foregroundColor() const
|
|||||||
void QuickSettingItem::mouseReleaseEvent(QMouseEvent *event)
|
void QuickSettingItem::mouseReleaseEvent(QMouseEvent *event)
|
||||||
{
|
{
|
||||||
// 如果是鼠标的按下事件
|
// 如果是鼠标的按下事件
|
||||||
if (m_pluginInter->isPrimary()) {
|
if (isPrimary()) {
|
||||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
|
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
|
||||||
QRect rctExpand(rect().width() - MARGINRIGHTSPACE - expandSize.width(),
|
QRect rctExpand(rect().width() - MARGINRIGHTSPACE - expandSize.width(),
|
||||||
(rect().height() - expandSize.height()) / 2,
|
(rect().height() - expandSize.height()) / 2,
|
||||||
|
@ -39,9 +39,10 @@ public:
|
|||||||
ItemType itemType() const override;
|
ItemType itemType() const override;
|
||||||
const QPixmap dragPixmap();
|
const QPixmap dragPixmap();
|
||||||
const QString itemKey() const;
|
const QString itemKey() const;
|
||||||
|
bool isPrimary() const;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QuickSettingItem(PluginsItemInterface *const pluginInter, const QString &itemKey, QWidget *parent = nullptr);
|
QuickSettingItem(PluginsItemInterface *const pluginInter, const QString &itemKey, const QJsonObject &metaData, QWidget *parent = nullptr);
|
||||||
~QuickSettingItem() override;
|
~QuickSettingItem() override;
|
||||||
|
|
||||||
void paintEvent(QPaintEvent *e) override;
|
void paintEvent(QPaintEvent *e) override;
|
||||||
@ -57,6 +58,7 @@ private:
|
|||||||
private:
|
private:
|
||||||
PluginsItemInterface *m_pluginInter;
|
PluginsItemInterface *m_pluginInter;
|
||||||
QString m_itemKey;
|
QString m_itemKey;
|
||||||
|
QJsonObject m_metaData;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // QUICKSETTINGITEM_H
|
#endif // QUICKSETTINGITEM_H
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "pluginsiteminterface.h"
|
#include "pluginsiteminterface.h"
|
||||||
#include "quicksettingcontainer.h"
|
#include "quicksettingcontainer.h"
|
||||||
#include "appdrag.h"
|
#include "appdrag.h"
|
||||||
|
#include "proxyplugincontroller.h"
|
||||||
|
|
||||||
#include <DStyleOption>
|
#include <DStyleOption>
|
||||||
#include <DStandardItem>
|
#include <DStandardItem>
|
||||||
@ -334,7 +335,7 @@ int QuickPluginWindow::getDropIndex(QPoint point)
|
|||||||
|
|
||||||
QuickDockItem *dockBeforeItem = qobject_cast<QuickDockItem *>(layoutBefore->widget());
|
QuickDockItem *dockBeforeItem = qobject_cast<QuickDockItem *>(layoutBefore->widget());
|
||||||
QuickDockItem *dockItem = qobject_cast<QuickDockItem *>(layoutItem->widget());
|
QuickDockItem *dockItem = qobject_cast<QuickDockItem *>(layoutItem->widget());
|
||||||
if (dockItem->pluginItem()->isPrimary())
|
if (dockItem->isPrimary())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (dockBeforeItem->geometry().x() > point.x() && dockItem->geometry().right() < point.x())
|
if (dockBeforeItem->geometry().x() > point.x() && dockItem->geometry().right() < point.x())
|
||||||
@ -348,7 +349,7 @@ int QuickPluginWindow::getDropIndex(QPoint point)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
QuickDockItem *dockBeforeItem = qobject_cast<QuickDockItem *>(layoutBefore->widget());
|
QuickDockItem *dockBeforeItem = qobject_cast<QuickDockItem *>(layoutBefore->widget());
|
||||||
if (dockBeforeItem->pluginItem()->isPrimary())
|
if (dockBeforeItem->isPrimary())
|
||||||
break;
|
break;
|
||||||
|
|
||||||
QuickDockItem *dockItem = qobject_cast<QuickDockItem *>(layoutItem->widget());
|
QuickDockItem *dockItem = qobject_cast<QuickDockItem *>(layoutItem->widget());
|
||||||
@ -439,7 +440,12 @@ void QuickPluginWindow::resetPluginDisplay()
|
|||||||
if (pluginItems.contains(item)) {
|
if (pluginItems.contains(item)) {
|
||||||
itemWidget = pluginItems[item];
|
itemWidget = pluginItems[item];
|
||||||
} else {
|
} else {
|
||||||
itemWidget = new QuickDockItem(item, this);
|
QJsonObject metaData;
|
||||||
|
QPluginLoader *pluginLoader = ProxyPluginController::instance(PluginType::QuickPlugin)->pluginLoader(item);
|
||||||
|
if (pluginLoader)
|
||||||
|
metaData = pluginLoader->metaData().value("MetaData").toObject();
|
||||||
|
|
||||||
|
itemWidget = new QuickDockItem(item, metaData, this);
|
||||||
itemWidget->setFixedSize(ICONWIDTH, ICONHEIGHT);
|
itemWidget->setFixedSize(ICONWIDTH, ICONHEIGHT);
|
||||||
}
|
}
|
||||||
connect(itemWidget, &QuickDockItem::clicked, this, &QuickPluginWindow::onFixedClick);
|
connect(itemWidget, &QuickDockItem::clicked, this, &QuickPluginWindow::onFixedClick);
|
||||||
@ -474,9 +480,10 @@ void QuickPluginWindow::initConnection()
|
|||||||
* @param pluginItem
|
* @param pluginItem
|
||||||
* @param parent
|
* @param parent
|
||||||
*/
|
*/
|
||||||
QuickDockItem::QuickDockItem(PluginsItemInterface *pluginItem, QWidget *parent)
|
QuickDockItem::QuickDockItem(PluginsItemInterface *pluginItem, const QJsonObject &metaData, QWidget *parent)
|
||||||
: QWidget(parent)
|
: QWidget(parent)
|
||||||
, m_pluginItem(pluginItem)
|
, m_pluginItem(pluginItem)
|
||||||
|
, m_metaData(metaData)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -489,6 +496,14 @@ PluginsItemInterface *QuickDockItem::pluginItem()
|
|||||||
return m_pluginItem;
|
return m_pluginItem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool QuickDockItem::isPrimary() const
|
||||||
|
{
|
||||||
|
if (m_metaData.contains("primary"))
|
||||||
|
return m_metaData.value("primary").toBool();
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void QuickDockItem::paintEvent(QPaintEvent *event)
|
void QuickDockItem::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
if (!m_pluginItem)
|
if (!m_pluginItem)
|
||||||
|
@ -93,10 +93,11 @@ class QuickDockItem : public QWidget
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
explicit QuickDockItem(PluginsItemInterface *pluginItem, QWidget *parent = nullptr);
|
explicit QuickDockItem(PluginsItemInterface *pluginItem, const QJsonObject &metaData, QWidget *parent = nullptr);
|
||||||
~QuickDockItem();
|
~QuickDockItem();
|
||||||
|
|
||||||
PluginsItemInterface *pluginItem();
|
PluginsItemInterface *pluginItem();
|
||||||
|
bool isPrimary() const;
|
||||||
|
|
||||||
Q_SIGNALS:
|
Q_SIGNALS:
|
||||||
void clicked();
|
void clicked();
|
||||||
@ -107,6 +108,7 @@ protected:
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
PluginsItemInterface *m_pluginItem;
|
PluginsItemInterface *m_pluginItem;
|
||||||
|
QJsonObject m_metaData;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // QUICKPLUGINWINDOW_H
|
#endif // QUICKPLUGINWINDOW_H
|
||||||
|
@ -203,7 +203,7 @@ void QuickSettingContainer::mousePressEvent(QMouseEvent *event)
|
|||||||
return QWidget::mousePressEvent(event);
|
return QWidget::mousePressEvent(event);
|
||||||
|
|
||||||
QuickSettingItem *moveItem = qobject_cast<QuickSettingItem *>(childAt(event->pos()));
|
QuickSettingItem *moveItem = qobject_cast<QuickSettingItem *>(childAt(event->pos()));
|
||||||
if (!moveItem || moveItem->pluginItem()->isPrimary())
|
if (!moveItem || moveItem->isPrimary())
|
||||||
return QWidget::mousePressEvent(event);
|
return QWidget::mousePressEvent(event);
|
||||||
|
|
||||||
m_dragPluginPosition = event->pos();
|
m_dragPluginPosition = event->pos();
|
||||||
@ -257,7 +257,7 @@ void QuickSettingContainer::updateItemLayout()
|
|||||||
int column = 0;
|
int column = 0;
|
||||||
QList<QuickSettingItem *> quickSettings = m_pluginLoader->settingItems();
|
QList<QuickSettingItem *> quickSettings = m_pluginLoader->settingItems();
|
||||||
for (QuickSettingItem *item : quickSettings) {
|
for (QuickSettingItem *item : quickSettings) {
|
||||||
int usedColumn = item->pluginItem()->isPrimary() ? 2 : 1;
|
int usedColumn = item->isPrimary() ? 2 : 1;
|
||||||
m_pluginLayout->addWidget(item, row, column, 1, usedColumn);
|
m_pluginLayout->addWidget(item, row, column, 1, usedColumn);
|
||||||
column += usedColumn;
|
column += usedColumn;
|
||||||
if (column >= COLUMNCOUNT) {
|
if (column >= COLUMNCOUNT) {
|
||||||
@ -361,7 +361,7 @@ void QuickSettingContainer::resizeView()
|
|||||||
int selfPluginCount = 0;
|
int selfPluginCount = 0;
|
||||||
for (QuickSettingItem *item : pluginItems) {
|
for (QuickSettingItem *item : pluginItems) {
|
||||||
// 如果是置顶的插件,则认为它占用两个普通插件的位置
|
// 如果是置顶的插件,则认为它占用两个普通插件的位置
|
||||||
int increCount = (item->pluginItem()->isPrimary() ? 2 : 1);
|
int increCount = (item->isPrimary() ? 2 : 1);
|
||||||
selfPluginCount += increCount;
|
selfPluginCount += increCount;
|
||||||
}
|
}
|
||||||
int rowCount = selfPluginCount / COLUMNCOUNT;
|
int rowCount = selfPluginCount / COLUMNCOUNT;
|
||||||
|
@ -269,12 +269,6 @@ public:
|
|||||||
///
|
///
|
||||||
virtual PluginStatus status() const { return PluginStatus::Deactive; }
|
virtual PluginStatus status() const { return PluginStatus::Deactive; }
|
||||||
|
|
||||||
///
|
|
||||||
/// return is primary plugin,if true, the plugin will display on top
|
|
||||||
/// the default value is false
|
|
||||||
///
|
|
||||||
virtual bool isPrimary() const { return false; }
|
|
||||||
|
|
||||||
///
|
///
|
||||||
/// return the detail value, it will display in the center
|
/// return the detail value, it will display in the center
|
||||||
///
|
///
|
||||||
|
Loading…
x
Reference in New Issue
Block a user