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: Add and use UploadPhotosJob::getMaxRequestFilesCount() Message-Id: <20120630205240.D86E7A60A6 () git ! kde ! org> X-MARC-Message: https://marc.info/?l=kde-commits&m=134108978924937 Git commit 04b031fd5cf5c9ddf84c0990590181a02182551f by Alexander Potashev. Committed on 30/06/2012 at 20:00. Pushed by aspotashev into branch 'master'. Add and use UploadPhotosJob::getMaxRequestFilesCount() In the future, this function will return the maximum number of files that can be uploaded at once into a particular storage section (albums, wall, profile, etc) on VK. For example, up to 5 photos can be uploaded into an album in one HTTP request, but only one photo per request when uploading to a user's "wall" or to user profile photos. M +11 -2 libkvkontakte/uploadphotosjob.cpp M +2 -0 libkvkontakte/uploadphotosjob.h http://commits.kde.org/libkvkontakte/04b031fd5cf5c9ddf84c0990590181a0218255= 1f diff --git a/libkvkontakte/uploadphotosjob.cpp b/libkvkontakte/uploadphotos= job.cpp index 4cd63a4..130aaa5 100644 --- a/libkvkontakte/uploadphotosjob.cpp +++ b/libkvkontakte/uploadphotosjob.cpp @@ -63,6 +63,11 @@ UploadPhotosJob::~UploadPhotosJob() delete d; } = +int UploadPhotosJob::getMaxRequestFilesCount() const +{ + return REQUEST_FILES_COUNT; +} + void UploadPhotosJob::start() { emit progress(0); @@ -91,8 +96,9 @@ void UploadPhotosJob::serverJobFinished(KJob *kjob) d->uploadUrl =3D job->uploadUrl(); = int totalCount =3D d->files.size(); - for (int offset =3D 0; offset < totalCount; offset +=3D REQUEST_FILES_= COUNT) - startPostJob(offset, qMin(REQUEST_FILES_COUNT, totalCount - offset= )); + int requestFilesCount =3D getMaxRequestFilesCount(); + for (int offset =3D 0; offset < totalCount; offset +=3D requestFilesCo= unt) + startPostJob(offset, qMin(requestFilesCount, totalCount - offset)); = // All subjobs have finished if (m_jobs.size() =3D=3D 0) @@ -161,6 +167,9 @@ void UploadPhotosJob::startSaveJob(const QVariantMap &p= hotoIdData) = void UploadPhotosJob::saveJobFinished(KJob *kjob) { + // TODO: Try to preserve the original order of photos. + // This task might be difficult when MAX_POST_JOBS > 1 + SavePhotoJob *job =3D dynamic_cast(kjob); Q_ASSERT(job); m_jobs.removeAll(job); diff --git a/libkvkontakte/uploadphotosjob.h b/libkvkontakte/uploadphotosjo= b.h index 7abc303..7b68671 100644 --- a/libkvkontakte/uploadphotosjob.h +++ b/libkvkontakte/uploadphotosjob.h @@ -49,6 +49,8 @@ protected: static const int MAX_POST_JOBS; static const int REQUEST_FILES_COUNT; = + int getMaxRequestFilesCount() const; + bool mayStartPostJob(); = void startPostJob(int offset, int count);