summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--desktop-widgets/mainwindow.cpp7
-rw-r--r--desktop-widgets/mainwindow.h1
-rw-r--r--desktop-widgets/subsurfacewebservices.cpp223
-rw-r--r--desktop-widgets/subsurfacewebservices.h20
4 files changed, 2 insertions, 249 deletions
diff --git a/desktop-widgets/mainwindow.cpp b/desktop-widgets/mainwindow.cpp
index ea5f31556..0623af50b 100644
--- a/desktop-widgets/mainwindow.cpp
+++ b/desktop-widgets/mainwindow.cpp
@@ -844,13 +844,6 @@ void MainWindow::on_actionDownloadDC_triggered()
dlg.exec();
}
-void MainWindow::on_actionDownloadWeb_triggered()
-{
- SubsurfaceWebServices dlg(this);
-
- dlg.exec();
-}
-
void MainWindow::on_actionDivelogs_de_triggered()
{
DivelogsDeWebServices::instance()->downloadDives();
diff --git a/desktop-widgets/mainwindow.h b/desktop-widgets/mainwindow.h
index 06365a8e6..6338c5e5b 100644
--- a/desktop-widgets/mainwindow.h
+++ b/desktop-widgets/mainwindow.h
@@ -109,7 +109,6 @@ slots:
/* log menu actions */
void on_actionDownloadDC_triggered();
- void on_actionDownloadWeb_triggered();
void on_actionDivelogs_de_triggered();
void on_actionEditDeviceNames_triggered();
void on_actionAddDive_triggered();
diff --git a/desktop-widgets/subsurfacewebservices.cpp b/desktop-widgets/subsurfacewebservices.cpp
index 4d795237c..1f35be6c0 100644
--- a/desktop-widgets/subsurfacewebservices.cpp
+++ b/desktop-widgets/subsurfacewebservices.cpp
@@ -33,6 +33,7 @@
#define PATH_MAX 4096
#endif
+#ifdef RM_OBSOLETE_CODE
struct dive_table gps_location_table;
// we don't overwrite any existing GPS info in the dive
@@ -146,6 +147,7 @@ static bool merge_locations_into_dives(void)
}
return changed > 0;
}
+#endif
// TODO: This looks like should be ported to C code. or a big part of it.
bool DivelogsDeWebServices::prepare_dives_for_divelogs(const QString &tempfile, const bool selected)
@@ -374,227 +376,6 @@ void WebServices::resetState()
ui.buttonBox->button(QDialogButtonBox::Apply)->setText(defaultApplyText);
}
-// #
-// #
-// # Subsurface Web Service Implementation.
-// #
-// #
-
-SubsurfaceWebServices::SubsurfaceWebServices(QWidget *parent, Qt::WindowFlags f) : WebServices(parent, f)
-{
- // figure out if we know (or can determine) the user's web service userid
- QString userid(prefs.userid);
-
- if (userid.isEmpty() &&
- !empty_string(prefs.cloud_storage_email) &&
- !empty_string(prefs.cloud_storage_password) &&
- GpsLocation::hasInstance())
- userid = GpsLocation::instance()->getUserid(prefs.cloud_storage_email, prefs.cloud_storage_password);
-
- ui.userID->setText(userid);
-
- hidePassword();
- hideUpload();
- ui.progressBar->setFormat(tr("Enter User ID and click Download"));
- ui.progressBar->setRange(0, 1);
- ui.progressBar->setValue(-1);
- ui.progressBar->setAlignment(Qt::AlignCenter);
- ui.saveUidLocal->setChecked(prefs.save_userid_local);
- QShortcut *close = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_W), this);
- connect(close, SIGNAL(activated()), this, SLOT(close()));
- QShortcut *quit = new QShortcut(QKeySequence(Qt::CTRL + Qt::Key_Q), this);
- connect(quit, SIGNAL(activated()), parent, SLOT(close()));
-}
-
-void SubsurfaceWebServices::buttonClicked(QAbstractButton *button)
-{
- ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
- switch (ui.buttonBox->buttonRole(button)) {
- case QDialogButtonBox::ApplyRole: {
- int i;
- struct dive *d;
- struct dive_site *ds;
- bool changed = false;
- clear_table(&gps_location_table);
- QByteArray url = tr("Webservice").toUtf8();
- parse_xml_buffer(url.data(), downloadedData.data(), downloadedData.length(), &gps_location_table, NULL);
- // make sure we mark all the dive sites that were created
- for (i = 0; i < gps_location_table.nr; i++) {
- d = get_dive_from_table(i, &gps_location_table);
- ds = get_dive_site_by_uuid(d->dive_site_uuid);
- if (ds)
- ds->notes = strdup("SubsurfaceWebservice");
- }
- /* now merge the data in the gps_location table into the dive_table */
- if (merge_locations_into_dives()) {
- changed = true;
- mark_divelist_changed(true);
- MainWindow::instance()->information()->updateDiveInfo();
- }
-
- /* store last entered uid in config */
- QSettings s;
- QString qDialogUid = ui.userID->text().toUpper();
- bool qSaveUid = ui.saveUidLocal->checkState();
- qPrefCloudStorage::instance()->set_save_userid_local(qSaveUid);
-
- //WARN: Dirk, this seems to be wrong, I coundn't really understand the code.
- if (qSaveUid) {
- QString qSettingUid = s.value("subsurface_webservice_uid").toString();
- QString qFileUid = QString(prefs.userid);
- bool s_eq_d = (qSettingUid == qDialogUid);
- bool d_eq_f = (qDialogUid == qFileUid);
- if (!d_eq_f || s_eq_d)
- s.setValue("subsurface_webservice_uid", qDialogUid);
- set_userid(qPrintable(qDialogUid));
- }
- s.sync();
- hide();
- close();
- resetState();
- /* and now clean up and remove all the extra dive sites that were created */
- QSet<uint32_t> usedUuids;
- for_each_dive(i, d) {
- if (d->dive_site_uuid)
- usedUuids.insert(d->dive_site_uuid);
- }
- for_each_dive_site(i, ds) {
- if (!usedUuids.contains(ds->uuid) && same_string(ds->notes, "SubsurfaceWebservice")) {
- delete_dive_site(ds->uuid);
- i--; // otherwise we skip one site
- }
- }
- // finally now that all the extra GPS fixes that weren't used have been deleted
- // we can update the map
- if (changed) {
- MapWidget::instance()->repopulateLabels();
- MapWidget::instance()->centerOnDiveSite(get_dive_site_by_uuid(current_dive->dive_site_uuid));
- }
-
- } break;
- case QDialogButtonBox::RejectRole:
- if (reply != NULL && reply->isOpen()) {
- reply->abort();
- delete reply;
- reply = NULL;
- }
- resetState();
- break;
- case QDialogButtonBox::HelpRole:
- QDesktopServices::openUrl(QUrl("http://api.subsurface-divelog.org"));
- break;
- default:
- break;
- }
-}
-
-void SubsurfaceWebServices::startDownload()
-{
- QUrl url("http://api.subsurface-divelog.org/api/dive/get/");
- QUrlQuery query;
- query.addQueryItem("login", ui.userID->text().toUpper());
- url.setQuery(query);
-
- QNetworkRequest request;
- request.setUrl(url);
- request.setRawHeader("Accept", "text/xml");
- request.setRawHeader("User-Agent", userAgent.toUtf8());
- reply = manager()->get(request);
- ui.status->setText(tr("Connecting..."));
- ui.progressBar->setEnabled(true);
- ui.progressBar->setRange(0, 0); // this makes the progressbar do an 'infinite spin'
- ui.download->setEnabled(false);
- ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(false);
- connectSignalsForDownload(reply);
-}
-
-void SubsurfaceWebServices::downloadFinished()
-{
- if (!reply)
- return;
-
- ui.progressBar->setRange(0, 1);
- ui.progressBar->setValue(1);
- ui.progressBar->setFormat("%p%");
- downloadedData = reply->readAll();
-
- ui.download->setEnabled(true);
- ui.status->setText(tr("Download finished"));
-
- uint resultCode = download_dialog_parse_response(downloadedData);
- setStatusText(resultCode);
- if (resultCode == DD_STATUS_OK) {
- ui.buttonBox->button(QDialogButtonBox::Apply)->setEnabled(true);
- }
- reply->deleteLater();
- reply = NULL;
-}
-
-void SubsurfaceWebServices::downloadError(QNetworkReply::NetworkError)
-{
- resetState();
- ui.status->setText(tr("Download error: %1").arg(reply->errorString()));
- reply->deleteLater();
- reply = NULL;
-}
-
-void SubsurfaceWebServices::setStatusText(int status)
-{
- QString text;
- switch (status) {
- case DD_STATUS_ERROR_CONNECT:
- text = tr("Connection error: ");
- break;
- case DD_STATUS_ERROR_ID:
- text = tr("Invalid user identifier!");
- break;
- case DD_STATUS_ERROR_PARSE:
- text = tr("Cannot parse response!");
- break;
- case DD_STATUS_OK:
- text = tr("Download successful");
- break;
- }
- ui.status->setText(text);
-}
-
-//TODO: C-Code.
-/* requires that there is a <download> or <error> tag under the <root> tag */
-void SubsurfaceWebServices::download_dialog_traverse_xml(xmlNodePtr node, unsigned int *download_status)
-{
- xmlNodePtr cur_node;
- for (cur_node = node; cur_node; cur_node = cur_node->next) {
- if ((!strcmp((const char *)cur_node->name, (const char *)"download")) &&
- (!strcmp((const char *)xmlNodeGetContent(cur_node), (const char *)"ok"))) {
- *download_status = DD_STATUS_OK;
- return;
- } else if (!strcmp((const char *)cur_node->name, (const char *)"error")) {
- *download_status = DD_STATUS_ERROR_ID;
- return;
- }
- }
-}
-
-// TODO: C-Code
-unsigned int SubsurfaceWebServices::download_dialog_parse_response(const QByteArray &xml)
-{
- xmlNodePtr root;
- xmlDocPtr doc = xmlParseMemory(xml.data(), xml.length());
- unsigned int status = DD_STATUS_ERROR_PARSE;
-
- if (!doc)
- return DD_STATUS_ERROR_PARSE;
- root = xmlDocGetRootElement(doc);
- if (!root) {
- status = DD_STATUS_ERROR_PARSE;
- goto end;
- }
- if (root->children)
- download_dialog_traverse_xml(root->children, &status);
-end:
- xmlFreeDoc(doc);
- return status;
-}
// #
// #
diff --git a/desktop-widgets/subsurfacewebservices.h b/desktop-widgets/subsurfacewebservices.h
index 54b108013..ad68f08f3 100644
--- a/desktop-widgets/subsurfacewebservices.h
+++ b/desktop-widgets/subsurfacewebservices.h
@@ -45,26 +45,6 @@ protected:
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: