Widget Studio
WSTextFieldBase.h
1/*
2* Copyright (c) 2021 THEIA INTERACTIVE. All rights reserved.
3*
4* Website: https://widgetstudio.design
5* Documentation: https://docs.widgetstudio.design
6* Support: marketplace@theia.io
7* Marketplace FAQ: https://marketplacehelp.epicgames.com
8*/
9
10#pragma once
11
12#include "CoreMinimal.h"
13#include "Basic/WSText.h"
14#include "Widgets/WSBase.h"
15#include "WSTextFieldBase.generated.h"
16
17DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FWSTextFieldTextChangedDelegate, const FText&, Text);
18DECLARE_DYNAMIC_MULTICAST_DELEGATE_TwoParams(FWSTextFieldTextCommittedDelegate, const FText&, Text, ETextCommit::Type, CommitMethod);
19
20UENUM(BlueprintType)
21enum class ETextFilter : uint8
22{
23 None UMETA(DisplayName="None"),
24 TextOnly UMETA(DisplayName="Text Only"),
25 NumbersOnly UMETA(DisplayName="Numbers Only"),
26
27 TextFilter_Max UMETA(Hidden),
28};
29
30UENUM(BlueprintType)
31enum class ETextFieldIconVisibility : uint8
32{
33 Hidden UMETA(DisplayName="Hidden"),
34 Leading UMETA(DisplayName="Leading"),
35 Trailing UMETA(DisplayName="Trailing"),
36 LeadingAndTrailing UMETA(DisplayName="Leading & Trailing"),
37
38 TextFieldStyle_Max UMETA(Hidden),
39};
40
41UENUM(BlueprintType)
42enum class ETextFieldState : uint8
43{
44 Normal UMETA(DisplayName="Normal"),
45 Focused UMETA(DisplayName="Focused"),
46 Accepted UMETA(DisplayName="Accepted"),
47 Warning UMETA(DisplayName="Warning"),
48 Error UMETA(DisplayName="Error"),
49
50 TextFieldState_Max UMETA(Hidden),
51};
52
57UCLASS()
58class WIDGETSTUDIORUNTIME_API UWidgetStudioTextFieldBase : public UWidgetStudioBase
59{
60 GENERATED_BODY()
61
62protected:
63 UWidgetStudioTextFieldBase(const FObjectInitializer& ObjectInitializer);
64
65 /* Overrides */
66 virtual void SynchronizeProperties() override;
67
68 /* Delegates */
69
74 UFUNCTION()
75 virtual void OnTextInputTextChanged(const FText& InText);
76
82 UFUNCTION()
83 virtual void OnTextInputTextCommitted(const FText& InText, ETextCommit::Type InCommitMethod);
84
85
86 /* Properties */
87
92 UPROPERTY(EditAnywhere, Category = "Widget Studio", meta=(DesignerRebuild="True", ForceRebuildProperty="Text"))
93 bool bMultiLine = false;
94
96 UPROPERTY(EditAnywhere, Category = "Widget Studio|Deprecated",Meta=(DeprecatedProperty, DeprecationMessage="Per-widget labeling is no longer supported. Place this widget in the Label Widget instead."))
97 FText Label;
98
100 UPROPERTY(EditAnywhere, Category = "Widget Studio")
101 FText PlaceholderText = FText().FromString("Enter text here!");
102
104 UPROPERTY(EditAnywhere, Category = "Widget Studio", Meta = (MultiLine = bMultiLine))
105 FText Text = FText().FromString("");
106
108 UPROPERTY(EditAnywhere, Category = "Widget Studio")
110 EWSFontType::Body2,
111 FFontStyle(),
112 EFontCase::Sentence,
113 ETextJustify::Left,
114 true,
115 0,
116 ETextWrappingPolicy::DefaultWrapping);
117
119 UPROPERTY(EditAnywhere, Category = "Widget Studio")
120 ETextFieldState State = ETextFieldState::Normal;
121
123 UPROPERTY(EditAnywhere, Category = "Widget Studio")
124 ETextFilter Filter = ETextFilter::None;
125
127 UPROPERTY(EditAnywhere, Category = "Widget Studio", Meta = (ClampMin = "0", UIMin = "0"))
128 int32 CharacterLimit = 0;
129
131 UPROPERTY(EditAnywhere, Category = "Widget Studio", Meta=(EditCondition = "!bMultiLine", EditConditionHides))
132 bool bIsPasswordField = false;
133
134public:
135
136 /* Bindings */
137
138 UPROPERTY(BlueprintAssignable, Category = "Widget Studio|Event")
139 FWSTextFieldTextChangedDelegate OnTextChanged;
140
141 UPROPERTY(BlueprintAssignable, Category = "Widget Studio|Event")
142 FWSTextFieldTextCommittedDelegate OnTextCommitted;
143
144
145 /* Helpers */
146
148 UFUNCTION(BlueprintPure, Category = "Widget Studio|Deprecated",Meta=(DeprecatedProperty, DeprecationMessage="Per-widget labeling is no longer supported. Place this widget in the Label Widget instead."))
149 FText GetLabel() const;
150
152 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
153 FText GetText() const;
154
156 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
157 FText GetPlaceholderText() const;
158
160 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
161 ETextFilter GetFilter() const;
162
164 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
165 int32 GetCharacterLimit() const;
166
168 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
169 ETextFieldState GetState() const;
170
172 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
173 bool IsPasswordField() const;
174
175
176 /* Modifiers */
177
182 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Deprecated",Meta=(DeprecatedProperty, DeprecationMessage="Per-widget labeling is no longer supported. Place this widget in the Label Widget instead."))
183 virtual void SetLabel(FText NewLabel);
184
189 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
190 virtual void SetText(FText NewText);
191
196 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
197 virtual void SetPlaceholderText(FText NewText);
198
203 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
204 virtual void SetFilter(ETextFilter NewFilter);
205
210 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
211 virtual void SetCharacterLimit(int32 NewLimit);
212
217 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
218 virtual void SetState(ETextFieldState NewState);
219
220};
The base User Widget class for Widget Studio.
Definition: WSBase.h:32
A Widget Studio abstract text field without any pre-defined styling or widgets.
Definition: WSTextFieldBase.h:59
Struct with font weight, size, and letter spacing.
Definition: WSTypography.h:23
The settings for the Widget Studio Text.
Definition: WSText.h:23