SuperTuxKart
tracks_and_gp_screen.hpp
1 // SuperTuxKart - a fun racing game with go-kart
2 // Copyright (C) 2016 SuperTuxKart-Team
3 //
4 // This program is free software; you can redistribute it and/or
5 // modify it under the terms of the GNU General Public License
6 // as published by the Free Software Foundation; either version 3
7 // of the License, or (at your option) any later version.
8 //
9 // This program is distributed in the hope that it will be useful,
10 // but WITHOUT ANY WARRANTY; without even the implied warranty of
11 // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 // GNU General Public License for more details.
13 //
14 // You should have received a copy of the GNU General Public License
15 // along with this program; if not, write to the Free Software
16 // Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
17 
18 #ifndef HEADER_TRACKS_AND_GP_SCREEN_HPP
19 #define HEADER_TRACKS_AND_GP_SCREEN_HPP
20 
21 #include "guiengine/screen.hpp"
22 #include "guiengine/widgets/text_box_widget.hpp"
23 #include <deque>
24 
25 namespace GUIEngine { class Widget; }
26 
32  public GUIEngine::ScreenSingleton<TracksAndGPScreen>,
34 {
35  friend class GUIEngine::ScreenSingleton<TracksAndGPScreen>;
36 
37 private:
38  GUIEngine::TextBoxWidget* m_search_box;
39 
40  TracksAndGPScreen() : Screen("tracks_and_gp.stkgui") {}
41 
43  void buildTrackList();
44 
45  std::deque<std::string> m_random_track_list;
46 
47 public:
48 
50  virtual void loadedFromFile() OVERRIDE {};
51 
53  virtual void eventCallback(GUIEngine::Widget* widget,
54  const std::string& name,
55  const int playerID) OVERRIDE;
56 
58  virtual void init() OVERRIDE;
59 
61  virtual void beforeAddingWidget() OVERRIDE;
62 
64  virtual void onTextUpdated() OVERRIDE
65  {
66  buildTrackList();
67  // After buildTrackList the m_search_box may be unfocused
68  m_search_box->focused(0);
69  }
70 
71  void setFocusOnTrack(const std::string& trackName);
72  void setFocusOnGP(const std::string& gpName);
73 
74 };
75 
76 #endif
Contains all GUI engine related classes and functions.
Definition: abstract_state_manager.hpp:31
virtual void loadedFromFile() OVERRIDE
implement callback from parent class GUIEngine::Screen
Definition: tracks_and_gp_screen.hpp:50
A text field widget.
Definition: text_box_widget.hpp:52
virtual EventPropagation focused(const int playerID)
override in children if you need to know when the widget is focused.
Definition: text_box_widget.cpp:177
virtual void onTextUpdated() OVERRIDE
Rebuild the list of tracks based on search text.
Definition: tracks_and_gp_screen.hpp:64
screen where the user can select a track or grand prix
Definition: tracks_and_gp_screen.hpp:31
Represents a single GUI screen.
Definition: screen.hpp:96
Definition: text_box_widget.hpp:41
Declares a class to be a singleton.
Definition: screen.hpp:58
The nearly-abstract base of all widgets (not fully abstract since a bare Widget can be created for th...
Definition: widget.hpp:142