Cleanup: remove ReverseGeoLookupThread

Fetching the taxonomy from GPS coordinates was implemented in
a QThread. But the only access to the main function was a
direct call to run(). Thus, the thread was *never* started.
The function call was always asynchronous [it was using an
event loop though, so the UI doesn't hang]. Notably this
means that the signals connected to the thread would never
fire. And the spinner would never be activated.

Thus:
1) Turn the thread into a simple function.
2) Remove the spinner.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
This commit is contained in:
Berthold Stoeger 2018-10-11 18:44:05 +02:00 committed by Dirk Hohndel
parent 76e5c5ac67
commit ce8199cdfd
7 changed files with 8 additions and 70 deletions

View file

@ -20,17 +20,7 @@
#include <QEventLoop>
#include <QTimer>
ReverseGeoLookupThread* ReverseGeoLookupThread::instance()
{
static ReverseGeoLookupThread* self = new ReverseGeoLookupThread();
return self;
}
ReverseGeoLookupThread::ReverseGeoLookupThread(QObject *obj) : QThread(obj)
{
}
void ReverseGeoLookupThread::run()
void reverseGeoLookup()
{
QNetworkRequest request;
QNetworkAccessManager *rgl = new QNetworkAccessManager();
@ -41,7 +31,7 @@ void ReverseGeoLookupThread::run()
request.setRawHeader("Accept", "text/json");
request.setRawHeader("User-Agent", getUserAgent().toUtf8());
connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
QObject::connect(&timer, SIGNAL(timeout()), &loop, SLOT(quit()));
struct dive_site *ds = &displayed_dive_site;
@ -50,7 +40,7 @@ void ReverseGeoLookupThread::run()
QNetworkReply *reply = rgl->get(request);
timer.setSingleShot(true);
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
timer.start(5000); // 5 secs. timeout
loop.exec();
@ -119,13 +109,13 @@ void ReverseGeoLookupThread::run()
}
} else {
report_error("timeout accessing geonames.org");
disconnect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
QObject::disconnect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
reply->abort();
}
// next check the oceans API to figure out the body of water
request.setUrl(geonamesOceanURL.arg(uiLanguage(NULL).section(QRegExp("[-_ ]"), 0, 0)).arg(ds->latitude.udeg / 1000000.0).arg(ds->longitude.udeg / 1000000.0));
reply = rgl->get(request);
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
QObject::connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
timer.start(5000); // 5 secs. timeout
loop.exec();
if (timer.isActive()) {
@ -165,7 +155,7 @@ void ReverseGeoLookupThread::run()
}
} else {
report_error("timeout accessing geonames.org");
disconnect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
QObject::disconnect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
reply->abort();
}

View file

@ -2,18 +2,6 @@
#ifndef DIVESITEHELPERS_H
#define DIVESITEHELPERS_H
#include "units.h"
#include <QThread>
class ReverseGeoLookupThread : public QThread {
Q_OBJECT
public:
static ReverseGeoLookupThread *instance();
void lookup(struct dive_site *ds);
void run() override;
private:
ReverseGeoLookupThread(QObject *parent = 0);
};
void reverseGeoLookup();
#endif // DIVESITEHELPERS_H

View file

@ -330,8 +330,7 @@ void LocationInformationWidget::resetPallete()
void LocationInformationWidget::reverseGeocode()
{
ReverseGeoLookupThread *geoLookup = ReverseGeoLookupThread::instance();
geoLookup->run();
reverseGeoLookup();
updateLabels();
}

View file

@ -266,9 +266,6 @@ MainWindow::MainWindow() : QMainWindow(),
redoAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_Z));
ui.menu_Edit->addActions({ undoAction, redoAction });
ReverseGeoLookupThread *geoLookup = ReverseGeoLookupThread::instance();
connect(geoLookup, SIGNAL(started()),information(), SLOT(disableGeoLookupEdition()));
connect(geoLookup, SIGNAL(finished()), information(), SLOT(enableGeoLookupEdition()));
#ifndef NO_PRINTING
// copy the bundled print templates to the user path
QStringList templateBackupList;

View file

@ -195,21 +195,6 @@ MainTab::MainTab(QWidget *parent) : QTabWidget(parent),
ui.cylinders->view()->horizontalHeader()->addAction(action);
}
ui.waitingSpinner->setRoundness(70.0);
ui.waitingSpinner->setMinimumTrailOpacity(15.0);
ui.waitingSpinner->setTrailFadePercentage(70.0);
ui.waitingSpinner->setNumberOfLines(8);
ui.waitingSpinner->setLineLength(5);
ui.waitingSpinner->setLineWidth(3);
ui.waitingSpinner->setInnerRadius(5);
ui.waitingSpinner->setRevolutionsPerSecond(1);
connect(ReverseGeoLookupThread::instance(), SIGNAL(finished()),
LocationInformationModel::instance(), SLOT(update()));
connect(ReverseGeoLookupThread::instance(), &QThread::finished,
this, &MainTab::setCurrentLocationIndex);
connect(ui.diveNotesMessage, &KMessageWidget::showAnimationFinished,
ui.location, &DiveLocationLineEdit::fixPopupPosition);
@ -245,16 +230,6 @@ void MainTab::setCurrentLocationIndex()
}
}
void MainTab::enableGeoLookupEdition()
{
ui.waitingSpinner->stop();
}
void MainTab::disableGeoLookupEdition()
{
ui.waitingSpinner->start();
}
void MainTab::toggleTriggeredColumn()
{
QAction *action = qobject_cast<QAction *>(sender());

View file

@ -98,8 +98,6 @@ slots:
void updateTextLabels(bool showUnits = true);
void escDetected(void);
void showLocation();
void enableGeoLookupEdition();
void disableGeoLookupEdition();
void setCurrentLocationIndex();
EditMode getEditMode() const;
private:

View file

@ -230,9 +230,6 @@
</property>
</widget>
</item>
<item>
<widget class="QtWaitingSpinner" name="waitingSpinner" native="true"/>
</item>
</layout>
</item>
<item>
@ -599,12 +596,6 @@
<extends>QPlainTextEdit</extends>
<header>desktop-widgets/tagwidget.h</header>
</customwidget>
<customwidget>
<class>QtWaitingSpinner</class>
<extends>QWidget</extends>
<header>desktop-widgets/qtwaitingspinner.h</header>
<container>1</container>
</customwidget>
<customwidget>
<class>DiveLocationLineEdit</class>
<extends>QLineEdit</extends>