Widget Studio
WSModernTextField.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
14#include "WSModernCard.h"
15#include "Components/EditableText.h"
16#include "Widgets/WSBase.h"
17#include "Components/HorizontalBox.h"
18#include "Components/InvalidationBox.h"
19#include "Widgets/Custom/CustomMultiLineTextBox.h"
20#include "Components/Overlay.h"
21#include "Components/ScaleBox.h"
22#include "Components/ScrollBox.h"
23#include "Components/SizeBox.h"
24#include "Components/VerticalBox.h"
25#include "Components/TextBlock.h"
26#include "Widgets/WSTextFieldBase.h"
27#include "Widgets/Custom/WSEditableText.h"
28#include "WSModernTextField.generated.h"
29
33UCLASS()
34class WIDGETSTUDIORUNTIME_API UWidgetStudioModernTextField : public UWidgetStudioTextFieldBase
35{
36 GENERATED_BODY()
37
38protected:
39
40 virtual TSharedRef<SWidget> RebuildWidget() override;
41 virtual int32 NativePaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
42 virtual void SynchronizeProperties() override;
43 virtual void InitializeStyling() override;
44 virtual void UpdateStyling() override;
45
46 UFUNCTION()
47 EPalette GetColorByState() const;
48
49 UPROPERTY()
50 FSlateBrush ScrollBarBrush;
51
52 /* Widget Components */
53
54 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
55 UInvalidationBox* Retainer = nullptr;
56
57 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
58 UVerticalBox* VBox = nullptr;
59
60 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
61 UTextBlock* LabelItem = nullptr;
62
63 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
64 USizeBox* SizeBox = nullptr;
65
66 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
67 UOverlay* Overlay = nullptr;
68
69 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
70 UScaleBox* BackgroundScaleBox = nullptr;
71
72 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
73 UOverlay* BackgroundOverlay = nullptr;
74
75 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
76 UImage* DropShadow = nullptr;
77
78 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
79 UImage* Background = nullptr;
80
81 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
82 UImage* BackgroundOutline = nullptr;
83
84 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
85 UHorizontalBox* HBox = nullptr;
86
87 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
88 UScaleBox* LeadingIconScaleBox = nullptr;
89
90 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
91 UImage* LeadingIconItem = nullptr;
92
93 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
94 UScaleBox* TrailingIconScaleBox = nullptr;
95
96 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
97 UImage* TrailingIconItem = nullptr;
98
99 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
100 UWSEditableText* TextInput = nullptr;
101
102 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
103 UCustomMultiLineTextBox* TextInputMultiLine = nullptr;
104
105
106private:
107
108 // Properties
109
111 UPROPERTY(EditAnywhere, Category = "Widget Studio", meta = (ClampMin = "0", UIMin = "0"), AdvancedDisplay)
112 FVector2D MaxDimensions = FVector2D(0, 0);
113
115 UPROPERTY(EditAnywhere, Category = "Widget Studio|Style")
116 ECornerStyle CornerStyle = ECornerStyle::Rounded;
117
118 /* Icons */
119
121 UPROPERTY(EditAnywhere, Category = "Widget Studio|Icon")
122 ETextFieldIconVisibility IconVisibility = ETextFieldIconVisibility::Hidden;
123
125 UPROPERTY(EditAnywhere, Category = "Widget Studio|Icon")
126 EIconItem LeadingIcon = EIconItem::LockClose;
127
129 UPROPERTY(EditAnywhere, Category = "Widget Studio|Icon")
130 EIconItem TrailingIcon = EIconItem::Heart;
131
133 UPROPERTY(EditAnywhere, Category = "Widget Studio|Icon", Meta = (ClampMin = "12", UIMin = "12"))
134 float IconSize = 16;
135
136
137 /* Colors */
138
140 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
141 EPalette BackgroundColor = EPalette::TertiaryBackground;
142
144 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
145 EPalette DefaultOutline = EPalette::Transparent;
146
148 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
149 EPalette ContentColor = EPalette::PrimaryContent;
150
152 UPROPERTY(EditAnywhere, Category = "Widget Studio|Deprecated",Meta=(DeprecatedProperty, DeprecationMessage="Per-widget labeling is no longer supported. Place this widget in the Label Widget instead."))
153 EPalette LabelColor = EPalette::PrimaryContent;
154
155public:
156
157 /* Helpers */
158
160 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
161 bool IsMultiLineSupportEnabled() const;
162
164 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
165 ETextFieldIconVisibility GetIconVisibility() const;
166
168 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
169 EIconItem GetLeadingIcon() const;
170
172 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
173 EIconItem GetTrailingIcon() const;
174
176 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
177 EPalette GetBackgroundColor() const;
178
180 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
181 EPalette GetContentColor() const;
182
184 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
185 float GetIconSize() const;
186
187 /* Modifiers */
188
193 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
194 void SetMultiLineSupportEnabled(bool bNewState);
195
200 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
201 void SetIconVisibility(ETextFieldIconVisibility NewState);
202
207 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
208 void SetLeadingIcon(EIconItem NewIcon);
209
214 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
215 void SetTrailingIcon(EIconItem NewIcon);
216
221 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
222 void SetBackgroundColor(EPalette NewColor);
223
228 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
229 void SetContentColor(EPalette NewColor);
230
235 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
236 void SetIconSize(float NewSize);
237};
Definition: CustomMultiLineTextBox.h:14
A customized EditableText widget that exposes required functionality.
Definition: WSEditableText.h:14
A modern styled text field.
Definition: WSModernTextField.h:35
A Widget Studio abstract text field without any pre-defined styling or widgets.
Definition: WSTextFieldBase.h:59