新增数据插件接口
This commit is contained in:
parent
b8a4a009b1
commit
50791a5be1
|
@ -85,6 +85,7 @@ set(SOURCE_FILES
|
|||
src/windows/menu-main-window.cpp src/windows/menu-main-window.h
|
||||
src/extension/menu-extension.cpp src/extension/menu-extension.h
|
||||
src/extension/menu-extension-iface.h
|
||||
src/appdata/data-provider-plugin-iface.h
|
||||
)
|
||||
|
||||
# qrc文件
|
||||
|
|
|
@ -0,0 +1,73 @@
|
|||
/*
|
||||
* Copyright (C) 2022, KylinSoft Co., Ltd.
|
||||
*
|
||||
* 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
|
||||
* (at your option) 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 <https://www.gnu.org/licenses/>.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef UKUI_MENU_DATA_PROVIDER_PLUGIN_IFACE_H
|
||||
#define UKUI_MENU_DATA_PROVIDER_PLUGIN_IFACE_H
|
||||
|
||||
#include <QObject>
|
||||
#include <QString>
|
||||
#include <QVector>
|
||||
#include <QMutex>
|
||||
#include <QMutexLocker>
|
||||
|
||||
#include "commons.h"
|
||||
|
||||
namespace UkuiMenu {
|
||||
|
||||
class PluginGroup
|
||||
{
|
||||
Q_GADGET
|
||||
public:
|
||||
enum Group {
|
||||
Button,
|
||||
SortMenuItem
|
||||
};
|
||||
Q_ENUM(Group)
|
||||
};
|
||||
|
||||
class DataProviderPluginIFace : public QObject
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
virtual int index() = 0;
|
||||
virtual QString name() = 0;
|
||||
virtual QString icon() = 0;
|
||||
virtual QString title() = 0;
|
||||
virtual PluginGroup::Group group() = 0;
|
||||
|
||||
/**
|
||||
* 获取插件存放的数据
|
||||
* @return 数据容器
|
||||
*/
|
||||
virtual QVector<DataEntity> data() = 0;
|
||||
|
||||
/**
|
||||
* 强制刷新数据,刷新完成后发送dataChange信号
|
||||
*/
|
||||
virtual void forceUpdate() = 0;
|
||||
|
||||
Q_SIGNALS:
|
||||
/**
|
||||
* 数据变化
|
||||
*/
|
||||
void dataChanged(QVector<DataEntity> newData);
|
||||
};
|
||||
|
||||
} // UkuiMenu
|
||||
|
||||
#endif //UKUI_MENU_DATA_PROVIDER_PLUGIN_IFACE_H
|
|
@ -37,18 +37,6 @@ public:
|
|||
Q_ENUM(Type)
|
||||
};
|
||||
|
||||
class SortType
|
||||
{
|
||||
Q_GADGET
|
||||
public:
|
||||
enum Type {
|
||||
All,
|
||||
Alphabetically,
|
||||
Function
|
||||
};
|
||||
Q_ENUM(Type);
|
||||
};
|
||||
|
||||
class DataType
|
||||
{
|
||||
Q_GADGET
|
||||
|
@ -72,6 +60,13 @@ class DataEntity
|
|||
Q_PROPERTY(QString comment READ comment WRITE setComment)
|
||||
Q_PROPERTY(QString extraData READ extraData WRITE setExtraData)
|
||||
public:
|
||||
enum PropertyName {
|
||||
Type = 0,
|
||||
Icon,
|
||||
Name,
|
||||
Comment,
|
||||
ExtraData
|
||||
};
|
||||
DataEntity() = default;
|
||||
DataEntity(const DataEntity& obj);
|
||||
DataEntity(DataType::Type type, QString name, QString icon, QString comment, QString extraData);
|
||||
|
@ -103,12 +98,10 @@ class CommonsModule
|
|||
{
|
||||
public:
|
||||
static void defineModule(const char *uri, int versionMajor, int versionMinor) {
|
||||
qRegisterMetaType<UkuiMenu::SortType::Type>("SortType::Type");
|
||||
qRegisterMetaType<UkuiMenu::DataType::Type>("DataType::Type");
|
||||
qRegisterMetaType<UkuiMenu::DataEntity>("DataEntity");
|
||||
|
||||
qmlRegisterUncreatableType<Display>(uri, versionMajor, versionMinor, "Display", "Use enums only.");
|
||||
qmlRegisterUncreatableType<UkuiMenu::SortType>(uri, versionMajor, versionMinor, "SortType", "Use enums only");
|
||||
qmlRegisterUncreatableType<UkuiMenu::DataType>(uri, versionMajor, versionMinor, "DataType", "Use enums only");
|
||||
// qmlRegisterUncreatableType<UkuiMenu::DataEntity>(uri, versionMajor, versionMinor, "DataEntity", "unknown");
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue