summaryrefslogtreecommitdiffstats
path: root/desktop-widgets
diff options
context:
space:
mode:
authorGravatar Berthold Stoeger <bstoeger@mail.tuwien.ac.at>2021-02-12 10:56:48 +0100
committerGravatar Dirk Hohndel <dirk@hohndel.org>2021-02-13 13:02:54 -0800
commit5a8d7617ce3d1b54f22a0438f593e844757ecc46 (patch)
tree3ec045749e4535fa38094300dcb639299e4a7b2d /desktop-widgets
parent2943b1cbde1a60ef00f1878a27f811246d9b2bc3 (diff)
downloadsubsurface-5a8d7617ce3d1b54f22a0438f593e844757ecc46.tar.gz
statistics: implement primitive "restrict to selection" feature
Allow the user to restrict the analyzed dives based on the current selection. One button restricts to the current selection and one button resets the restriction. Thus, the user can for example select bars in the bar chart or a range in the scatter plot and perform statistics on these sets. The restriction works on top of the filter. The UI can certainly be improved, but it is a start. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'desktop-widgets')
-rw-r--r--desktop-widgets/statswidget.cpp29
-rw-r--r--desktop-widgets/statswidget.h3
-rw-r--r--desktop-widgets/statswidget.ui26
3 files changed, 58 insertions, 0 deletions
diff --git a/desktop-widgets/statswidget.cpp b/desktop-widgets/statswidget.cpp
index 33174778d..b74a26863 100644
--- a/desktop-widgets/statswidget.cpp
+++ b/desktop-widgets/statswidget.cpp
@@ -84,6 +84,8 @@ StatsWidget::StatsWidget(QWidget *parent) : QWidget(parent)
connect(ui.var1Binner, QOverload<int>::of(&QComboBox::activated), this, &StatsWidget::var1BinnerChanged);
connect(ui.var2Binner, QOverload<int>::of(&QComboBox::activated), this, &StatsWidget::var2BinnerChanged);
connect(ui.var2Operation, QOverload<int>::of(&QComboBox::activated), this, &StatsWidget::var2OperationChanged);
+ connect(ui.restrictButton, &QToolButton::clicked, this, &StatsWidget::restrict);
+ connect(ui.unrestrictButton, &QToolButton::clicked, this, &StatsWidget::unrestrict);
ui.stats->setSource(urlStatsView);
ui.stats->setResizeMode(QQuickWidget::SizeRootObjectToView);
@@ -141,6 +143,18 @@ void StatsWidget::updateUi()
view->plot(state);
}
+void StatsWidget::updateRestrictionLabel()
+{
+ if (!view)
+ return;
+ int num = view->restrictionCount();
+ if (num < 0)
+ ui.restrictionLabel->setText(tr("Analyzing all dives"));
+ else
+ ui.restrictionLabel->setText(tr("Analyzing subset (%L1) dives").arg(num));
+ ui.unrestrictButton->setEnabled(num > 0);
+}
+
void StatsWidget::closeStats()
{
MainWindow::instance()->setApplicationState(ApplicationState::Default);
@@ -192,6 +206,21 @@ void StatsWidget::featureChanged(int idx, bool status)
void StatsWidget::showEvent(QShowEvent *e)
{
+ unrestrict();
updateUi();
QWidget::showEvent(e);
}
+
+void StatsWidget::restrict()
+{
+ if (view)
+ view->restrictToSelection();
+ updateRestrictionLabel();
+}
+
+void StatsWidget::unrestrict()
+{
+ if (view)
+ view->unrestrict();
+ updateRestrictionLabel();
+}
diff --git a/desktop-widgets/statswidget.h b/desktop-widgets/statswidget.h
index 51b94ac87..4ae86a015 100644
--- a/desktop-widgets/statswidget.h
+++ b/desktop-widgets/statswidget.h
@@ -25,11 +25,14 @@ slots:
void var2BinnerChanged(int);
void var2OperationChanged(int);
void featureChanged(int, bool);
+ void restrict();
+ void unrestrict();
private:
Ui::StatsWidget ui;
StatsState state;
StatsView *view;
void updateUi();
+ void updateRestrictionLabel();
std::vector<std::unique_ptr<QCheckBox>> features;
ChartListModel charts;
diff --git a/desktop-widgets/statswidget.ui b/desktop-widgets/statswidget.ui
index a20fb4a8f..27a10ffd3 100644
--- a/desktop-widgets/statswidget.ui
+++ b/desktop-widgets/statswidget.ui
@@ -96,6 +96,32 @@
</widget>
</item>
<item>
+ <widget class="QGroupBox" name="restrictionGroup">
+ <property name="title">
+ <string>Restriction</string>
+ </property>
+ <layout class="QVBoxLayout" name="chartLayout">
+ <item>
+ <widget class="QLabel" name="restrictionLabel" />
+ </item>
+ <item>
+ <widget class="QToolButton" name="restrictButton">
+ <property name="text">
+ <string>Restrict to selection</string>
+ </property>
+ </widget>
+ </item>
+ <item>
+ <widget class="QToolButton" name="unrestrictButton">
+ <property name="text">
+ <string>Reset restriction</string>
+ </property>
+ </widget>
+ </item>
+ </layout>
+ </widget>
+ </item>
+ <item>
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>