mirror of
https://github.com/subsurface/subsurface.git
synced 2024-11-28 05:00:20 +00:00
ff9506b21b
Since process_imported_dives() can add dives to a newly generated trip, this need not be done in the downloading code. This makes data flow distinctly simpler, as no trip table and no add-new-trip flag has to be passed down to the libdivecomputer glue code. Moreover, since now the trip creation is done at the import step rather than the download step, the latest status of the "add to new trip" checkbox will be considered. Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
96 lines
2.4 KiB
C++
96 lines
2.4 KiB
C++
#ifndef DOWNLOADFROMDCTHREAD_H
|
|
#define DOWNLOADFROMDCTHREAD_H
|
|
|
|
#include <QThread>
|
|
#include <QMap>
|
|
#include <QHash>
|
|
#include <QLoggingCategory>
|
|
|
|
#include "dive.h"
|
|
#include "libdivecomputer.h"
|
|
#include "connectionlistmodel.h"
|
|
#if BT_SUPPORT
|
|
#include "core/btdiscovery.h"
|
|
#endif
|
|
/* Helper object for access of Device Data in QML */
|
|
class DCDeviceData {
|
|
public:
|
|
DCDeviceData();
|
|
static DCDeviceData *instance();
|
|
|
|
QString vendor() const;
|
|
QString product() const;
|
|
QString devName() const;
|
|
bool bluetoothMode() const;
|
|
bool saveDump() const;
|
|
QString devBluetoothName() const;
|
|
QString descriptor() const;
|
|
bool forceDownload() const;
|
|
bool saveLog() const;
|
|
int deviceId() const;
|
|
int diveId() const;
|
|
|
|
/* this needs to be a pointer to make the C-API happy */
|
|
device_data_t* internalData();
|
|
|
|
QStringList getProductListFromVendor(const QString& vendor);
|
|
int getMatchingAddress(const QString &vendor, const QString &product);
|
|
|
|
int getDetectedVendorIndex();
|
|
int getDetectedProductIndex(const QString ¤tVendorText);
|
|
|
|
void setDeviceId(int deviceId);
|
|
void setDiveId(int diveId);
|
|
void setVendor(const QString& vendor);
|
|
void setProduct(const QString& product);
|
|
void setDevName(const QString& devName);
|
|
void setDevBluetoothName(const QString& devBluetoothName);
|
|
void setBluetoothMode(bool mode);
|
|
void setForceDownload(bool force);
|
|
void setSaveDump(bool dumpMode);
|
|
void setSaveLog(bool saveLog);
|
|
private:
|
|
device_data_t data;
|
|
|
|
// Bluetooth name is managed outside of libdivecomputer
|
|
QString m_devBluetoothName;
|
|
};
|
|
|
|
class DownloadThread : public QThread {
|
|
Q_OBJECT
|
|
Q_PROPERTY(dive_table_t *table READ table CONSTANT)
|
|
|
|
public:
|
|
DownloadThread();
|
|
void run() override;
|
|
|
|
DCDeviceData *data();
|
|
struct dive_table *table();
|
|
QString error;
|
|
|
|
private:
|
|
struct dive_table downloadTable;
|
|
struct trip_table tripTable;
|
|
DCDeviceData *m_data;
|
|
};
|
|
|
|
//TODO: C++ify descriptor?
|
|
struct mydescriptor {
|
|
const char *vendor;
|
|
const char *product;
|
|
dc_family_t type;
|
|
unsigned int model;
|
|
unsigned int transports;
|
|
};
|
|
|
|
/* This fills the vendor list QStringList and related members.
|
|
* this code needs to be reworked to be less ugly, but it will
|
|
* stay like this for now.
|
|
*/
|
|
void fill_computer_list();
|
|
void show_computer_list();
|
|
extern QStringList vendorList;
|
|
extern QHash<QString, QStringList> productList;
|
|
extern QMap<QString, dc_descriptor_t *> descriptorLookup;
|
|
extern ConnectionListModel connectionListModel;
|
|
#endif
|