diff options
| author | Simon Robertshaw <simon@hardwired.org.uk> | 2012-04-06 23:45:24 (GMT) |
|---|---|---|
| committer | Simon Robertshaw <simon@hardwired.org.uk> | 2012-04-06 23:45:24 (GMT) |
| commit | bbfbb81086897d50b67bf1494ac150eb607add72 (patch) | |
| tree | 80bab3ddb1f62f847f12947bc81fac2c091669b8 /src/search/SearchView.cpp | |
| parent | 8f8de875c6f7a68a3e47252a8653abb72fd398c1 (diff) | |
| download | powder-bbfbb81086897d50b67bf1494ac150eb607add72.zip powder-bbfbb81086897d50b67bf1494ac150eb607add72.tar.gz | |
Confirmation Dialogue, Save selection and multi-delete
Diffstat (limited to 'src/search/SearchView.cpp')
| -rw-r--r-- | src/search/SearchView.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/src/search/SearchView.cpp b/src/search/SearchView.cpp index 4b9b6b2..4064658 100644 --- a/src/search/SearchView.cpp +++ b/src/search/SearchView.cpp @@ -99,6 +99,70 @@ SearchView::SearchView(): ui::Label * searchPrompt = new ui::Label(ui::Point(10, 10), ui::Point(50, 16), "Search:"); searchPrompt->SetAlignment(AlignLeft, AlignBottom); AddComponent(searchPrompt); + + class RemoveSelectedAction : public ui::ButtonAction + { + SearchView * v; + public: + RemoveSelectedAction(SearchView * _v) { v = _v; } + void ActionCallback(ui::Button * sender) + { + v->c->RemoveSelected(); + } + }; + + class UnpublishSelectedAction : public ui::ButtonAction + { + SearchView * v; + public: + UnpublishSelectedAction(SearchView * _v) { v = _v; } + void ActionCallback(ui::Button * sender) + { + v->c->UnpublishSelected(); + } + }; + + class FavouriteSelectedAction : public ui::ButtonAction + { + SearchView * v; + public: + FavouriteSelectedAction(SearchView * _v) { v = _v; } + void ActionCallback(ui::Button * sender) + { + v->c->FavouriteSelected(); + } + }; + + class ClearSelectionAction : public ui::ButtonAction + { + SearchView * v; + public: + ClearSelectionAction(SearchView * _v) { v = _v; } + void ActionCallback(ui::Button * sender) + { + v->c->ClearSelection(); + } + }; + + removeSelected = new ui::Button(ui::Point((((XRES+BARSIZE)-415)/2), YRES+MENUSIZE-18), ui::Point(100, 16), "Delete"); + removeSelected->Visible = false; + removeSelected->SetActionCallback(new RemoveSelectedAction(this)); + AddComponent(removeSelected); + + unpublishSelected = new ui::Button(ui::Point((((XRES+BARSIZE)-415)/2)+105, YRES+MENUSIZE-18), ui::Point(100, 16), "Unpublish"); + unpublishSelected->Visible = false; + unpublishSelected->SetActionCallback(new UnpublishSelectedAction(this)); + AddComponent(unpublishSelected); + + favouriteSelected = new ui::Button(ui::Point((((XRES+BARSIZE)-415)/2)+210, YRES+MENUSIZE-18), ui::Point(100, 16), "Favourite"); + favouriteSelected->Visible = false; + favouriteSelected->SetActionCallback(new FavouriteSelectedAction(this)); + AddComponent(favouriteSelected); + + clearSelection = new ui::Button(ui::Point((((XRES+BARSIZE)-415)/2)+315, YRES+MENUSIZE-18), ui::Point(100, 16), "Clear selection"); + clearSelection->Visible = false; + clearSelection->SetActionCallback(new ClearSelectionAction(this)); + AddComponent(clearSelection); } void SearchView::doSearch() @@ -211,6 +275,10 @@ void SearchView::NotifySaveListChanged(SearchModel * sender) { v->c->OpenSave(sender->GetSave()->GetID()); } + virtual void SelectedCallback(ui::SaveButton * sender) + { + v->c->Selected(sender->GetSave()->GetID(), sender->GetSelected()); + } }; for(i = 0; i < saves.size(); i++) { @@ -230,6 +298,8 @@ void SearchView::NotifySaveListChanged(SearchModel * sender) ui::Point(buttonWidth, buttonHeight), saves[i]); saveButton->SetActionCallback(new SaveOpenAction(this)); + if(Client::Ref().GetAuthUser().ID) + saveButton->SetSelectable(true); saveButtons.push_back(saveButton); AddComponent(saveButton); saveX++; @@ -237,6 +307,35 @@ void SearchView::NotifySaveListChanged(SearchModel * sender) } } +void SearchView::NotifySelectedChanged(SearchModel * sender) +{ + vector<int> selected = sender->GetSelected(); + for(int j = 0; j < saveButtons.size(); j++) + { + saveButtons[j]->SetSelected(false); + for(int i = 0; i < selected.size(); i++) + { + if(saveButtons[j]->GetSave()->GetID()==selected[i]) + saveButtons[j]->SetSelected(true); + } + } + + if(selected.size()) + { + removeSelected->Visible = true; + unpublishSelected->Visible = true; + favouriteSelected->Visible = true; + clearSelection->Visible = true; + } + else + { + removeSelected->Visible = false; + unpublishSelected->Visible = false; + favouriteSelected->Visible = false; + clearSelection->Visible = false; + } +} + void SearchView::OnTick(float dt) { c->Update(); |
