From 14290bf1f0630e7084e91b8c302b3fdc7a5f804c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20T=C5=AFma?= Date: Tue, 22 Mar 2016 19:47:11 +0100 Subject: [PATCH] Enabled loading multiple POI files at once --- src/gui.cpp | 42 ++++++++++++++++++++++++++---------------- src/gui.h | 1 + 2 files changed, 27 insertions(+), 16 deletions(-) diff --git a/src/gui.cpp b/src/gui.cpp index 98f9bef5..502c7b3d 100644 --- a/src/gui.cpp +++ b/src/gui.cpp @@ -513,22 +513,34 @@ bool GUI::loadFile(const QString &fileName) void GUI::openPOIFile() { - QString fileName = QFileDialog::getOpenFileName(this, tr("Open POI file"), + QStringList files = QFileDialog::getOpenFileNames(this, tr("Open POI file"), QString(), tr("GPX files (*.gpx);;CSV files (*.csv);;All files (*)")); + QStringList list = files; - if (!fileName.isEmpty()) { - if (!_poi.loadFile(fileName)) { - QString error = tr("Error loading POI file:\n%1") - .arg(_poi.errorString()) + QString("\n"); - if (_poi.errorLine()) - error.append(tr("Line: %1").arg(_poi.errorLine())); - QMessageBox::critical(this, tr("Error"), error); - } else { - _showPOIAction->setChecked(true); - _track->loadPOI(_poi); - _poiFilesMenu->addAction(createPOIFileAction( - _poi.files().indexOf(fileName))); - } + for (QStringList::Iterator it = list.begin(); it != list.end(); it++) + openPOIFile(*it); +} + +bool GUI::openPOIFile(const QString &fileName) +{ + if (fileName.isEmpty()) + return false; + + if (!_poi.loadFile(fileName)) { + QString error = tr("Error loading POI file:\n%1") + .arg(_poi.errorString()) + QString("\n"); + if (_poi.errorLine()) + error.append(tr("Line: %1").arg(_poi.errorLine())); + QMessageBox::critical(this, tr("Error"), error); + + return false; + } else { + _showPOIAction->setChecked(true); + _track->loadPOI(_poi); + _poiFilesMenu->addAction(createPOIFileAction( + _poi.files().indexOf(fileName))); + + return true; } } @@ -608,8 +620,6 @@ void GUI::saveFile(const QString &fileName) } scene.addItem(&info); scene.render(&p, QRectF(0, 0, printer.width(), 200)); - - p.end(); } void GUI::reloadFile() diff --git a/src/gui.h b/src/gui.h index f224da76..9e4c3e4c 100644 --- a/src/gui.h +++ b/src/gui.h @@ -71,6 +71,7 @@ private: void createTrackView(); void createTrackGraphs(); + bool openPOIFile(const QString &fileName); bool loadFile(const QString &fileName); void saveFile(const QString &fileName); void updateStatusBarInfo();