diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-07 00:58:46 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-08-07 00:58:46 (GMT) |
| commit | 46b2def1930b8a6741916b1b4dfebfed97f7e64d (patch) | |
| tree | 2a23b13b5c5c81e0fb4b1ba3005baac77eb0f7e9 /src/save | |
| parent | 51657b8575ce690ddc22b130861a7cf0211227db (diff) | |
| download | powder-46b2def1930b8a6741916b1b4dfebfed97f7e64d.zip powder-46b2def1930b8a6741916b1b4dfebfed97f7e64d.tar.gz | |
Save as current name complete, resolves #5
Diffstat (limited to 'src/save')
| -rw-r--r-- | src/save/ServerSaveActivity.cpp | 63 | ||||
| -rw-r--r-- | src/save/ServerSaveActivity.h | 7 |
2 files changed, 66 insertions, 4 deletions
diff --git a/src/save/ServerSaveActivity.cpp b/src/save/ServerSaveActivity.cpp index d367e61..3de1f37 100644 --- a/src/save/ServerSaveActivity.cpp +++ b/src/save/ServerSaveActivity.cpp @@ -8,6 +8,7 @@ #include "dialogues/ErrorMessage.h" #include "dialogues/ConfirmPrompt.h" #include "client/Client.h" +#include "tasks/Task.h" #include "Style.h" class ServerSaveActivity::CancelAction: public ui::ButtonAction @@ -32,11 +33,46 @@ public: } }; +//Currently, reading is done on another thread, we can't render outside the main thread due to some bullshit with OpenGL +class SaveUploadTask: public Task +{ + SaveInfo save; + + virtual void before() + { + + } + + virtual void after() + { + + } + + virtual bool doWork() + { + notifyProgress(-1); + return Client::Ref().UploadSave(save) == RequestOkay; + } + +public: + SaveInfo GetSave() + { + return save; + } + + SaveUploadTask(SaveInfo save): + save(save) + { + + } +}; + ServerSaveActivity::ServerSaveActivity(SaveInfo save, ServerSaveActivity::SaveUploadedCallback * callback) : WindowActivity(ui::Point(-1, -1), ui::Point(440, 200)), thumbnail(NULL), save(save), - callback(callback) + callback(callback), + saveUploadTask(NULL) { ui::Label * titleLabel = new ui::Label(ui::Point(4, 5), ui::Point((Size.X/2)-8, 16), "Save to server:"); titleLabel->SetTextColour(style::Colour::InformationTitle); @@ -98,13 +134,27 @@ ServerSaveActivity::ServerSaveActivity(SaveInfo save, bool saveNow, ServerSaveAc WindowActivity(ui::Point(-1, -1), ui::Point(200, 50)), thumbnail(NULL), save(save), - callback(callback) + callback(callback), + saveUploadTask(NULL) { ui::Label * titleLabel = new ui::Label(ui::Point(0, 0), Size, "Saving to server..."); titleLabel->SetTextColour(style::Colour::InformationTitle); titleLabel->Appearance.HorizontalAlign = ui::Appearance::AlignCentre; titleLabel->Appearance.VerticalAlign = ui::Appearance::AlignMiddle; AddComponent(titleLabel); + + saveUploadTask = new SaveUploadTask(save); + saveUploadTask->AddTaskListener(this); + saveUploadTask->Start(); +} + +void ServerSaveActivity::NotifyDone(Task * task) +{ + Exit(); + if(!task->GetSuccess()) + { + new ErrorMessage("Error", "Error while saving"); + } } void ServerSaveActivity::Save() @@ -169,6 +219,12 @@ void ServerSaveActivity::Exit() WindowActivity::Exit(); } +void ServerSaveActivity::OnTick(float dt) +{ + if(saveUploadTask) + saveUploadTask->Poll(); +} + void ServerSaveActivity::OnDraw() { Graphics * g = ui::Engine::Ref().g; @@ -192,5 +248,6 @@ void ServerSaveActivity::OnThumbnailReady(Thumbnail * thumbnail) ServerSaveActivity::~ServerSaveActivity() { - + if(saveUploadTask) + delete saveUploadTask; }
\ No newline at end of file diff --git a/src/save/ServerSaveActivity.h b/src/save/ServerSaveActivity.h index 23d7153..4bf581c 100644 --- a/src/save/ServerSaveActivity.h +++ b/src/save/ServerSaveActivity.h @@ -3,6 +3,7 @@ #include "Activity.h" #include "client/SaveInfo.h" #include "client/ThumbnailListener.h" +#include "tasks/TaskListener.h" namespace ui { @@ -10,8 +11,9 @@ namespace ui class Checkbox; } +class Task; class Thumbnail; -class ServerSaveActivity: public WindowActivity, public ThumbnailListener +class ServerSaveActivity: public WindowActivity, public ThumbnailListener, public TaskListener { public: class SaveUploadedCallback @@ -28,8 +30,11 @@ public: virtual void Exit(); virtual void OnDraw(); virtual void OnThumbnailReady(Thumbnail * thumbnail); + virtual void OnTick(float dt); virtual ~ServerSaveActivity(); protected: + virtual void NotifyDone(Task * task); + Task * saveUploadTask; SaveUploadedCallback * callback; SaveInfo save; Thumbnail * thumbnail; |
