diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-04-14 18:00:24 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-04-14 18:00:24 (GMT) |
| commit | 4c6be4ff2cc822d9c1ed36c9c88261771775dc02 (patch) | |
| tree | 9e07f4871b68ea5e0edc7fdfc56894c26bfba9bf /src/search | |
| parent | 64063fbc0f070a0731c896394e30abebd848f358 (diff) | |
| download | powder-4c6be4ff2cc822d9c1ed36c9c88261771775dc02.zip powder-4c6be4ff2cc822d9c1ed36c9c88261771775dc02.tar.gz | |
Graphics:: Extra icons for Report and Favourite. Client:: Get favourite status in GetSave, FavouriteSave, ReportSave, Preview:: Failure state when loading save
Diffstat (limited to 'src/search')
| -rw-r--r-- | src/search/Save.h | 1 | ||||
| -rw-r--r-- | src/search/SearchController.cpp | 44 | ||||
| -rw-r--r-- | src/search/SearchView.cpp | 30 |
3 files changed, 75 insertions, 0 deletions
diff --git a/src/search/Save.h b/src/search/Save.h index 00387ae..0b213e2 100644 --- a/src/search/Save.h +++ b/src/search/Save.h @@ -18,6 +18,7 @@ public: int votesUp, votesDown; unsigned char * data; int dataLength; + bool Favourite; Save(Save & save); diff --git a/src/search/SearchController.cpp b/src/search/SearchController.cpp index 90cd41b..09fde71 100644 --- a/src/search/SearchController.cpp +++ b/src/search/SearchController.cpp @@ -6,6 +6,7 @@ #include "SearchView.h" #include "interface/Panel.h" #include "dialogues/ConfirmPrompt.h" +#include "dialogues/ErrorMessage.h" #include "preview/PreviewController.h" #include "client/Client.h" #include "tasks/Task.h" @@ -206,15 +207,58 @@ void SearchController::removeSelectedC() void SearchController::UnpublishSelected() { + class UnpublishSelectedConfirmation: public ConfirmDialogueCallback { + public: + SearchController * c; + UnpublishSelectedConfirmation(SearchController * c_) { c = c_; } + virtual void ConfirmCallback(ConfirmPrompt::DialogueResult result) { + if (result == ConfirmPrompt::ResultOkay) + c->unpublishSelectedC(); + } + virtual ~UnpublishSelectedConfirmation() { } + }; + std::stringstream desc; + desc << "Are you sure you want to hide " << searchModel->GetSelected().size() << " save"; + if(searchModel->GetSelected().size()>1) + desc << "s"; + new ConfirmPrompt("Unpublish saves", desc.str(), new UnpublishSelectedConfirmation(this)); } void SearchController::unpublishSelectedC() { + class UnpublishSavesTask : public Task + { + std::vector<int> saves; + public: + UnpublishSavesTask(std::vector<int> saves_) { saves = saves_; } + virtual void doWork() + { + for(int i = 0; i < saves.size(); i++) + { + std::stringstream saveID; + saveID << "Hiding save [" << saves[i] << "] ..."; + notifyStatus(saveID.str()); + if(Client::Ref().UnpublishSave(saves[i])!=RequestOkay) + { + std::stringstream saveIDF; + saveIDF << "\boFailed to hide [" << saves[i] << "] ..."; + notifyStatus(saveIDF.str()); + usleep(500*1000); + } + usleep(100*1000); + notifyProgress((float(i+1)/float(saves.size())*100)); + } + } + }; + + std::vector<int> selected = searchModel->GetSelected(); + new TaskWindow("Unpublishing saves", new UnpublishSavesTask(selected)); ClearSelection(); } void SearchController::FavouriteSelected() { + new ErrorMessage("Not impletemented", "Not ermplermerterd"); ClearSelection(); } diff --git a/src/search/SearchView.cpp b/src/search/SearchView.cpp index 4064658..5a1c6c7 100644 --- a/src/search/SearchView.cpp +++ b/src/search/SearchView.cpp @@ -163,6 +163,25 @@ SearchView::SearchView(): clearSelection->Visible = false; clearSelection->SetActionCallback(new ClearSelectionAction(this)); AddComponent(clearSelection); + + if(Client::Ref().GetAuthUser().ID) + { + favouriteSelected->Enabled = true; + if((Client::Ref().GetAuthUser().UserElevation == ElevationAdmin || Client::Ref().GetAuthUser().UserElevation == ElevationModerator)) + { + unpublishSelected->Enabled = true; + removeSelected->Enabled = true; + } + else + { + unpublishSelected->Enabled = false; + removeSelected->Enabled = false; + } + } + else + { + favouriteSelected->Enabled = true; + } } void SearchView::doSearch() @@ -182,6 +201,16 @@ void SearchView::NotifySortChanged(SearchModel * sender) void SearchView::NotifyShowOwnChanged(SearchModel * sender) { ownButton->SetToggleState(sender->GetShowOwn()); + if(sender->GetShowOwn() || Client::Ref().GetAuthUser().UserElevation == ElevationAdmin || Client::Ref().GetAuthUser().UserElevation == ElevationModerator) + { + unpublishSelected->Enabled = true; + removeSelected->Enabled = true; + } + else + { + unpublishSelected->Enabled = false; + removeSelected->Enabled = false; + } } void SearchView::NotifyPageChanged(SearchModel * sender) @@ -233,6 +262,7 @@ void SearchView::NotifySaveListChanged(SearchModel * sender) } if(!saves.size()) { + loadingSpinner->Visible = false; if(!errorLabel) { errorLabel = new ui::Label(ui::Point(((XRES+BARSIZE)/2)-100, ((YRES+MENUSIZE)/2)-6), ui::Point(200, 12), "Error"); |
