dde-dock/frame/controller/quicksettingcontroller.h
donghualin b2633a5f50 fix: 加载系统托盘插件
1、systemTray目录下的插件由QuickItemController类来统一加载,托盘区域增加系统插件的展示
2、蓝牙、飞行模式等插件修改为普通插件,用于在快捷面板显示

Log: 托盘区显示系统托盘插件
Influence: 插入U盘,查看托盘区域是否有U盘图标
Task: https://pms.uniontech.com/task-view-112073.html
Change-Id: I57e1321fcc59dfc7cfad1c21aca343203e3fad00
2022-11-01 16:08:21 +08:00

74 lines
2.7 KiB
C++

/*
* 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,
Fixed,
System
};
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);
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:
QMap<PluginAttribute, QList<PluginsItemInterface *>> m_quickPlugins;
QMap<PluginsItemInterface *, QString> m_quickPluginsMap;
QMap<PluginsItemInterface *, PluginsItem *> m_pluginItemWidgetMap;
};
#endif // CONTAINERPLUGINSCONTROLLER_H