diff options
author | Tomaz Canabrava <tomaz.canabrava@intel.com> | 2014-12-28 21:43:38 -0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2014-12-29 09:06:55 -0800 |
commit | b84edad59766e5f59f6c3dcf5bb3a2ec24fc3eec (patch) | |
tree | 8d25cfc30bf81c244b9fe9b0b78d2d366790af7b | |
parent | ecd0f25c04652115477bb1d9fcd78fd7ecaba916 (diff) | |
download | subsurface-b84edad59766e5f59f6c3dcf5bb3a2ec24fc3eec.tar.gz |
Facebook integration: Add an interface to select the stuff that's sent
Generate the stub message that will go on the Facebook picture upload.
Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com>
Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
-rw-r--r-- | qt-ui/socialnetworks.cpp | 65 | ||||
-rw-r--r-- | qt-ui/socialnetworks.h | 16 | ||||
-rw-r--r-- | qt-ui/socialnetworksdialog.ui | 59 | ||||
-rw-r--r-- | subsurface.pro | 3 |
4 files changed, 113 insertions, 30 deletions
diff --git a/qt-ui/socialnetworks.cpp b/qt-ui/socialnetworks.cpp index b722c34c5..8d24b2269 100644 --- a/qt-ui/socialnetworks.cpp +++ b/qt-ui/socialnetworks.cpp @@ -18,6 +18,7 @@ #include "mainwindow.h" #include "profile/profilewidget2.h" #include "pref.h" +#include "ui_socialnetworksdialog.h" #define GET_TXT(name, field) \ v = s.value(QString(name)); \ @@ -191,13 +192,12 @@ void FacebookManager::setDesiredAlbumName(const QString& a) * and send erroniously *all* of them to facebook. */ void FacebookManager::sendDive() { - bool ok; - albumName = QInputDialog::getText(qApp->activeWindow(), tr("Enter Facebook Album"), - tr("Facebook Album:"), QLineEdit::Normal, - "Subsurface", &ok); - if (!ok) + SocialNetworkDialog dialog(qApp->activeWindow()); + if (dialog.exec() != QDialog::Accepted) return; + + setDesiredAlbumName(dialog.album()); requestAlbumId(); ProfileWidget2 *profile = MainWindow::instance()->graphics(); @@ -210,7 +210,7 @@ void FacebookManager::sendDive() QUrl url("https://graph.facebook.com/v2.2/" + QString(prefs.facebook.album_id) + "/photos?" + "&access_token=" + QString(prefs.facebook.access_token) + "&source=image" + - "&message=" + QString(d->notes).toHtmlEscaped()); + "&message=" + dialog.text()); QNetworkAccessManager *am = new QNetworkAccessManager(this); @@ -237,11 +237,60 @@ void FacebookManager::sendDive() connect(reply, SIGNAL(finished()), &loop, SLOT(quit())); loop.exec(); - QJsonDocument jsonDoc = QJsonDocument::fromJson(reply->readAll()); + QByteArray response = reply->readAll(); + QJsonDocument jsonDoc = QJsonDocument::fromJson(response); QJsonObject obj = jsonDoc.object(); if (obj.keys().contains("id")){ - QMessageBox:: + QMessageBox::information(qApp->activeWindow(), + tr("Photo Upload Sucessfull"), + tr("Your dive profile was updated to facebook."), + QMessageBox::Ok); } else { + QMessageBox::information(qApp->activeWindow(), + tr("Photo Upload Failed"), + tr("Your dive profile was not updated to facebook, \n " + "please send the following to the developer. \n" + + response), + QMessageBox::Ok); + } +} +SocialNetworkDialog::SocialNetworkDialog(QWidget *parent) : QDialog(parent) + , ui( new Ui::SocialnetworksDialog()) +{ + ui->setupUi(this); + connect(ui->date, SIGNAL(clicked()), this, SLOT(selectionChanged())); + connect(ui->Buddy, SIGNAL(clicked()), this, SLOT(selectionChanged())); + connect(ui->Divemaster, SIGNAL(clicked()), this, SLOT(selectionChanged())); + connect(ui->Location, SIGNAL(clicked()), this, SLOT(selectionChanged())); + connect(ui->Notes, SIGNAL(clicked()), this, SLOT(selectionChanged())); +} + +void SocialNetworkDialog::selectionChanged() { + struct dive *d = current_dive; + QString fullText; + if (ui->date->isChecked()) { + fullText += tr("Dive Date: %1 \n").arg(d->when); + } + if (ui->Buddy->isChecked()) { + fullText += tr("Buddy: %1 \n").arg(d->buddy); } + if (ui->Divemaster->isChecked()) { + fullText += tr("Divemaster: %1 \n").arg(d->divemaster); + } + if (ui->Location->isChecked()) { + fullText += tr("Dive Location: %1 \n").arg(d->location); + } + if (ui->Notes->isChecked()) { + fullText += tr("\n %1").arg(d->notes); + } + ui->text->setPlainText(fullText); +} + +QString SocialNetworkDialog::text() const { + return ui->text->toPlainText().toHtmlEscaped(); +} + +QString SocialNetworkDialog::album() const { + return ui->album->text().toHtmlEscaped(); } diff --git a/qt-ui/socialnetworks.h b/qt-ui/socialnetworks.h index 66a95f22a..1a5a2a0ba 100644 --- a/qt-ui/socialnetworks.h +++ b/qt-ui/socialnetworks.h @@ -3,6 +3,7 @@ #include <QObject> #include <QUrl> +#include <QDialog> class FacebookManager : public QObject { @@ -29,4 +30,19 @@ private: QString albumName; }; +namespace Ui { + class SocialnetworksDialog; +} + +class SocialNetworkDialog : public QDialog { + Q_OBJECT +public: + SocialNetworkDialog(QWidget *parent); + QString text() const; + QString album() const; +public slots: + void selectionChanged(); +private: + Ui::SocialnetworksDialog *ui; +}; #endif // FACEBOOKMANAGER_H diff --git a/qt-ui/socialnetworksdialog.ui b/qt-ui/socialnetworksdialog.ui index 2c7702293..1b88c1b1a 100644 --- a/qt-ui/socialnetworksdialog.ui +++ b/qt-ui/socialnetworksdialog.ui @@ -1,7 +1,7 @@ <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> - <class>Dialog</class> - <widget class="QDialog" name="Dialog"> + <class>SocialnetworksDialog</class> + <widget class="QDialog" name="SocialnetworksDialog"> <property name="geometry"> <rect> <x>0</x> @@ -14,45 +14,69 @@ <string>Dialog</string> </property> <layout class="QGridLayout" name="gridLayout"> - <item row="1" column="1" rowspan="7"> + <item row="2" column="0"> + <widget class="QLineEdit" name="album"/> + </item> + <item row="1" column="0"> + <widget class="QLabel" name="label_2"> + <property name="text"> + <string>Folder</string> + </property> + </widget> + </item> + <item row="1" column="1" rowspan="9"> <widget class="QPlainTextEdit" name="text"/> </item> - <item row="3" column="0"> + <item row="5" column="0"> <widget class="QCheckBox" name="time"> <property name="text"> <string>Time</string> </property> </widget> </item> - <item row="4" column="0"> + <item row="6" column="0"> <widget class="QCheckBox" name="Location"> <property name="text"> <string>Location</string> </property> </widget> </item> - <item row="5" column="0"> + <item row="7" column="0"> <widget class="QCheckBox" name="Divemaster"> <property name="text"> <string>Divemaster</string> </property> </widget> </item> - <item row="6" column="0"> + <item row="8" column="0"> <widget class="QCheckBox" name="Buddy"> <property name="text"> <string>Buddy</string> </property> </widget> </item> - <item row="7" column="0"> + <item row="4" column="0"> + <widget class="QCheckBox" name="date"> + <property name="text"> + <string>date</string> + </property> + </widget> + </item> + <item row="9" column="0"> <widget class="QCheckBox" name="Notes"> <property name="text"> <string>Notes</string> </property> </widget> </item> - <item row="8" column="0" colspan="2"> + <item row="0" column="0" colspan="2"> + <widget class="QLabel" name="label"> + <property name="text"> + <string>Preview Message</string> + </property> + </widget> + </item> + <item row="10" column="0" colspan="2"> <widget class="QDialogButtonBox" name="buttonBox"> <property name="orientation"> <enum>Qt::Horizontal</enum> @@ -62,17 +86,10 @@ </property> </widget> </item> - <item row="2" column="0"> - <widget class="QCheckBox" name="date"> - <property name="text"> - <string>date</string> - </property> - </widget> - </item> - <item row="0" column="0" colspan="2"> - <widget class="QLabel" name="label"> + <item row="3" column="0"> + <widget class="QLabel" name="label_3"> <property name="text"> - <string>Preview Message</string> + <string>Include</string> </property> </widget> </item> @@ -83,7 +100,7 @@ <connection> <sender>buttonBox</sender> <signal>accepted()</signal> - <receiver>Dialog</receiver> + <receiver>SocialnetworksDialog</receiver> <slot>accept()</slot> <hints> <hint type="sourcelabel"> @@ -99,7 +116,7 @@ <connection> <sender>buttonBox</sender> <signal>rejected()</signal> - <receiver>Dialog</receiver> + <receiver>SocialnetworksDialog</receiver> <slot>reject()</slot> <hints> <hint type="sourcelabel"> diff --git a/subsurface.pro b/subsurface.pro index 02a416e88..ec8b0fd51 100644 --- a/subsurface.pro +++ b/subsurface.pro @@ -237,7 +237,8 @@ FORMS = \ qt-ui/configuredivecomputerdialog.ui \ qt-ui/listfilter.ui \ qt-ui/diveshareexportdialog.ui \ - qt-ui/filterwidget.ui + qt-ui/filterwidget.ui \ + qt-ui/socialnetworksdialog.ui # Nether usermanual or printing is supported on android right now android: FORMS -= qt-ui/printoptions.ui |