diff options
author | Tomaz Canabrava <tcanabrava@kde.org> | 2017-04-18 19:14:03 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2017-05-27 07:53:14 -0700 |
commit | dec47e11cd3aa1f4c6333a69c72df4c4d5e0628f (patch) | |
tree | c92b83e5818918c92cf0e39e248869e82d666c65 /core/downloadfromdcthread.cpp | |
parent | 3c3f91dcb2964180f5ced838a06db35021dde0f1 (diff) | |
download | subsurface-dec47e11cd3aa1f4c6333a69c72df4c4d5e0628f.tar.gz |
Separate the download thread from the widget logic
This is important to not duplicate code for the Qml
view. Now the DownloadFromDiveComputer widget is mostly
free from important code (that has been upgraded to the
core folder), and I can start coding the QML interface.
There are still a few functions on the desktop widget
that will die so I can call them via the QML code later.
I also touched the location of a few globals (please, let's
stop using those) - because it was declared on the
desktop code and being used in the core.
Signed-off-by: Tomaz Canabrava <tcanabrava@kde.org>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
Diffstat (limited to 'core/downloadfromdcthread.cpp')
-rw-r--r-- | core/downloadfromdcthread.cpp | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/core/downloadfromdcthread.cpp b/core/downloadfromdcthread.cpp new file mode 100644 index 000000000..dc13a23d7 --- /dev/null +++ b/core/downloadfromdcthread.cpp @@ -0,0 +1,36 @@ +#include "downloadfromdcthread.h" +#include "core/libdivecomputer.h" + +static QString str_error(const char *fmt, ...) +{ + va_list args; + va_start(args, fmt); + const QString str = QString().vsprintf(fmt, args); + va_end(args); + + return str; +} + +DownloadThread::DownloadThread(QObject *parent, device_data_t *data) : QThread(parent), + data(data) +{ + data->download_table = nullptr; +} + +void DownloadThread::setDiveTable(struct dive_table* table) +{ + data->download_table = table; +} + +void DownloadThread::run() +{ + Q_ASSERT(data->download_table != nullptr); + const char *errorText; + import_thread_cancelled = false; + if (!strcmp(data->vendor, "Uemis")) + errorText = do_uemis_import(data); + else + errorText = do_libdivecomputer_import(data); + if (errorText) + error = str_error(errorText, data->devname, data->vendor, data->product); +} |