subsurface/desktop-widgets/subsurfacewebservices.h
Berthold Stoeger dd8e4fae2a Make handling of booleans consistent on the C++-side of preferences
In general, the C++-side of the preferences code consistently uses
the bool data type for boolean settings. There are five exceptions,
which use short instead:
  showPo2
  showPn2
  showPhe
  saveUserIdLocal
  displayInvalidDives
This patch attempts to make the code more consistent by turning
these into bools as well.

Tests showed that writing as short and reading as bool is handled
gracefully by the Qt variant code. Therefore, an upgrade should not
cause user-visible changes to their settings.

As a bonus, two extern declarations of the set_save_userid_local()
function, which is not defined anywhere, were removed.

Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
2017-11-20 20:56:13 +01:00

121 lines
3 KiB
C++

// SPDX-License-Identifier: GPL-2.0
#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();
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) { Q_UNUSED(button) }
};
#ifdef __cplusplus
extern "C" {
#endif
extern void set_userid(char *user_id);
#ifdef __cplusplus
}
#endif
#endif // SUBSURFACEWEBSERVICES_H