[prev in list] [next in list] [prev in thread] [next in thread]
List: kde-commits
Subject: [libkvkontakte] libkvkontakte: Add and use UploadPhotosJob::getMaxRequestFilesCount()
From: Alexander Potashev <aspotashev () gmail ! com>
Date: 2012-06-30 20:52:40
Message-ID: 20120630205240.D86E7A60A6 () git ! kde ! org
[Download RAW message or body]
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/04b031fd5cf5c9ddf84c0990590181a02182551f
diff --git a/libkvkontakte/uploadphotosjob.cpp b/libkvkontakte/uploadphotosjob.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 = job->uploadUrl();
int totalCount = d->files.size();
- for (int offset = 0; offset < totalCount; offset += REQUEST_FILES_COUNT)
- startPostJob(offset, qMin(REQUEST_FILES_COUNT, totalCount - offset));
+ int requestFilesCount = getMaxRequestFilesCount();
+ for (int offset = 0; offset < totalCount; offset += requestFilesCount)
+ startPostJob(offset, qMin(requestFilesCount, totalCount - offset));
// All subjobs have finished
if (m_jobs.size() == 0)
@@ -161,6 +167,9 @@ void UploadPhotosJob::startSaveJob(const QVariantMap &photoIdData)
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 = dynamic_cast<SavePhotoJob *>(kjob);
Q_ASSERT(job);
m_jobs.removeAll(job);
diff --git a/libkvkontakte/uploadphotosjob.h b/libkvkontakte/uploadphotosjob.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);
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic