From e529cc87f0ca2039067e825c47342d54daabda87 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 31 Aug 2018 20:09:47 +0200 Subject: [PATCH] LogsModel doesn't use the Engine singleton any more --- libnymea-app-core/models/logsmodel.cpp | 21 +++++++++++++++++-- libnymea-app-core/models/logsmodel.h | 9 ++++++++ nymea-app/ui/devicepages/ButtonDevicePage.qml | 1 + .../ui/devicepages/InputTriggerDevicePage.qml | 1 + nymea-app/ui/devicepages/StateLogPage.qml | 1 + nymea-app/ui/system/LogViewerPage.qml | 1 + 6 files changed, 32 insertions(+), 2 deletions(-) diff --git a/libnymea-app-core/models/logsmodel.cpp b/libnymea-app-core/models/logsmodel.cpp index e70574fb..3acaf886 100644 --- a/libnymea-app-core/models/logsmodel.cpp +++ b/libnymea-app-core/models/logsmodel.cpp @@ -7,7 +7,20 @@ LogsModel::LogsModel(QObject *parent) : QAbstractListModel(parent) { - connect(Engine::instance()->logManager(), &LogManager::logEntryReceived, this, &LogsModel::newLogEntryReceived); +} + +Engine *LogsModel::engine() const +{ + return m_engine; +} + +void LogsModel::setEngine(Engine *engine) +{ + if (m_engine != engine) { + m_engine = engine; + connect(engine->logManager(), &LogManager::logEntryReceived, this, &LogsModel::newLogEntryReceived); + emit engineChanged(); + } } bool LogsModel::busy() const @@ -132,6 +145,10 @@ void LogsModel::notificationReceived(const QVariantMap &data) void LogsModel::update() { + if (!m_engine) { + qWarning() << "LogsModel: Can't update, no engine set"; + return; + } if (m_busy) { return; } @@ -157,7 +174,7 @@ void LogsModel::update() timeFilter.insert("endDate", m_endTime.toSecsSinceEpoch()); timeFilters.append(timeFilter); params.insert("timeFilters", timeFilters); - Engine::instance()->jsonRpcClient()->sendCommand("Logging.GetLogEntries", params, this, "logsReply"); + m_engine->jsonRpcClient()->sendCommand("Logging.GetLogEntries", params, this, "logsReply"); } void LogsModel::fetchEarlier(int hours) diff --git a/libnymea-app-core/models/logsmodel.h b/libnymea-app-core/models/logsmodel.h index 4bc211c6..3c2c08b9 100644 --- a/libnymea-app-core/models/logsmodel.h +++ b/libnymea-app-core/models/logsmodel.h @@ -6,9 +6,13 @@ #include "jsonrpc/jsonhandler.h" #include "types/logentry.h" +class Engine; + class LogsModel : public QAbstractListModel { Q_OBJECT + Q_PROPERTY(Engine* engine READ engine WRITE setEngine NOTIFY engineChanged) + Q_PROPERTY(bool busy READ busy NOTIFY busyChanged) Q_PROPERTY(int count READ rowCount NOTIFY countChanged) Q_PROPERTY(QString deviceId READ deviceId WRITE setDeviceId NOTIFY deviceIdChanged) @@ -29,6 +33,9 @@ public: }; explicit LogsModel(QObject *parent = nullptr); + Engine* engine() const; + void setEngine(Engine* engine); + bool busy() const; int rowCount(const QModelIndex &parent = QModelIndex()) const override; QVariant data(const QModelIndex &index, int role) const override; @@ -54,6 +61,7 @@ public: Q_INVOKABLE void notificationReceived(const QVariantMap &data); signals: + void engineChanged(); void busyChanged(); void liveChanged(); void countChanged(); @@ -73,6 +81,7 @@ private slots: void newLogEntryReceived(const QVariantMap &data); protected: + Engine *m_engine; QList m_list; QString m_deviceId; QStringList m_typeIds; diff --git a/nymea-app/ui/devicepages/ButtonDevicePage.qml b/nymea-app/ui/devicepages/ButtonDevicePage.qml index 78f77b4f..4f9b6cd4 100644 --- a/nymea-app/ui/devicepages/ButtonDevicePage.qml +++ b/nymea-app/ui/devicepages/ButtonDevicePage.qml @@ -14,6 +14,7 @@ GenericDevicePage { text: qsTr("This button has been pressed %1 times in the last %2 days.") logsModel: LogsModel { + engine: Engine deviceId: root.device.id live: true typeIds: { diff --git a/nymea-app/ui/devicepages/InputTriggerDevicePage.qml b/nymea-app/ui/devicepages/InputTriggerDevicePage.qml index 2babd6a0..0fb02bb1 100644 --- a/nymea-app/ui/devicepages/InputTriggerDevicePage.qml +++ b/nymea-app/ui/devicepages/InputTriggerDevicePage.qml @@ -13,6 +13,7 @@ GenericDevicePage { text: qsTr("This event has appeared %1 times in the last %2 days.") logsModel: LogsModel { + engine: Engine deviceId: root.device.id live: true Component.onCompleted: update() diff --git a/nymea-app/ui/devicepages/StateLogPage.qml b/nymea-app/ui/devicepages/StateLogPage.qml index 52b01bc7..c99f5a73 100644 --- a/nymea-app/ui/devicepages/StateLogPage.qml +++ b/nymea-app/ui/devicepages/StateLogPage.qml @@ -28,6 +28,7 @@ Page { LogsModel { id: logsModel + engine: Engine deviceId: root.device.id live: true Component.onCompleted: update() diff --git a/nymea-app/ui/system/LogViewerPage.qml b/nymea-app/ui/system/LogViewerPage.qml index 1db58277..1d412c76 100644 --- a/nymea-app/ui/system/LogViewerPage.qml +++ b/nymea-app/ui/system/LogViewerPage.qml @@ -25,6 +25,7 @@ Page { LogsModel { id: logsModel + engine: Engine startTime: { var date = new Date(); date.setHours(new Date().getHours() - 2);