From b2a045def3f974370fb9c9dd16e823951c856b0f Mon Sep 17 00:00:00 2001 From: "Robert C. Helling" Date: Mon, 18 May 2015 10:52:03 +0200 Subject: [PATCH] Ask user about merging dives more than 30m apart ...and remember the answer. Signed-off-by: Robert C. Helling --- qt-ui/divelistview.cpp | 27 +++++++++++++++++++++++---- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/qt-ui/divelistview.cpp b/qt-ui/divelistview.cpp index 3c63bea..16033dc 100644 --- a/qt-ui/divelistview.cpp +++ b/qt-ui/divelistview.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include "qthelper.h" #include "undocommands.h" #include "divelistview.h" @@ -566,15 +567,32 @@ void DiveListView::selectionChanged(const QItemSelection &selected, const QItemS Q_EMIT currentDiveChanged(selected_dive); } -static bool can_merge(const struct dive *a, const struct dive *b) +enum asked_user {NOTYET, MERGE, DONTMERGE}; + +static bool can_merge(const struct dive *a, const struct dive *b, enum asked_user *have_asked) { if (!a || !b) return false; if (a->when > b->when) return false; /* Don't merge dives if there's more than half an hour between them */ - if (a->when + a->duration.seconds + 30 * 60 < b->when) - return false; + if (a->when + a->duration.seconds + 30 * 60 < b->when) { + if (*have_asked == NOTYET) { + if (QMessageBox::warning(MainWindow::instance(), + MainWindow::instance()->tr("Warning"), + MainWindow::instance()->tr("Trying to merge dives with %1min interval in between").arg( + (b->when - a->when - a->duration.seconds) / 60), + QMessageBox::Ok | QMessageBox::Cancel) == QMessageBox::Cancel) { + *have_asked = DONTMERGE; + return false; + } else { + *have_asked = MERGE; + return true; + } + } else { + return *have_asked == MERGE ? true : false; + } + } return true; } @@ -582,10 +600,11 @@ void DiveListView::mergeDives() { int i; struct dive *dive, *maindive = NULL; + enum asked_user have_asked = NOTYET; for_each_dive (i, dive) { if (dive->selected) { - if (!can_merge(maindive, dive)) { + if (!can_merge(maindive, dive, &have_asked)) { maindive = dive; } else { maindive = merge_two_dives(maindive, dive); -- 2.3.2 (Apple Git-55)