mirror of
https://github.com/subsurface/subsurface.git
synced 2025-02-19 22:16:15 +00:00
Create a Facebook album for Subsurface
We still need to do a lot of stuff on that part. Currently when asking for sending a profile, it will just create a private album. Signed-off-by: Tomaz Canabrava <tomaz.canabrava@intel.com> Signed-off-by: Dirk Hohndel <dirk@hohndel.org>
This commit is contained in:
parent
e49b4b72b7
commit
a76fdd8d54
5 changed files with 77 additions and 1 deletions
|
@ -824,6 +824,10 @@ void DiveListView::contextMenuEvent(QContextMenuEvent *event)
|
||||||
popup.addAction(tr("Shift times"), this, SLOT(shiftTimes()));
|
popup.addAction(tr("Shift times"), this, SLOT(shiftTimes()));
|
||||||
popup.addAction(tr("Load images"), this, SLOT(loadImages()));
|
popup.addAction(tr("Load images"), this, SLOT(loadImages()));
|
||||||
}
|
}
|
||||||
|
if (prefs.facebook.user_id) {
|
||||||
|
popup.addAction(tr("Publish on Facebook"), this, SLOT(publishFacebook()));
|
||||||
|
}
|
||||||
|
|
||||||
// "collapse all" really closes all trips,
|
// "collapse all" really closes all trips,
|
||||||
// "collapse" keeps the trip with the selected dive open
|
// "collapse" keeps the trip with the selected dive open
|
||||||
QAction *actionTaken = popup.exec(event->globalPos());
|
QAction *actionTaken = popup.exec(event->globalPos());
|
||||||
|
@ -836,6 +840,12 @@ void DiveListView::contextMenuEvent(QContextMenuEvent *event)
|
||||||
event->accept();
|
event->accept();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void DiveListView::publishFacebook()
|
||||||
|
{
|
||||||
|
FacebookManager manager;
|
||||||
|
manager.checkAlbumExists();
|
||||||
|
}
|
||||||
|
|
||||||
void DiveListView::shiftTimes()
|
void DiveListView::shiftTimes()
|
||||||
{
|
{
|
||||||
ShiftTimesDialog::instance()->show();
|
ShiftTimesDialog::instance()->show();
|
||||||
|
|
|
@ -51,6 +51,7 @@ slots:
|
||||||
void renumberDives();
|
void renumberDives();
|
||||||
void shiftTimes();
|
void shiftTimes();
|
||||||
void loadImages();
|
void loadImages();
|
||||||
|
void publishFacebook();
|
||||||
static QString lastUsedImageDir();
|
static QString lastUsedImageDir();
|
||||||
|
|
||||||
signals:
|
signals:
|
||||||
|
|
|
@ -18,7 +18,7 @@ static QString facebookConnectUrl =
|
||||||
"client_id=427722490709000"
|
"client_id=427722490709000"
|
||||||
"&redirect_uri=http://www.facebook.com/connect/login_success.html"
|
"&redirect_uri=http://www.facebook.com/connect/login_success.html"
|
||||||
"&response_type=token"
|
"&response_type=token"
|
||||||
"&scope=publish_actions";
|
"&scope=publish_actions,user_photos";
|
||||||
|
|
||||||
PreferencesDialog *PreferencesDialog::instance()
|
PreferencesDialog *PreferencesDialog::instance()
|
||||||
{
|
{
|
||||||
|
|
|
@ -11,6 +11,14 @@
|
||||||
#include <QSortFilterProxyModel>
|
#include <QSortFilterProxyModel>
|
||||||
#include <QToolButton>
|
#include <QToolButton>
|
||||||
#include <QToolBar>
|
#include <QToolBar>
|
||||||
|
#include <QUrlQuery>
|
||||||
|
#include <QJsonDocument>
|
||||||
|
#include <QJsonObject>
|
||||||
|
#include <QJsonArray>
|
||||||
|
#include <QJsonValue>
|
||||||
|
#include <QNetworkReply>
|
||||||
|
#include <QNetworkRequest>
|
||||||
|
#include <QNetworkAccessManager>
|
||||||
#include "exif.h"
|
#include "exif.h"
|
||||||
#include "dive.h"
|
#include "dive.h"
|
||||||
#include "file.h"
|
#include "file.h"
|
||||||
|
@ -653,3 +661,49 @@ void MultiFilter::closeFilter()
|
||||||
MultiFilterSortModel::instance()->clearFilter();
|
MultiFilterSortModel::instance()->clearFilter();
|
||||||
hide();
|
hide();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FacebookManager::FacebookManager()
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
bool FacebookManager::checkAlbumExists()
|
||||||
|
{
|
||||||
|
QUrl albumListUrl("https://graph.facebook.com/me/albums?access_token=" + QString(prefs.facebook.access_token));
|
||||||
|
QNetworkAccessManager *manager = new QNetworkAccessManager();
|
||||||
|
QNetworkReply *reply = manager->get(QNetworkRequest(albumListUrl));
|
||||||
|
|
||||||
|
// Make this method synchronous.
|
||||||
|
QEventLoop loop;
|
||||||
|
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
||||||
|
loop.exec();
|
||||||
|
|
||||||
|
QJsonDocument albumsDoc = QJsonDocument::fromJson(reply->readAll());
|
||||||
|
QJsonArray albumObj = albumsDoc.object().value("data").toArray();
|
||||||
|
foreach(const QJsonValue &v, albumObj){
|
||||||
|
QJsonObject obj = v.toObject();
|
||||||
|
if (obj.value("name").toString() == QString(prefs.facebook.album_name)) {
|
||||||
|
qDebug() << "Album already exists. Try to get the ID in the next commit.";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
qDebug() << "Album doesn't exists, let's create it.";
|
||||||
|
QUrlQuery params;
|
||||||
|
params.addQueryItem("name", prefs.facebook.album_name );
|
||||||
|
params.addQueryItem("description", "Subsurface Album");
|
||||||
|
params.addQueryItem("privacy", "{'value': 'SELF'}");
|
||||||
|
|
||||||
|
QNetworkRequest request(albumListUrl);
|
||||||
|
request.setHeader(QNetworkRequest::ContentTypeHeader, "application/octet-stream");
|
||||||
|
reply = manager->post(request, params.query().toLocal8Bit());
|
||||||
|
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
|
||||||
|
loop.exec();
|
||||||
|
|
||||||
|
qDebug() << reply->readAll();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void FacebookManager::createAlbum()
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
|
|
||||||
class MinMaxAvgWidgetPrivate;
|
class MinMaxAvgWidgetPrivate;
|
||||||
class QAbstractButton;
|
class QAbstractButton;
|
||||||
|
class QNetworkReply;
|
||||||
|
|
||||||
#include <QWidget>
|
#include <QWidget>
|
||||||
#include <QDialog>
|
#include <QDialog>
|
||||||
|
@ -18,6 +19,7 @@ class QAbstractButton;
|
||||||
#include "exif.h"
|
#include "exif.h"
|
||||||
#include <dive.h>
|
#include <dive.h>
|
||||||
|
|
||||||
|
|
||||||
class MinMaxAvgWidget : public QWidget {
|
class MinMaxAvgWidget : public QWidget {
|
||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
|
Q_PROPERTY(double minimum READ minimum WRITE setMinimum)
|
||||||
|
@ -212,6 +214,15 @@ private:
|
||||||
Ui::FilterWidget ui;
|
Ui::FilterWidget ui;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class FacebookManager : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
FacebookManager();
|
||||||
|
bool checkAlbumExists();
|
||||||
|
void createAlbum();
|
||||||
|
signals:
|
||||||
|
void requestFinished(const QString& result);
|
||||||
|
};
|
||||||
bool isGnome3Session();
|
bool isGnome3Session();
|
||||||
QImage grayImage(const QImage &coloredImg);
|
QImage grayImage(const QImage &coloredImg);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue