ShishGL  1.0
A simple modular cross-platform graphics library
UISwitch.hpp
Go to the documentation of this file.
1 /*============================================================================*/
2 #ifndef SHISHGL_UISWITCH_HPP
3 #define SHISHGL_UISWITCH_HPP
4 /*============================================================================*/
5 #include "UIWindow.hpp"
6 #include "Clickable.hpp"
7 /*============================================================================*/
8 namespace Sh {
9 
10  class ClickSwitchable : public Clickable {
11  public:
12 
13  explicit ClickSwitchable(UIWindow* target, bool turned = false)
14  : Clickable(target)
15  , turned_on(turned)
16  { }
17 
18  void reactOnRelease(MouseButtonEvent& event) override {
19  if (!turned_on) {
20  turned_on = true;
21  target<UIWindow>()->setState(UIWindow::SELECTED);
22  onSelect();
23  } else {
24  turned_on = false;
25  target<UIWindow>()->setState(UIWindow::NORMAL);
26  onDeselect();
27  }
28  }
29 
30  virtual void onSelect() { }
31 
32  virtual void onDeselect() { }
33 
34  private:
35 
36  bool turned_on;
37  };
38 
39 }
40 /*============================================================================*/
41 #endif //SHISHGL_UISWITCH_HPP
42 /*============================================================================*/
Sh::ClickSwitchable
Definition: UISwitch.hpp:10
Sh::UIWindow::NORMAL
@ NORMAL
Definition: UIWindow.hpp:20
Sh::ClickSwitchable::reactOnRelease
void reactOnRelease(MouseButtonEvent &event) override
Definition: UISwitch.hpp:18
Sh::UIWindow::SELECTED
@ SELECTED
Definition: UIWindow.hpp:24
Sh::Behavior::target
SomeWindow * target() const
Definition: Behavior.hpp:17
Sh::UIWindow
Definition: UIWindow.hpp:16
Clickable.hpp
Sh
Definition: CoreApplication.hpp:10
UIWindow.hpp
Sh::ClickSwitchable::ClickSwitchable
ClickSwitchable(UIWindow *target, bool turned=false)
Definition: UISwitch.hpp:13
Sh::Clickable
Definition: Clickable.hpp:11
Sh::ClickSwitchable::onSelect
virtual void onSelect()
Definition: UISwitch.hpp:30
Sh::MouseButtonEvent
Definition: MouseEvent.hpp:38
Sh::ClickSwitchable::onDeselect
virtual void onDeselect()
Definition: UISwitch.hpp:32