From kde-commits Sat Jun 30 20:52:40 2012 From: Alexander Potashev Date: Sat, 30 Jun 2012 20:52:40 +0000 To: kde-commits Subject: [libkvkontakte] libkvkontakte: PhotoPostJob: Support uploading either to Albums or to Wall or to Pro Message-Id: <20120630205240.DDE3DA60C6 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=134108979024939 Git commit 0f88b85d972c617c0f020be1ea5d35f0e2d93bfa by Alexander Potashev. Committed on 30/06/2012 at 20:25. Pushed by aspotashev into branch 'master'. PhotoPostJob: Support uploading either to Albums or to Wall or to Profile PhotoPostJob: uploads files; form item names depend on "dest": * -> Album -> "file1-file5" <- {"server": '1', "photos_list": '2,3,4', "aid": '5', "hash": '12345abcde'} * -> Profile -> "photo" <- {"server": '1', "photos": '1', "hash": '12345abcde'} * -> Wall -> "photo" <- {"server": "4753", "photo": "2041c53171:w|402x600^200^299", "hash": "76a= 17dce73ccb6edf9d7382c7787d53a"} * -> Private Message [TBD] -> "photo" <- {"server": "10432", "photo": "5f3d5830a9:z|402x600^200^299", "hash": "26= 1bc1e21ebe02e43d22365c96f9b321"} M +24 -8 libkvkontakte/photopostjob.cpp M +3 -1 libkvkontakte/photopostjob.h M +4 -1 libkvkontakte/uploadphotosjob.cpp http://commits.kde.org/libkvkontakte/0f88b85d972c617c0f020be1ea5d35f0e2d93b= fa diff --git a/libkvkontakte/photopostjob.cpp b/libkvkontakte/photopostjob.cpp index 94271bd..cad27ce 100644 --- a/libkvkontakte/photopostjob.cpp +++ b/libkvkontakte/photopostjob.cpp @@ -27,10 +27,12 @@ namespace Vkontakte { = -PhotoPostJob::PhotoPostJob(const QString &url, const QStringList &files) - : m_url(url) - , m_files(files) +PhotoPostJob::PhotoPostJob(Vkontakte::UploadPhotosJob::Dest dest, const QS= tring &url, const QStringList &files) { + m_url =3D url; + m_files =3D files; + m_dest =3D dest; + setCapabilities(KJob::Killable); = m_ok =3D true; @@ -61,13 +63,27 @@ void PhotoPostJob::start() } = MPForm form; - // file1 .. file5 - for (int i =3D 0; i < m_files.size(); i ++) - if (!form.addFile(QString("file%1").arg(i + 1), m_files[i])) - { + switch (m_dest) + { + case Vkontakte::UploadPhotosJob::DEST_ALBUM: + // "file1" .. "file5" + for (int i =3D 0; i < m_files.size(); i ++) + if (!form.addFile(QString("file%1").arg(i + 1), m_files[i]= )) + { + m_ok =3D false; + break; + } + break; + case Vkontakte::UploadPhotosJob::DEST_PROFILE: + case Vkontakte::UploadPhotosJob::DEST_WALL: + // "photo" + if (!form.addFile(QString("photo"), m_files[0])) + m_ok =3D false; + break; + default: m_ok =3D false; break; - } + } form.finish(); = if (!m_ok) diff --git a/libkvkontakte/photopostjob.h b/libkvkontakte/photopostjob.h index 0c1b464..ebb18fa 100644 --- a/libkvkontakte/photopostjob.h +++ b/libkvkontakte/photopostjob.h @@ -23,6 +23,7 @@ #include = #include "vkontaktejobs.h" +#include "uploadphotosjob.h" = namespace Vkontakte { @@ -35,7 +36,7 @@ class PhotoPostJob : public KJobWithSubjob Q_OBJECT public: // files.size <=3D 5 - PhotoPostJob(const QString &url, const QStringList &files); + PhotoPostJob(Vkontakte::UploadPhotosJob::Dest dest, const QString &url= , const QStringList &files); = virtual void start(); QVariantMap response() const; @@ -50,6 +51,7 @@ private Q_SLOTS: void jobFinished(KJob *kjob); = private: + UploadPhotosJob::Dest m_dest; QString m_url; QStringList m_files; bool m_ok; diff --git a/libkvkontakte/uploadphotosjob.cpp b/libkvkontakte/uploadphotos= job.cpp index 130aaa5..86a0d2f 100644 --- a/libkvkontakte/uploadphotosjob.cpp +++ b/libkvkontakte/uploadphotosjob.cpp @@ -38,6 +38,8 @@ public: int gid; bool saveBig; = + UploadPhotosJob::Dest dest; + QString uploadUrl; QList list; = @@ -56,6 +58,7 @@ UploadPhotosJob::UploadPhotosJob(const QString &accessTok= en, d->gid =3D gid; d->saveBig =3D saveBig; d->workingPostJobs =3D 0; + d->dest =3D Vkontakte::UploadPhotosJob::DEST_ALBUM; } = UploadPhotosJob::~UploadPhotosJob() @@ -112,7 +115,7 @@ bool UploadPhotosJob::mayStartPostJob() = void UploadPhotosJob::startPostJob(int offset, int count) { - PhotoPostJob *job =3D new PhotoPostJob(d->uploadUrl, d->files.mid(offs= et, count)); + PhotoPostJob *job =3D new PhotoPostJob(d->dest, d->uploadUrl, d->files= .mid(offset, count)); m_jobs.append(job); connect(job, SIGNAL(result(KJob*)), this, SLOT(postJobFinished(KJob*))= ); =