summaryrefslogtreecommitdiffstats
path: root/desktop-widgets/filterwidget2.cpp
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2020-05-27 23:09:30 +0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2020-09-29 16:13:03 -0700
commit581eb1f563df9e7fa72371d936521e0bd55d9f18 (patch)
treeb269b6566f85aadcc0951fc8d40a0cbd2cdbf7e5 /desktop-widgets/filterwidget2.cpp
parent2f5223035a9d43b933b0baf64823dab84b5d8cea (diff)
downloadsubsurface-581eb1f563df9e7fa72371d936521e0bd55d9f18.tar.gz
filter: create a primitive "create filter preset" dialog
The dialog asks the user for a name and warns if the name already exists, i.e. an old filter preset will be overwritten. Possibly, this should contain an auto-completion facility in the case that the user wants to overwrite old presets. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets/filterwidget2.cpp')
-rw-r--r--desktop-widgets/filterwidget2.cpp29
1 files changed, 25 insertions, 4 deletions
diff --git a/desktop-widgets/filterwidget2.cpp b/desktop-widgets/filterwidget2.cpp
index f1cd3263d..490892cc1 100644
--- a/desktop-widgets/filterwidget2.cpp
+++ b/desktop-widgets/filterwidget2.cpp
@@ -2,9 +2,11 @@
#include "desktop-widgets/filterconstraintwidget.h"
#include "desktop-widgets/simplewidgets.h"
#include "desktop-widgets/mainwindow.h"
+#include "commands/command.h"
#include "core/qthelper.h"
#include "core/divelist.h"
#include "core/settings/qPrefUnit.h"
+#include "core/filterpreset.h"
#include <QDoubleSpinBox>
@@ -100,19 +102,38 @@ void FilterWidget2::closeFilter()
MainWindow::instance()->setApplicationState(ApplicationState::Default);
}
-void FilterWidget2::updateFilter()
+FilterData FilterWidget2::createFilterData() const
{
- if (ignoreSignal)
- return;
-
FilterData filterData;
filterData.fulltextStringMode = (StringFilterMode)ui.fulltextStringMode->currentIndex();
filterData.fullText = ui.fullText->text();
filterData.constraints = constraintModel.getConstraints();
+ return filterData;
+}
+
+void FilterWidget2::updateFilter()
+{
+ if (ignoreSignal)
+ return;
+
+ FilterData filterData = createFilterData();
validFilter = filterData.validFilter();
DiveFilter::instance()->setFilter(filterData);
}
+void FilterWidget2::on_addSetButton_clicked()
+{
+ AddFilterPresetDialog dialog(this);
+ QString name = dialog.doit();
+ if (name.isEmpty())
+ return;
+ int idx = filter_preset_id(name);
+ if (idx >= 0)
+ Command::editFilterPreset(idx, createFilterData());
+ else
+ Command::createFilterPreset(name, createFilterData());
+}
+
void FilterWidget2::showEvent(QShowEvent *event)
{
QWidget::showEvent(event);