From 37129abbc6fd94f2cd9ae094bde5282ff71750a4 Mon Sep 17 00:00:00 2001 From: Simon Robertshaw Date: Wed, 5 Sep 2012 20:24:46 +0100 Subject: Allow mass unfavouring, unfavouring from the preview view. Fixes #149 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(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 saves; + public: + UnfavouriteSavesTask(std::vector 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 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 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++) { -- cgit v0.9.2-21-gd62e