summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Tomaz Canabrava <tomaz.canabrava@intel.com>2015-01-08 11:52:12 -0200
committerGravatar Dirk Hohndel <dirk@hohndel.org>2015-01-08 07:46:41 -0800
commitf5f0938d8cd2193621f0d20d64eb0259c06788bf (patch)
tree8bb7dfb57d1d2b397008360d00c00544d49dce27
parent25323c271747abbd7cdcd7487ee12a7dac72eda5 (diff)
downloadsubsurface-f5f0938d8cd2193621f0d20d64eb0259c06788bf.tar.gz
Dive d/l selection UI: Add method to remove unused dives
This tries to relete from the dive list the dives that shouldn't be imported. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r--qt-ui/downloadfromdivecomputer.cpp18
-rw-r--r--qt-ui/downloadfromdivecomputer.h1
2 files changed, 19 insertions, 0 deletions
diff --git a/qt-ui/downloadfromdivecomputer.cpp b/qt-ui/downloadfromdivecomputer.cpp
index abc6fff91..465d19a42 100644
--- a/qt-ui/downloadfromdivecomputer.cpp
+++ b/qt-ui/downloadfromdivecomputer.cpp
@@ -405,6 +405,9 @@ void DownloadFromDCWidget::onDownloadThreadFinished()
void DownloadFromDCWidget::on_ok_clicked()
{
+ // remove all unselected dives from the dive-list.
+ diveImportedModel->removeUnused();
+
int uniqId, idx;
// remember the last downloaded dive (on most dive computers this will be the chronologically
// first new dive) and select it again after processing all the dives
@@ -573,3 +576,18 @@ void DiveImportedModel::setImportedDivesIndexes(int first, int last)
memset(checkStates, true, last-first);
endInsertRows();
}
+
+void DiveImportedModel::removeUnused() {
+ beginRemoveRows(QModelIndex(), 0, rowCount()-1);
+ endRemoveRows();
+
+ for(int i = lastIndex; i >= firstIndex; i-- ){
+ if(!checkStates[firstIndex - i]) {
+ delete_single_dive(i);
+ }
+ }
+
+ lastIndex = 0;
+ firstIndex = 0;
+ delete[] checkStates;
+}
diff --git a/qt-ui/downloadfromdivecomputer.h b/qt-ui/downloadfromdivecomputer.h
index b567dfe0e..ea272599e 100644
--- a/qt-ui/downloadfromdivecomputer.h
+++ b/qt-ui/downloadfromdivecomputer.h
@@ -36,6 +36,7 @@ public:
bool setData(const QModelIndex &index, const QVariant &value, int role);
void setImportedDivesIndexes(int first, int last);
Qt::ItemFlags flags(const QModelIndex &index) const;
+ void removeUnused();
private:
int firstIndex;
int lastIndex;