HoverRace  2.0
TextEditScene.h
Go to the documentation of this file.
1 
2 // TextEditScene.h
3 //
4 // Copyright (c) 2016 Michael Imamura.
5 //
6 // Licensed under GrokkSoft HoverRace SourceCode License v1.0(the "License");
7 // you may not use this file except in compliance with the License.
8 //
9 // A copy of the license should have been attached to the package from which
10 // you have taken this file. If you can not find the license you can not use
11 // this file.
12 //
13 //
14 // The author makes no representations about the suitability of
15 // this software for any purpose. It is provided "as is" "AS IS",
16 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
17 // implied.
18 //
19 // See the License for the specific language governing permissions
20 // and limitations under the License.
21 
22 #pragma once
23 
24 #include "../../../engine/Control/Action.h"
25 
26 #include "DialogScene.h"
27 
28 namespace HoverRace {
29  namespace Client {
30  class GameDirector;
31  }
32  namespace Display {
33  class ActiveText;
34  class Display;
35  class Label;
36  }
37 }
38 
39 namespace HoverRace {
40 namespace Client {
41 
46 class TextEditScene : public DialogScene
47 {
48  using SUPER = DialogScene;
49 
50 public:
52  const std::string &parentTitle, const std::string &title,
53  size_t maxLength, const std::string &text = {});
54  virtual ~TextEditScene() { }
55 
56 public:
57  size_t GetMaxLength() const { return maxLength; }
58 
59  void SetHint(const std::string &text);
60 
61  const std::string &GetText() const { return text; }
62 
63 public:
64  using confirmSignal_t = boost::signals2::signal<void(const std::string&)>;
65  confirmSignal_t &GetConfirmSignal() { return confirmSignal; }
66 
67 private:
68  void OnTextInput(const std::string &s);
69  void OnTextControl(Control::TextControl::key_t key);
70 protected:
71  void OnOk() override;
72 
73 public:
74  // Scene
75  void AttachController(Control::InputEventController &controller,
76  ConnList &conns) override;
77  void DetachController(Control::InputEventController &controller,
78  ConnList &conns) override;
79 
80 public:
81  void Advance(Util::OS::timestamp_t tick) override;
82  void PrepareRender() override;
83 
84 private:
85  size_t maxLength;
86  std::string text;
87 
88  bool cursorOn;
90 
92 
93  std::shared_ptr<Display::Label> hintLbl;
94  std::shared_ptr<Display::ActiveText> inputLbl;
95 };
96 
97 } // namespace Client
98 } // namespace HoverRace
bool cursorOn
Definition: TextEditScene.h:88
std::shared_ptr< Display::ActiveText > inputLbl
Definition: TextEditScene.h:94
std::shared_ptr< Display::Label > hintLbl
Definition: TextEditScene.h:93
Interface for game client shells.
Definition: GameDirector.h:57
boost::signals2::signal< void(const std::string &)> confirmSignal_t
Definition: TextEditScene.h:64
const std::string & GetText() const
Definition: TextEditScene.h:61
GameDirector & director
Definition: TestLabScene.cpp:160
std::array< boost::signals2::scoped_connection, 2 > conns
Definition: ProfileEditScene.cpp:152
confirmSignal_t & GetConfirmSignal()
Definition: TextEditScene.h:65
Base class for scenes with a title and status area.
Definition: DialogScene.h:46
Base class for display managers.
Definition: Display.h:73
Base class for full-scene menus and the like.
Definition: FormScene.h:48
size_t GetMaxLength() const
Definition: TextEditScene.h:57
std::string text
Definition: TextEditScene.h:86
Util::OS::timestamp_t cursorTick
Definition: TextEditScene.h:89
Tracks connections as a group.
Definition: Scene.h:69
Definition: Announcement.h:24
Edit a line of text.
Definition: TextEditScene.h:46
key_t
Keycodes used for text input control.
Definition: Action.h:48
virtual ~TextEditScene()
Definition: TextEditScene.h:54
confirmSignal_t confirmSignal
Definition: TextEditScene.h:91
Translates input events into actions.
Definition: Controller.h:106
MR_Int64 timestamp_t
Definition: OS.h:55
size_t maxLength
Definition: TextEditScene.h:85