MPLABĀ® Harmony Graphics Suite
legato_widget_textfield.h
Go to the documentation of this file.
1 /*******************************************************************************
2 * Copyright (C) 2020 Microchip Technology Inc. and its subsidiaries.
3 *
4 * Subject to your compliance with these terms, you may use Microchip software
5 * and any derivatives exclusively with Microchip products. It is your
6 * responsibility to comply with third party license terms applicable to your
7 * use of third party software (including open source software) that may
8 * accompany Microchip software.
9 *
10 * THIS SOFTWARE IS SUPPLIED BY MICROCHIP "AS IS". NO WARRANTIES, WHETHER
11 * EXPRESS, IMPLIED OR STATUTORY, APPLY TO THIS SOFTWARE, INCLUDING ANY IMPLIED
12 * WARRANTIES OF NON-INFRINGEMENT, MERCHANTABILITY, AND FITNESS FOR A
13 * PARTICULAR PURPOSE.
14 *
15 * IN NO EVENT WILL MICROCHIP BE LIABLE FOR ANY INDIRECT, SPECIAL, PUNITIVE,
16 * INCIDENTAL OR CONSEQUENTIAL LOSS, DAMAGE, COST OR EXPENSE OF ANY KIND
17 * WHATSOEVER RELATED TO THE SOFTWARE, HOWEVER CAUSED, EVEN IF MICROCHIP HAS
18 * BEEN ADVISED OF THE POSSIBILITY OR THE DAMAGES ARE FORESEEABLE. TO THE
19 * FULLEST EXTENT ALLOWED BY LAW, MICROCHIP'S TOTAL LIABILITY ON ALL CLAIMS IN
20 * ANY WAY RELATED TO THIS SOFTWARE WILL NOT EXCEED THE AMOUNT OF FEES, IF ANY,
21 * THAT YOU HAVE PAID DIRECTLY TO MICROCHIP FOR THIS SOFTWARE.
22 *******************************************************************************/
23 
24 /*******************************************************************************
25  Module for Microchip Graphics Library - Legato User Interface Library
26 
27  Company:
28  Microchip Technology Inc.
29 
30  File Name:
31  legato_widget_textfield.h
32 
33  Summary:
34 
35 
36  Description:
37  This module implements text field widget functions.
38 *******************************************************************************/
39 
46 #ifndef LEGATO_TEXTFIELD_H
47 #define LEGATO_TEXTFIELD_H
48 
50 
51 #if LE_TEXTFIELD_WIDGET_ENABLED == 1
52 
55 
56 typedef struct leTextFieldWidget leTextFieldWidget;
57 
58 // *****************************************************************************
59 /* Function Pointer:
60  leTextFieldWidget_TextChangedCallback
61 
62  Summary:
63  Text changed event function callback type
64 */
69 typedef void (*leTextFieldWidget_TextChangedCallback)(leTextFieldWidget*);
70 
71 // *****************************************************************************
72 /* Function Pointer:
73  leTextFieldWidget_FocusChangedCallback
74 
75  Summary:
76  Focus changed event function callback type
77 */
82 typedef void (*leTextFieldWidget_FocusChangedCallback)(leTextFieldWidget*, leBool);
83 
84 /* internal use only */typedef struct leTextFieldWidget leTextFieldWidget;
89 
90 #define LE_TEXTFIELDWIDGET_VTABLE(THIS_TYPE) \
91  LE_EDITWIDGET_VTABLE(THIS_TYPE) \
92  \
93  uint32_t (*getCursorDelay)(const THIS_TYPE* _this); \
94  leResult (*setCursorDelay)(THIS_TYPE* _this, uint32_t dt); \
95  leBool (*getCursorEnabled)(const THIS_TYPE* _this); \
96  leResult (*setCursorEnabled)(THIS_TYPE* _this, leBool en); \
97  uint32_t (*getCursorPosition)(const THIS_TYPE* _this); \
98  leResult (*setCursorPosition)(THIS_TYPE* _this, uint32_t pos); \
99  const leString* (*getString)(const THIS_TYPE* txt); \
100  leResult (*setString)(THIS_TYPE* _this, const leString* str); \
101  leFont* (*getFont)(const THIS_TYPE* _this); \
102  leResult (*setFont)(THIS_TYPE* _this, const leFont* fnt); \
103  leString* (*getHintString)(const THIS_TYPE* txt); \
104  leResult (*setHintString)(THIS_TYPE* _this, const leString* str); \
105  leResult (*setClearValueOnFirstEdit)(THIS_TYPE* _this, leBool clr); \
106  leTextFieldWidget_TextChangedCallback (*getTextChangedEventCallback)(const THIS_TYPE* _this); \
107  leResult (*setTextChangedEventCallback)(THIS_TYPE* _this, leTextFieldWidget_TextChangedCallback cb); \
108  leTextFieldWidget_FocusChangedCallback (*getFocusChangedEventCallback)(const THIS_TYPE* _this); \
109  leResult (*setFocusChangedEventCallback)(THIS_TYPE* _this, leTextFieldWidget_FocusChangedCallback cb); \
110 
111 typedef struct leTextFieldWidgetVTable
112 {
113  LE_TEXTFIELDWIDGET_VTABLE(leTextFieldWidget)
114 } leTextFieldWidgetVTable;
115 
116 // DOM-IGNORE-END
117 
118 // *****************************************************************************
119 // *****************************************************************************
120 // Section: Data Types and Constants
121 // *****************************************************************************
122 // *****************************************************************************
123 
124 // *****************************************************************************
132 typedef struct leTextFieldWidget
133 {
134  leEditWidget editWidget; // edit widget base class
135 
136  const leTextFieldWidgetVTable* fn;
137 
138  const leString* hintText;
139  leDynamicString text; // the text to edit
140 
141  uint32_t cursorPos; // current cursor position
142  uint32_t cursorDelay; // cursor blink delay
143  uint32_t cursorTime; // current cursor tick counter
144  leBool cursorEnable; // cursor enabled flag
145  leBool cursorVisible; // cursor visbility flag
146  leBool clearOnFirstEdit; // needs clear on first edit
147 
148  leTextFieldWidget_TextChangedCallback textChangedEvent; // text changed event
149  leTextFieldWidget_FocusChangedCallback focusChangedEvent; // focus changed event
150 } leTextFieldWidget;
151 
152 // *****************************************************************************
153 // *****************************************************************************
154 // Section: Routines
155 // *****************************************************************************
156 // *****************************************************************************
157 
169 LIB_EXPORT leTextFieldWidget* leTextFieldWidget_New();
170 
181 LIB_EXPORT void leTextFieldWidget_Constructor(leTextFieldWidget* wgt);
182 
183 
184 #ifdef _DOXYGEN_
185 #define THIS_TYPE struct leWidget
186 
187 
188 // *****************************************************************************
199 virtual uint32_t getCursorDelay(const leTextFieldWidget* _this);
200 
201 
202 // *****************************************************************************
215 virtual leResult setCursorDelay(leTextFieldWidget* _this,
216  uint32_t dt);
217 
218 // *****************************************************************************
229 virtual leBool getCursorEnabled(const leTextFieldWidget* _this);
230 
231 // *****************************************************************************
244 virtual leResult setCursorEnabled(leTextFieldWidget* _this,
245  leBool en);
246 
247 
248 // *****************************************************************************
259 virtual uint32_t getCursorPosition(const leTextFieldWidget* _this);
260 
261 
262 // *****************************************************************************
275 virtual leResult setCursorPosition(leTextFieldWidget* _this,
276  uint32_t pos);
277 
278 
279 // *****************************************************************************
291 virtual const leString* getString(const leTextFieldWidget* txt);
292 
293 
294 // *****************************************************************************
307 virtual leResult setString(leTextFieldWidget* _this,
308  const leString* str);
309 
310 // *****************************************************************************
321 virtual leFont* getFont(const leTextFieldWidget* _this);
322 
323 
324 // *****************************************************************************
337 virtual leResult setFont(leTextFieldWidget* _this,
338  const leFont* fnt);
339 
340 
341 // *****************************************************************************
352 virtual leString* getHintString(const leTextFieldWidget* _this);
353 
354 
355 // *****************************************************************************
368 virtual leResult setHintString(leTextFieldWidget* _this,
369  const leString* str);
370 
371 // *****************************************************************************
385 virtual leResult setClearValueOnFirstEdit(leTextFieldWidget* _this,
386  leBool clr);
387 
388 
399 virtual leTextFieldWidget_TextChangedCallback getTextChangedEventCallback
400  (const leTextFieldWidget* _this);
401 
415 virtual leResult setTextChangedEventCallback(leTextFieldWidget* _this,
416  leTextFieldWidget_TextChangedCallback cb);
417 
428 virtual leTextFieldWidget_FocusChangedCallback getFocusChangedEventCallback
429  (const leTextFieldWidget* _this);
430 
444 virtual leResult setFocusChangedEventCallback(leTextFieldWidget* _this,
445  leTextFieldWidget_FocusChangedCallback cb);
446 
447 #undef THIS_TYPE
448 #endif
449 
450 #endif // LE_TEXTFIELD_WIDGET_ENABLED
451 #endif /* LEGATO_TEXTFIELD_H */
_leWidget_SetAlphaAmount
leResult _leWidget_SetAlphaAmount(leWidget *_this, uint32_t alpha)
Set alpha amount.
Definition: legato_widget.c:570
legato_math.h
Defines common math functions for general use.
legato_error.h
Error functions, macros and definitions.
leDynamicString
This struct represents a dynamic string.
Definition: legato_dynamicstring.h:60
_leWidget_GetType
leWidgetType _leWidget_GetType(const leWidget *_this)
Get widget type.
Definition: legato_widget.c:176
leEditWidget
Definition: legato_editwidget.h:91
_leWidget_GetScheme
leScheme * _leWidget_GetScheme(const leWidget *_this)
Get widget scheme.
Definition: legato_widget.c:938
leResult
leResult
This enum represents function call results.
Definition: legato_common.h:134
lePercentWholeRounded
LIB_EXPORT uint32_t lePercentWholeRounded(uint32_t l, uint32_t r)
Calculate percent whole rounded.
Definition: legato_math.c:204
_leWidget_RectToScreenSpace
leRect _leWidget_RectToScreenSpace(const leWidget *_this)
Get widget rectangle.
Definition: legato_widget.c:701
leRect
This struct represents a rectangle.
Definition: legato_common.h:405
_leWidget_IsOpaque
leBool _leWidget_IsOpaque(const leWidget *_this)
Determine is widget is opaque.
Definition: legato_widget.c:594
_leWidget_SetBorderType
leResult _leWidget_SetBorderType(leWidget *_this, leBorderType type)
Set widget scheme.
Definition: legato_widget.c:967
_leWidget_RemoveAllChildren
void _leWidget_RemoveAllChildren(leWidget *_this)
Remove all children from widget.
Definition: legato_widget.c:823
_leWidget_SetParent
leResult _leWidget_SetParent(leWidget *_this, leWidget *parent)
Set parent widget.
Definition: legato_widget.c:862
leWidgetEvent_TouchUp
Used to define widget touch up event.
Definition: legato_widget.h:403
_leWidget_InvalidateContents
void _leWidget_InvalidateContents(const leWidget *_this)
Invalidate widget contents.
Definition: legato_widget.c:1210
_leWidget_SetCornerRadius
leResult _leWidget_SetCornerRadius(leWidget *_this, uint32_t radius)
Set widget scheme.
Definition: legato_widget.c:1091
_leWidget_InstallEventFilter
leResult _leWidget_InstallEventFilter(leWidget *_this, leWidgetEventFilter fltr)
Install event filter.
Definition: legato_widget.c:1215
_leWidget_SetX
leResult _leWidget_SetX(leWidget *_this, int32_t x)
Set widget x position.
Definition: legato_widget.c:190
_leWidget_SetSize
leResult _leWidget_SetSize(leWidget *_this, uint32_t width, uint32_t height)
Set widget height.
Definition: legato_widget.c:381
leSetEditWidget
LIB_EXPORT leResult leSetEditWidget(leEditWidget *widget)
Set edit widget.
Definition: legato_state.c:526
_leWidget_HasFocus
leBool _leWidget_HasFocus(const leWidget *_this)
Determines the focus status.
Definition: legato_widget.c:1110
legato_memory.h
Memory functions and definitions.
_leWidget_Resize
leResult _leWidget_Resize(leWidget *_this, int32_t width, int32_t height)
Resize widget.
Definition: legato_widget.c:426
_leWidget_SetAlphaEnabled
leResult _leWidget_SetAlphaEnabled(leWidget *_this, leBool enable)
Set cumulative alpha enable status.
Definition: legato_widget.c:501
lePercentOf
LIB_EXPORT uint32_t lePercentOf(uint32_t num, uint32_t percent)
Calculate percent of a number.
Definition: legato_math.c:218
leWidgetEvent_TouchDown
Used to define widget touch down event.
Definition: legato_widget.h:377
_leWidget_ContainsDescendant
leBool _leWidget_ContainsDescendant(const leWidget *_this, const leWidget *wgt)
Determine widget exists.
Definition: legato_widget.c:910
_leWidget_SetBackgroundType
leResult _leWidget_SetBackgroundType(leWidget *_this, leBackgroundType type)
Set widget scheme.
Definition: legato_widget.c:989
_leWidget_GetWidth
uint32_t _leWidget_GetWidth(const leWidget *_this)
Get widget width.
Definition: legato_widget.c:317
LE_VALIGN_MIDDLE
@ LE_VALIGN_MIDDLE
Definition: legato_common.h:183
_leWidget_GetCumulativeAlphaEnabled
leBool _leWidget_GetCumulativeAlphaEnabled(const leWidget *_this)
Get cumulative alpha enable status.
Definition: legato_widget.c:484
_leWidget_RectToParentSpace
leRect _leWidget_RectToParentSpace(const leWidget *_this)
Get widget rectangle.
Definition: legato_widget.c:684
_leWidget_Translate
leResult _leWidget_Translate(leWidget *_this, int32_t x, int32_t y)
Translate widget x and y position.
Definition: legato_widget.c:282
legato_renderer.h
_leWidget_SetHeight
leResult _leWidget_SetHeight(leWidget *_this, uint32_t height)
Set widget height.
Definition: legato_widget.c:356
_leWidget_SetWidth
leResult _leWidget_SetWidth(leWidget *_this, uint32_t width)
Set the widget width.
Definition: legato_widget.c:324
_leWidget_SetVisible
leResult _leWidget_SetVisible(leWidget *_this, leBool visible)
Set widget visible status.
Definition: legato_widget.c:649
_leWidget_GetRootWidget
leWidget * _leWidget_GetRootWidget(const leWidget *_this)
Get root widget.
Definition: legato_widget.c:843
legato_widget.h
Legato widget definitions.
leFont
This struct represents a font object.
Definition: legato_font.h:136
_leWidget_GetHAlignment
leHAlignment _leWidget_GetHAlignment(const leWidget *_this)
Get widget horizontal alignment.
Definition: legato_widget.c:1003
_leWidget_GetHeight
uint32_t _leWidget_GetHeight(const leWidget *_this)
Get widget height.
Definition: legato_widget.c:349
leString
This struct represents a string.
Definition: legato_string.h:108
_leWidget_LocalRect
leRect _leWidget_LocalRect(const leWidget *_this)
Get widget rectangle.
Definition: legato_widget.c:670
leEditWidgetVTable
Definition: legato_editwidget.h:68
leBool
leBool
This enum represents booleans.
Definition: legato_common.h:157
_leWidget_GetBackgroundType
leBackgroundType _leWidget_GetBackgroundType(const leWidget *_this)
Get widget background type.
Definition: legato_widget.c:982
legato_editwidget.h
Edit widget functions and definitions.
_leWidget_SetScheme
leResult _leWidget_SetScheme(leWidget *_this, const leScheme *scheme)
Set widget scheme.
Definition: legato_widget.c:945
_leWidget_SetHAlignment
leResult _leWidget_SetHAlignment(leWidget *_this, leHAlignment align)
Set widget scheme.
Definition: legato_widget.c:1010
_leWidget_GetEnabled
leBool _leWidget_GetEnabled(const leWidget *_this)
Get widget enabled flag.
Definition: legato_widget.c:615
setFont
virtual leResult setFont(leString *_this, const leFont *font)
Set font.
_leWidget_SetFocus
leResult _leWidget_SetFocus(leWidget *_this)
Set widget scheme.
Definition: legato_widget.c:1117
LE_FALSE
@ LE_FALSE
Definition: legato_common.h:158
_leWidget_GetAlphaEnabled
leBool _leWidget_GetAlphaEnabled(const leWidget *_this)
Get alpha enable status.
Definition: legato_widget.c:473
leDynamicString_Constructor
LIB_EXPORT void leDynamicString_Constructor(leDynamicString *str)
Consructs a dynamic string.
Definition: legato_dynamicstring.c:41
leGetEditWidget
LIB_EXPORT leEditWidget * leGetEditWidget()
Get edit widget.
Definition: legato_state.c:521
_leWidget_GetChildAtIndex
leWidget * _leWidget_GetChildAtIndex(const leWidget *_this, uint32_t idx)
Get child at index.
Definition: legato_widget.c:888
leWidgetEvent
Used to define widget event.
Definition: legato_widget.h:352
_leWidget_GetCumulativeAlphaAmount
uint32_t _leWidget_GetCumulativeAlphaAmount(const leWidget *_this)
Get cumulative alpha amount.
Definition: legato_widget.c:538
_leWidget_SetY
leResult _leWidget_SetY(leWidget *_this, int32_t y)
Set widget y position.
Definition: legato_widget.c:222
_leWidget_GetBorderType
leBorderType _leWidget_GetBorderType(const leWidget *_this)
Get widget bordertype.
Definition: legato_widget.c:960
_leWidget_SetMargins
leResult _leWidget_SetMargins(leWidget *_this, uint32_t l, uint32_t t, uint32_t r, uint32_t b)
Set widget margins.
Definition: legato_widget.c:1058
legato_utils.h
General internal utilities for the library.
_leWidget_GetVAlignment
leVAlignment _leWidget_GetVAlignment(const leWidget *_this)
Get widget vertical alignment.
Definition: legato_widget.c:1027
legato_string.h
Fixed string functions and definitions.
legato_widget_textfield.h
Textfield Widget functions and definitions.
LE_HALIGN_LEFT
@ LE_HALIGN_LEFT
Definition: legato_common.h:207
LE_WIDGET_BACKGROUND_NONE
@ LE_WIDGET_BACKGROUND_NONE
Definition: legato_widget.h:225
leWidget
Used to define a widget.
Definition: legato_widget.h:623
leUtils_RectToScreenSpace
void leUtils_RectToScreenSpace(const leWidget *widget, leRect *rect)
Convert rectangle from widget local space to screen space.
Definition: legato_utils.c:151
legato_dynamicstring.h
Dynamic string functions and definitions.
legato.h
The header file joins all header files used in the graphics object library.
_leWidget_GetX
int32_t _leWidget_GetX(const leWidget *_this)
Get widget x position.
Definition: legato_widget.c:183
_leWidget_SetVAlignment
leResult _leWidget_SetVAlignment(leWidget *_this, leVAlignment align)
Set widget vertical alignment.
Definition: legato_widget.c:1034
_leWidget_GetVisible
leBool _leWidget_GetVisible(const leWidget *_this)
Get widget visible status.
Definition: legato_widget.c:642
leWidgetEvent_TouchMove
Used to define widget touch move event.
Definition: legato_widget.h:429
legato_widget_slider.h
Slider widget functions and definitions.
_leWidget_AddChild
leResult _leWidget_AddChild(leWidget *_this, leWidget *child)
Add child to widget.
Definition: legato_widget.c:734
_leWidget_GetIndexOfChild
uint32_t _leWidget_GetIndexOfChild(const leWidget *_this, const leWidget *child)
Get index of child.
Definition: legato_widget.c:899
_leWidget_GetChildCount
uint32_t _leWidget_GetChildCount(const leWidget *_this)
Get child count.
Definition: legato_widget.c:881
getFont
virtual leFont * getFont(const leString *_this)
Get font.
_leWidget_GetMargins
leMargin _leWidget_GetMargins(const leWidget *_this)
Get widget margins.
Definition: legato_widget.c:1051
leScheme_GetRenderColor
leColor leScheme_GetRenderColor(const leScheme *schm, leSchemeColor clr)
Gets a scheme render color for the current layer color mode.
Definition: legato_scheme.c:68
LE_TRUE
@ LE_TRUE
Definition: legato_common.h:159
_leWidget_GetAlphaAmount
uint32_t _leWidget_GetAlphaAmount(const leWidget *_this)
Get alpha amount.
Definition: legato_widget.c:527
_leWidget_GetCornerRadius
uint32_t _leWidget_GetCornerRadius(const leWidget *_this)
Get widget corner radius.
Definition: legato_widget.c:1084
clear
virtual void clear(leString *_this)
Clear string.
legato_common.h
Common macros and definitions used by Legato.
_leWidget_RemoveEventFilter
leResult _leWidget_RemoveEventFilter(leWidget *_this, leWidgetEventFilter fltr)
Remove event filter.
Definition: legato_widget.c:1238
leString::fn
const leStringVTable * fn
Definition: legato_string.h:109
legato_state.h
_leWidget_RemoveChild
leResult _leWidget_RemoveChild(leWidget *_this, leWidget *child)
Remove child from widget.
Definition: legato_widget.c:785
destructor
virtual void destructor(leString *_this)
Destruct string.
_leWidget_SetEnabled
leResult _leWidget_SetEnabled(leWidget *_this, leBool enable)
Set widget enabled flag.
Definition: legato_widget.c:620
_leWidget_SetPosition
leResult _leWidget_SetPosition(leWidget *_this, int32_t x, int32_t y)
Set widget x and y position.
Definition: legato_widget.c:247
leUtils_ArrangeRectangleRelative
void leUtils_ArrangeRectangleRelative(leRect *sub, leRect obj, leRect bounds, leHAlignment hAlignment, leVAlignment vAlignment, leRelativePosition position, uint8_t leftMargin, uint8_t topMargin, uint8_t rightMargin, uint8_t bottomMargin, uint16_t rectMargin)
Calculates the position of a rectangle within the given bounds.
Definition: legato_utils.c:286
_leWidget_Invalidate
void _leWidget_Invalidate(const leWidget *_this)
Invalidate widget.
Definition: legato_widget.c:1142
lePoint
This structure represents a integer Cartesian point.
Definition: legato_common.h:357
_leWidget_GetY
int32_t _leWidget_GetY(const leWidget *_this)
Get widget y position.
Definition: legato_widget.c:215