mirror of
https://github.com/linuxdeepin/dde-dock.git
synced 2025-06-04 09:23:03 +00:00

完成快捷设置面板加载插件,显示插件,完成快捷设置的插件的接口 Log: 完成快捷设置面板的基本功能 Influence: v23任务栏快捷设置面板 Task: https://pms.uniontech.com/task-view-110309.html Change-Id: Idaf5c50f8f447d684646afd3ed0fa3e42a94f83c
73 lines
2.4 KiB
C++
73 lines
2.4 KiB
C++
#include "quicksettingcontroller.h"
|
|
#include "quicksettingitem.h"
|
|
|
|
QuickSettingController::QuickSettingController(QObject *parent)
|
|
: AbstractPluginsController(parent)
|
|
{
|
|
// 异步加载本地插件
|
|
QMetaObject::invokeMethod(this, &QuickSettingController::startLoader, Qt::QueuedConnection);
|
|
}
|
|
|
|
QuickSettingController::~QuickSettingController()
|
|
{
|
|
}
|
|
|
|
void QuickSettingController::itemAdded(PluginsItemInterface * const itemInter, const QString &itemKey)
|
|
{
|
|
QList<QuickSettingItem *>::iterator findItemIterator = std::find_if(m_quickSettingItems.begin(), m_quickSettingItems.end(),
|
|
[ = ](QuickSettingItem *item) {
|
|
return item->itemKey() == itemKey;
|
|
});
|
|
|
|
if (findItemIterator != m_quickSettingItems.end())
|
|
return;
|
|
|
|
QuickSettingItem *quickItem = new QuickSettingItem(itemInter, itemKey);
|
|
|
|
m_quickSettingItems << quickItem;
|
|
|
|
emit pluginInsert(quickItem);
|
|
}
|
|
|
|
void QuickSettingController::itemUpdate(PluginsItemInterface * const itemInter, const QString &)
|
|
{
|
|
auto findItemIterator = std::find_if(m_quickSettingItems.begin(), m_quickSettingItems.end(),
|
|
[ = ](QuickSettingItem *item) {
|
|
return item->pluginItem() == itemInter;
|
|
});
|
|
if (findItemIterator != m_quickSettingItems.end()) {
|
|
QuickSettingItem *settingItem = *findItemIterator;
|
|
settingItem->update();
|
|
}
|
|
}
|
|
|
|
void QuickSettingController::itemRemoved(PluginsItemInterface * const itemInter, const QString &)
|
|
{
|
|
// 删除本地记录的插件列表
|
|
QList<QuickSettingItem *>::iterator findItemIterator = std::find_if(m_quickSettingItems.begin(), m_quickSettingItems.end(),
|
|
[ = ](QuickSettingItem *item) {
|
|
return (item->pluginItem() == itemInter);
|
|
});
|
|
if (findItemIterator != m_quickSettingItems.end()) {
|
|
QuickSettingItem *quickItem = *findItemIterator;
|
|
m_quickSettingItems.removeOne(quickItem);
|
|
Q_EMIT pluginRemove(quickItem);
|
|
quickItem->deleteLater();
|
|
}
|
|
}
|
|
|
|
QuickSettingController *QuickSettingController::instance()
|
|
{
|
|
static QuickSettingController instance;
|
|
return &instance;
|
|
}
|
|
|
|
void QuickSettingController::startLoader()
|
|
{
|
|
QString pluginsDir("../plugins/quick-trays");
|
|
if (!QDir(pluginsDir).exists())
|
|
pluginsDir = "/usr/lib/dde-dock/plugins/quick-trays";
|
|
|
|
AbstractPluginsController::startLoader(new PluginLoader(pluginsDir, this));
|
|
}
|