Add infrastructure to emit progress from threads

Signed-off-by: Anton Lundin <glance@acc.umu.se>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
Anton Lundin 2015-01-20 22:40:51 +01:00 committed by Dirk Hohndel
parent ba525df766
commit 1d67bae745
2 changed files with 23 additions and 0 deletions

View file

@ -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)
{
}

View file

@ -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 {