// Copyright (c) 2022 Sentry. All Rights Reserved. #pragma once #include "IDetailCustomization.h" class FSentrySymToolsDownloader; class IPropertyHandle; class FSlateHyperlinkRun; class SWidget; enum class ESentrySettingsStatus : uint8 { DsnMissing = 0, Modified, Configured }; enum class ESentryLinuxBinariesStatus : uint8 { Missing = 0, Compiling, Configured }; class FSentrySettingsCustomization : public IDetailCustomization { public: FSentrySettingsCustomization(); virtual ~FSentrySettingsCustomization(); static TSharedRef MakeInstance(); /** IDetailCustomization implementation */ virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override; private: void DrawGeneralNotice(IDetailLayoutBuilder& DetailBuilder); void DrawCrashReporterNotice(IDetailLayoutBuilder& DetailBuilder); void DrawDebugSymbolsNotice(IDetailLayoutBuilder& DetailBuilder); void SetPropertiesUpdateHandler(IDetailLayoutBuilder& DetailBuilder); TSharedRef MakeGeneralSettingsStatusRow(FName IconName, FText Message, FText ButtonMessage); TSharedRef MakeLinuxBinariesStatusRow(FName IconName, FText Message, FText ButtonMessage); TSharedRef MakeSentryCliStatusRow(FName IconName, FText Message, FText ButtonMessage); void UpdateProjectName(); void UpdateOrganizationName(); void UpdateAuthToken(); void UpdatePropertiesFile(const FString& PropertyName, const FString& PropertyValue); void UpdateCrcConfig(const FString& Url); // Gets path to CRC's DefaultEngine.ini in engine directory FString GetCrcConfigPath() const; // Gets path to plugin's Linux pre-compiled binaries directory FString GetLinuxBinariesDirPath() const; int32 GetGeneralSettingsStatusAsInt() const; int32 GetLinuxBinariesStatusAsInt() const; int32 GetSentryCliStatusAsInt() const; TSharedPtr ProjectNameHandle; TSharedPtr OrganizationNameHandle; TSharedPtr AuthTokenHandle; TSharedPtr CliDownloader; static const FString DefaultCrcEndpoint; bool IsCompilingLinuxBinaries; };