mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 17:33:05 +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 ICONWIDTH 24
|
||||||
#define ICONHEIGHT 24
|
#define ICONHEIGHT 24
|
||||||
|
|
||||||
PluginAdapter::PluginAdapter(PluginsItemInterface_V20 *pluginInter)
|
PluginAdapter::PluginAdapter(PluginsItemInterface_V20 *pluginInter, QPluginLoader *pluginLoader)
|
||||||
: m_pluginInter(pluginInter)
|
: m_pluginInter(pluginInter)
|
||||||
|
, m_pluginLoader(pluginLoader)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -191,7 +192,15 @@ PluginsItemInterface::PluginStatus PluginAdapter::status() const
|
|||||||
|
|
||||||
QString PluginAdapter::description() 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)
|
void PluginAdapter::setItemKey(const QString &itemKey)
|
||||||
|
@ -36,7 +36,7 @@ class PluginAdapter : public QObject, public PluginsItemInterface
|
|||||||
Q_INTERFACES(PluginsItemInterface)
|
Q_INTERFACES(PluginsItemInterface)
|
||||||
|
|
||||||
public:
|
public:
|
||||||
PluginAdapter(PluginsItemInterface_V20 *pluginInter);
|
PluginAdapter(PluginsItemInterface_V20 *pluginInter, QPluginLoader *pluginLoader);
|
||||||
~PluginAdapter();
|
~PluginAdapter();
|
||||||
|
|
||||||
const QString pluginName() const override;
|
const QString pluginName() const override;
|
||||||
@ -68,12 +68,14 @@ public:
|
|||||||
QIcon icon(const DockPart &dockPart) override;
|
QIcon icon(const DockPart &dockPart) override;
|
||||||
PluginStatus status() const override;
|
PluginStatus status() const override;
|
||||||
QString description() const override;
|
QString description() const override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
void setItemKey(const QString &itemKey);
|
void setItemKey(const QString &itemKey);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PluginsItemInterface_V20 *m_pluginInter;
|
PluginsItemInterface_V20 *m_pluginInter;
|
||||||
QString m_itemKey;
|
QString m_itemKey;
|
||||||
|
QPluginLoader *m_pluginLoader;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // PLUGINADAPTER_H
|
#endif // PLUGINADAPTER_H
|
||||||
|
@ -287,7 +287,7 @@ void AbstractPluginsController::loadPlugin(const QString &pluginFile)
|
|||||||
PluginsItemInterface_V20 *interface_v20 = qobject_cast<PluginsItemInterface_V20 *>(pluginLoader->instance());
|
PluginsItemInterface_V20 *interface_v20 = qobject_cast<PluginsItemInterface_V20 *>(pluginLoader->instance());
|
||||||
if (interface_v20) {
|
if (interface_v20) {
|
||||||
// 将v20插件接口通过适配器转换成v23的接口,方便在后面识别
|
// 将v20插件接口通过适配器转换成v23的接口,方便在后面识别
|
||||||
PluginAdapter *pluginAdapter = new PluginAdapter(interface_v20);
|
PluginAdapter *pluginAdapter = new PluginAdapter(interface_v20, pluginLoader);
|
||||||
// 将适配器的地址保存到map列表中,因为适配器自己会调用itemAdded方法,转换成PluginsItemInterface类,但是实际上它
|
// 将适配器的地址保存到map列表中,因为适配器自己会调用itemAdded方法,转换成PluginsItemInterface类,但是实际上它
|
||||||
// 对应的是PluginAdapter类,因此,这个map用于在后面的itemAdded方法中用来查找
|
// 对应的是PluginAdapter类,因此,这个map用于在后面的itemAdded方法中用来查找
|
||||||
m_pluginAdapterMap[(qulonglong)(interface_v20)] = pluginAdapter;
|
m_pluginAdapterMap[(qulonglong)(interface_v20)] = pluginAdapter;
|
||||||
|
@ -35,6 +35,28 @@ enum class DockPart {
|
|||||||
DCCSetting // 显示在控制中心个性化设置的图标
|
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
|
// 快捷面板详情页面的itemWidget对应的itemKey
|
||||||
#define QUICK_ITEM_KEY "quick_item_key"
|
#define QUICK_ITEM_KEY "quick_item_key"
|
||||||
///
|
///
|
||||||
@ -284,6 +306,12 @@ public:
|
|||||||
///
|
///
|
||||||
virtual QIcon icon(const DockPart &dockPart, int themeType) { return icon(dockPart); }
|
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:
|
protected:
|
||||||
///
|
///
|
||||||
/// \brief m_proxyInter
|
/// \brief m_proxyInter
|
||||||
|
@ -192,6 +192,15 @@ QString BluetoothPlugin::description() const
|
|||||||
return tr("close");
|
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()
|
void BluetoothPlugin::refreshPluginItemsVisible()
|
||||||
{
|
{
|
||||||
if (pluginIsDisable())
|
if (pluginIsDisable())
|
||||||
|
@ -60,6 +60,7 @@ public:
|
|||||||
QIcon icon(const DockPart &dockPart, int themeType) override;
|
QIcon icon(const DockPart &dockPart, int themeType) override;
|
||||||
PluginStatus status() const override;
|
PluginStatus status() const override;
|
||||||
QString description() const override;
|
QString description() const override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void refreshPluginItemsVisible();
|
void refreshPluginItemsVisible();
|
||||||
|
@ -184,6 +184,11 @@ PluginsItemInterface::PluginType MultitaskingPlugin::type()
|
|||||||
return PluginType::Fixed;
|
return PluginType::Fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PluginFlags MultitaskingPlugin::flags() const
|
||||||
|
{
|
||||||
|
return PluginFlag::Type_Fixed;
|
||||||
|
}
|
||||||
|
|
||||||
void MultitaskingPlugin::updateVisible()
|
void MultitaskingPlugin::updateVisible()
|
||||||
{
|
{
|
||||||
if (pluginIsDisable() || !DWindowManagerHelper::instance()->hasComposite()) {
|
if (pluginIsDisable() || !DWindowManagerHelper::instance()->hasComposite()) {
|
||||||
|
@ -55,6 +55,7 @@ public:
|
|||||||
void setSortKey(const QString &itemKey, const int order) override;
|
void setSortKey(const QString &itemKey, const int order) override;
|
||||||
void pluginSettingsChanged() override;
|
void pluginSettingsChanged() override;
|
||||||
PluginType type() override;
|
PluginType type() override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateVisible();
|
void updateVisible();
|
||||||
|
@ -132,6 +132,11 @@ void OverlayWarningPlugin::setSortKey(const QString &itemKey, const int order)
|
|||||||
m_proxyInter->saveValue(this, key, order);
|
m_proxyInter->saveValue(this, key, order);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PluginFlags OverlayWarningPlugin::flags() const
|
||||||
|
{
|
||||||
|
return PluginFlag::Type_NoneFlag;
|
||||||
|
}
|
||||||
|
|
||||||
void OverlayWarningPlugin::loadPlugin()
|
void OverlayWarningPlugin::loadPlugin()
|
||||||
{
|
{
|
||||||
if (m_pluginLoaded) {
|
if (m_pluginLoaded) {
|
||||||
|
@ -59,6 +59,7 @@ public:
|
|||||||
|
|
||||||
int itemSortKey(const QString &itemKey) override;
|
int itemSortKey(const QString &itemKey) override;
|
||||||
void setSortKey(const QString &itemKey, const int order) override;
|
void setSortKey(const QString &itemKey, const int order) override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void loadPlugin();
|
void loadPlugin();
|
||||||
|
@ -187,6 +187,15 @@ QIcon PowerPlugin::icon(const DockPart &dockPart)
|
|||||||
return batteryIcon;
|
return batteryIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PluginFlags PowerPlugin::flags() const
|
||||||
|
{
|
||||||
|
// 电池插件只在任务栏上面展示,不在快捷面板展示,并且可以拖动,可以在其前面插入其他插件,可以在控制中心设置是否显示隐藏
|
||||||
|
return PluginFlag::Type_Common
|
||||||
|
| PluginFlag::Attribute_CanDrag
|
||||||
|
| PluginFlag::Attribute_CanInsert
|
||||||
|
| PluginFlag::Attribute_CanSetting;
|
||||||
|
}
|
||||||
|
|
||||||
void PowerPlugin::updateBatteryVisible()
|
void PowerPlugin::updateBatteryVisible()
|
||||||
{
|
{
|
||||||
const bool exist = !m_powerInter->batteryPercentage().isEmpty();
|
const bool exist = !m_powerInter->batteryPercentage().isEmpty();
|
||||||
|
@ -58,6 +58,7 @@ public:
|
|||||||
void setSortKey(const QString &itemKey, const int order) override;
|
void setSortKey(const QString &itemKey, const int order) override;
|
||||||
void pluginSettingsChanged() override;
|
void pluginSettingsChanged() override;
|
||||||
QIcon icon(const DockPart &dockPart) override;
|
QIcon icon(const DockPart &dockPart) override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateBatteryVisible();
|
void updateBatteryVisible();
|
||||||
|
@ -164,6 +164,11 @@ PluginsItemInterface::PluginType ShowDesktopPlugin::type()
|
|||||||
return PluginType::Fixed;
|
return PluginType::Fixed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PluginFlags ShowDesktopPlugin::flags() const
|
||||||
|
{
|
||||||
|
return PluginFlag::Type_Fixed;
|
||||||
|
}
|
||||||
|
|
||||||
void ShowDesktopPlugin::updateVisible()
|
void ShowDesktopPlugin::updateVisible()
|
||||||
{
|
{
|
||||||
if (pluginIsDisable())
|
if (pluginIsDisable())
|
||||||
|
@ -54,6 +54,7 @@ public:
|
|||||||
void setSortKey(const QString &itemKey, const int order) override;
|
void setSortKey(const QString &itemKey, const int order) override;
|
||||||
void pluginSettingsChanged() override;
|
void pluginSettingsChanged() override;
|
||||||
PluginType type() override;
|
PluginType type() override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void updateVisible();
|
void updateVisible();
|
||||||
|
@ -312,6 +312,11 @@ QIcon ShutdownPlugin::icon(const DockPart &dockPart)
|
|||||||
return shutdownIcon;
|
return shutdownIcon;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PluginFlags ShutdownPlugin::flags() const
|
||||||
|
{
|
||||||
|
return PluginFlag::Type_System | PluginFlag::Attribute_CanSetting;
|
||||||
|
}
|
||||||
|
|
||||||
void ShutdownPlugin::loadPlugin()
|
void ShutdownPlugin::loadPlugin()
|
||||||
{
|
{
|
||||||
if (m_pluginLoaded) {
|
if (m_pluginLoaded) {
|
||||||
|
@ -62,6 +62,7 @@ public:
|
|||||||
|
|
||||||
void pluginSettingsChanged() override;
|
void pluginSettingsChanged() override;
|
||||||
QIcon icon(const DockPart &dockPart) override;
|
QIcon icon(const DockPart &dockPart) override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
// 休眠待机配置,保持和sessionshell一致
|
// 休眠待机配置,保持和sessionshell一致
|
||||||
const QStringList session_ui_configs {
|
const QStringList session_ui_configs {
|
||||||
|
@ -160,6 +160,15 @@ PluginsItemInterface::PluginStatus SoundPlugin::status() const
|
|||||||
return SoundPlugin::Active;
|
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()
|
void SoundPlugin::refreshPluginItemsVisible()
|
||||||
{
|
{
|
||||||
if (pluginIsDisable())
|
if (pluginIsDisable())
|
||||||
|
@ -54,6 +54,7 @@ public:
|
|||||||
QIcon icon(const DockPart &) override;
|
QIcon icon(const DockPart &) override;
|
||||||
QIcon icon(const DockPart &dockPart, int themeType) override;
|
QIcon icon(const DockPart &dockPart, int themeType) override;
|
||||||
PluginStatus status() const override;
|
PluginStatus status() const override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void refreshPluginItemsVisible();
|
void refreshPluginItemsVisible();
|
||||||
|
@ -196,6 +196,12 @@ QIcon TrashPlugin::icon(const DockPart &dockPart, int themeType)
|
|||||||
return QIcon();
|
return QIcon();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
PluginFlags TrashPlugin::flags() const
|
||||||
|
{
|
||||||
|
return PluginFlag::Type_Tool
|
||||||
|
| PluginFlag::Attribute_CanSetting;
|
||||||
|
}
|
||||||
|
|
||||||
void TrashPlugin::refreshPluginItemsVisible()
|
void TrashPlugin::refreshPluginItemsVisible()
|
||||||
{
|
{
|
||||||
if (pluginIsDisable()) {
|
if (pluginIsDisable()) {
|
||||||
|
@ -63,6 +63,7 @@ public:
|
|||||||
void displayModeChanged(const Dock::DisplayMode displayMode) override;
|
void displayModeChanged(const Dock::DisplayMode displayMode) override;
|
||||||
void pluginSettingsChanged() override;
|
void pluginSettingsChanged() override;
|
||||||
QIcon icon(const DockPart &dockPart, int themeType) override;
|
QIcon icon(const DockPart &dockPart, int themeType) override;
|
||||||
|
PluginFlags flags() const override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void refreshPluginItemsVisible();
|
void refreshPluginItemsVisible();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user