[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