TDME2
1.9.200
src
tdme
gui
nodes
GUIInputInternalController.h
Go to the documentation of this file.
1
#pragma once
2
3
#include <array>
4
5
#include <
tdme/tdme.h
>
6
#include <
tdme/gui/events/fwd-tdme.h
>
7
#include <
tdme/gui/nodes/fwd-tdme.h
>
8
#include <
tdme/gui/nodes/GUINodeController.h
>
9
#include <
tdme/utilities/MutableString.h
>
10
11
using
std::array;
12
13
using
tdme::gui::events::GUIKeyboardEvent
;
14
using
tdme::gui::events::GUIMouseEvent
;
15
using
tdme::gui::nodes::GUIElementNode
;
16
using
tdme::gui::nodes::GUIInputInternalController_CursorMode;
17
using
tdme::gui::nodes::GUINode
;
18
using
tdme::gui::nodes::GUINodeController
;
19
using
tdme::utilities::MutableString
;
20
21
/**
22
* GUI input internal controller
23
* @author Andreas Drewke
24
*/
25
class
tdme::gui::nodes::GUIInputInternalController
final
26
:
public
GUINodeController
27
{
28
friend
class
GUIInputInternalNode
;
29
friend
class
GUIInputInternalController_CursorMode
;
30
31
public
:
32
enum
CursorMode
{
CURSORMODE_HIDE
,
CURSORMODE_SHOW
};
33
34
private
:
35
static
constexpr int64_t
TIME_DOUBLECLICK
{ 250LL };
36
static
constexpr int64_t
CURSOR_MODE_DURATION
{ 500LL };
37
static
constexpr int64_t
DRAGGING_CALMDOWN
{ 50LL };
38
GUIElementNode
*
inputNode
{
nullptr
};
39
int64_t
cursorModeStarted
{ -1LL };
40
CursorMode
cursorMode
{
CURSORMODE_SHOW
};
41
int
index
{ 0 };
42
int
selectionIndex
{ -1 };
43
int
offset
{ 0 };
44
bool
mouseDraggingInit
{
false
};
45
bool
mouseDraggingSlideValueActive
{
false
};
46
bool
mouseDraggingSelectionActive
{
false
};
47
array<int, 2>
mouseDragPosition
{{ -1, -1 }};
48
array<int, 2>
mouseOriginalPosition
{{ -1, -1 }};
49
MutableString
value
;
50
51
enum
Type
{
TYPE_STRING
,
TYPE_FLOAT
,
TYPE_INT
};
52
Type
type
{
TYPE_STRING
};
53
bool
haveMin
{
false
};
54
bool
haveMax
{
false
};
55
bool
haveStep
{
false
};
56
float
min
{ 0.0f };
57
float
max
{ 0.0f };
58
float
step
{ 0.0f };
59
int
decimals
{ 3 };
60
61
bool
editMode
{
false
};
62
63
int64_t
timeLastClick
{ -1LL };
64
bool
doubleClick
{
false
};
65
66
// forbid class copy
67
FORBID_CLASS_COPY
(
GUIInputInternalController
)
68
69
/**
70
* Private constructor
71
* @param node node
72
*/
73
GUIInputInternalController
(
GUINode
*
node
);
74
75
/**
76
* @return index
77
*/
78
inline
int
getIndex
() {
79
return
index
;
80
}
81
82
/**
83
* @return selection index
84
*/
85
inline
int
getSelectionIndex
() {
86
return
selectionIndex
;
87
}
88
89
/**
90
* @return offset
91
*/
92
inline
int
getOffset
() {
93
return
offset
;
94
}
95
96
/**
97
* Reset cursor mode
98
*/
99
void
resetCursorMode
();
100
101
/**
102
* @return cursor mode
103
*/
104
CursorMode
getCursorMode
();
105
106
/**
107
* Check and correct offset
108
*/
109
void
checkOffset
();
110
111
public
:
112
/**
113
* Reset cursor index and offset
114
*/
115
void
onTextUpdate
();
116
117
/**
118
* Format text according to options
119
*/
120
void
formatText
();
121
122
/**
123
* @return show cursor
124
*/
125
bool
isShowCursor
();
126
127
// overridden methods
128
bool
isDisabled
()
override
;
129
void
setDisabled
(
bool
disabled)
override
;
130
void
initialize
()
override
;
131
void
dispose
()
override
;
132
void
postLayout
()
override
;
133
void
handleMouseEvent
(
GUINode
*
node
,
GUIMouseEvent
* event)
override
;
134
void
handleKeyboardEvent
(
GUIKeyboardEvent
* event)
override
;
135
void
tick
()
override
;
136
void
onFocusGained
()
override
;
137
void
onFocusLost
()
override
;
138
bool
hasValue
()
override
;
139
const
MutableString
&
getValue
()
override
;
140
void
setValue
(
const
MutableString
&
value
)
override
;
141
void
onSubTreeChange
()
override
;
142
143
};
GUINodeController.h
MutableString.h
tdme::gui::events::GUIKeyboardEvent
GUI keyboard event.
Definition:
GUIKeyboardEvent.h:12
tdme::gui::events::GUIMouseEvent
GUI mouse event.
Definition:
GUIMouseEvent.h:12
tdme::gui::nodes::GUIElementNode
GUI element node.
Definition:
GUIElementNode.h:37
tdme::gui::nodes::GUIInputInternalController
GUI input internal controller.
Definition:
GUIInputInternalController.h:27
tdme::gui::nodes::GUIInputInternalController::CURSOR_MODE_DURATION
static constexpr int64_t CURSOR_MODE_DURATION
Definition:
GUIInputInternalController.h:36
tdme::gui::nodes::GUIInputInternalController::getSelectionIndex
int getSelectionIndex()
Definition:
GUIInputInternalController.h:85
tdme::gui::nodes::GUIInputInternalController::onFocusGained
void onFocusGained() override
On focus gained.
Definition:
GUIInputInternalController.cpp:634
tdme::gui::nodes::GUIInputInternalController::dispose
void dispose() override
Dispose controller.
Definition:
GUIInputInternalController.cpp:99
tdme::gui::nodes::GUIInputInternalController::GUIInputInternalController_CursorMode
friend class GUIInputInternalController_CursorMode
Definition:
GUIInputInternalController.h:29
tdme::gui::nodes::GUIInputInternalController::formatText
void formatText()
Format text according to options.
Definition:
GUIInputInternalController.cpp:678
tdme::gui::nodes::GUIInputInternalController::Type
Type
Definition:
GUIInputInternalController.h:51
tdme::gui::nodes::GUIInputInternalController::TYPE_FLOAT
@ TYPE_FLOAT
Definition:
GUIInputInternalController.h:51
tdme::gui::nodes::GUIInputInternalController::TYPE_INT
@ TYPE_INT
Definition:
GUIInputInternalController.h:51
tdme::gui::nodes::GUIInputInternalController::TYPE_STRING
@ TYPE_STRING
Definition:
GUIInputInternalController.h:51
tdme::gui::nodes::GUIInputInternalController::GUIInputInternalController
GUIInputInternalController(GUINode *node)
Private constructor.
Definition:
GUIInputInternalController.cpp:57
tdme::gui::nodes::GUIInputInternalController::postLayout
void postLayout() override
Post layout event.
Definition:
GUIInputInternalController.cpp:103
tdme::gui::nodes::GUIInputInternalController::selectionIndex
int selectionIndex
Definition:
GUIInputInternalController.h:42
tdme::gui::nodes::GUIInputInternalController::doubleClick
bool doubleClick
Definition:
GUIInputInternalController.h:64
tdme::gui::nodes::GUIInputInternalController::max
float max
Definition:
GUIInputInternalController.h:57
tdme::gui::nodes::GUIInputInternalController::mouseOriginalPosition
array< int, 2 > mouseOriginalPosition
Definition:
GUIInputInternalController.h:48
tdme::gui::nodes::GUIInputInternalController::resetCursorMode
void resetCursorMode()
Reset cursor mode.
Definition:
GUIInputInternalController.cpp:107
tdme::gui::nodes::GUIInputInternalController::initialize
void initialize() override
Initialize controller after element has been created.
Definition:
GUIInputInternalController.cpp:71
tdme::gui::nodes::GUIInputInternalController::mouseDraggingSlideValueActive
bool mouseDraggingSlideValueActive
Definition:
GUIInputInternalController.h:45
tdme::gui::nodes::GUIInputInternalController::editMode
bool editMode
Definition:
GUIInputInternalController.h:61
tdme::gui::nodes::GUIInputInternalController::CursorMode
CursorMode
Definition:
GUIInputInternalController.h:32
tdme::gui::nodes::GUIInputInternalController::CURSORMODE_SHOW
@ CURSORMODE_SHOW
Definition:
GUIInputInternalController.h:32
tdme::gui::nodes::GUIInputInternalController::CURSORMODE_HIDE
@ CURSORMODE_HIDE
Definition:
GUIInputInternalController.h:32
tdme::gui::nodes::GUIInputInternalController::haveStep
bool haveStep
Definition:
GUIInputInternalController.h:55
tdme::gui::nodes::GUIInputInternalController::haveMin
bool haveMin
Definition:
GUIInputInternalController.h:53
tdme::gui::nodes::GUIInputInternalController::handleKeyboardEvent
void handleKeyboardEvent(GUIKeyboardEvent *event) override
Handle keyboard event.
Definition:
GUIInputInternalController.cpp:332
tdme::gui::nodes::GUIInputInternalController::mouseDragPosition
array< int, 2 > mouseDragPosition
Definition:
GUIInputInternalController.h:47
tdme::gui::nodes::GUIInputInternalController::haveMax
bool haveMax
Definition:
GUIInputInternalController.h:54
tdme::gui::nodes::GUIInputInternalController::getOffset
int getOffset()
Definition:
GUIInputInternalController.h:92
tdme::gui::nodes::GUIInputInternalController::getIndex
int getIndex()
Definition:
GUIInputInternalController.h:78
tdme::gui::nodes::GUIInputInternalController::onFocusLost
void onFocusLost() override
On focus lost.
Definition:
GUIInputInternalController.cpp:638
tdme::gui::nodes::GUIInputInternalController::timeLastClick
int64_t timeLastClick
Definition:
GUIInputInternalController.h:63
tdme::gui::nodes::GUIInputInternalController::setValue
void setValue(const MutableString &value) override
Set value.
Definition:
GUIInputInternalController.cpp:656
tdme::gui::nodes::GUIInputInternalController::handleMouseEvent
void handleMouseEvent(GUINode *node, GUIMouseEvent *event) override
Handle mouse event.
Definition:
GUIInputInternalController.cpp:129
tdme::gui::nodes::GUIInputInternalController::onTextUpdate
void onTextUpdate()
Reset cursor index and offset.
Definition:
GUIInputInternalController.cpp:660
tdme::gui::nodes::GUIInputInternalController::index
int index
Definition:
GUIInputInternalController.h:41
tdme::gui::nodes::GUIInputInternalController::cursorMode
CursorMode cursorMode
Definition:
GUIInputInternalController.h:40
tdme::gui::nodes::GUIInputInternalController::isShowCursor
bool isShowCursor()
Definition:
GUIInputInternalController.cpp:673
tdme::gui::nodes::GUIInputInternalController::tick
void tick() override
Tick method will be executed once per frame.
Definition:
GUIInputInternalController.cpp:630
tdme::gui::nodes::GUIInputInternalController::step
float step
Definition:
GUIInputInternalController.h:58
tdme::gui::nodes::GUIInputInternalController::DRAGGING_CALMDOWN
static constexpr int64_t DRAGGING_CALMDOWN
Definition:
GUIInputInternalController.h:37
tdme::gui::nodes::GUIInputInternalController::setDisabled
void setDisabled(bool disabled) override
Set disabled.
Definition:
GUIInputInternalController.cpp:67
tdme::gui::nodes::GUIInputInternalController::value
MutableString value
Definition:
GUIInputInternalController.h:49
tdme::gui::nodes::GUIInputInternalController::inputNode
GUIElementNode * inputNode
Definition:
GUIInputInternalController.h:38
tdme::gui::nodes::GUIInputInternalController::getValue
const MutableString & getValue() override
Definition:
GUIInputInternalController.cpp:651
tdme::gui::nodes::GUIInputInternalController::type
Type type
Definition:
GUIInputInternalController.h:52
tdme::gui::nodes::GUIInputInternalController::cursorModeStarted
int64_t cursorModeStarted
Definition:
GUIInputInternalController.h:39
tdme::gui::nodes::GUIInputInternalController::isDisabled
bool isDisabled() override
Definition:
GUIInputInternalController.cpp:62
tdme::gui::nodes::GUIInputInternalController::onSubTreeChange
void onSubTreeChange() override
On sub tree change.
Definition:
GUIInputInternalController.cpp:727
tdme::gui::nodes::GUIInputInternalController::getCursorMode
CursorMode getCursorMode()
Definition:
GUIInputInternalController.cpp:113
tdme::gui::nodes::GUIInputInternalController::hasValue
bool hasValue() override
Definition:
GUIInputInternalController.cpp:646
tdme::gui::nodes::GUIInputInternalController::checkOffset
void checkOffset()
Check and correct offset.
Definition:
GUIInputInternalController.cpp:315
tdme::gui::nodes::GUIInputInternalController::mouseDraggingInit
bool mouseDraggingInit
Definition:
GUIInputInternalController.h:44
tdme::gui::nodes::GUIInputInternalController::min
float min
Definition:
GUIInputInternalController.h:56
tdme::gui::nodes::GUIInputInternalController::decimals
int decimals
Definition:
GUIInputInternalController.h:59
tdme::gui::nodes::GUIInputInternalController::mouseDraggingSelectionActive
bool mouseDraggingSelectionActive
Definition:
GUIInputInternalController.h:46
tdme::gui::nodes::GUIInputInternalController::offset
int offset
Definition:
GUIInputInternalController.h:43
tdme::gui::nodes::GUIInputInternalController::TIME_DOUBLECLICK
static constexpr int64_t TIME_DOUBLECLICK
Definition:
GUIInputInternalController.h:35
tdme::gui::nodes::GUIInputInternalNode
GUI input internal node.
Definition:
GUIInputInternalNode.h:39
tdme::gui::nodes::GUINodeController
GUI node controller base class.
Definition:
GUINodeController.h:18
tdme::gui::nodes::GUINodeController::node
GUINode * node
Definition:
GUINodeController.h:20
tdme::gui::nodes::GUINode
GUI node base class.
Definition:
GUINode.h:64
tdme::utilities::MutableString
Mutable utf8 aware string class.
Definition:
MutableString.h:23
fwd-tdme.h
fwd-tdme.h
tdme.h
FORBID_CLASS_COPY
#define FORBID_CLASS_COPY(CLASS)
Definition:
tdme.h:6
Generated by
1.9.1