dde-dock/frame/controller/quicksettingcontroller.h
donghualin 91d5bfbf07 fix: 修复任务栏没有加载显示桌面和多任务视图的问题
1、修改DBUS接口中获取当前已加载插件的接口
2、重新定义插件类型:快捷区域插件Quick, 工具插件(回收站等)Tool,托盘插件(U盘图标)Tray,系统插件(开机关机图标)System,固定区域插件(显示桌面和多任务视图)Fixed
3、加载固定区域插件(显示桌面和多任务视图)

Log:
Influence: 任务栏查看是否存在显示桌面和多任务栏视图的插件
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: Ia7ee8f94ae89ebc93b239f1d078c44e37b50b8ac
2022-11-02 06:35:30 +00:00

79 lines
3.2 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* Copyright (C) 2022 ~ 2022 Deepin Technology Co., Ltd.
*
* Author: donghualin <donghualin@uniontech.com>
*
* Maintainer: donghualin <donghualin@uniontech.com>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef QUICKSETTINGCONTROLLER_H
#define QUICKSETTINGCONTROLLER_H
#include "abstractpluginscontroller.h"
class QuickSettingItem;
class PluginsItem;
class QuickSettingController : public AbstractPluginsController
{
Q_OBJECT
public:
enum class PluginAttribute {
Quick = 0, // 快捷区域插件
Tool, // 工具插件(回收站和窗管开发的另一套插件)
System, // 系统插件(关机插件)
Tray, // 托盘插件U盘图标等
Fixed // 固定区域插件(显示桌面和多任务视图)
};
public:
static QuickSettingController *instance();
QList<PluginsItemInterface *> pluginItems(const PluginAttribute &pluginClass) const;
QString itemKey(PluginsItemInterface *pluginItem) const;
QJsonObject metaData(PluginsItemInterface *pluginItem) const;
PluginsItem *pluginItemWidget(PluginsItemInterface *pluginItem);
QList<PluginsItemInterface *> pluginInSettings();
Q_SIGNALS:
void pluginInserted(PluginsItemInterface *itemInter, const PluginAttribute &);
void pluginRemoved(PluginsItemInterface *itemInter);
void pluginUpdated(PluginsItemInterface *, const DockPart &);
protected:
explicit QuickSettingController(QObject *parent = Q_NULLPTR);
~QuickSettingController() override;
protected:
void pluginItemAdded(PluginsItemInterface * const itemInter, const QString &itemKey) override;
void pluginItemUpdate(PluginsItemInterface * const itemInter, const QString &) override {}
void pluginItemRemoved(PluginsItemInterface * const itemInter, const QString &) override;
void requestPluginWindowAutoHide(PluginsItemInterface * const, const QString &, const bool) override {}
void requestRefreshPluginWindowVisible(PluginsItemInterface * const, const QString &) override {}
void requestSetPluginAppletVisible(PluginsItemInterface * const, const QString &, const bool) override {}
void updateDockInfo(PluginsItemInterface * const itemInter, const DockPart &part) override;
private:
PluginAttribute getPluginClass(PluginsItemInterface * const itemInter) const;
private:
QMap<PluginAttribute, QList<PluginsItemInterface *>> m_quickPlugins;
QMap<PluginsItemInterface *, QString> m_quickPluginsMap;
QMap<PluginsItemInterface *, PluginsItem *> m_pluginItemWidgetMap;
};
#endif // CONTAINERPLUGINSCONTROLLER_H