diff options
Diffstat (limited to 'desktop-widgets/subsurfacewebservices.h')
-rw-r--r-- | desktop-widgets/subsurfacewebservices.h | 142 |
1 files changed, 142 insertions, 0 deletions
diff --git a/desktop-widgets/subsurfacewebservices.h b/desktop-widgets/subsurfacewebservices.h new file mode 100644 index 000000000..2b454ebc7 --- /dev/null +++ b/desktop-widgets/subsurfacewebservices.h @@ -0,0 +1,142 @@ +#ifndef SUBSURFACEWEBSERVICES_H +#define SUBSURFACEWEBSERVICES_H + +#include <QDialog> +#include <QNetworkReply> +#include <QTemporaryFile> +#include <QTimer> +#include <libxml/tree.h> + +#include "ui_webservices.h" + +class QAbstractButton; +class QHttpMultiPart; + +class WebServices : public QDialog { + Q_OBJECT +public: + explicit WebServices(QWidget *parent = 0, Qt::WindowFlags f = 0); + void hidePassword(); + void hideUpload(); + void hideDownload(); + + static QNetworkAccessManager *manager(); + +private +slots: + virtual void startDownload() = 0; + virtual void startUpload() = 0; + virtual void buttonClicked(QAbstractButton *button) = 0; + virtual void downloadTimedOut(); + +protected +slots: + void updateProgress(qint64 current, qint64 total); + +protected: + void resetState(); + void connectSignalsForDownload(QNetworkReply *reply); + void connectSignalsForUpload(); + + Ui::WebServices ui; + QNetworkReply *reply; + QTimer timeout; + QByteArray downloadedData; + QString defaultApplyText; + QString userAgent; +}; + +class SubsurfaceWebServices : public WebServices { + Q_OBJECT +public: + explicit SubsurfaceWebServices(QWidget *parent = 0, Qt::WindowFlags f = 0); + +private +slots: + void startDownload(); + void buttonClicked(QAbstractButton *button); + void downloadFinished(); + void downloadError(QNetworkReply::NetworkError error); + void startUpload() + { + } /*no op*/ +private: + void setStatusText(int status); + void download_dialog_traverse_xml(xmlNodePtr node, unsigned int *download_status); + unsigned int download_dialog_parse_response(const QByteArray &length); +}; + +class DivelogsDeWebServices : public WebServices { + Q_OBJECT +public: + static DivelogsDeWebServices *instance(); + void downloadDives(); + void prepareDivesForUpload(bool selected); + +private +slots: + void startDownload(); + void buttonClicked(QAbstractButton *button); + void saveToZipFile(); + void listDownloadFinished(); + void downloadFinished(); + void uploadFinished(); + void downloadError(QNetworkReply::NetworkError error); + void uploadError(QNetworkReply::NetworkError error); + void startUpload(); + +private: + void uploadDives(QIODevice *dldContent); + explicit DivelogsDeWebServices(QWidget *parent = 0, Qt::WindowFlags f = 0); + void setStatusText(int status); + bool prepare_dives_for_divelogs(const QString &filename, bool selected); + void download_dialog_traverse_xml(xmlNodePtr node, unsigned int *download_status); + unsigned int download_dialog_parse_response(const QByteArray &length); + + QHttpMultiPart *multipart; + QTemporaryFile zipFile; + bool uploadMode; +}; + +class UserSurveyServices : public WebServices { + Q_OBJECT +public: + QNetworkReply* sendSurvey(QString values); + explicit UserSurveyServices(QWidget *parent = 0, Qt::WindowFlags f = 0); +private +slots: + // need to declare them as no ops or Qt4 is unhappy + virtual void startDownload() { } + virtual void startUpload() { } + virtual void buttonClicked(QAbstractButton *button) { } +}; + +class CloudStorageAuthenticate : public QObject { + Q_OBJECT +public: + QNetworkReply* backend(QString email, QString password, QString pin = "", QString newpasswd = ""); + explicit CloudStorageAuthenticate(QObject *parent); +signals: + void finishedAuthenticate(); + void passwordChangeSuccessful(); +private +slots: + void uploadError(QNetworkReply::NetworkError error); + void sslErrors(QList<QSslError> errorList); + void uploadFinished(); +private: + QNetworkReply *reply; + QString userAgent; + +}; + +#ifdef __cplusplus +extern "C" { +#endif +extern void set_save_userid_local(short value); +extern void set_userid(char *user_id); +#ifdef __cplusplus +} +#endif + +#endif // SUBSURFACEWEBSERVICES_H |