// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "Widgets/SCompoundWidget.h" /** * */ class UDTFluxNetworkSubsystem; class UDTFluxCoreSubsystem; class SSuperListView; class DTFLUXAPISTATUS_API SDTFluxStatusWidget : public SCompoundWidget { public: SLATE_BEGIN_ARGS(SDTFluxStatusWidget) { } SLATE_END_ARGS() void OnOpenSettingsClicked(); FReply OnRaceDatasClicked(); FReply OnTeamListClicked(); /** Constructs this widget with InArgs */ void Construct(const FArguments& InArgs); TAttribute ConnectionActionButtonText; FReply OnConnectionActionButtonClicked(); enum class EComboBoxItemType { Contest, Stage, Split, None }; struct FComboBoxItem { FString DisplayText; int ContestId = -1; int StageId = -1; int SplitId = -1; EComboBoxItemType Type = EComboBoxItemType::None; FComboBoxItem(const EComboBoxItemType InType, const FString& InDisplayText, const int InContestId, const int InStageId = -1, const int InSplitId = -1) : DisplayText(InDisplayText), ContestId(InContestId), StageId(InStageId), SplitId(InSplitId), Type(InType) { } static TSharedPtr CreateItem(const EComboBoxItemType& InType, const FString& InDisplayText, const int InContestId, const int InStageId = -1, const int InSplitId = -1) { TSharedPtr Item = MakeShareable( new FComboBoxItem(InType, InDisplayText, InContestId, InStageId, InSplitId)); return Item; } }; private: UDTFluxNetworkSubsystem* DTFluxNetwork = nullptr; UDTFluxCoreSubsystem* DTFluxCore = nullptr; // // TODO make a struct FText GetWebSocketStatusText() const; FText GetWebConnectActionButtonText() const; FSlateColor GetWebSocketStatusColor() const; FSlateColor GetWebConnectActionButtonColor() const; TSharedPtr WsStatusText; TSharedPtr ConnectionActionButton; TSharedPtr>> ContestComboBox; TArray> ContestComboBoxItems; TSharedPtr SelectedContestComboBoxItem; // Méthodes pour le ComboBox void PopulateComboBoxItems(); TSharedRef OnGeneRankingComboWidget(TSharedPtr InItem); void OnComboContestRankingChanged(TSharedPtr NewSelection, ESelectInfo::Type SelectInfo); FText GetCurrContestComboBoxValue() const; static FSlateColor GetComboItemRankingColor(const TSharedPtr Item); FReply OnRankingButtonClicked() const; };