diff --git a/qt-ui/subsurfacewebservices.cpp b/qt-ui/subsurfacewebservices.cpp index 1babdaa8e..f545345d5 100644 --- a/qt-ui/subsurfacewebservices.cpp +++ b/qt-ui/subsurfacewebservices.cpp @@ -911,3 +911,16 @@ void DivelogsDeWebServices::buttonClicked(QAbstractButton *button) break; } } + +UserSurveyServices::UserSurveyServices(QWidget *parent, Qt::WindowFlags f) : WebServices(parent, f) +{ + +} + +void UserSurveyServices::sendSurvey(QString values) +{ + QNetworkRequest request; + request.setUrl(QString("http://subsurface.hohndel.org/survey?%1").arg(values)); + request.setRawHeader("Accept", "text/xml"); + reply = manager()->get(request); +} diff --git a/qt-ui/subsurfacewebservices.h b/qt-ui/subsurfacewebservices.h index b54da67c7..f2138ac6f 100644 --- a/qt-ui/subsurfacewebservices.h +++ b/qt-ui/subsurfacewebservices.h @@ -97,6 +97,20 @@ private: bool uploadMode; }; +class UserSurveyServices : public WebServices { + Q_OBJECT +public: + void 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) { } + +}; + #ifdef __cplusplus extern "C" { #endif diff --git a/qt-ui/usersurvey.cpp b/qt-ui/usersurvey.cpp index 10beb94ee..f08168ed3 100644 --- a/qt-ui/usersurvey.cpp +++ b/qt-ui/usersurvey.cpp @@ -6,9 +6,11 @@ #include "usersurvey.h" #include "ui_usersurvey.h" #include "ssrf-version.h" +#include "subsurfacewebservices.h" #include "helpers.h" #include "subsurfacesysinfo.h" + UserSurvey::UserSurvey(QWidget *parent) : QDialog(parent), ui(new Ui::UserSurvey) { @@ -19,10 +21,17 @@ UserSurvey::UserSurvey(QWidget *parent) : QDialog(parent), connect(quitKey, SIGNAL(activated()), parent, SLOT(close())); // fill in the system data - ui->system->append(tr("Subsurface %1").arg(VERSION_STRING)); - ui->system->append(tr("Operating System: %1").arg(SubsurfaceSysInfo::prettyOsName())); - ui->system->append(tr("CPU Architecture: %1").arg(SubsurfaceSysInfo::cpuArchitecture())); - ui->system->append(tr("Language: %1").arg(uiLanguage(NULL))); + QString sysInfo = QString("Subsurface %1").arg(VERSION_STRING); + os = QString("ssrfVers=%1").arg(VERSION_STRING); + sysInfo.append(tr("\nOperating System: %1").arg(SubsurfaceSysInfo::prettyOsName())); + os.append(QString("&prettyOsName=%1").arg(SubsurfaceSysInfo::prettyOsName())); + sysInfo.append(tr("\nCPU Architecture: %1").arg(SubsurfaceSysInfo::cpuArchitecture())); + os.append(QString("&cpuArch=%1").arg(SubsurfaceSysInfo::cpuArchitecture())); + sysInfo.append(tr("\nLanguage: %1").arg(uiLanguage(NULL))); + os.append(QString("&uiLang=%1").arg(uiLanguage(NULL))); + ui->system->setPlainText(sysInfo); + manager = SubsurfaceWebServices::manager(); + connect(manager, SIGNAL(finished(QNetworkReply *)), SLOT(requestReceived(QNetworkReply *))); } UserSurvey::~UserSurvey() @@ -30,12 +39,22 @@ UserSurvey::~UserSurvey() delete ui; } +#define ADD_OPTION(_name) values.append(ui->_name->isChecked() ? "&" #_name "=1" : "&" #_name "=0") + void UserSurvey::on_buttonBox_accepted() { // now we need to collect the data and submit it - QSettings s; - s.beginGroup("UserSurvey"); - s.setValue("SurveyDone", "submitted"); + QString values = os; + ADD_OPTION(recreational); + ADD_OPTION(tech); + ADD_OPTION(planning); + ADD_OPTION(download); + ADD_OPTION(divecomputer); + ADD_OPTION(manual); + ADD_OPTION(companion); + values.append(QString("&suggestion=%1").arg(ui->suggestions->toPlainText())); + UserSurveyServices uss(this); + uss.sendSurvey(values); hide(); } @@ -60,3 +79,39 @@ void UserSurvey::on_buttonBox_rejected() } hide(); } + +void UserSurvey::requestReceived(QNetworkReply *reply) +{ + QMessageBox msgbox; + QString msgTitle = tr("Submit User Survey."); + QString msgText = tr("