summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2012-09-05 19:24:46 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2012-09-05 19:24:46 (GMT)
commit37129abbc6fd94f2cd9ae094bde5282ff71750a4 (patch)
treea98bb20509d3a0adf989a58721c60868e4220090 /src
parent5da70ef8a633328d7441fd08c7e8592247f52f7b (diff)
downloadpowder-37129abbc6fd94f2cd9ae094bde5282ff71750a4.zip
powder-37129abbc6fd94f2cd9ae094bde5282ff71750a4.tar.gz
Allow mass unfavouring, unfavouring from the preview view. Fixes #149
Diffstat (limited to 'src')
-rw-r--r--src/preview/PreviewController.cpp8
-rw-r--r--src/preview/PreviewModel.cpp2
-rw-r--r--src/preview/PreviewView.cpp15
-rw-r--r--src/search/SearchController.cpp29
-rw-r--r--src/search/SearchView.cpp9
5 files changed, 56 insertions, 7 deletions
diff --git a/src/preview/PreviewController.cpp b/src/preview/PreviewController.cpp
index 651db32..4b8bd80 100644
--- a/src/preview/PreviewController.cpp
+++ b/src/preview/PreviewController.cpp
@@ -119,7 +119,13 @@ void PreviewController::Report(std::string message)
void PreviewController::FavouriteSave()
{
- previewModel->SetFavourite(true);
+ if(previewModel->GetSave() && Client::Ref().GetAuthUser().ID)
+ {
+ if(previewModel->GetSave()->Favourite)
+ previewModel->SetFavourite(false);
+ else
+ previewModel->SetFavourite(true);
+ }
}
void PreviewController::OpenInBrowser()
diff --git a/src/preview/PreviewModel.cpp b/src/preview/PreviewModel.cpp
index b0cca7f..07eef2e 100644
--- a/src/preview/PreviewModel.cpp
+++ b/src/preview/PreviewModel.cpp
@@ -71,7 +71,7 @@ void * PreviewModel::updateSaveCommentsT()
void PreviewModel::SetFavourite(bool favourite)
{
- //if(save)
+ if(save)
{
Client::Ref().FavouriteSave(save->id, favourite);
save->Favourite = favourite;
diff --git a/src/preview/PreviewView.cpp b/src/preview/PreviewView.cpp
index 2bca6cc..0c5fa1f 100644
--- a/src/preview/PreviewView.cpp
+++ b/src/preview/PreviewView.cpp
@@ -88,7 +88,7 @@ PreviewView::PreviewView():
}
};
- favButton = new ui::Button(ui::Point(50, Size.Y-19), ui::Point(51, 19), "Fav.");
+ favButton = new ui::Button(ui::Point(50, Size.Y-19), ui::Point(51, 19), "Fav");
favButton->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; favButton->Appearance.VerticalAlign = ui::Appearance::AlignMiddle;
favButton->SetIcon(IconFavourite);
favButton->SetActionCallback(new FavAction(this));
@@ -380,9 +380,20 @@ void PreviewView::NotifySaveChanged(PreviewModel * sender)
viewsLabel->SetText("\bgViews:\bw " + format::NumberToString<int>(save->Views));
saveDescriptionLabel->SetText(save->Description);
if(save->Favourite)
- favButton->Enabled = false;
+ {
+ favButton->Enabled = true;
+ favButton->SetText("Unfav");
+ }
else if(Client::Ref().GetAuthUser().ID)
+ {
favButton->Enabled = true;
+ favButton->SetText("Fav");
+ }
+ else
+ {
+ favButton->SetText("Fav");
+ favButton->Enabled = false;
+ }
if(save->GetGameSave())
{
diff --git a/src/search/SearchController.cpp b/src/search/SearchController.cpp
index d7d422c..2c6b78f 100644
--- a/src/search/SearchController.cpp
+++ b/src/search/SearchController.cpp
@@ -316,7 +316,34 @@ void SearchController::FavouriteSelected()
}
};
+ class UnfavouriteSavesTask : public Task
+ {
+ std::vector<int> saves;
+ public:
+ UnfavouriteSavesTask(std::vector<int> saves_) { saves = saves_; }
+ virtual bool doWork()
+ {
+ for(int i = 0; i < saves.size(); i++)
+ {
+ std::stringstream saveID;
+ saveID << "Unfavouring save [" << saves[i] << "] ...";
+ notifyStatus(saveID.str());
+ if(Client::Ref().FavouriteSave(saves[i], false)!=RequestOkay)
+ {
+ std::stringstream saveIDF;
+ saveIDF << "\boFailed to remove [" << saves[i] << "] ...";
+ notifyStatus(saveIDF.str());
+ }
+ notifyProgress((float(i+1)/float(saves.size())*100));
+ }
+ return true;
+ }
+ };
+
std::vector<int> selected = searchModel->GetSelected();
- new TaskWindow("Favouring saves", new FavouriteSavesTask(selected));
+ if(!searchModel->GetShowFavourite())
+ new TaskWindow("Favouring saves", new FavouriteSavesTask(selected));
+ else
+ new TaskWindow("Unfavouring saves", new UnfavouriteSavesTask(selected));
ClearSelection();
}
diff --git a/src/search/SearchView.cpp b/src/search/SearchView.cpp
index 1211cfc..7834c93 100644
--- a/src/search/SearchView.cpp
+++ b/src/search/SearchView.cpp
@@ -277,7 +277,7 @@ void SearchView::NotifyShowOwnChanged(SearchModel * sender)
else if(sender->GetShowFavourite())
{
unpublishSelected->Enabled = false;
- removeSelected->Enabled = true;
+ removeSelected->Enabled = false;
}
else
{
@@ -292,7 +292,7 @@ void SearchView::NotifyShowFavouriteChanged(SearchModel * sender)
if(sender->GetShowFavourite())
{
unpublishSelected->Enabled = false;
- removeSelected->Enabled = true;
+ removeSelected->Enabled = false;
}
else if(sender->GetShowOwn() || Client::Ref().GetAuthUser().UserElevation == User::ElevationAdmin || Client::Ref().GetAuthUser().UserElevation == User::ElevationModerator)
{
@@ -498,6 +498,11 @@ void SearchView::NotifySaveListChanged(SearchModel * sender)
vector<SaveInfo*> saves = sender->GetSaveList();
//string messageOfTheDay = sender->GetMessageOfTheDay();
+ if(sender->GetShowFavourite())
+ favouriteSelected->SetText("Unfavourite");
+ else
+ favouriteSelected->SetText("Favourite");
+
Client::Ref().ClearThumbnailRequests();
for(i = 0; i < saveButtons.size(); i++)
{