Added IMetaDataPlugin base class for parsing plugin name, description,
etc... from json metadata file.print
							parent
							
								
									3a072742ac
								
							
						
					
					
						commit
						7755432484
					
				@ -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;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -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
 | 
			
		||||
					Loading…
					
					
				
		Reference in New Issue