Widget Studio
WSModernCheckBox.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 "Widgets/WSButtonBase.h"
14#include "Widgets/Basic/WSIcon.h"
15#include "Widgets/Basic/WSText.h"
16#include "Components/HorizontalBox.h"
17#include "Components/Image.h"
18#include "Components/InvalidationBox.h"
19#include "Components/Overlay.h"
20#include "Components/SizeBox.h"
21#include "Components/Spacer.h"
22
23#include "WSModernCheckBox.generated.h"
24
25UENUM(Blueprintable, BlueprintType, META=(Tooltip = "The styling of the checkbox."))
26enum class ECheckboxStyle : uint8
27{
28 Modern UMETA(DisplayName="Modern"),
29 Classic UMETA(DisplayName="Classic"),
30
31 CheckboxStyle_Max UMETA(Hidden),
32};
33
34UENUM(Blueprintable, BlueprintType, META=(Tooltip = "Choose between inclusive or exclusive."))
35enum class EClusivity : uint8
36{
37 Inclusive UMETA(DisplayName="Inclusive", Description="Multiple options can be selected at a time."),
38 Exclusive UMETA(DisplayName="Exclusive", Description="Only a single option can be selected at a time."),
39
40 Clusivity_Max UMETA(Hidden),
41};
42
43
47UCLASS()
48class WIDGETSTUDIORUNTIME_API UWidgetStudioModernCheckBox : public UWidgetStudioButtonBase
49{
50 GENERATED_BODY()
51
52protected:
53
54 virtual TSharedRef<SWidget> RebuildWidget() override;
55 virtual int32 NativePaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
56 virtual void SynchronizeProperties() override;
57 virtual void InitializeStyling() override;
58 virtual void UpdateStyling() override;
59
60 /* Widget Components */
61
62 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
63 UInvalidationBox* Retainer = nullptr;
64
65 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
66 USizeBox* SizeBox = nullptr;
67
68 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
69 UScaleBox* BackgroundScaleBox = nullptr;
70
71 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
72 UOverlay* Overlay = nullptr;
73
74 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
75 UOverlay* BackgroundOverlay = nullptr;
76
77 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
78 UImage* DropShadow = nullptr;
79
80 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
81 UImage* Background = nullptr;
82
83 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
84 UScaleBox* CheckScaleBox = nullptr;
85
86 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
87 UImage* BackgroundOutline = nullptr;
88
89 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
90 UHorizontalBox* HBox = nullptr;
91
92 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
93 UOverlay* CheckOverlay = nullptr;
94
95 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
96 UImage* CheckBackground = nullptr;
97
98 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
99 UImage* CheckOutline = nullptr;
100
101 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
102 UImage* IconItem = nullptr;
103
104 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
105 UWidgetStudioText* TextItem = nullptr;
106
107 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
108 USpacer* SpacerItem = nullptr;
109
110private:
111
113 UPROPERTY(EditAnywhere, Category = "Widget Studio")
114 FText Text = FText().FromString("CheckBox");
115
117 UPROPERTY(EditAnywhere, Category = "Widget Studio")
118 EIconItem Icon = EIconItem::Check;
119
121 UPROPERTY(EditAnywhere, Category = "Widget Studio")
122 ECheckboxStyle Style = ECheckboxStyle::Modern;
123
125 UPROPERTY(EditAnywhere, Category = "Widget Studio")
126 EClusivity Clusivity = EClusivity::Inclusive;
127
128 /* Colors */
129
131 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
132 EPalette BackgroundColor = EPalette::TertiaryBackground;
133
135 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
136 EPalette ContentColor = EPalette::PrimaryContent;
137
139 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
140 EPalette CheckedColor = EPalette::PrimaryAccent;
141
142public:
143
144 /* Helpers */
145
147 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
148 FText GetLabel() const;
149
151 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper")
152 EIconItem GetIcon() const;
153
155 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper|Color")
156 EPalette GetBackgroundColor() const;
157
159 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper|Color")
160 EPalette GetContentColor() const;
161
163 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper|Color")
164 EPalette GetCheckedColor() const;
165
167 UFUNCTION(BlueprintPure, Category = "Widget Studio|Helper|Color")
168 EClusivity GetSelectionMethod() const;
169
170
171 /* Modifiers */
172
177 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
178 void SetText(FText NewText);
179
184 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
185 void SetIcon(EIconItem NewIcon);
186
191 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier|Color")
192 void SetBackgroundColor(EPalette NewColor);
193
198 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier|Color")
199 void SetContentColor(EPalette NewColor);
200
205 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier|Color")
206 void SetCheckedColor(EPalette NewColor);
207
208 /* The button selection method.
209 * Inclusive: Multiple buttons can be selected at a time.
210 * Exclusive: Only a single button can be selected at a time.
211 * @param NewState The clusivity to use.
212 */
213 UFUNCTION(BlueprintCallable, Category = "Widget Studio|Modifier")
214 void SetSelectionMethod(EClusivity NewState);
215};
Contain the fundamental logic for a Widget Studio button.
Definition: WSButtonBase.h:27
A modern styled checkbox.
Definition: WSModernCheckBox.h:49
A custom text widget setup to work with the Typography Styling.
Definition: WSText.h:92