Widget Studio
WSModernTabBar.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 "Widgets/Utility/WSButtonGroup.h"
15#include "Widgets/WSContainer.h"
16#include "Components/UniformGridPanel.h"
17#include "Widgets/Panel/WSScrollBox.h"
18
19#include "WSModernTabBar.generated.h"
20
21UENUM(BlueprintType)
22enum class ETabBarSelectionStyle : uint8
23{
24 Full UMETA(DisplayName="Full"),
25 Slim UMETA(DisplayName="Slim"),
26 Hidden UMETA(DisplayName="Hidden"),
27
28 TabBarSelectionStyle_Max UMETA(Hidden),
29};
30
35UCLASS()
36class WIDGETSTUDIORUNTIME_API UWidgetStudioModernTabBar : public UWidgetStudioContainer
37{
38 GENERATED_BODY()
39
40protected:
41
42 virtual TSharedRef<SWidget> RebuildWidget() override;
43 virtual int32 NativePaint(const FPaintArgs& Args, const FGeometry& AllottedGeometry, const FSlateRect& MyCullingRect, FSlateWindowElementList& OutDrawElements, int32 LayerId, const FWidgetStyle& InWidgetStyle, bool bParentEnabled) const override;
44 virtual void SynchronizeProperties() override;
45 virtual void InitializeStyling() override;
46 virtual void UpdateStyling() override;
47 virtual void ConstructOption(FButtonOptions Option) override;
48 virtual void ClearOptions() override;
49 virtual void ConstructButtonGroup();
50
51 UFUNCTION()
52 void UpdateIndexFromButtonGroup(int32 NewIndex);
53
54
55 // Widget Components
56
57 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
58 UInvalidationBox* Retainer = nullptr;
59
60 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
61 USizeBox* SizeBox = nullptr;
62
63 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
64 UWSScrollBox* ScrollBox = nullptr;
65
66 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
67 UOverlay* Overlay = nullptr;
68
69 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
70 UWidgetStudioButtonGroup* ButtonGroup = nullptr;
71
72 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
73 UScaleBox* BackgroundScaleBox = nullptr;
74
75 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
76 UOverlay* BackgroundOverlay = nullptr;
77
78 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
79 UImage* BackgroundDropShadow = nullptr;
80
81 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
82 UImage* Background = nullptr;
83
84 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
85 USizeBox* SelectionOverlaySize = nullptr;
86
87 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
88 UImage* SelectionOverlay = nullptr;
89
90 UPROPERTY(BlueprintReadOnly, Category = "Widgets")
91 UUniformGridPanel* Grid = nullptr;
92
93 // Properties
94
95
97 UPROPERTY(EditAnywhere, Category = "Widget Studio")
98 TEnumAsByte<EHorizontalAlignment> ContentAlignment;
99
103 UPROPERTY(EditAnywhere, Category = "Widget Studio")
104 TEnumAsByte<EOrientation> Orientation = Orient_Horizontal;
105
107 UPROPERTY(EditAnywhere, Category = "Widget Studio|Text")
109 EWSFontType::Button,
110 FFontStyle(),
111 EFontCase::Sentence,
112 ETextJustify::Center,
113 false,
114 0,
115 ETextWrappingPolicy::DefaultWrapping);
116
121 UPROPERTY(EditAnywhere, Category = "Widget Studio|Icon")
122 EWSPlacement IconPlacement;
123
125 UPROPERTY(EditAnywhere, Category = "Widget Studio|Icon")
126 FWSIconStyle IconStyle;
127
128
129
130
131 // Scroll Properties
132
140 UPROPERTY(EditAnywhere, Category = "Widget Studio|Scrolling")
141 bool bEnableScrolling = false;
142
148 UPROPERTY(EditAnywhere, Category = "Widget Studio|Scrolling", Meta = (ClampMin = "0", UIMin = "0", EditCondition="bEnableScrolling", EditConditionHides))
149 float SizeConstraint = 0.f;
150
152 UPROPERTY(EditAnywhere, Category = "Widget Studio|Scrolling", Meta = (EditCondition="bEnableScrolling", EditConditionHides))
153 ESlateVisibility ScrollBarVisibility = ESlateVisibility::Visible;
154
155 // Style Properties
156
158 UPROPERTY(EditAnywhere, Category = "Widget Studio|Style")
159 bool bEnableDropShadow = true;
160
162 UPROPERTY(EditAnywhere, Category = "Widget Studio|Style")
163 ECornerStyle CornerStyle = ECornerStyle::Rounded;
164
166 UPROPERTY(EditAnywhere, Category = "Widget Studio|Style")
167 ETabBarSelectionStyle SelectionStyle = ETabBarSelectionStyle::Full;
168
169
170 // Color Properties
171
173 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
174 EPalette BackgroundColor = EPalette::TertiaryBackground;
175
177 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
178 EPalette ContentColor = EPalette::PrimaryContent;
179
181 UPROPERTY(EditAnywhere, Category = "Widget Studio|Color")
182 EPalette SelectionColor = EPalette::PrimaryAccent;
183
184
185 // State Properties
186
188 UPROPERTY(EditAnywhere, Category = "Widget Studio|State")
189 bool bSelectable = true;
190
191public:
192
193 // Helpers
194
196 UFUNCTION(BlueprintGetter, Category = "Widget Studio")
197 TEnumAsByte<EHorizontalAlignment> GetContentAlignment() const;
198
200 UFUNCTION(BlueprintGetter, Category = "Widget Studio")
201 FWSTextStyle GetTextOptions() const;
202
204 UFUNCTION(BlueprintGetter, Category = "Widget Studio")
205 FWSIconStyle GetIconOptions() const;
206
208 UFUNCTION(BlueprintGetter, Category = "Widget Studio")
209 EWSPlacement GetIconPlacement() const;
210
212 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
213 TEnumAsByte<EOrientation> GetOrientation() const;
214
216 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
217 ECornerStyle GetCornerStyle() const;
218
220 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
221 ETabBarSelectionStyle GetSelectionStyle() const;
222
224 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
225 EPalette GetBackgroundColor() const;
226
228 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
229 EPalette GetContentColor() const;
230
232 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
233 EPalette GetSelectionColor() const;
234
236 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
237 bool IsSelectable() const;
238
239
240 // Scrolling Helper
241
243 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
244 float IsScrollable() const;
245
247 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
248 float GetSizeConstraint() const;
249
251 UFUNCTION(BlueprintGetter, Category="Widget Studio|Helper")
252 ESlateVisibility GetScrollbarVisibility() const;
253
254 // Modifiers
255
261 virtual void SetCurrentIndex(int32 Index, bool bBroadcast = true) override;
262
267 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
268 void SetOrientation(TEnumAsByte<EOrientation> NewOrientation);
269
274 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
275 void SetCornerStyle(ECornerStyle NewStyle);
276
281 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
282 void SetBackgroundColor(EPalette NewColor);
283
288 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
289 void SetContentColor(EPalette NewColor);
290
295 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
296 void SetSelectionColor(EPalette NewColor);
297
302 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
303 void SetSelectable(bool NewState);
304
305
306 // Scrolling Modifiers
307
312 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
313 void SetScrollable(bool NewState);
314
321 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
322 void SetSizeConstraint(float NewSize);
323
328 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
329 void SetScrollbarVisibility(ESlateVisibility NewVisibility);
330
335 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
336 void SetContentAlignment(TEnumAsByte<EHorizontalAlignment> NewAlignment);
337
342 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
343 void SetTextOptions(FWSTextStyle NewTextOptions);
344
349 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
350 void SetIconOptions(FWSIconStyle NewIconOptions);
351
356 UFUNCTION(BlueprintSetter, Category = "Widget Studio|Modifier")
357 void SetIconPlacement(EWSPlacement NewIconPlacement);
358};
A Widget Studio customized version of the Scrollbox.
Definition: WSScrollBox.h:14
A utility widget to group buttons and their logic together.
Definition: WSButtonGroup.h:27
A base class for building a option container such as a tab bar or combo box.
Definition: WSContainer.h:26
A modern styled tab bar.
Definition: WSModernTabBar.h:37
Contains the data for a Widget Studio Modern Button.
Definition: WSModernButton.h:73
Struct with font weight, size, and letter spacing.
Definition: WSTypography.h:23
The settings for the Widget Studio Icon Widget.
Definition: WSIcon.h:27
The settings for the Widget Studio Text.
Definition: WSText.h:23