Rerender the database settings view when the internal path is updated

This commit is contained in:
emeric
2018-04-23 13:20:10 +02:00
parent 7b5f443b44
commit c586be11e4
2 changed files with 33 additions and 14 deletions
+28 -12
View File
@@ -21,6 +21,7 @@
#include <Wt/WPushButton.h> #include <Wt/WPushButton.h>
#include <Wt/WComboBox.h> #include <Wt/WComboBox.h>
#include <Wt/WLineEdit.h> #include <Wt/WLineEdit.h>
#include <Wt/WTemplateFormView.h>
#include <Wt/WFormModel.h> #include <Wt/WFormModel.h>
#include <Wt/WStringListModel.h> #include <Wt/WStringListModel.h>
@@ -217,32 +218,47 @@ const Wt::WFormModel::Field DatabaseSettingsModel::UpdateStartTimeField = "upda
DatabaseSettingsView::DatabaseSettingsView() 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::WTemplateFormView>(Wt::WString::tr("Lms.Admin.Database.template"));
auto model = std::make_shared<DatabaseSettingsModel>(); auto model = std::make_shared<DatabaseSettingsModel>();
// Media Directory // Media Directory
setFormWidget(DatabaseSettingsModel::MediaDirectoryField, std::make_unique<Wt::WLineEdit>()); t->setFormWidget(DatabaseSettingsModel::MediaDirectoryField, std::make_unique<Wt::WLineEdit>());
// Update Period // Update Period
auto updatePeriod = std::make_unique<Wt::WComboBox>(); auto updatePeriod = std::make_unique<Wt::WComboBox>();
updatePeriod->setModel(model->updatePeriodModel()); updatePeriod->setModel(model->updatePeriodModel());
setFormWidget(DatabaseSettingsModel::UpdatePeriodField, std::move(updatePeriod)); t->setFormWidget(DatabaseSettingsModel::UpdatePeriodField, std::move(updatePeriod));
// Update Start Time // Update Start Time
auto updateStartTime = std::make_unique<Wt::WComboBox>(); auto updateStartTime = std::make_unique<Wt::WComboBox>();
updateStartTime->setModel(model->updateStartTimeModel()); updateStartTime->setModel(model->updateStartTimeModel());
setFormWidget(DatabaseSettingsModel::UpdateStartTimeField, std::move(updateStartTime)); t->setFormWidget(DatabaseSettingsModel::UpdateStartTimeField, std::move(updateStartTime));
// Buttons // Buttons
Wt::WPushButton *saveBtn = t->bindWidget("apply-btn", std::make_unique<Wt::WPushButton>(Wt::WString::tr("Lms.apply")));
Wt::WPushButton *saveBtn = bindWidget("apply-btn", std::make_unique<Wt::WPushButton>(Wt::WString::tr("Lms.apply"))); Wt::WPushButton *discardBtn = t->bindWidget("discard-btn", std::make_unique<Wt::WPushButton>(Wt::WString::tr("Lms.discard")));
Wt::WPushButton *discardBtn = bindWidget("discard-btn", std::make_unique<Wt::WPushButton>(Wt::WString::tr("Lms.discard"))); Wt::WPushButton *immScanBtn = t->bindWidget("immediate-scan-btn", std::make_unique<Wt::WPushButton>(Wt::WString::tr("Lms.Admin.Database.immediate-scan")));
Wt::WPushButton *immScanBtn = bindWidget("immediate-scan-btn", std::make_unique<Wt::WPushButton>(Wt::WString::tr("Lms.Admin.Database.immediate-scan")));
saveBtn->clicked().connect(std::bind([=] () saveBtn->clicked().connect(std::bind([=] ()
{ {
updateModel(model.get()); t->updateModel(model.get());
if (model->validate()) if (model->validate())
{ {
@@ -253,14 +269,14 @@ DatabaseSettingsView::DatabaseSettingsView()
} }
// Udate the view: Delete any validation message in the view, etc. // Udate the view: Delete any validation message in the view, etc.
updateView(model.get()); t->updateView(model.get());
})); }));
discardBtn->clicked().connect(std::bind([=] () discardBtn->clicked().connect(std::bind([=] ()
{ {
model->loadData(); model->loadData();
model->validate(); model->validate();
updateView(model.get()); t->updateView(model.get());
})); }));
immScanBtn->clicked().connect(std::bind([=] () immScanBtn->clicked().connect(std::bind([=] ()
@@ -269,7 +285,7 @@ DatabaseSettingsView::DatabaseSettingsView()
LmsApp->notifyMsg(Wt::WString::tr("Lms.Admin.Database.scan-launched")); LmsApp->notifyMsg(Wt::WString::tr("Lms.Admin.Database.scan-launched"));
})); }));
updateView(model.get()); t->updateView(model.get());
} }
} // namespace UserInterface } // namespace UserInterface
+5 -2
View File
@@ -19,14 +19,17 @@
#pragma once #pragma once
#include <Wt/WTemplateFormView.h> #include <Wt/WContainerWidget.h>
namespace UserInterface { namespace UserInterface {
class DatabaseSettingsView : public Wt::WTemplateFormView class DatabaseSettingsView : public Wt::WContainerWidget
{ {
public: public:
DatabaseSettingsView(); DatabaseSettingsView();
private:
void refreshView();
}; };