// Copyright (c) 2024 Codemongous LLC. All Rights Reserved.

#pragma once

#include "ISCW_FSlowTask.h"
#include "SCW_Base.h"
#include "Templates/UniquePtr.h"

struct FSlowTask;

namespace Sourcify
{
	class SCW_FSlowTask : public SCW_Base, public virtual ISCW_FSlowTask
	{
	public:
		SCW_FSlowTask(FSlowTask* InSlowTask);

		FSlowTask* ToFSlowTask() const;

		ISCW_FSlowTaskPtr ToFSlowTaskPtr() override;
		ISCW_FSlowTaskConstPtr ToFSlowTaskPtr() const override;

		void Initialize() override;

		void Destroy() override;

		void MakeDialog(bool bShowCancelButton = false, bool bAllowInPIE = false) override;

		void EnterProgressFrame(float ExpectedWorkThisFrame = 1.f, const wstring& Text = L"") override;

	protected:
		TUniquePtr<FSlowTask> SlowTask;
	};
} // namespace Sourcify