Files
UnrealEngine/Engine/Source/Developer/TraceInsightsFrontend/Private/InsightsFrontend/InsightsFrontendSettings.h
2025-05-18 13:04:45 +08:00

131 lines
4.0 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#pragma once
#include "CoreTypes.h"
#include "Misc/ConfigCacheIni.h"
#include "Misc/ConfigContext.h"
namespace UE::Insights
{
/** Contains all settings for the Unreal Insights, accessible through the main manager. */
class FInsightsFrontendSettings
{
public:
FInsightsFrontendSettings(bool bInIsDefault = false)
: bIsEditing(false)
, bIsDefault(bInIsDefault)
, bAutoConnect(true)
, bAutoStartAnalysis(false)
{
if (!bIsDefault)
{
LoadFromConfig();
}
}
~FInsightsFrontendSettings()
{
}
void LoadFromConfig()
{
if (!FConfigContext::ReadIntoGConfig().Load(TEXT("UnrealInsightsFrontendSettings"), SettingsIni))
{
return;
}
GConfig->GetBool(TEXT("Insights.SessionBrowser"), TEXT("AutoConnect"), bAutoConnect, SettingsIni);
GConfig->GetBool(TEXT("Insights.SessionBrowser"), TEXT("AutoStartAnalysis"), bAutoStartAnalysis, SettingsIni);
GConfig->GetString(TEXT("Insights.SessionBrowser"), TEXT("AutoStartAnalysisPlatform"), AutoStartAnalysisPlatform, SettingsIni);
GConfig->GetString(TEXT("Insights.SessionBrowser"), TEXT("AutoStartAnalysisAppName"), AutoStartAnalysisAppName, SettingsIni);
}
void SaveToConfig()
{
GConfig->SetBool(TEXT("Insights.SessionBrowser"), TEXT("AutoConnect"), bAutoConnect, SettingsIni);
GConfig->SetBool(TEXT("Insights.SessionBrowser"), TEXT("AutoStartAnalysis"), bAutoStartAnalysis, SettingsIni);
GConfig->SetString(TEXT("Insights.SessionBrowser"), TEXT("AutoStartAnalysisPlatform"), *AutoStartAnalysisPlatform, SettingsIni);
GConfig->SetString(TEXT("Insights.SessionBrowser"), TEXT("AutoStartAnalysisAppName"), *AutoStartAnalysisAppName, SettingsIni);
GConfig->Flush(false, SettingsIni);
}
void EnterEditMode()
{
bIsEditing = true;
}
void ExitEditMode()
{
bIsEditing = false;
}
const bool IsEditing() const
{
return bIsEditing;
}
const FInsightsFrontendSettings& GetDefaults() const
{
return Defaults;
}
void ResetToDefaults()
{
bAutoConnect = Defaults.bAutoConnect;
}
#define SET_AND_SAVE(Option, Value) { if (Option != Value) { Option = Value; SaveToConfig(); } }
bool IsAutoConnectEnabled() const { return bAutoConnect; }
void SetAutoConnect(bool bOnOff) { bAutoConnect = bOnOff; }
void SetAndSaveAutoConnect(bool bOnOff) { SET_AND_SAVE(bAutoConnect, bOnOff); }
bool IsAutoStartAnalysisEnabled() const { return bAutoStartAnalysis; }
void SetAutoStartAnalysis(bool bOnOff) { bAutoStartAnalysis = bOnOff; }
void SetAndSaveAutoStartAnalysis(bool bOnOff) { SET_AND_SAVE(bAutoStartAnalysis, bOnOff); }
FString GetAutoStartAnalysisPlatform() const { return AutoStartAnalysisPlatform; }
void SetAutoStartAnalysisPlatform(const FString& Value) { AutoStartAnalysisPlatform = Value; }
void SetAndSaveAutoStartAnalysisPlatform(const FString& Value) { SET_AND_SAVE(AutoStartAnalysisPlatform, Value); }
FString GetAutoStartAnalysisAppName() const { return AutoStartAnalysisAppName; }
void SetAutoStartAnalysisAppName(const FString& Value) { AutoStartAnalysisAppName = Value; }
void SetAndSaveAutoStartAnalysisAppName(const FString& Value) { SET_AND_SAVE(AutoStartAnalysisAppName, Value); }
#undef SET_AND_SAVE
private:
/** Contains default settings. */
static FInsightsFrontendSettings Defaults;
/** Setting filename ini. */
FString SettingsIni;
/** Whether profiler settings is in edit mode. */
bool bIsEditing;
/** Whether this instance contains defaults. */
bool bIsDefault;
//////////////////////////////////////////////////
// Actual settings.
/** Whether Insights should signal to the Editor to auto connect and start tracing when Insights is running */
bool bAutoConnect;
/** Whether Insights should auto start analysis when a new live trace in received.*/
bool bAutoStartAnalysis;
/** If specified, auto-start analysis will be enabled only for live trace sessions with this specified Platform.*/
FString AutoStartAnalysisPlatform;
/** If specified, auto-start analysis will be enabled only for live trace sessions with this specified App Name.*/
FString AutoStartAnalysisAppName;
};
} // namespace UE::Insights