summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--configuredivecomputerthreads.cpp20
-rw-r--r--configuredivecomputerthreads.h3
2 files changed, 23 insertions, 0 deletions
diff --git a/configuredivecomputerthreads.cpp b/configuredivecomputerthreads.cpp
index b2dc8c87c..2e69e539d 100644
--- a/configuredivecomputerthreads.cpp
+++ b/configuredivecomputerthreads.cpp
@@ -1393,6 +1393,26 @@ DeviceThread::DeviceThread(QObject *parent, device_data_t *data) : QThread(paren
{
}
+void DeviceThread::progressCB(int percent)
+{
+ emit progress(percent);
+}
+
+void DeviceThread::event_cb(dc_device_t *device, dc_event_type_t event, const void *data, void *userdata)
+{
+ const dc_event_progress_t *progress = (dc_event_progress_t *) data;
+ DeviceThread *dt = static_cast<DeviceThread*>(userdata);
+
+ switch (event) {
+ case DC_EVENT_PROGRESS:
+ dt->progressCB(100.0 * (double)progress->current / (double)progress->maximum);
+ break;
+ default:
+ emit dt->error("Unexpected event recived");
+ break;
+ }
+}
+
ReadSettingsThread::ReadSettingsThread(QObject *parent, device_data_t *data) : DeviceThread(parent, data)
{
}
diff --git a/configuredivecomputerthreads.h b/configuredivecomputerthreads.h
index bc35caf5a..254d286ba 100644
--- a/configuredivecomputerthreads.h
+++ b/configuredivecomputerthreads.h
@@ -18,8 +18,11 @@ public:
signals:
void error(QString err);
void message(QString msg);
+ void progress(int value);
protected:
device_data_t *m_data;
+ void progressCB(int value);
+ static void event_cb(dc_device_t *device, dc_event_type_t event, const void *data, void *userdata);
};
class ReadSettingsThread : public DeviceThread {