Rerender the database settings view when the internal path is updated
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user