diff options
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); +} |