Files
UnrealEngineUWP/Engine/Source/Developer/SourceControl/Public/ISourceControlModule.h
julien lheureux 6b739a3205 Added data validation capabilities in the source control.
Exposed data validation in changelists

#rb sebastien.lussier, jeanfrancois.dube, jamie.dale

[CL 15316170 by julien lheureux in ue5-main branch]
2021-02-04 11:50:49 -04:00

166 lines
5.4 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreMinimal.h"
#include "Modules/ModuleInterface.h"
#include "Modules/ModuleManager.h"
#include "UObject/UObjectGlobals.h"
class ISourceControlProvider;
class ISourceControlChangelist;
typedef TSharedPtr<class ISourceControlChangelist, ESPMode::ThreadSafe> FSourceControlChangelistPtr;
SOURCECONTROL_API DECLARE_LOG_CATEGORY_EXTERN(LogSourceControl, Log, All);
/** Delegate called when the source control login window is closed. Parameter determines if source control is enabled or not */
DECLARE_DELEGATE_OneParam( FSourceControlLoginClosed, bool );
/** Delegate called when the active source control provider is changed */
DECLARE_MULTICAST_DELEGATE_TwoParams( FSourceControlProviderChanged, ISourceControlProvider& /*OldProvider*/, ISourceControlProvider& /*NewProvider*/ );
/** Delegate called on pre-submit for data validation */
DECLARE_DELEGATE_FourParams(FSourceControlPreSubmitDataValidationDelegate, FSourceControlChangelistPtr /*Changelist*/, EDataValidationResult& /*Result*/, TArray<FText>& /*ValidationErrors*/, TArray<FText>& /*ValidationWarnings*/);
/**
* The modality of the login window.
*/
namespace ELoginWindowMode
{
enum Type
{
Modal,
Modeless
};
};
/**
* Login window startup behavior
*/
namespace EOnLoginWindowStartup
{
enum Type
{
ResetProviderToNone,
PreserveProvider
};
};
/**
* Interface for talking to source control providers
*/
class ISourceControlModule : public IModuleInterface
{
public:
/**
* Returns a list of the registered source control providers
*/
virtual void GetProviderNames(TArray<FName>& OutProviderNames) = 0;
/**
* Tick the source control module.
* This is responsible for dispatching batched/queued status requests & for calling ISourceControlProvider::Tick()
*/
virtual void Tick() = 0;
/**
* Queues a file to have its source control status updated in the background.
* @param InPackages The packages to queue.
*/
virtual void QueueStatusUpdate(const TArray<UPackage*>& InPackages) = 0;
/**
* Queues a file to have its source control status updated in the background.
* @param InFilenames The files to queue.
*/
virtual void QueueStatusUpdate(const TArray<FString>& InFilenames) = 0;
/**
* Queues a file to have its source control status updated in the background.
* @param InPackage The package to queue.
*/
virtual void QueueStatusUpdate(UPackage* InPackage) = 0;
/**
* Queues a file to have its source control status updated in the background.
* @param InFilename The file to queue.
*/
virtual void QueueStatusUpdate(const FString& InFilename) = 0;
/**
* Check whether source control is enabled. Specifically, it returns true if a source control provider is set (regardless of whether the provider is available) and false if no provider is set.
*/
virtual bool IsEnabled() const = 0;
/**
* Get the source control provider that is currently in use.
*/
virtual ISourceControlProvider& GetProvider() const = 0;
/**
* Set the current source control provider to the one specified here by name.
* This will assert if the provider does not exist.
* @param InName The name of the provider
*/
virtual void SetProvider( const FName& InName ) = 0;
/**
* Show the source control login dialog
* @param InOnWindowClosed Delegate to be called when the login window is closed.
* @param InLoginWindowMode Whether the dialog should be presented modally or not. Note that this function blocks if the modality is Modal.
* @param InOnLoginWindowStartup Whether the provider should be set to 'None' on dialog startup
*/
virtual void ShowLoginDialog(const FSourceControlLoginClosed& InOnSourceControlLoginClosed, ELoginWindowMode::Type InLoginWindowMode, EOnLoginWindowStartup::Type InOnLoginWindowStartup = EOnLoginWindowStartup::ResetProviderToNone) = 0;
/**
* Get whether we should use global or per-project settings
* @return true if we should use global settings
*/
virtual bool GetUseGlobalSettings() const = 0;
/**
* Set whether we should use global or per-project settings
* @param bIsUseGlobalSettings Whether we should use global settings
*/
virtual void SetUseGlobalSettings(bool bIsUseGlobalSettings) = 0;
/**
* Register a delegate to be called when the source control provider changes
*/
virtual FDelegateHandle RegisterProviderChanged(const FSourceControlProviderChanged::FDelegate& SourceControlProviderChanged) = 0;
/**
* Unregister a delegate to be called when the source control provider changes
*/
virtual void UnregisterProviderChanged(FDelegateHandle Handle) = 0;
/**
* Register a delegate to be called to validate asset changes before submitting changes
*/
virtual void RegisterPreSubmitDataValidation(const FSourceControlPreSubmitDataValidationDelegate& PreSubmitDataValidationDelegate) = 0;
/**
* Unregister a delegate called before submitting changes
*/
virtual void UnregisterPreSubmitDataValidation() = 0;
/**
* Gets currently registered delegates for pre-submit data validation
*/
virtual FSourceControlPreSubmitDataValidationDelegate GetRegisteredPreSubmitDataValidation() = 0;
/**
* Gets a reference to the source control module instance.
*
* @return A reference to the source control module.
*/
static inline ISourceControlModule& Get()
{
static FName SourceControlModule("SourceControl");
return FModuleManager::LoadModuleChecked<ISourceControlModule>(SourceControlModule);
}
};