Allow mass unfavouring, unfavouring from the preview view. Fixes #149

This commit is contained in:
Simon Robertshaw 2012-09-05 20:24:46 +01:00
parent 5da70ef8a6
commit 37129abbc6
5 changed files with 57 additions and 8 deletions

View File

@ -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()

View File

@ -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;

View File

@ -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;
else if(Client::Ref().GetAuthUser().ID)
{
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())
{

View File

@ -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();
}

View File

@ -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++)
{