mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-01 07:05:48 +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 *> quickItems;
|
||||
for (QuickSettingItem *item : m_quickSettingItems) {
|
||||
if (item->pluginItem()->isPrimary())
|
||||
if (item->isPrimary())
|
||||
primarySettingItems << item;
|
||||
else
|
||||
quickItems << item;
|
||||
@ -70,7 +70,11 @@ void QuickSettingController::itemAdded(PluginsItemInterface * const itemInter, c
|
||||
if (findItemIterator != m_quickSettingItems.end())
|
||||
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;
|
||||
sortPlugins();
|
||||
|
@ -43,10 +43,11 @@
|
||||
|
||||
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)
|
||||
, m_pluginInter(pluginInter)
|
||||
, m_itemKey(itemKey)
|
||||
, m_metaData(metaData)
|
||||
{
|
||||
setAcceptDrops(true);
|
||||
this->installEventFilter(this);
|
||||
@ -96,6 +97,14 @@ const QString QuickSettingItem::itemKey() const
|
||||
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)
|
||||
{
|
||||
QWidget::paintEvent(e);
|
||||
@ -125,7 +134,7 @@ void QuickSettingItem::paintEvent(QPaintEvent *e)
|
||||
QPainter pa(&pm);
|
||||
pa.setCompositionMode(QPainter::CompositionMode_SourceIn);
|
||||
pa.fillRect(pm.rect(), painter.pen().brush());
|
||||
if (m_pluginInter->isPrimary()) {
|
||||
if (isPrimary()) {
|
||||
// 如果是主图标,则显示阴影背景
|
||||
int marginYSpace = yMarginSpace();
|
||||
QRect iconBg(MARGINLEFTSPACE, marginYSpace, BGSIZE, BGSIZE);
|
||||
@ -201,7 +210,7 @@ QColor QuickSettingItem::foregroundColor() const
|
||||
void QuickSettingItem::mouseReleaseEvent(QMouseEvent *event)
|
||||
{
|
||||
// 如果是鼠标的按下事件
|
||||
if (m_pluginInter->isPrimary()) {
|
||||
if (isPrimary()) {
|
||||
QMouseEvent *mouseEvent = static_cast<QMouseEvent *>(event);
|
||||
QRect rctExpand(rect().width() - MARGINRIGHTSPACE - expandSize.width(),
|
||||
(rect().height() - expandSize.height()) / 2,
|
||||
|
@ -39,9 +39,10 @@ public:
|
||||
ItemType itemType() const override;
|
||||
const QPixmap dragPixmap();
|
||||
const QString itemKey() const;
|
||||
bool isPrimary() const;
|
||||
|
||||
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;
|
||||
|
||||
void paintEvent(QPaintEvent *e) override;
|
||||
@ -57,6 +58,7 @@ private:
|
||||
private:
|
||||
PluginsItemInterface *m_pluginInter;
|
||||
QString m_itemKey;
|
||||
QJsonObject m_metaData;
|
||||
};
|
||||
|
||||
#endif // QUICKSETTINGITEM_H
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "pluginsiteminterface.h"
|
||||
#include "quicksettingcontainer.h"
|
||||
#include "appdrag.h"
|
||||
#include "proxyplugincontroller.h"
|
||||
|
||||
#include <DStyleOption>
|
||||
#include <DStandardItem>
|
||||
@ -334,7 +335,7 @@ int QuickPluginWindow::getDropIndex(QPoint point)
|
||||
|
||||
QuickDockItem *dockBeforeItem = qobject_cast<QuickDockItem *>(layoutBefore->widget());
|
||||
QuickDockItem *dockItem = qobject_cast<QuickDockItem *>(layoutItem->widget());
|
||||
if (dockItem->pluginItem()->isPrimary())
|
||||
if (dockItem->isPrimary())
|
||||
continue;
|
||||
|
||||
if (dockBeforeItem->geometry().x() > point.x() && dockItem->geometry().right() < point.x())
|
||||
@ -348,7 +349,7 @@ int QuickPluginWindow::getDropIndex(QPoint point)
|
||||
continue;
|
||||
|
||||
QuickDockItem *dockBeforeItem = qobject_cast<QuickDockItem *>(layoutBefore->widget());
|
||||
if (dockBeforeItem->pluginItem()->isPrimary())
|
||||
if (dockBeforeItem->isPrimary())
|
||||
break;
|
||||
|
||||
QuickDockItem *dockItem = qobject_cast<QuickDockItem *>(layoutItem->widget());
|
||||
@ -439,7 +440,12 @@ void QuickPluginWindow::resetPluginDisplay()
|
||||
if (pluginItems.contains(item)) {
|
||||
itemWidget = pluginItems[item];
|
||||
} 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);
|
||||
}
|
||||
connect(itemWidget, &QuickDockItem::clicked, this, &QuickPluginWindow::onFixedClick);
|
||||
@ -474,9 +480,10 @@ void QuickPluginWindow::initConnection()
|
||||
* @param pluginItem
|
||||
* @param parent
|
||||
*/
|
||||
QuickDockItem::QuickDockItem(PluginsItemInterface *pluginItem, QWidget *parent)
|
||||
QuickDockItem::QuickDockItem(PluginsItemInterface *pluginItem, const QJsonObject &metaData, QWidget *parent)
|
||||
: QWidget(parent)
|
||||
, m_pluginItem(pluginItem)
|
||||
, m_metaData(metaData)
|
||||
{
|
||||
}
|
||||
|
||||
@ -489,6 +496,14 @@ PluginsItemInterface *QuickDockItem::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)
|
||||
{
|
||||
if (!m_pluginItem)
|
||||
|
@ -93,10 +93,11 @@ class QuickDockItem : public QWidget
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
explicit QuickDockItem(PluginsItemInterface *pluginItem, QWidget *parent = nullptr);
|
||||
explicit QuickDockItem(PluginsItemInterface *pluginItem, const QJsonObject &metaData, QWidget *parent = nullptr);
|
||||
~QuickDockItem();
|
||||
|
||||
PluginsItemInterface *pluginItem();
|
||||
bool isPrimary() const;
|
||||
|
||||
Q_SIGNALS:
|
||||
void clicked();
|
||||
@ -107,6 +108,7 @@ protected:
|
||||
|
||||
private:
|
||||
PluginsItemInterface *m_pluginItem;
|
||||
QJsonObject m_metaData;
|
||||
};
|
||||
|
||||
#endif // QUICKPLUGINWINDOW_H
|
||||
|
@ -203,7 +203,7 @@ void QuickSettingContainer::mousePressEvent(QMouseEvent *event)
|
||||
return QWidget::mousePressEvent(event);
|
||||
|
||||
QuickSettingItem *moveItem = qobject_cast<QuickSettingItem *>(childAt(event->pos()));
|
||||
if (!moveItem || moveItem->pluginItem()->isPrimary())
|
||||
if (!moveItem || moveItem->isPrimary())
|
||||
return QWidget::mousePressEvent(event);
|
||||
|
||||
m_dragPluginPosition = event->pos();
|
||||
@ -257,7 +257,7 @@ void QuickSettingContainer::updateItemLayout()
|
||||
int column = 0;
|
||||
QList<QuickSettingItem *> quickSettings = m_pluginLoader->settingItems();
|
||||
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);
|
||||
column += usedColumn;
|
||||
if (column >= COLUMNCOUNT) {
|
||||
@ -361,7 +361,7 @@ void QuickSettingContainer::resizeView()
|
||||
int selfPluginCount = 0;
|
||||
for (QuickSettingItem *item : pluginItems) {
|
||||
// 如果是置顶的插件,则认为它占用两个普通插件的位置
|
||||
int increCount = (item->pluginItem()->isPrimary() ? 2 : 1);
|
||||
int increCount = (item->isPrimary() ? 2 : 1);
|
||||
selfPluginCount += increCount;
|
||||
}
|
||||
int rowCount = selfPluginCount / COLUMNCOUNT;
|
||||
|
@ -269,12 +269,6 @@ public:
|
||||
///
|
||||
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
|
||||
///
|
||||
|
Loading…
x
Reference in New Issue
Block a user