diff options
Diffstat (limited to 'src/elementsearch/ElementSearchActivity.cpp')
| -rw-r--r-- | src/elementsearch/ElementSearchActivity.cpp | 184 |
1 files changed, 0 insertions, 184 deletions
diff --git a/src/elementsearch/ElementSearchActivity.cpp b/src/elementsearch/ElementSearchActivity.cpp deleted file mode 100644 index 7156cb1..0000000 --- a/src/elementsearch/ElementSearchActivity.cpp +++ /dev/null @@ -1,184 +0,0 @@ -#include <algorithm> -#include "ElementSearchActivity.h" -#include "interface/Textbox.h" -#include "interface/Label.h" -#include "interface/Keys.h" -#include "game/Tool.h" -#include "Style.h" -#include "game/GameModel.h" - -class ElementSearchActivity::ToolAction: public ui::ButtonAction -{ - ElementSearchActivity * a; -public: - Tool * tool; - ToolAction(ElementSearchActivity * a, Tool * tool) : a(a), tool(tool) { } - void ActionCallback(ui::Button * sender_) - { - ToolButton *sender = (ToolButton*)sender_; - if(sender->GetSelectionState() >= 0 && sender->GetSelectionState() <= 2) - a->SetActiveTool(sender->GetSelectionState(), tool); - } -}; - -ElementSearchActivity::ElementSearchActivity(GameModel * gameModel, std::vector<Tool*> tools) : - WindowActivity(ui::Point(-1, -1), ui::Point(236, 302)), - gameModel(gameModel), - tools(tools), - firstResult(NULL) -{ - ui::Label * title = new ui::Label(ui::Point(4, 5), ui::Point(Size.X-8, 15), "Element Search"); - title->SetTextColour(style::Colour::InformationTitle); - title->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; - AddComponent(title); - - class SearchAction : public ui::TextboxAction - { - private: - ElementSearchActivity * a; - public: - SearchAction(ElementSearchActivity * a) : a(a) {} - virtual void TextChangedCallback(ui::Textbox * sender) { - a->searchTools(sender->GetText()); - } - }; - - searchField = new ui::Textbox(ui::Point(8, 23), ui::Point(Size.X-16, 17), ""); - searchField->SetActionCallback(new SearchAction(this)); - searchField->Appearance.HorizontalAlign = ui::Appearance::AlignLeft; - AddComponent(searchField); - FocusComponent(searchField); - - class CloseAction: public ui::ButtonAction - { - ElementSearchActivity * a; - public: - CloseAction(ElementSearchActivity * a) : a(a) { } - void ActionCallback(ui::Button * sender_) - { - a->Exit(); - } - }; - - class OKAction: public ui::ButtonAction - { - ElementSearchActivity * a; - public: - OKAction(ElementSearchActivity * a) : a(a) { } - void ActionCallback(ui::Button * sender_) - { - if(a->GetFirstResult()) - a->SetActiveTool(0, a->GetFirstResult()); - } - }; - - ui::Button * closeButton = new ui::Button(ui::Point(0, Size.Y-15), ui::Point((Size.X/2)+1, 15), "Close"); - closeButton->SetActionCallback(new CloseAction(this)); - ui::Button * okButton = new ui::Button(ui::Point(Size.X/2, Size.Y-15), ui::Point(Size.X/2, 15), "OK"); - okButton->SetActionCallback(new OKAction(this)); - - AddComponent(okButton); - AddComponent(closeButton); - - searchTools(""); -} - -void ElementSearchActivity::searchTools(std::string query) -{ - firstResult = NULL; - for(std::vector<ToolButton*>::iterator iter = toolButtons.begin(), end = toolButtons.end(); iter != end; ++iter) { - delete *iter; - RemoveComponent(*iter); - } - toolButtons.clear(); - - ui::Point viewPosition = searchField->Position + ui::Point(2+0, searchField->Size.Y+2+8); - ui::Point current = ui::Point(0, 0); - - std::string queryLower = std::string(query); - std::transform(queryLower.begin(), queryLower.end(), queryLower.begin(), ::tolower); - - for(std::vector<Tool*>::iterator iter = tools.begin(), end = tools.end(); iter != end; ++iter) { - std::string nameLower = std::string((*iter)->GetName()); - std::transform(nameLower.begin(), nameLower.end(), nameLower.begin(), ::tolower); - - if(strstr(nameLower.c_str(), queryLower.c_str())!=0) - { - Tool * tool = *iter; - - if(!firstResult) - firstResult = tool; - - VideoBuffer * tempTexture = tool->GetTexture(26, 14); - ToolButton * tempButton; - - if(tempTexture) - tempButton = new ToolButton(current+viewPosition, ui::Point(30, 18), "", tool->GetDescription()); - else - tempButton = new ToolButton(current+viewPosition, ui::Point(30, 18), tool->GetName(), tool->GetDescription()); - - tempButton->Appearance.SetTexture(tempTexture); - tempButton->Appearance.BackgroundInactive = ui::Colour(tool->colRed, tool->colGreen, tool->colBlue); - tempButton->SetActionCallback(new ToolAction(this, tool)); - - if(gameModel->GetActiveTool(0) == tool) - { - tempButton->SetSelectionState(0); //Primary - } - else if(gameModel->GetActiveTool(1) == tool) - { - tempButton->SetSelectionState(1); //Secondary - } - else if(gameModel->GetActiveTool(2) == tool) - { - tempButton->SetSelectionState(2); //Tertiary - } - - toolButtons.push_back(tempButton); - AddComponent(tempButton); - - current.X += 31; - - if(current.X + 30 > searchField->Size.X) { - current.X = 0; - current.Y += 19; - } - - if(current.Y + viewPosition.Y + 18 > Size.Y-23) - break; - } - } -} - -void ElementSearchActivity::SetActiveTool(int selectionState, Tool * tool) -{ - gameModel->SetActiveTool(selectionState, tool); - Exit(); -} - -void ElementSearchActivity::OnDraw() -{ - Graphics * g = ui::Engine::Ref().g; - g->clearrect(Position.X-2, Position.Y-2, Size.X+3, Size.Y+3); - g->drawrect(Position.X, Position.Y, Size.X, Size.Y, 255, 255, 255, 255); - - g->drawrect(Position.X+searchField->Position.X, Position.Y+searchField->Position.Y+searchField->Size.Y+8, searchField->Size.X, Size.Y-(searchField->Position.Y+searchField->Size.Y+8)-23, 255, 255, 255, 180); -} - -void ElementSearchActivity::OnKeyPress(int key, Uint16 character, bool shift, bool ctrl, bool alt) -{ - if(key == KEY_ENTER || key == KEY_RETURN) - { - if(firstResult) - gameModel->SetActiveTool(0, firstResult); - Exit(); - } - if(key == KEY_ESCAPE) - { - Exit(); - } -} - -ElementSearchActivity::~ElementSearchActivity() { -} - |
