// Copyright Epic Games, Inc. All Rights Reserved. #pragma once #include "Framework/Commands/Commands.h" #include "Internationalization/Text.h" #include "Templates/SharedPointer.h" #include "Types/SlateEnums.h" #include "Widgets/DeclarativeSyntaxSupport.h" #include "Widgets/SCompoundWidget.h" #include "Styling/SlateColor.h" class FUICommandInfo; class FUICommandList; class SNotificationItem; class SWidget; struct FSlateBrush; namespace UE::Zen { class FServiceInstanceManager; } class FZenStausBarCommands : public TCommands { public: FZenStausBarCommands(); virtual void RegisterCommands() override; private: static void ChangeCacheSettings_Clicked(); static void ViewCacheStatistics_Clicked(); static void ViewResourceUsage_Clicked(); static void ViewServerStatus_Clicked(); static void ViewZenStore_Clicked(); static void LaunchZenDashboard_Clicked(); static void StartZenServer_Clicked(); static void StopZenServer_Clicked(); static void RestartZenServer_Clicked(); public: TSharedPtr< FUICommandInfo > ChangeCacheSettings; TSharedPtr< FUICommandInfo > ViewResourceUsage; TSharedPtr< FUICommandInfo > ViewCacheStatistics; TSharedPtr< FUICommandInfo > ViewServerStatus; TSharedPtr< FUICommandInfo > ViewZenStore; TSharedPtr< FUICommandInfo > LaunchZenDashboard; TSharedPtr< FUICommandInfo > StartZenServer; TSharedPtr< FUICommandInfo > StopZenServer; TSharedPtr< FUICommandInfo > RestartZenServer; static TSharedRef ActionList; static TSharedPtr ServiceInstanceManager; }; class SZenStatusBarWidget : public SCompoundWidget { SLATE_BEGIN_ARGS(SZenStatusBarWidget) {} SLATE_END_ARGS() void Construct(const FArguments& InArgs); private: FText GetTitleToolTipText() const; FText GetTitleText() const; FText GetServerStateToolTipText() const; const FSlateBrush* GetServerStateBadgeIcon() const; const FSlateBrush* GetServerStateBackgroundIcon() const; TSharedRef CreateStatusBarMenu(); EActiveTimerReturnType UpdateBusyIndicator(double InCurrentTime, float InDeltaTime); EActiveTimerReturnType UpdateWarnings(double InCurrentTime, float InDeltaTime); double ElapsedDownloadTime = 0; double ElapsedUploadTime = 0; double ElapsedBusyTime = 0; bool IsRunning = false; bool IsDownloading = false; bool IsUploading = false; bool IsReading = false; bool IsWriting = false; bool IsBusy = false; TSharedPtr NotificationItem; TSharedPtr ServiceInstanceManager; };