From c586be11e4ca952dbcd055393e1b7e47d645f774 Mon Sep 17 00:00:00 2001 From: emeric Date: Mon, 23 Apr 2018 13:20:10 +0200 Subject: [PATCH] Rerender the database settings view when the internal path is updated --- src/ui/admin/DatabaseSettingsView.cpp | 40 +++++++++++++++++++-------- src/ui/admin/DatabaseSettingsView.hpp | 7 +++-- 2 files changed, 33 insertions(+), 14 deletions(-) diff --git a/src/ui/admin/DatabaseSettingsView.cpp b/src/ui/admin/DatabaseSettingsView.cpp index 8b1c6764..6164a7f0 100644 --- a/src/ui/admin/DatabaseSettingsView.cpp +++ b/src/ui/admin/DatabaseSettingsView.cpp @@ -21,6 +21,7 @@ #include #include #include +#include #include #include @@ -217,32 +218,47 @@ const Wt::WFormModel::Field DatabaseSettingsModel::UpdateStartTimeField = "upda DatabaseSettingsView::DatabaseSettingsView() -: Wt::WTemplateFormView(Wt::WString::tr("Lms.Admin.Database.template")) { + wApp->internalPathChanged().connect(std::bind([=] + { + refreshView(); + })); + + refreshView(); +} + +void +DatabaseSettingsView::refreshView() +{ + if (!wApp->internalPathMatches("/admin/database")) + return; + + clear(); + + auto t = addNew(Wt::WString::tr("Lms.Admin.Database.template")); auto model = std::make_shared(); // Media Directory - setFormWidget(DatabaseSettingsModel::MediaDirectoryField, std::make_unique()); + t->setFormWidget(DatabaseSettingsModel::MediaDirectoryField, std::make_unique()); // Update Period auto updatePeriod = std::make_unique(); updatePeriod->setModel(model->updatePeriodModel()); - setFormWidget(DatabaseSettingsModel::UpdatePeriodField, std::move(updatePeriod)); + t->setFormWidget(DatabaseSettingsModel::UpdatePeriodField, std::move(updatePeriod)); // Update Start Time auto updateStartTime = std::make_unique(); updateStartTime->setModel(model->updateStartTimeModel()); - setFormWidget(DatabaseSettingsModel::UpdateStartTimeField, std::move(updateStartTime)); + t->setFormWidget(DatabaseSettingsModel::UpdateStartTimeField, std::move(updateStartTime)); // Buttons - - Wt::WPushButton *saveBtn = bindWidget("apply-btn", std::make_unique(Wt::WString::tr("Lms.apply"))); - Wt::WPushButton *discardBtn = bindWidget("discard-btn", std::make_unique(Wt::WString::tr("Lms.discard"))); - Wt::WPushButton *immScanBtn = bindWidget("immediate-scan-btn", std::make_unique(Wt::WString::tr("Lms.Admin.Database.immediate-scan"))); + Wt::WPushButton *saveBtn = t->bindWidget("apply-btn", std::make_unique(Wt::WString::tr("Lms.apply"))); + Wt::WPushButton *discardBtn = t->bindWidget("discard-btn", std::make_unique(Wt::WString::tr("Lms.discard"))); + Wt::WPushButton *immScanBtn = t->bindWidget("immediate-scan-btn", std::make_unique(Wt::WString::tr("Lms.Admin.Database.immediate-scan"))); saveBtn->clicked().connect(std::bind([=] () { - updateModel(model.get()); + t->updateModel(model.get()); if (model->validate()) { @@ -253,14 +269,14 @@ DatabaseSettingsView::DatabaseSettingsView() } // Udate the view: Delete any validation message in the view, etc. - updateView(model.get()); + t->updateView(model.get()); })); discardBtn->clicked().connect(std::bind([=] () { model->loadData(); model->validate(); - updateView(model.get()); + t->updateView(model.get()); })); immScanBtn->clicked().connect(std::bind([=] () @@ -269,7 +285,7 @@ DatabaseSettingsView::DatabaseSettingsView() LmsApp->notifyMsg(Wt::WString::tr("Lms.Admin.Database.scan-launched")); })); - updateView(model.get()); + t->updateView(model.get()); } } // namespace UserInterface diff --git a/src/ui/admin/DatabaseSettingsView.hpp b/src/ui/admin/DatabaseSettingsView.hpp index 99653c9f..116309aa 100644 --- a/src/ui/admin/DatabaseSettingsView.hpp +++ b/src/ui/admin/DatabaseSettingsView.hpp @@ -19,14 +19,17 @@ #pragma once -#include +#include namespace UserInterface { -class DatabaseSettingsView : public Wt::WTemplateFormView +class DatabaseSettingsView : public Wt::WContainerWidget { public: DatabaseSettingsView(); + + private: + void refreshView(); };