Added IMetaDataPlugin base class for parsing plugin name, description,

etc... from json metadata file.
This commit is contained in:
2015-10-30 15:51:57 +01:00
parent 3a072742ac
commit 7755432484
8 changed files with 125 additions and 12 deletions
+1
View File
@@ -3,5 +3,6 @@
#include "context.h"
#include "iplugin.h"
#include "imetadataplugin.h"
#endif // CORE_H
+4 -2
View File
@@ -13,14 +13,16 @@ DEFINES += CORE_LIBRARY
SOURCES += \
data/user.cpp \
context.cpp
context.cpp \
imetadataplugin.cpp
HEADERS += core.h\
core_global.h \
iplugin.h \
service.h \
data/user.h \
context.h
context.h \
imetadataplugin.h
unix {
target.path = /usr/lib
+67
View File
@@ -0,0 +1,67 @@
#include "imetadataplugin.h"
#include <QJsonValue>
#include <QLocale>
#include <QDebug>
IMetaDataPlugin::IMetaDataPlugin()
{
}
IMetaDataPlugin::~IMetaDataPlugin()
{
}
QString IMetaDataPlugin::pluginName()
{
return m_name;
}
QString IMetaDataPlugin::pluginId()
{
return m_id;
}
QString IMetaDataPlugin::pluginDescription()
{
return m_description;
}
void IMetaDataPlugin::init(const QJsonObject &metaData)
{
parseMetaData(metaData);
initServiceUi();
}
void IMetaDataPlugin::parseMetaData(const QJsonObject &metaData)
{
qDebug() << metaData;
QJsonValue data = metaData["MetaData"];
if (!data.isObject()) {
return;
}
m_name = parseLocaleText(data.toObject()["name"].toObject());
m_description = parseLocaleText(data.toObject()["description"].toObject());
m_id = data.toObject()["id"].toString();
}
QString IMetaDataPlugin::parseLocaleText(const QJsonObject &object)
{
QString locale = QLocale::system().name();
QString ret;
foreach (QString key, object.keys()) {
if (locale.contains(key, Qt::CaseInsensitive)) {
ret = object[key].toString();
break;
}
}
if (ret.isEmpty()) {
ret = object["default"].toString();
}
return ret;
}
+34
View File
@@ -0,0 +1,34 @@
#ifndef IMETADATAPLUGIN_H
#define IMETADATAPLUGIN_H
#include <QString>
#include "core_global.h"
#include "iplugin.h"
class CORESHARED_EXPORT IMetaDataPlugin : public IPlugin
{
public:
IMetaDataPlugin();
~IMetaDataPlugin();
// IPlugin interface
public:
virtual QString pluginName();
virtual QString pluginId();
virtual QString pluginDescription();
virtual void init(const QJsonObject &metaData);
protected:
virtual void initServiceUi() = 0;
virtual void parseMetaData(const QJsonObject &metaData);
private:
QString m_name;
QString m_id;
QString m_description;
QString parseLocaleText(const QJsonObject &object);
};
#endif // IMETADATAPLUGIN_H
+1
View File
@@ -19,6 +19,7 @@ public:
virtual ~IPlugin() { }
virtual QString pluginName() = 0;
virtual QString pluginId() = 0;
virtual QString pluginDescription() = 0;
virtual void init(const QJsonObject &metaData) = 0;
virtual QWidget *ui() {
return m_ui;