From ca9d60187be56f027d714cc2d601a8516c3a6400 Mon Sep 17 00:00:00 2001 From: Michael Zanetti Date: Fri, 11 Oct 2019 11:09:31 +0200 Subject: [PATCH] Improve adding/removing repositories a bit --- libnymea-app-core/system/systemcontroller.cpp | 10 ++++++++-- libnymea-app-core/system/systemcontroller.h | 4 +++- nymea-app/ui/system/SystemUpdatePage.qml | 18 ++++++++++++++++++ .../ui/thingconfiguration/SetupWizard.qml | 3 ++- 4 files changed, 31 insertions(+), 4 deletions(-) diff --git a/libnymea-app-core/system/systemcontroller.cpp b/libnymea-app-core/system/systemcontroller.cpp index 485395c1..c102d7b6 100644 --- a/libnymea-app-core/system/systemcontroller.cpp +++ b/libnymea-app-core/system/systemcontroller.cpp @@ -93,12 +93,12 @@ Repositories *SystemController::repositories() const return m_repositories; } -void SystemController::enableRepository(const QString &id, bool enabled) +int SystemController::enableRepository(const QString &id, bool enabled) { QVariantMap params; params.insert("repositoryId", id); params.insert("enabled", enabled); - m_jsonRpcClient->sendCommand("System.EnableRepository", params); + return m_jsonRpcClient->sendCommand("System.EnableRepository", params, this, "enableRepositoryResponse"); } void SystemController::getCapabilitiesResponse(const QVariantMap &data) @@ -158,6 +158,12 @@ void SystemController::removePackageResponse(const QVariantMap ¶ms) qDebug() << "Remove result" << params; } +void SystemController::enableRepositoryResponse(const QVariantMap ¶ms) +{ + qDebug() << "Enable repo response" << params; + emit enableRepositoryFinished(params.value("id").toInt(), params.value("params").toMap().value("success").toBool()); +} + void SystemController::notificationReceived(const QVariantMap &data) { QString notification = data.value("notification").toString(); diff --git a/libnymea-app-core/system/systemcontroller.h b/libnymea-app-core/system/systemcontroller.h index 7362b624..072eba42 100644 --- a/libnymea-app-core/system/systemcontroller.h +++ b/libnymea-app-core/system/systemcontroller.h @@ -41,7 +41,7 @@ public: Q_INVOKABLE void removePackages(const QString packageId = QString()); Repositories* repositories() const; - Q_INVOKABLE void enableRepository(const QString &id, bool enabled); + Q_INVOKABLE int enableRepository(const QString &id, bool enabled); signals: @@ -49,6 +49,7 @@ signals: void updateManagementAvailableChanged(); void updateManagementBusyChanged(); void updateRunningChanged(); + void enableRepositoryFinished(int id, bool success); private slots: void getCapabilitiesResponse(const QVariantMap &data); @@ -56,6 +57,7 @@ private slots: void getPackagesResponse(const QVariantMap &data); void getRepositoriesResponse(const QVariantMap &data); void removePackageResponse(const QVariantMap ¶ms); + void enableRepositoryResponse(const QVariantMap ¶ms); void notificationReceived(const QVariantMap &data); diff --git a/nymea-app/ui/system/SystemUpdatePage.qml b/nymea-app/ui/system/SystemUpdatePage.qml index f4049d33..668f60d9 100644 --- a/nymea-app/ui/system/SystemUpdatePage.qml +++ b/nymea-app/ui/system/SystemUpdatePage.qml @@ -21,6 +21,16 @@ Page { } } + Connections { + target: engine.systemController + onEnableRepositoryFinished: { + if (!success) { + var popup = errorDialogComponent.createObject(app, {errorCode: qsTr("Failure adding repository.") }) + popup.open(); + } + } + } + PackagesFilterModel { id: updatesModel packages: engine.systemController.packages @@ -366,4 +376,12 @@ Page { UpdateRunningOverlay { } + + Component { + id: errorDialogComponent + + ErrorDialog { + id: errorDialog + } + } } diff --git a/nymea-app/ui/thingconfiguration/SetupWizard.qml b/nymea-app/ui/thingconfiguration/SetupWizard.qml index 799a4a7c..b3560e43 100644 --- a/nymea-app/ui/thingconfiguration/SetupWizard.qml +++ b/nymea-app/ui/thingconfiguration/SetupWizard.qml @@ -215,6 +215,7 @@ Page { break; case 1: case 2: + case 3: engine.deviceManager.pairDevice(root.deviceClass.id, d.deviceDescriptor.id, root.device.name); break; @@ -313,7 +314,7 @@ Page { } TextField { id: nameTextField - text: d.deviceName ? d.deviceName : "" + text: d.deviceName ? d.deviceName : root.deviceClass.displayName Layout.fillWidth: true Layout.leftMargin: app.margins Layout.rightMargin: app.margins