[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [libkvkontakte] libkvkontakte: SavePhotoJob: Support saving either to Albums or to Wall or to Profil
From: Alexander Potashev <aspotashev () gmail ! com>
Date: 2012-06-30 20:52:40
Message-ID: 20120630205240.E6FBAA60CD () git ! kde ! org
[Download RAW message or body]
Git commit 0e025455fe2d50c87824838f48d9ad314da888a0 by Alexander Potashev.
Committed on 30/06/2012 at 22:53.
Pushed by aspotashev into branch 'master'.
SavePhotoJob: Support saving either to Albums or to Wall or to Profile
SavePhotoJob calls one of the following VK methods, depending on "dest":
* "photos.save"
* "photos.saveProfilePhoto"
* "photos.saveWallPhoto"
M +61 -11 libkvkontakte/savephotojob.cpp
M +4 -0 libkvkontakte/savephotojob.h
M +1 -1 libkvkontakte/uploadphotosjob.cpp
http://commits.kde.org/libkvkontakte/0e025455fe2d50c87824838f48d9ad314da888a0
diff --git a/libkvkontakte/savephotojob.cpp b/libkvkontakte/savephotojob.cpp
index 26d1cda..93c6691 100644
--- a/libkvkontakte/savephotojob.cpp
+++ b/libkvkontakte/savephotojob.cpp
@@ -24,17 +24,56 @@ namespace Vkontakte
{
SavePhotoJob::SavePhotoJob(const QString &accessToken,
+ UploadPhotosJob::Dest dest,
const QVariantMap &photoIdData, int gid)
- : VkontakteJob(accessToken, "photos.save", true)
+ : VkontakteJob(accessToken, getMethod(dest), true)
{
- addQueryItem("aid", photoIdData["aid"].toString());
- addQueryItem("server", photoIdData["server"].toString());
- addQueryItem("photos_list", photoIdData["photos_list"].toString());
- addQueryItem("hash", photoIdData["hash"].toString());
-
- // TODO: may be "gid" will also be in "photoIdData", so this argument is \
unnecessary?
- if (gid != -1)
- addQueryItem("gid", QString::number(gid));
+ m_dest = dest;
+
+ switch (dest)
+ {
+ case Vkontakte::UploadPhotosJob::DEST_ALBUM:
+ addQueryItem("aid", photoIdData["aid"].toString());
+ addQueryItem("server", photoIdData["server"].toString());
+ addQueryItem("photos_list", photoIdData["photos_list"].toString());
+ addQueryItem("hash", photoIdData["hash"].toString());
+
+ // TODO: may be "gid" will also be in "photoIdData", so this argument is \
unnecessary? + if (gid != -1)
+ addQueryItem("gid", QString::number(gid));
+ break;
+ case Vkontakte::UploadPhotosJob::DEST_PROFILE:
+ addQueryItem("server", photoIdData["server"].toString());
+ addQueryItem("photo", photoIdData["photos"].toString());
+ addQueryItem("hash", photoIdData["hash"].toString());
+ break;
+ case Vkontakte::UploadPhotosJob::DEST_WALL:
+ // TODO: support optional parameters "uid" and "gid" (for posting to \
other users' and groups' walls) + // TODO: for posting onto a wall, we \
must also call the "wall.post" VK method + addQueryItem("server", \
photoIdData["server"].toString()); + addQueryItem("photo", \
photoIdData["photo"].toString()); + addQueryItem("hash", \
photoIdData["hash"].toString()); + break;
+ default:
+ // TODO: handle unknown destination error
+ break;
+ }
+}
+
+// static
+QString SavePhotoJob::getMethod(Vkontakte::UploadPhotosJob::Dest dest)
+{
+ switch (dest)
+ {
+ case Vkontakte::UploadPhotosJob::DEST_ALBUM:
+ return QLatin1String("photos.save");
+ case Vkontakte::UploadPhotosJob::DEST_PROFILE:
+ return QLatin1String("photos.saveProfilePhoto");
+ case Vkontakte::UploadPhotosJob::DEST_WALL:
+ return QLatin1String("photos.saveWallPhoto");
+ default:
+ return QLatin1String("");
+ }
}
void SavePhotoJob::handleItem(const QVariant &data)
@@ -46,8 +85,19 @@ void SavePhotoJob::handleItem(const QVariant &data)
void SavePhotoJob::handleData(const QVariant &data)
{
- foreach(const QVariant &item, data.toList())
- handleItem(item);
+ switch (m_dest)
+ {
+ case Vkontakte::UploadPhotosJob::DEST_ALBUM:
+ foreach(const QVariant &item, data.toList())
+ handleItem(item);
+ break;
+ case Vkontakte::UploadPhotosJob::DEST_PROFILE:
+ case Vkontakte::UploadPhotosJob::DEST_WALL:
+ handleItem(data);
+ break;
+ default:
+ break;
+ }
}
QList<PhotoInfoPtr> SavePhotoJob::list() const
diff --git a/libkvkontakte/savephotojob.h b/libkvkontakte/savephotojob.h
index 79fe52e..219ebc0 100644
--- a/libkvkontakte/savephotojob.h
+++ b/libkvkontakte/savephotojob.h
@@ -23,6 +23,7 @@
#include "vkontaktejobs.h"
#include "photoinfo.h"
+#include "uploadphotosjob.h"
namespace Vkontakte
{
@@ -34,15 +35,18 @@ class SavePhotoJob : public VkontakteJob
{
public:
SavePhotoJob(const QString &accessToken,
+ UploadPhotosJob::Dest dest,
const QVariantMap &photoIdData, int gid = -1);
QList<PhotoInfoPtr> list() const;
protected:
+ QString getMethod(Vkontakte::UploadPhotosJob::Dest dest);
virtual void handleData(const QVariant &data);
void handleItem(const QVariant &data);
private:
+ UploadPhotosJob::Dest m_dest;
QList<PhotoInfoPtr> m_list;
};
diff --git a/libkvkontakte/uploadphotosjob.cpp b/libkvkontakte/uploadphotosjob.cpp
index d5d5a24..6b6bcf8 100644
--- a/libkvkontakte/uploadphotosjob.cpp
+++ b/libkvkontakte/uploadphotosjob.cpp
@@ -162,7 +162,7 @@ void UploadPhotosJob::postJobFinished(KJob *kjob)
void UploadPhotosJob::startSaveJob(const QVariantMap &photoIdData)
{
- SavePhotoJob *job = new SavePhotoJob(d->accessToken, photoIdData);
+ SavePhotoJob *job = new SavePhotoJob(d->accessToken, d->dest, photoIdData);
m_jobs.append(job);
connect(job, SIGNAL(result(KJob*)), this, SLOT(saveJobFinished(KJob*)));
job->start();
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic