Alexander Tkachev
45e83d06c2
CLOUD: Fix CloudIcon
...
It's not a Request again, but still it controls ConnMan's timer.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
cec93e2c03
CLOUD: Make CloudIcon switch ConnMan's timer off
...
CloudIcon is now a Request which is automatically added once first
Request is added to ConnMan. When icon decides it should disappear, it
gets FINISHED, so ConnMan would switch off the timer if it was the last
Request.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
135f7d09a8
CLOUD: Make CloudIcon pulsate, fade in and fade out
...
That required ConnMan's timer stopping. Would be fixed in the next
commit.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
de84701aea
GUI: Separate OSD message alpha from OSD surface
...
Now OSD is always drawn.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
4874fafb15
CLOUD: Fix CloudIcon
...
Now it loads the surface once.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
1b9987ddc9
GUI: Add getOSDFormat() and make OSD 32 bpp
2016-08-24 16:07:55 +06:00
Alexander Tkachev
b32c2be78d
CLOUD: Fix ConnectionManager a little
...
I didn't like how FINISHED Requests were waiting until the next
interateRequests() call to be removed when we could easily remove those
after they changed their state in their handle().
2016-08-24 16:07:55 +06:00
Alexander Tkachev
bcb2a5bd8d
CLOUD: Fix CloudIcon to use clearOSD()
...
Now only icon is shown.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
2a15b8b280
GUI: Add clearOSD() method
...
So one can erase everything from OSD and then blit something on it.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
9d186929e1
CLOUD: Add CloudIcon
...
To achieve smoother animation, ConnectionManager's timer now is 20 times
more frequent.
I'm encountering some strange libcurl.dll segfault problem when I close
the application while some Requests are active. It's not
CloudIcon-related, so it's more likely related to this 20 FPS timer.
This problem shows up only in Visual Studio for me.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
7ff1f91808
GUI: Add copyRectToOSD()
...
I was lazy to implement that in OpenGLGraphicsManager and I'm not sure
it's implemented correctly in SurfaceSdlGraphicsManager, but it works
for me.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
1c823b6c1d
CLOUD: Fix SavesSyncRequest
...
Now it would finish with error if spawned Request is nullptr.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
da3b7bd8d9
CLOUD: Add GoogleDriveStorage
...
It has its own GoogleDriveTokenRefresher and knows how to do info().
This commit also contains JSON int -> long long int fix and
CurlJsonRequest '\n' -> ' ' fix.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
b02b16ab98
CLOUD: Document ConnectionManager's onDeleteCallback
2016-08-24 16:07:55 +06:00
Alexander Tkachev
00d8d23236
CLOUD: Add mutexes in Storage
2016-08-24 16:07:55 +06:00
Alexander Tkachev
b3bf532211
CLOUD: Make CloudManager singleton
...
It's needed to ::destroy() it in main().
2016-08-24 16:07:55 +06:00
Alexander Tkachev
1f974a7a2a
CLOUD: Fix ConnectionManager's destructor
...
It now terminates active Requests.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
a66322408f
CLOUD: Implement Storage's isWorking()
...
It now keeps track of how many Requests are running.
To achieve that, we had to pass a callback to ConnectionManager, so each
Request has a callback paired with it. If that's one of Storage's
Requests, it has a callback, which would decrease a counter. When
Storage adds a Request, it also increases a counter and passes that
callback. Callback is called by ConnMan when Request is deleted.
isWorking() returns true if there is at least one Request running.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
4b3a8be0b9
CLOUD: Shorten Cloud API
...
touch() and isSyncing() are not needed.
remove() is not needed too, but it could be used in the future.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
06163cb8b9
CLOUD: Fix SavesSyncRequest to create saves folder
2016-08-24 16:07:55 +06:00
Alexander Tkachev
8cdde307f7
CLOUD: Add OneDriveCreateDirectoryRequest
2016-08-24 16:07:55 +06:00
Alexander Tkachev
4e7dec5500
CLOUD: Add DropboxCreateDirectoryRequest
...
Also add CloudManager::testFeature(), because syncSaves() now works fine
and I don't want to break it again and again with my testing requests.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
675e7a6ed1
CLOUD: Move download methods into Storage
...
DownloadRequest and FolderDownloadRequest are using other Storage's
methods. Thus, download() and downloadFolder() could be implemented in
base Storage class.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
ca85d4482a
CLOUD: Use uint64 in StorageInfo
...
There was a warning regarding 25 GB constant.
By the way, I'm not sure how to print uint64 (%llu is available in C99
only, and gcc produces a warning about that).
2016-08-24 16:07:55 +06:00
Alexander Tkachev
0d0033fb6a
CLOUD: Make syncSaves() common for all Storages
...
As it uses SavesSyncRequest and this request is using Storage's
upload(), download() and listDirectory(), there is no need to make
storage-dependent version of that request and so method could be
implemented in base Storage.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
13351a730d
CLOUD: Add OneDrive::info()
...
Unfortunately, OneDrive doesn't share quota information anymore because
of some reason. I had to get as much information as I could.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
3638c8348d
CLOUD: Make SavesSyncRequest work with OneDrive
...
It actually works fine, but small Storage::savesDirectoryPath() was
added, because Dropbox's directories must start with a slash, and
OneDrive's directories must not.
Saves sync tested and it works fine with OneDrive.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
b39f46788a
CLOUD: Add OneDriveUploadRequest
...
Doesn't support server's requested ranges yet.
Commit also adds some PUT-related code in NetworkReadStream and
CurlRequest.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
eb63b50b7f
CLOUD: Refactor Request
...
Added ErrorResponse and ErrorCallback. Each Request now has an
ErrorCallback, which should be called instead of usual callback in case
of failure.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
001b417f33
CLOUD: Fix OneDriveTokenRefresher
...
It was calling finish(), causing stack overflow.
Some minor changes are added also.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
af37ecca34
CLOUD: Make SavesSyncRequest work
...
It now actually read the "timestamps" file, loads and saves files as it
should, ignores Dropbox's "not_found" error.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
cc4512e50b
COMMON: Add SaveFileManager::openRawFile()
...
It's needed for the cloud saves upload/sync feature.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
aa987e5c52
CLOUD: Add ListDirectoryStatus struct
...
It contains flags to indicate whether Request was interrupted or failed,
so dependent Requests may see that list is incomplete.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
a19fc52c32
CLOUD: Make DropboxUploadRequest use "/upload" too
...
If file could be uploaded in one API call, no need to create a session
(which requires at least two calls: to start and then to finish it).
2016-08-24 16:07:55 +06:00
Alexander Tkachev
b9e3730ccd
CLOUD: Add UploadStatus struct
...
It contains not just "success" flag, but also "file" struct, so the
caller can find out some information about uploaded file - like
timestamp.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
d917592099
CLOUD: Add DropboxUploadRequest
2016-08-24 16:07:55 +06:00
Alexander Tkachev
c235aa29f9
CLOUD: Add SavesSyncRequest sketch
...
Never tested it, actually. It requires Storage to implement upload()
method and me to find some way to get saves' ReadStream.
The saveTimestamps() and loadTimestamps() part should be tested, other
parts should work fine.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
1747f8ec42
CLOUD: Add "device_id" into configuration file
2016-08-24 16:07:55 +06:00
Peter Bozsó
86d5b1b2e1
Remove some unnecessary blank lines
2016-08-24 16:07:55 +06:00
Peter Bozsó
81c34adaef
Fix comment formatting
2016-08-24 16:07:55 +06:00
Peter Bozsó
f4dfaed19d
Replace 0 constant with nullptr in getCurrentStorage()
2016-08-24 16:07:55 +06:00
Alexander Tkachev
6f35fc4272
CLOUD: Add OneDriveStorage::downloadFolder()
...
Just uses FolderDownloadRequest the way DropboxStorage does.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
b74d7a6861
CLOUD: Fix Requests destructors
...
I forgot to delete callbacks!
2016-08-24 16:07:55 +06:00
Alexander Tkachev
827c7e43da
CLOUD: Add OneDriveListDirectoryRequest
...
Works as charm.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
14d60e62f8
CLOUD: Fix format string warnings
...
I get 'warning: ISO C++98 does not support the '%lg' ms_printf format'
warning though.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
8aa87815a6
CLOUD: Fix "global destructor" warning
...
Plain char * is used instead of Common::String in DropboxStorage and
OneDriveStorage's KEY and SECRET.
2016-08-24 16:07:55 +06:00
Alexander Tkachev
1dfa73b8f8
CLOUD: Fix ConnectionManager singleton warning
2016-08-24 16:07:55 +06:00
Alexander Tkachev
0ef1cda172
CLOUD: Add FolderDownloadRequest
...
Uses Storage's listDirectory() and download() methods to download
contents.
2016-08-24 16:07:55 +06:00
Eugene Sandulenko
cdf30e9d58
CLOUD: Fix posix backend compilation
2016-08-24 16:07:55 +06:00
Alexander Tkachev
6c01edc57a
CLOUD: Simplify OneDriveTokenRefresher
...
It now just extends CurlJsonRequest, not wraps one.
2016-08-24 16:07:55 +06:00