Commit 3d2c2a65 authored by martinjones's avatar martinjones

[ssu] Provide read-only SsuDeviceInfo access to QML. Contributes to JB#33055

parent d8bded12
......@@ -15,9 +15,11 @@ CONFIG += plugin
target.path = $$TARGETPATH
HEADERS = declarativessufeaturemodel.h
HEADERS = declarativessufeaturemodel.h \
declarativessudeviceinfo.h
SOURCES += plugin.cpp \
declarativessufeaturemodel.cpp
declarativessufeaturemodel.cpp \
declarativessudeviceinfo.cpp
qmldir.files = qmldir *.qml *.js
qmldir.path = $$target.path
......
/**
* @file declarativessufeaturemodel.cpp
* @copyright 2016 Jolla Ltd.
* @author Martin Jones <martin.jones@jolla.com>
* @date 2016
*/
#include "declarativessudeviceinfo.h"
DeclarativeSsuDeviceInfo::DeclarativeSsuDeviceInfo()
{
}
QString DeclarativeSsuDeviceInfo::deviceFamily()
{
return info.deviceFamily();
}
QString DeclarativeSsuDeviceInfo::deviceVariant(bool fallback)
{
return info.deviceVariant(fallback);
}
QString DeclarativeSsuDeviceInfo::deviceModel()
{
return info.deviceModel();
}
QString DeclarativeSsuDeviceInfo::displayName(const int type)
{
return info.displayName(type);
}
/**
* @file declarativessufeaturemodel.h
* @copyright 2016 Jolla Ltd.
* @author Martin Jones <martin.jones@jolla.com>
* @date 2016
*/
#ifndef _DECLARATIVESSUDEVICEINFO_H
#define _DECLARATIVESSUDEVICEINFO_H
#include "../libssu/ssudeviceinfo.h"
class DeclarativeSsuDeviceInfo : public QObject
{
Q_OBJECT
Q_ENUMS(DisplayType)
public:
/**
* A list of types ssu provides shiny values suitable for displaying
*/
enum DisplayType {
DeviceManufacturer = Ssu::DeviceManufacturer, ///< Manufacturer, like ACME Corp. Board mappings key "deviceManufacturer"
DeviceModel = Ssu::DeviceModel, ///< Marketed device name, like Pogoblaster 3000. Board mappings key "prettyModel"
DeviceDesignation = Ssu::DeviceDesignation, ///< Type designation, like NCC-1701. Beard mappings key "deviceDesignation"
};
DeclarativeSsuDeviceInfo();
/**
* Try to find the device family for the system this is running on. This function
* temporarily changes the detected model, and therefore should not be used in a
* multithreaded environment, unless you like funny results.
*/
Q_INVOKABLE QString deviceFamily();
/**
* Try to find the device variant for the system this is running on.
* If the device is not a variant it will return an empty string. If
* fallback is set to true it return the device model in this case.
*/
Q_INVOKABLE QString deviceVariant(bool fallback=false);
/**
* Try to find out ond what kind of system this is running
*/
Q_INVOKABLE QString deviceModel();
/**
* Return a string suitable for display in dialogs, ...
*
* See DeviceTypes for supported types.
*
* If not configured the model name used by ssu will be returned instead
* for product and type.
* If no manufacturer is found UNKNOWN is returned.
* For an invalid type an empty string is returned.
*/
Q_INVOKABLE QString displayName(const int type);
private:
SsuDeviceInfo info;
};
#endif
......@@ -10,6 +10,12 @@
#include <qqml.h>
#include "declarativessufeaturemodel.h"
#include "declarativessudeviceinfo.h"
static QObject *device_info_factory(QQmlEngine *, QJSEngine *)
{
return new DeclarativeSsuDeviceInfo;
}
class NemoSsuPlugin : public QQmlExtensionPlugin
{
......@@ -20,6 +26,7 @@ public:
virtual void registerTypes(const char *)
{
qmlRegisterType<DeclarativeSsuFeatureModel>("Nemo.Ssu", 1, 0, "FeatureModel");
qmlRegisterSingletonType<DeclarativeSsuDeviceInfo>("Nemo.Ssu", 1, 1, "DeviceInfo", device_info_factory);
}
};
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment