From 9ebc5986a17681231d3533004ac6582cb01bbfd1 Mon Sep 17 00:00:00 2001 From: emeric Date: Sat, 7 May 2022 14:17:16 +0200 Subject: [PATCH] Still converting to bootstrap 5. Converted filter dialog --- src/lms/ui/explore/Filters.cpp | 85 ++++++++++++++++------------------ 1 file changed, 39 insertions(+), 46 deletions(-) diff --git a/src/lms/ui/explore/Filters.cpp b/src/lms/ui/explore/Filters.cpp index 43756385..bdf46f72 100644 --- a/src/lms/ui/explore/Filters.cpp +++ b/src/lms/ui/explore/Filters.cpp @@ -28,6 +28,7 @@ #include "services/database/Session.hpp" #include "LmsApplication.hpp" +#include "ModalManager.hpp" namespace UserInterface { @@ -36,19 +37,46 @@ using namespace Database; void Filters::showDialog() { - auto dialog = std::make_shared(Wt::WString::tr("Lms.Explore.add-filter")); + auto dialog {std::make_unique(Wt::WString::tr("Lms.Explore.template.add-filter"))}; + Wt::WWidget* dialogPtr {dialog.get()}; + dialog->addFunction("tr", &Wt::WTemplate::Functions::tr); - Wt::WTemplate* container = dialog->contents()->addNew(Wt::WString::tr("Lms.Explore.template.add-filter")); - container->addFunction("tr", &Wt::WTemplate::Functions::tr); + Wt::WComboBox* typeCombo {dialog->bindNew("type")}; + Wt::WComboBox* valueCombo {dialog->bindNew("value")}; - Wt::WComboBox* typeCombo = container->bindNew("type"); - Wt::WComboBox* valueCombo = container->bindNew("value"); + Wt::WPushButton* addBtn {dialog->bindNew("add-btn", Wt::WString::tr("Lms.Explore.add-filter"))}; + addBtn->clicked().connect([=] + { + const std::string type {typeCombo->valueText().toUTF8()}; + const std::string value {valueCombo->valueText().toUTF8()}; - Wt::WPushButton* addBtn = container->bindNew("add-btn", Wt::WString::tr("Lms.Explore.add-filter")); - addBtn->clicked().connect(dialog.get(), &Wt::WDialog::accept); + // TODO use a model to store the cluster.id() values + ClusterId clusterId {}; + + { + auto transaction {LmsApp->getDbSession().createSharedTransaction()}; + + ClusterType::pointer clusterType {ClusterType::find(LmsApp->getDbSession(), type)}; + if (!clusterType) + return; + + Cluster::pointer cluster {clusterType->getCluster(value)}; + if (!cluster) + return; + + clusterId = cluster->getId(); + } + + add(clusterId); + LmsApp->getModalManager().dispose(dialogPtr); + }); + + Wt::WPushButton* cancelBtn {dialog->bindNew("cancel-btn", Wt::WString::tr("Lms.cancel"))}; + cancelBtn->clicked().connect([=] + { + LmsApp->getModalManager().dispose(dialogPtr); + }); - Wt::WPushButton* cancelBtn = container->bindNew("cancel-btn", Wt::WString::tr("Lms.cancel")); - cancelBtn->clicked().connect(dialog.get(), &Wt::WDialog::reject); // Populate data { @@ -81,8 +109,7 @@ Filters::showDialog() auto transaction {LmsApp->getDbSession().createSharedTransaction()}; - auto clusterType = ClusterType::find(LmsApp->getDbSession(), name); - + auto clusterType {ClusterType::find(LmsApp->getDbSession(), name)}; for (const Cluster::pointer& cluster : clusterType->getClusters()) { if (std::find(std::cbegin(_clusterIds), std::cend(_clusterIds), cluster->getId()) == _clusterIds.end()) @@ -90,41 +117,7 @@ Filters::showDialog() } }); - dialog->setModal(true); - dialog->setMovable(false); - - dialog->setResizable(false); - dialog->setClosable(false); - - dialog->finished().connect([=] - { - if (dialog->result() != Wt::DialogCode::Accepted) - return; - - const std::string type {typeCombo->valueText().toUTF8()}; - const std::string value {valueCombo->valueText().toUTF8()}; - - // TODO use a model to store the cluster.id() values - ClusterId clusterId {}; - - { - auto transaction {LmsApp->getDbSession().createSharedTransaction()}; - - ClusterType::pointer clusterType {ClusterType::find(LmsApp->getDbSession(), type)}; - if (!clusterType) - return; - - Cluster::pointer cluster {clusterType->getCluster(value)}; - if (!cluster) - return; - - clusterId = cluster->getId(); - } - - add(clusterId); - }); - - dialog->show(); + LmsApp->getModalManager().show(std::move(dialog)); } void