summaryrefslogtreecommitdiff
path: root/src/search
diff options
context:
space:
mode:
authorSimon 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)
commit4c6be4ff2cc822d9c1ed36c9c88261771775dc02 (patch)
tree9e07f4871b68ea5e0edc7fdfc56894c26bfba9bf /src/search
parent64063fbc0f070a0731c896394e30abebd848f358 (diff)
downloadpowder-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.h1
-rw-r--r--src/search/SearchController.cpp44
-rw-r--r--src/search/SearchView.cpp30
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");