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