Files
UnrealEngineUWP/Engine/Source/Editor/DerivedDataEditor/Private/SDerivedDataCacheSettings.cpp
mark lintott 5889b38a78 Additional UI fixes for Derived Data Status Bar
Added new DD background icons and badges to Starship Style
Added back support for DD notifications
Moved DDNotifications into DDEditorModule
#rb devin.doucette, matt.kuhlenschmidt
#preflight 613f31e9c136f100013263b8

#ROBOMERGE-AUTHOR: mark.lintott
#ROBOMERGE-SOURCE: CL 17490903 in //UE5/Main/...
#ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v870-17433530)

[CL 17490910 by mark lintott in ue5-release-engine-test branch]
2021-09-13 08:04:41 -04:00

282 lines
7.9 KiB
C++

// Copyright Epic Games, Inc. All Rights Reserved.
#include "SDerivedDataCacheSettings.h"
#include "DerivedDataInformation.h"
#include "DerivedDataCacheInterface.h"
#include "DerivedDataEditorModule.h"
#include "Widgets/Layout/SBox.h"
#include "Widgets/Layout/SBorder.h"
#include "Widgets/Layout/SGridPanel.h"
#include "Widgets/Layout/SExpandableArea.h"
#include "Widgets/Text/STextBlock.h"
#include "Widgets/Input/SEditableTextBox.h"
#include "Widgets/Input/SButton.h"
#include "Widgets/Images/SImage.h"
#include "Widgets/Images/SThrobber.h"
#include "Editor/EditorPerformanceSettings.h"
#include "Modules/ModuleManager.h"
#include "Logging/MessageLog.h"
#include "MessageLogModule.h"
#define LOCTEXT_NAMESPACE "DerivedDataEditor"
void SDerivedDataCacheSettingsDialog::Construct(const FArguments& InArgs)
{
FMessageLogModule& MessageLogModule = FModuleManager::LoadModuleChecked<FMessageLogModule>("MessageLog");
TSharedRef<class IMessageLogListing> MessageLogListing = MessageLogModule.GetLogListing(TEXT("Config"));
this->ChildSlot
[
SNew(SBox)
.WidthOverride(480.f)
[
SNew(SBorder)
.Padding(10.f)
.BorderImage(FAppStyle::Get().GetBrush("Brushes.Panel"))
[
SNew(SVerticalBox)
+ SVerticalBox::Slot()
.AutoHeight()
/*.Expose(GridSlot)
[
GetGridPanel()
]*/
+ SVerticalBox::Slot()
.AutoHeight()
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.FillWidth(1.0f)
.Padding(FMargin(0.0f, 0.0f, 16.0f, 0.0f))
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 10.0f))
.VAlign(VAlign_Center)
.HAlign(HAlign_Left)
[
SNew(STextBlock)
.Text(LOCTEXT("Setting1Label", "Setting1"))
.ToolTipText( LOCTEXT("Setting1Label_Tooltip", "Setting1") )
]
+SVerticalBox::Slot()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 10.0f))
.VAlign(VAlign_Center)
.HAlign(HAlign_Left)
[
SNew(STextBlock)
.Text(LOCTEXT("Setting2Label", "Setting2"))
.ToolTipText( LOCTEXT("Setting2Label_Tooltip", "Setting2") )
]
+SVerticalBox::Slot()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 10.0f))
.HAlign(HAlign_Left)
[
SNew(SCheckBox)
.ForegroundColor(FSlateColor::UseForeground())
.IsChecked(this, &SDerivedDataCacheSettingsDialog::AreNotificationsEnabled)
.OnCheckStateChanged(this, &SDerivedDataCacheSettingsDialog::OnNotifcationsEnabledCheckboxChanged)
]
]
+SHorizontalBox::Slot()
.FillWidth(2.0f)
[
SNew(SVerticalBox)
+SVerticalBox::Slot()
.VAlign(VAlign_Center)
.HAlign(HAlign_Left)
.Padding(FMargin(0.0f, 0.0f, 0.0f, 10.0f))
[
SNew(SEditableTextBox)
.Text(this, &SDerivedDataCacheSettingsDialog::GetSetting1Text)
.ToolTipText( LOCTEXT("Setting1Label_Tooltip", "Setting1") )
.OnTextCommitted(this, &SDerivedDataCacheSettingsDialog::OnSetting2TextCommited)
.OnTextChanged(this, &SDerivedDataCacheSettingsDialog::OnSetting2TextCommited, ETextCommit::Default)
]
+SVerticalBox::Slot()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 10.0f))
.VAlign(VAlign_Center)
.HAlign(HAlign_Left)
[
SNew(SEditableTextBox)
.Text(this, &SDerivedDataCacheSettingsDialog::GetSetting2Text)
.ToolTipText( LOCTEXT("Setting2Label_Tooltip", "Setting2") )
.OnTextCommitted(this, &SDerivedDataCacheSettingsDialog::OnSetting2TextCommited)
.OnTextChanged(this, &SDerivedDataCacheSettingsDialog::OnSetting2TextCommited, ETextCommit::Default)
]
+ SVerticalBox::Slot()
.Padding(FMargin(0.0f, 0.0f, 0.0f, 10.0f))
.VAlign(VAlign_Center)
.HAlign(HAlign_Left)
[
SNew(STextBlock)
.TextStyle(FAppStyle::Get(), "DialogButtonText")
.Text(LOCTEXT("EnableDDCNotifications", "Enable Notifications"))
]
]
]
//+ SVerticalBox::Slot()
//.VAlign(VAlign_Top)
//.AutoHeight()
//.Padding(0.0f)
//[
// SNew(SExpandableArea)
// .BorderImage(FEditorStyle::GetBrush("NoBorder"))
// .InitiallyCollapsed(true)
// .HeaderContent()
// [
// SNew(STextBlock)
// .Text(LOCTEXT("LogTitle", "Derived Data Cache Log"))
// ]
// .BodyContent()
// [
// SNew(SBorder)
// .BorderImage(FAppStyle::Get().GetBrush("Brushes.Recessed"))
// .Padding(0)
// [
// SNew(SBox)
// .HeightOverride(250)
// [
// MessageLogModule.CreateLogListingWidget(MessageLogListing)
// ]
// ]
// ]
//]
+SVerticalBox::Slot()
.VAlign(VAlign_Bottom)
.Padding(8.0f, 16.0f, 8.0f, 16.0f)
[
SNew(SHorizontalBox)
+SHorizontalBox::Slot()
.AutoWidth()
.VAlign(VAlign_Center)
.HAlign(HAlign_Left)
[
SNew(SThrobber)
.Visibility(this, &SDerivedDataCacheSettingsDialog::GetThrobberVisibility)
]
+SHorizontalBox::Slot()
.FillWidth(1.0f)
.HAlign(HAlign_Right)
[
SNew(SHorizontalBox)
+ SHorizontalBox::Slot()
.AutoWidth()
.Padding(FMargin(5.0f, 0.0f))
[
SNew(SButton)
.VAlign(VAlign_Center)
.ButtonStyle(FAppStyle::Get(), "PrimaryButton")
.TextStyle( FAppStyle::Get(), "DialogButtonText" )
.Text(LOCTEXT("AcceptSettings", "Accept Settings"))
.OnClicked( this, &SDerivedDataCacheSettingsDialog::OnAcceptSettings )
.IsEnabled( this, &SDerivedDataCacheSettingsDialog::IsAcceptSettingsEnabled )
]
+ SHorizontalBox::Slot()
.AutoWidth()
.Padding(FMargin(5.0f, 0.0f))
[
SNew(SButton)
.VAlign(VAlign_Center)
.TextStyle( FAppStyle::Get(), "DialogButtonText" )
.Text(LOCTEXT("RunWithoutCache", "Disable Derived Data Cache"))
.OnClicked( this, &SDerivedDataCacheSettingsDialog::OnDisableDerivedDataCache )
.IsEnabled( this, &SDerivedDataCacheSettingsDialog::IsDerivedDataCacheEnabled)
]
]
]
]
]
];
RegisterActiveTimer(0.5f, FWidgetActiveTimerDelegate::CreateSP(this, &SDerivedDataCacheSettingsDialog::UpdateGridPanels));
}
EActiveTimerReturnType SDerivedDataCacheSettingsDialog::UpdateGridPanels(double InCurrentTime, float InDeltaTime)
{
/*(*GridSlot)
[
GetGridPanel()
];*/
SlatePrepass(GetPrepassLayoutScaleMultiplier());
return EActiveTimerReturnType::Continue;
}
TSharedRef<SWidget> SDerivedDataCacheSettingsDialog::GetGridPanel()
{
TSharedRef<SGridPanel> Panel =
SNew(SGridPanel);
return Panel;
}
FText SDerivedDataCacheSettingsDialog::GetSetting1Text() const
{
return LOCTEXT("Setting1Text", "Setting1");
}
void SDerivedDataCacheSettingsDialog::OnSetting1TextCommited(const FText& InText, ETextCommit::Type InCommitType) const
{
}
FText SDerivedDataCacheSettingsDialog::GetSetting2Text() const
{
return LOCTEXT("Setting2Text", "Setting2");
}
void SDerivedDataCacheSettingsDialog::OnSetting2TextCommited(const FText& InText, ETextCommit::Type InCommitType) const
{
}
EVisibility SDerivedDataCacheSettingsDialog::GetThrobberVisibility() const
{
return EVisibility::Hidden;
}
bool SDerivedDataCacheSettingsDialog::IsDerivedDataCacheEnabled() const
{
return true;
}
bool SDerivedDataCacheSettingsDialog::IsAcceptSettingsEnabled() const
{
return true;
}
FReply SDerivedDataCacheSettingsDialog::OnAcceptSettings()
{
return FReply::Handled();
}
FReply SDerivedDataCacheSettingsDialog::OnDisableDerivedDataCache()
{
return FReply::Handled();
}
ECheckBoxState SDerivedDataCacheSettingsDialog::AreNotificationsEnabled() const
{
return GetDefault<UEditorPerformanceSettings>()->bEnableSharedDDCPerformanceNotifications ? ECheckBoxState::Checked : ECheckBoxState::Unchecked;
}
void SDerivedDataCacheSettingsDialog::OnNotifcationsEnabledCheckboxChanged(ECheckBoxState NewCheckboxState)
{
UEditorPerformanceSettings* Settings = GetMutableDefault<UEditorPerformanceSettings>();
Settings->bEnableSharedDDCPerformanceNotifications = NewCheckboxState == ECheckBoxState::Checked;
Settings->PostEditChange();
}
#undef LOCTEXT_NAMESPACE