mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-03 00:15:21 +00:00
feat: 插件增加标记
插件接口类中增加flag接口,用于返回不同的插件的属性,在各插件的实现中实现这个接口 Log: Influence: 任务栏插件 Task: https://pms.uniontech.com/task-view-220099.html Change-Id: I9e8b8e0f5f9818856b70a76bbda9eb31dc4ebf65
This commit is contained in:
parent
6bcaead473
commit
c7df15ce0e
@ -25,8 +25,9 @@
|
||||
#define ICONWIDTH 24
|
||||
#define ICONHEIGHT 24
|
||||
|
||||
PluginAdapter::PluginAdapter(PluginsItemInterface_V20 *pluginInter)
|
||||
PluginAdapter::PluginAdapter(PluginsItemInterface_V20 *pluginInter, QPluginLoader *pluginLoader)
|
||||
: m_pluginInter(pluginInter)
|
||||
, m_pluginLoader(pluginLoader)
|
||||
{
|
||||
}
|
||||
|
||||
@ -191,7 +192,15 @@ PluginsItemInterface::PluginStatus PluginAdapter::status() const
|
||||
|
||||
QString PluginAdapter::description() const
|
||||
{
|
||||
return tr("actived");
|
||||
return m_pluginInter->pluginDisplayName();
|
||||
}
|
||||
|
||||
PluginFlags PluginAdapter::flags() const
|
||||
{
|
||||
if (m_pluginLoader->fileName().contains(TRAY_PATH))
|
||||
return PluginFlag::Type_Tray | PluginFlag::Attribute_CanDrag | PluginFlag::Attribute_CanInsert;
|
||||
|
||||
return PluginsItemInterface::flags();
|
||||
}
|
||||
|
||||
void PluginAdapter::setItemKey(const QString &itemKey)
|
||||
|
@ -36,7 +36,7 @@ class PluginAdapter : public QObject, public PluginsItemInterface
|
||||
Q_INTERFACES(PluginsItemInterface)
|
||||
|
||||
public:
|
||||
PluginAdapter(PluginsItemInterface_V20 *pluginInter);
|
||||
PluginAdapter(PluginsItemInterface_V20 *pluginInter, QPluginLoader *pluginLoader);
|
||||
~PluginAdapter();
|
||||
|
||||
const QString pluginName() const override;
|
||||
@ -68,12 +68,14 @@ public:
|
||||
QIcon icon(const DockPart &dockPart) override;
|
||||
PluginStatus status() const override;
|
||||
QString description() const override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
void setItemKey(const QString &itemKey);
|
||||
|
||||
private:
|
||||
PluginsItemInterface_V20 *m_pluginInter;
|
||||
QString m_itemKey;
|
||||
QPluginLoader *m_pluginLoader;
|
||||
};
|
||||
|
||||
#endif // PLUGINADAPTER_H
|
||||
|
@ -287,7 +287,7 @@ void AbstractPluginsController::loadPlugin(const QString &pluginFile)
|
||||
PluginsItemInterface_V20 *interface_v20 = qobject_cast<PluginsItemInterface_V20 *>(pluginLoader->instance());
|
||||
if (interface_v20) {
|
||||
// 将v20插件接口通过适配器转换成v23的接口,方便在后面识别
|
||||
PluginAdapter *pluginAdapter = new PluginAdapter(interface_v20);
|
||||
PluginAdapter *pluginAdapter = new PluginAdapter(interface_v20, pluginLoader);
|
||||
// 将适配器的地址保存到map列表中,因为适配器自己会调用itemAdded方法,转换成PluginsItemInterface类,但是实际上它
|
||||
// 对应的是PluginAdapter类,因此,这个map用于在后面的itemAdded方法中用来查找
|
||||
m_pluginAdapterMap[(qulonglong)(interface_v20)] = pluginAdapter;
|
||||
|
@ -35,6 +35,28 @@ enum class DockPart {
|
||||
DCCSetting // 显示在控制中心个性化设置的图标
|
||||
};
|
||||
|
||||
enum PluginFlag {
|
||||
Type_NoneFlag = 0x1, // 插件类型-没有任何的属性,不在任何地方显示
|
||||
Type_Common = 0x2, // 插件类型-快捷插件区
|
||||
Type_Tool = 0x4, // 插件类型-工具插件,例如回收站
|
||||
Type_System = 0x8, // 插件类型-系统插件,例如关机插件
|
||||
Type_Tray = 0x10, // 插件类型-托盘区,例如U盘插件
|
||||
Type_Fixed = 0x20, // 插件类型-固定区域,例如多任务视图和显示桌面
|
||||
|
||||
Quick_Single = 0x40, // 当插件类型为Common时,快捷插件区域只有一列的那种插件
|
||||
Quick_Multi = 0x80, // 当插件类型为Common时,快捷插件区占两列的那种插件
|
||||
Quick_Full = 0x100, // 当插件类型为Common时,快捷插件区占用4列的那种插件,例如声音、亮度设置和音乐等
|
||||
|
||||
Attribute_CanDrag = 0x200, // 插件属性-是否支持拖动
|
||||
Attribute_CanInsert = 0x400, // 插件属性-是否支持在其前面插入其他的插件,普通的快捷插件是支持的
|
||||
Attribute_CanSetting = 0x800, // 插件属性-是否可以在控制中心设置显示或隐藏
|
||||
|
||||
FlagMask = 0xffffffff // 掩码
|
||||
};
|
||||
|
||||
Q_DECLARE_FLAGS(PluginFlags, PluginFlag)
|
||||
Q_DECLARE_OPERATORS_FOR_FLAGS(PluginFlags)
|
||||
|
||||
// 快捷面板详情页面的itemWidget对应的itemKey
|
||||
#define QUICK_ITEM_KEY "quick_item_key"
|
||||
///
|
||||
@ -284,6 +306,12 @@ public:
|
||||
///
|
||||
virtual QIcon icon(const DockPart &dockPart, int themeType) { return icon(dockPart); }
|
||||
|
||||
///
|
||||
/// \brief m_proxyInter
|
||||
/// return the falgs for current plugin
|
||||
///
|
||||
virtual PluginFlags flags() const { return PluginFlag::Type_Common | PluginFlag::Quick_Single | PluginFlag::Attribute_CanDrag | PluginFlag::Attribute_CanInsert | PluginFlag::Attribute_CanSetting; }
|
||||
|
||||
protected:
|
||||
///
|
||||
/// \brief m_proxyInter
|
||||
|
@ -192,6 +192,15 @@ QString BluetoothPlugin::description() const
|
||||
return tr("close");
|
||||
}
|
||||
|
||||
PluginFlags BluetoothPlugin::flags() const
|
||||
{
|
||||
return PluginFlag::Type_Common
|
||||
| PluginFlag::Quick_Multi
|
||||
| PluginFlag::Attribute_CanDrag
|
||||
| PluginFlag::Attribute_CanInsert
|
||||
| PluginFlag::Attribute_CanSetting;
|
||||
}
|
||||
|
||||
void BluetoothPlugin::refreshPluginItemsVisible()
|
||||
{
|
||||
if (pluginIsDisable())
|
||||
|
@ -60,6 +60,7 @@ public:
|
||||
QIcon icon(const DockPart &dockPart, int themeType) override;
|
||||
PluginStatus status() const override;
|
||||
QString description() const override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
private:
|
||||
void refreshPluginItemsVisible();
|
||||
|
@ -184,6 +184,11 @@ PluginsItemInterface::PluginType MultitaskingPlugin::type()
|
||||
return PluginType::Fixed;
|
||||
}
|
||||
|
||||
PluginFlags MultitaskingPlugin::flags() const
|
||||
{
|
||||
return PluginFlag::Type_Fixed;
|
||||
}
|
||||
|
||||
void MultitaskingPlugin::updateVisible()
|
||||
{
|
||||
if (pluginIsDisable() || !DWindowManagerHelper::instance()->hasComposite()) {
|
||||
|
@ -55,6 +55,7 @@ public:
|
||||
void setSortKey(const QString &itemKey, const int order) override;
|
||||
void pluginSettingsChanged() override;
|
||||
PluginType type() override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
private:
|
||||
void updateVisible();
|
||||
|
@ -132,6 +132,11 @@ void OverlayWarningPlugin::setSortKey(const QString &itemKey, const int order)
|
||||
m_proxyInter->saveValue(this, key, order);
|
||||
}
|
||||
|
||||
PluginFlags OverlayWarningPlugin::flags() const
|
||||
{
|
||||
return PluginFlag::Type_NoneFlag;
|
||||
}
|
||||
|
||||
void OverlayWarningPlugin::loadPlugin()
|
||||
{
|
||||
if (m_pluginLoaded) {
|
||||
|
@ -59,6 +59,7 @@ public:
|
||||
|
||||
int itemSortKey(const QString &itemKey) override;
|
||||
void setSortKey(const QString &itemKey, const int order) override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
private:
|
||||
void loadPlugin();
|
||||
|
@ -187,6 +187,15 @@ QIcon PowerPlugin::icon(const DockPart &dockPart)
|
||||
return batteryIcon;
|
||||
}
|
||||
|
||||
PluginFlags PowerPlugin::flags() const
|
||||
{
|
||||
// 电池插件只在任务栏上面展示,不在快捷面板展示,并且可以拖动,可以在其前面插入其他插件,可以在控制中心设置是否显示隐藏
|
||||
return PluginFlag::Type_Common
|
||||
| PluginFlag::Attribute_CanDrag
|
||||
| PluginFlag::Attribute_CanInsert
|
||||
| PluginFlag::Attribute_CanSetting;
|
||||
}
|
||||
|
||||
void PowerPlugin::updateBatteryVisible()
|
||||
{
|
||||
const bool exist = !m_powerInter->batteryPercentage().isEmpty();
|
||||
|
@ -58,6 +58,7 @@ public:
|
||||
void setSortKey(const QString &itemKey, const int order) override;
|
||||
void pluginSettingsChanged() override;
|
||||
QIcon icon(const DockPart &dockPart) override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
private:
|
||||
void updateBatteryVisible();
|
||||
|
@ -164,6 +164,11 @@ PluginsItemInterface::PluginType ShowDesktopPlugin::type()
|
||||
return PluginType::Fixed;
|
||||
}
|
||||
|
||||
PluginFlags ShowDesktopPlugin::flags() const
|
||||
{
|
||||
return PluginFlag::Type_Fixed;
|
||||
}
|
||||
|
||||
void ShowDesktopPlugin::updateVisible()
|
||||
{
|
||||
if (pluginIsDisable())
|
||||
|
@ -54,6 +54,7 @@ public:
|
||||
void setSortKey(const QString &itemKey, const int order) override;
|
||||
void pluginSettingsChanged() override;
|
||||
PluginType type() override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
private:
|
||||
void updateVisible();
|
||||
|
@ -312,6 +312,11 @@ QIcon ShutdownPlugin::icon(const DockPart &dockPart)
|
||||
return shutdownIcon;
|
||||
}
|
||||
|
||||
PluginFlags ShutdownPlugin::flags() const
|
||||
{
|
||||
return PluginFlag::Type_System | PluginFlag::Attribute_CanSetting;
|
||||
}
|
||||
|
||||
void ShutdownPlugin::loadPlugin()
|
||||
{
|
||||
if (m_pluginLoaded) {
|
||||
|
@ -62,6 +62,7 @@ public:
|
||||
|
||||
void pluginSettingsChanged() override;
|
||||
QIcon icon(const DockPart &dockPart) override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
// 休眠待机配置,保持和sessionshell一致
|
||||
const QStringList session_ui_configs {
|
||||
|
@ -160,6 +160,15 @@ PluginsItemInterface::PluginStatus SoundPlugin::status() const
|
||||
return SoundPlugin::Active;
|
||||
}
|
||||
|
||||
PluginFlags SoundPlugin::flags() const
|
||||
{
|
||||
return PluginFlag::Type_Common
|
||||
| PluginFlag::Quick_Full
|
||||
| PluginFlag::Attribute_CanDrag
|
||||
| PluginFlag::Attribute_CanInsert
|
||||
| PluginFlag::Attribute_CanSetting;
|
||||
}
|
||||
|
||||
void SoundPlugin::refreshPluginItemsVisible()
|
||||
{
|
||||
if (pluginIsDisable())
|
||||
|
@ -54,6 +54,7 @@ public:
|
||||
QIcon icon(const DockPart &) override;
|
||||
QIcon icon(const DockPart &dockPart, int themeType) override;
|
||||
PluginStatus status() const override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
private:
|
||||
void refreshPluginItemsVisible();
|
||||
|
@ -196,6 +196,12 @@ QIcon TrashPlugin::icon(const DockPart &dockPart, int themeType)
|
||||
return QIcon();
|
||||
}
|
||||
|
||||
PluginFlags TrashPlugin::flags() const
|
||||
{
|
||||
return PluginFlag::Type_Tool
|
||||
| PluginFlag::Attribute_CanSetting;
|
||||
}
|
||||
|
||||
void TrashPlugin::refreshPluginItemsVisible()
|
||||
{
|
||||
if (pluginIsDisable()) {
|
||||
|
@ -63,6 +63,7 @@ public:
|
||||
void displayModeChanged(const Dock::DisplayMode displayMode) override;
|
||||
void pluginSettingsChanged() override;
|
||||
QIcon icon(const DockPart &dockPart, int themeType) override;
|
||||
PluginFlags flags() const override;
|
||||
|
||||
private:
|
||||
void refreshPluginItemsVisible();
|
||||
|
Loading…
x
Reference in New Issue
Block a user