aboutsummaryrefslogtreecommitdiff
path: root/backends
AgeCommit message (Collapse)Author
2016-08-24CLOUD: Update CloudManager and StorageAlexander Tkachev
* Storage::name(); * CloudManager::getStorageName(); * CloudManager::getStorageIndex(); * CloudManager::listStorages(); * CloudManager::switchStorage().
2016-08-24CLOUD: Minor GoogleDriveUploadRequest fixAlexander Tkachev
Just checked that out on cloud sync: Google Drive is officially supported!
2016-08-24CLOUD: Add GoogleDriveUploadRequestAlexander Tkachev
Includes NetworkReadStream PATCH method and Headers remembering feature.
2016-08-24CLOUD: Add GoogleDrive download-related requestsAlexander Tkachev
GoogleDriveDownloadRequest, which resolves file id and then downloads it with GoogleDriveStorage::downloadById(). GoogleDriveStreamFileRequest, which resolves file id and then returns file stream with GoogleDriveStorage::streamFileById(). This commit also adds GoogleDriveStorage::streamFileById() itself. A minor GoogleDriveResolveIdRequest fix added. With these one can download files from Google Drive.
2016-08-24CLOUD: Update downloading in StoragesAlexander Tkachev
Id should be used everywhere.
2016-08-24CLOUD: Update Requests to use StorageFile::id()Alexander Tkachev
Only two places to update, as others still require id resolving.
2016-08-24CLOUD: Update GoogleDriveStorage and StorageFileAlexander Tkachev
Because of the Google Drive StorageFile now contains yet another field, `id`. For other storages `id` == `path`, and thus all common Requests (such as SavesSyncRequest, DownloadFolderRequest, etc) must be using id() instead of path(). That way these Requests won't cause id resolving which could be quite slow (when you call it for all files in the folder, for example).
2016-08-24CLOUD: Fix DefaultSaveFileManager againAlexander Tkachev
Now openForLoading() and openForSaving() check whether file is locked, so AGOS and SCUMM engines Ctrl+number and Alt+number hot keys shouldn't be able to save/load in these slots during saves sync.
2016-08-24CLOUD: Update GoogleDriveCreateDirectoryRequestAlexander Tkachev
Now it also creates the "base" ScummVM directory if there is no such directory yet. This way SavesSyncRequest works fine when no "ScummVM" or "ScummVM/Saves" folder exist in the Google Drive.
2016-08-24CLOUD: Make GoogleDriveResolveIdRequest case-insensitiveAlexander Tkachev
2016-08-24CLOUD: Fix ConnectionManagerAlexander Tkachev
It now keeps newly added Requests in separate array, so iterators don't break when one adds a Request while ConnMan iterates its array. The array is also shielded with mutex.
2016-08-24CLOUD: Fix GoogleDriveStorage to work with root folderAlexander Tkachev
Now it needs another scope and uses "root" instead of "appDataFolder".
2016-08-24CLOUD: Add GoogleDriveListDirectoryRequestAlexander Tkachev
When listing directories, you get a list of StorageFiles, which path() is actually Google Drive id. Thus, if you list a directory recursively, you won't be able to determine whether all files are within one directory or have some hierarchy. I'd fix that as soon as it would be needed.
2016-08-24CLOUD: Add GoogleDriveCreateDirectoryAlexander Tkachev
Now we can create directories in Google Drive by path, not parent id + directory name!
2016-08-24CLOUD: Add GoogleDriveResolveIdRequestAlexander Tkachev
GoogleDriveResolveIdRequest gets a lowercase path and searches for the specified file's id. To do that it lists path's subdirectories one by one with GoogleDriveListDirectoryByIdRequest. GoogleDriveListDirectoryByIdRequest gets a Google Drive id and lists that directory (not recursively).
2016-08-24CLOUD: Minor fixesAlexander Tkachev
2016-08-24GUI: Show "locked" saves during syncAlexander Tkachev
2016-08-24CLOUD: Add SaveLoadCloudSyncProgress enumAlexander Tkachev
It's common for Save/Load dialogs and SavesSyncRequest.
2016-08-24CLOUD: Make DefaultSaveFileManager ignore syncing filesAlexander Tkachev
MetaEngines don't get "locked" files in the list, so won't try to open these. Save/Load dialog updates save list every time SavesSyncRequest tells it to.
2016-08-24CLOUD: Make ProgressDialog display downloading progressAlexander Tkachev
2016-08-24GUI: Add SaveLoadCloudSyncProgressDialogAlexander Tkachev
It's shown by SaveLoadChooserDialog when files are downloaded and some save slots are locked. One can hide that dialog to interact with non-locked slots or cancel saves sync completely. Dialog's label shows current sync progress. Dialog automatically hides itself when all files are downloaded. WARNING: right now that results in a crash!
2016-08-24CLOUD: Make Save/Load dialog start saves syncAlexander Tkachev
It also shows a "sync disabled" icon in case it has a savepath override.
2016-08-24CLOUD: Update syncSaves() to return SavesSyncRequest *Alexander Tkachev
So other classes could use that information without casting.
2016-08-24CLOUD: Add new CloudManager shortcutsAlexander Tkachev
CloudIcon can easily use CloudMan.isWorking()
2016-08-24GUI: Fix copyRectOnOSD()Alexander Tkachev
Now it doesn't require full redraw, but asks to redraw the area which is copied to.
2016-08-24CLOUD: Fix SavesSyncRequest to return right filesAlexander Tkachev
Files we need are files to be downloaded, because that's what blocks us from reading/writing in those.
2016-08-24CLOUD: Extend Storage & SavesSyncRequestAlexander Tkachev
Now one can learn whether SavesSyncRequest is running, its progress and which files are being synced.
2016-08-24CLOUD: Add new cloudicon.pngAlexander Tkachev
2016-08-24CLOUD: Document CloudIcon::draw() more preciselyAlexander Tkachev
2016-08-24CLOUD: Fix CloudIconAlexander Tkachev
It's not a Request again, but still it controls ConnMan's timer.
2016-08-24CLOUD: Make CloudIcon switch ConnMan's timer offAlexander Tkachev
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-24CLOUD: Make CloudIcon pulsate, fade in and fade outAlexander Tkachev
That required ConnMan's timer stopping. Would be fixed in the next commit.
2016-08-24GUI: Separate OSD message alpha from OSD surfaceAlexander Tkachev
Now OSD is always drawn.
2016-08-24CLOUD: Fix CloudIconAlexander Tkachev
Now it loads the surface once.
2016-08-24GUI: Add getOSDFormat() and make OSD 32 bppAlexander Tkachev
2016-08-24CLOUD: Fix ConnectionManager a littleAlexander Tkachev
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-24CLOUD: Fix CloudIcon to use clearOSD()Alexander Tkachev
Now only icon is shown.
2016-08-24GUI: Add clearOSD() methodAlexander Tkachev
So one can erase everything from OSD and then blit something on it.
2016-08-24CLOUD: Add CloudIconAlexander Tkachev
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-24GUI: Add copyRectToOSD()Alexander Tkachev
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-24CLOUD: Fix SavesSyncRequestAlexander Tkachev
Now it would finish with error if spawned Request is nullptr.
2016-08-24CLOUD: Add GoogleDriveStorageAlexander Tkachev
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-24CLOUD: Document ConnectionManager's onDeleteCallbackAlexander Tkachev
2016-08-24CLOUD: Add mutexes in StorageAlexander Tkachev
2016-08-24CLOUD: Make CloudManager singletonAlexander Tkachev
It's needed to ::destroy() it in main().
2016-08-24CLOUD: Fix ConnectionManager's destructorAlexander Tkachev
It now terminates active Requests.
2016-08-24CLOUD: Implement Storage's isWorking()Alexander Tkachev
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-24CLOUD: Shorten Cloud APIAlexander Tkachev
touch() and isSyncing() are not needed. remove() is not needed too, but it could be used in the future.
2016-08-24CLOUD: Fix SavesSyncRequest to create saves folderAlexander Tkachev
2016-08-24CLOUD: Add OneDriveCreateDirectoryRequestAlexander Tkachev