Files
UnrealEngine/Engine/Source/Programs/SlateUGS/Private/Widgets/SModalTaskWindow.h
2025-05-18 13:04:45 +08:00

43 lines
1018 B
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "SlateCore.h"
#include "HAL/Runnable.h"
#include "HAL/RunnableThread.h"
namespace UGSCore
{
class IModalTask;
class FModalTaskResult;
}
class SModalTaskWindow : public SWindow, private FRunnable
{
public:
SLATE_BEGIN_ARGS(SModalTaskWindow) {}
SLATE_ARGUMENT(FText, Title)
SLATE_ARGUMENT(FText, Message)
SLATE_ARGUMENT(TSharedPtr<UGSCore::IModalTask>, Task)
SLATE_END_ARGS()
TSharedPtr<UGSCore::FModalTaskResult> Result;
SModalTaskWindow();
~SModalTaskWindow();
void Construct(const FArguments& InArgs);
EActiveTimerReturnType OnTickTimer(double CurrentTime, float DeltaTime);
private:
FEvent* AbortEvent;
FEvent* CloseEvent;
FRunnableThread* Thread;
TSharedPtr<UGSCore::IModalTask> Task;
virtual uint32 Run() override;
};
TSharedRef<UGSCore::FModalTaskResult> ExecuteModalTask(TSharedPtr<SWidget> Parent, TSharedRef<UGSCore::IModalTask> Task, const FText& InTitle, const FText& InMessage);