remove usage of Engine singleton in InterfacesModel
This commit is contained in:
parent
54d8099bec
commit
fc0f57ae07
@ -78,7 +78,7 @@ DeviceClass *DeviceClasses::getDeviceClass(QUuid deviceClassId) const
|
|||||||
return deviceClass;
|
return deviceClass;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceClasses::addDeviceClass(DeviceClass *deviceClass)
|
void DeviceClasses::addDeviceClass(DeviceClass *deviceClass)
|
||||||
@ -87,6 +87,7 @@ void DeviceClasses::addDeviceClass(DeviceClass *deviceClass)
|
|||||||
//qDebug() << "DeviceClasses: loaded deviceClass" << deviceClass->name();
|
//qDebug() << "DeviceClasses: loaded deviceClass" << deviceClass->name();
|
||||||
m_deviceClasses.append(deviceClass);
|
m_deviceClasses.append(deviceClass);
|
||||||
endInsertRows();
|
endInsertRows();
|
||||||
|
emit countChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void DeviceClasses::clearModel()
|
void DeviceClasses::clearModel()
|
||||||
@ -96,6 +97,7 @@ void DeviceClasses::clearModel()
|
|||||||
qDeleteAll(m_deviceClasses);
|
qDeleteAll(m_deviceClasses);
|
||||||
m_deviceClasses.clear();
|
m_deviceClasses.clear();
|
||||||
endResetModel();
|
endResetModel();
|
||||||
|
emit countChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
QHash<int, QByteArray> DeviceClasses::roleNames() const
|
QHash<int, QByteArray> DeviceClasses::roleNames() const
|
||||||
|
|||||||
@ -30,6 +30,7 @@
|
|||||||
class DeviceClasses : public QAbstractListModel
|
class DeviceClasses : public QAbstractListModel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
|
||||||
public:
|
public:
|
||||||
enum Role {
|
enum Role {
|
||||||
RoleId,
|
RoleId,
|
||||||
@ -54,6 +55,9 @@ public:
|
|||||||
|
|
||||||
void clearModel();
|
void clearModel();
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void countChanged();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
QHash<int, QByteArray> roleNames() const;
|
QHash<int, QByteArray> roleNames() const;
|
||||||
|
|
||||||
|
|||||||
@ -137,7 +137,7 @@ void DeviceManager::getVendorsResponse(const QVariantMap ¶ms)
|
|||||||
if (params.value("params").toMap().keys().contains("vendors")) {
|
if (params.value("params").toMap().keys().contains("vendors")) {
|
||||||
QVariantList vendorList = params.value("params").toMap().value("vendors").toList();
|
QVariantList vendorList = params.value("params").toMap().value("vendors").toList();
|
||||||
foreach (QVariant vendorVariant, vendorList) {
|
foreach (QVariant vendorVariant, vendorList) {
|
||||||
Vendor *vendor = JsonTypes::unpackVendor(vendorVariant.toMap(), Engine::instance()->deviceManager()->vendors());
|
Vendor *vendor = JsonTypes::unpackVendor(vendorVariant.toMap());
|
||||||
m_vendors->addVendor(vendor);
|
m_vendors->addVendor(vendor);
|
||||||
// qDebug() << "Added Vendor:" << vendor->name();
|
// qDebug() << "Added Vendor:" << vendor->name();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -26,6 +26,7 @@
|
|||||||
#include "types/vendors.h"
|
#include "types/vendors.h"
|
||||||
#include "devices.h"
|
#include "devices.h"
|
||||||
#include "deviceclasses.h"
|
#include "deviceclasses.h"
|
||||||
|
#include "interfacesmodel.h"
|
||||||
#include "types/plugins.h"
|
#include "types/plugins.h"
|
||||||
#include "jsonrpc/jsonhandler.h"
|
#include "jsonrpc/jsonhandler.h"
|
||||||
#include "jsonrpc/jsonrpcclient.h"
|
#include "jsonrpc/jsonrpcclient.h"
|
||||||
@ -48,7 +49,7 @@ public:
|
|||||||
};
|
};
|
||||||
Q_ENUM(RemovePolicy)
|
Q_ENUM(RemovePolicy)
|
||||||
|
|
||||||
explicit DeviceManager(JsonRpcClient *jsonclient, QObject *parent = 0);
|
explicit DeviceManager(JsonRpcClient *jsonclient, QObject *parent = nullptr);
|
||||||
|
|
||||||
void clear();
|
void clear();
|
||||||
void init();
|
void init();
|
||||||
|
|||||||
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
#include "engine.h"
|
#include "engine.h"
|
||||||
|
|
||||||
|
InterfacesModel::InterfacesModel(QObject *parent):
|
||||||
InterfacesModel::InterfacesModel(QObject *parent) : QAbstractListModel(parent)
|
QAbstractListModel(parent)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int InterfacesModel::rowCount(const QModelIndex &parent) const
|
int InterfacesModel::rowCount(const QModelIndex &parent) const
|
||||||
@ -29,20 +30,23 @@ QHash<int, QByteArray> InterfacesModel::roleNames() const
|
|||||||
return roles;
|
return roles;
|
||||||
}
|
}
|
||||||
|
|
||||||
Devices *InterfacesModel::devices() const
|
DeviceManager *InterfacesModel::deviceManager() const
|
||||||
{
|
{
|
||||||
return m_devices;
|
return m_deviceManager;
|
||||||
}
|
}
|
||||||
|
|
||||||
void InterfacesModel::setDevices(Devices *devices)
|
void InterfacesModel::setDeviceManager(DeviceManager *deviceManager)
|
||||||
{
|
{
|
||||||
if (m_devices != devices) {
|
if (m_deviceManager != deviceManager) {
|
||||||
m_devices = devices;
|
m_deviceManager = deviceManager;
|
||||||
emit devicesChanged();
|
emit deviceManagerChanged();
|
||||||
|
connect(m_deviceManager->devices(), &Devices::countChanged, this, [this]() {
|
||||||
|
syncInterfaces();
|
||||||
|
});
|
||||||
|
connect(m_deviceManager->deviceClasses(), &DeviceClasses::countChanged, this, [this]() {
|
||||||
|
syncInterfaces();
|
||||||
|
});
|
||||||
syncInterfaces();
|
syncInterfaces();
|
||||||
|
|
||||||
connect(devices, &Devices::rowsInserted, this, &InterfacesModel::rowsChanged);
|
|
||||||
connect(devices, &Devices::rowsRemoved, this, &InterfacesModel::rowsChanged);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,13 +81,12 @@ void InterfacesModel::setShowUncategorized(bool showUncategorized)
|
|||||||
|
|
||||||
void InterfacesModel::syncInterfaces()
|
void InterfacesModel::syncInterfaces()
|
||||||
{
|
{
|
||||||
if (!m_devices) {
|
if (!m_deviceManager) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
QStringList interfacesInSource;
|
QStringList interfacesInSource;
|
||||||
for (int i = 0; i < m_devices->rowCount(); i++) {
|
for (int i = 0; i < m_deviceManager->devices()->rowCount(); i++) {
|
||||||
DeviceClass *dc = Engine::instance()->deviceManager()->deviceClasses()->getDeviceClass(m_devices->get(i)->deviceClassId());
|
DeviceClass *dc = m_deviceManager->deviceClasses()->getDeviceClass(m_deviceManager->devices()->get(i)->deviceClassId());
|
||||||
// qDebug() << "device" <<dc->name() << "has interfaces" << dc->interfaces();
|
// qDebug() << "device" <<dc->name() << "has interfaces" << dc->interfaces();
|
||||||
|
|
||||||
bool isInShownIfaces = false;
|
bool isInShownIfaces = false;
|
||||||
|
|||||||
@ -6,11 +6,13 @@
|
|||||||
|
|
||||||
#include "devices.h"
|
#include "devices.h"
|
||||||
|
|
||||||
|
class DeviceManager;
|
||||||
|
|
||||||
class InterfacesModel : public QAbstractListModel
|
class InterfacesModel : public QAbstractListModel
|
||||||
{
|
{
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
|
Q_PROPERTY(int count READ rowCount NOTIFY countChanged)
|
||||||
Q_PROPERTY(Devices* devices READ devices WRITE setDevices NOTIFY devicesChanged)
|
Q_PROPERTY(DeviceManager* deviceManager READ deviceManager WRITE setDeviceManager NOTIFY deviceManagerChanged)
|
||||||
Q_PROPERTY(QStringList shownInterfaces READ shownInterfaces WRITE setShownInterfaces NOTIFY shownInterfacesChanged)
|
Q_PROPERTY(QStringList shownInterfaces READ shownInterfaces WRITE setShownInterfaces NOTIFY shownInterfacesChanged)
|
||||||
Q_PROPERTY(bool showUncategorized READ showUncategorized WRITE setShowUncategorized NOTIFY showUncategorizedChanged)
|
Q_PROPERTY(bool showUncategorized READ showUncategorized WRITE setShowUncategorized NOTIFY showUncategorizedChanged)
|
||||||
|
|
||||||
@ -26,8 +28,8 @@ public:
|
|||||||
QVariant data(const QModelIndex &index, int role) const override;
|
QVariant data(const QModelIndex &index, int role) const override;
|
||||||
QHash<int, QByteArray> roleNames() const override;
|
QHash<int, QByteArray> roleNames() const override;
|
||||||
|
|
||||||
Devices* devices() const;
|
DeviceManager* deviceManager() const;
|
||||||
void setDevices(Devices *devices);
|
void setDeviceManager(DeviceManager *deviceManager);
|
||||||
|
|
||||||
QStringList shownInterfaces() const;
|
QStringList shownInterfaces() const;
|
||||||
void setShownInterfaces(const QStringList &shownInterfaces);
|
void setShownInterfaces(const QStringList &shownInterfaces);
|
||||||
@ -37,7 +39,7 @@ public:
|
|||||||
|
|
||||||
signals:
|
signals:
|
||||||
void countChanged();
|
void countChanged();
|
||||||
void devicesChanged();
|
void deviceManagerChanged();
|
||||||
void shownInterfacesChanged();
|
void shownInterfacesChanged();
|
||||||
void showUncategorizedChanged();
|
void showUncategorizedChanged();
|
||||||
|
|
||||||
@ -46,7 +48,7 @@ private slots:
|
|||||||
void rowsChanged(const QModelIndex &index, int first, int last);
|
void rowsChanged(const QModelIndex &index, int first, int last);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
Devices *m_devices = nullptr;
|
DeviceManager *m_deviceManager = nullptr;
|
||||||
QStringList m_interfaces;
|
QStringList m_interfaces;
|
||||||
|
|
||||||
QStringList m_shownInterfaces;
|
QStringList m_shownInterfaces;
|
||||||
|
|||||||
@ -48,9 +48,9 @@ JsonTypes::JsonTypes(QObject *parent) :
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
Vendor *JsonTypes::unpackVendor(const QVariantMap &vendorMap, QObject *parent)
|
Vendor *JsonTypes::unpackVendor(const QVariantMap &vendorMap)
|
||||||
{
|
{
|
||||||
Vendor *v = new Vendor(vendorMap.value("id").toUuid(), vendorMap.value("name").toString(), parent);
|
Vendor *v = new Vendor(vendorMap.value("id").toUuid(), vendorMap.value("name").toString());
|
||||||
v->setDisplayName(vendorMap.value("displayName").toString());
|
v->setDisplayName(vendorMap.value("displayName").toString());
|
||||||
return v;
|
return v;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -54,7 +54,7 @@ class JsonTypes : public QObject
|
|||||||
public:
|
public:
|
||||||
explicit JsonTypes(QObject *parent = 0);
|
explicit JsonTypes(QObject *parent = 0);
|
||||||
|
|
||||||
static Vendor *unpackVendor(const QVariantMap &vendorMap, QObject *parent);
|
static Vendor *unpackVendor(const QVariantMap &vendorMap);
|
||||||
static Plugin *unpackPlugin(const QVariantMap &pluginMap, QObject *parent);
|
static Plugin *unpackPlugin(const QVariantMap &pluginMap, QObject *parent);
|
||||||
static DeviceClass *unpackDeviceClass(const QVariantMap &deviceClassMap, QObject *parent);
|
static DeviceClass *unpackDeviceClass(const QVariantMap &deviceClassMap, QObject *parent);
|
||||||
static void unpackParam(const QVariantMap ¶mMap, Param *param);
|
static void unpackParam(const QVariantMap ¶mMap, Param *param);
|
||||||
|
|||||||
@ -74,6 +74,7 @@ QVariant Vendors::data(const QModelIndex &index, int role) const
|
|||||||
|
|
||||||
void Vendors::addVendor(Vendor *vendor)
|
void Vendors::addVendor(Vendor *vendor)
|
||||||
{
|
{
|
||||||
|
vendor->setParent(this);
|
||||||
beginInsertRows(QModelIndex(), m_vendors.count(), m_vendors.count());
|
beginInsertRows(QModelIndex(), m_vendors.count(), m_vendors.count());
|
||||||
//qDebug() << "Vendors: loaded vendor" << vendor->name();
|
//qDebug() << "Vendors: loaded vendor" << vendor->name();
|
||||||
m_vendors.append(vendor);
|
m_vendors.append(vendor);
|
||||||
|
|||||||
@ -109,7 +109,7 @@ Page {
|
|||||||
height: swipeView.height
|
height: swipeView.height
|
||||||
model: InterfacesSortModel {
|
model: InterfacesSortModel {
|
||||||
interfacesModel: InterfacesModel {
|
interfacesModel: InterfacesModel {
|
||||||
devices: Engine.deviceManager.devices
|
deviceManager: Engine.deviceManager
|
||||||
shownInterfaces: app.supportedInterfaces
|
shownInterfaces: app.supportedInterfaces
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -21,7 +21,7 @@ Item {
|
|||||||
|
|
||||||
model: InterfacesModel {
|
model: InterfacesModel {
|
||||||
id: interfacesModel
|
id: interfacesModel
|
||||||
devices: Engine.deviceManager.devices
|
deviceManager: Engine.deviceManager
|
||||||
}
|
}
|
||||||
cellWidth: width / tilesPerRow
|
cellWidth: width / tilesPerRow
|
||||||
cellHeight: cellWidth
|
cellHeight: cellWidth
|
||||||
|
|||||||
Reference in New Issue
Block a user