Skip to content

Commit adde283

Browse files
committed
base for details customization port
1 parent 5ea6980 commit adde283

File tree

6 files changed

+93
-6
lines changed

6 files changed

+93
-6
lines changed

Source/SubsystemBrowser/UI/SubsystemBrowserPanel.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1046,6 +1046,11 @@ TSharedRef<IDetailsView> SSubsystemBrowserPanel::CreateDetails()
10461046

10471047
FPropertyEditorModule& EditModule = FModuleManager::Get().GetModuleChecked<FPropertyEditorModule>(TEXT("PropertyEditor"));
10481048
TSharedRef<IDetailsView> DetailViewWidget = EditModule.CreateDetailView(DetailsViewArgs);
1049+
if (FSBDetailsCustomization::IsEnabled())
1050+
{
1051+
DetailViewWidget->RegisterInstancedCustomPropertyLayout(UObject::StaticClass(),
1052+
FOnGetDetailCustomizationInstance::CreateStatic(&FSBDetailsCustomization::MakeForSettings));
1053+
}
10491054

10501055
if (Settings->ShouldUseCustomPropertyFilteringInBrowser())
10511056
{

Source/SubsystemBrowser/UI/SubsystemDetailsCustomizations.cpp

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,46 @@
22

33
#include "SubsystemDetailsCustomizations.h"
44

5+
#include "DetailLayoutBuilder.h"
6+
#include "Modules/ModuleManager.h"
7+
8+
#define LOCTEXT_NAMESPACE "SubsystemBrowser"
9+
10+
bool FSBDetailsCustomization::IsEnabled()
11+
{
12+
return false;
13+
}
14+
15+
TSharedRef<IDetailCustomization> FSBDetailsCustomization::MakeForSettings()
16+
{
17+
TSharedRef<FSBDetailsCustomization> Instance = MakeShared<FSBDetailsCustomization>();
18+
return Instance;
19+
}
20+
21+
TSharedRef<IDetailCustomization> FSBDetailsCustomization::MakeForPanel()
22+
{
23+
TSharedRef<FSBDetailsCustomization> Instance = MakeShared<FSBDetailsCustomization>();
24+
return Instance;
25+
}
26+
27+
void FSBDetailsCustomization::CustomizeDetails(const TSharedPtr<IDetailLayoutBuilder>& DetailBuilder)
28+
{
29+
BuilderRef = DetailBuilder;
30+
Super::CustomizeDetails(DetailBuilder);
31+
}
32+
33+
void FSBDetailsCustomization::CustomizeDetails(IDetailLayoutBuilder& DetailBuilder)
34+
{
35+
// AddCIEWarningCategory(DetailBuilder);
36+
}
37+
38+
void FSBDetailsCustomization::RequestForceRefresh() const
39+
{
40+
if (BuilderRef.IsValid())
41+
{
42+
BuilderRef.Pin()->ForceRefreshDetails();
43+
}
44+
}
45+
46+
47+
#undef LOCTEXT_NAMESPACE

Source/SubsystemBrowser/UI/SubsystemDetailsCustomizations.h

Lines changed: 31 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,34 @@
44

55
#include "IDetailsView.h"
66
#include "IDetailCustomization.h"
7-
#include "IDetailChildrenBuilder.h"
8-
#include "IPropertyTypeCustomization.h"
7+
8+
class FSBDetailsCustomization : public IDetailCustomization
9+
{
10+
using ThisClass = FSBDetailsCustomization;
11+
using Super = IDetailCustomization;
12+
public:
13+
/**
14+
* Are local details view customizations enabled
15+
*/
16+
SUBSYSTEMBROWSER_API static bool IsEnabled();
17+
/**
18+
* Build customization configured for settings panel use
19+
*/
20+
SUBSYSTEMBROWSER_API static TSharedRef<IDetailCustomization> MakeForSettings();
21+
/**
22+
* Build customization configured for main panel use
23+
*/
24+
SUBSYSTEMBROWSER_API static TSharedRef<IDetailCustomization> MakeForPanel();
25+
26+
public:
27+
FSBDetailsCustomization() = default;
28+
29+
virtual void CustomizeDetails(const TSharedPtr<IDetailLayoutBuilder>& DetailBuilder) override;
30+
virtual void CustomizeDetails(IDetailLayoutBuilder& DetailBuilder) override;
31+
32+
void RequestForceRefresh() const;
33+
34+
private:
35+
36+
TWeakPtr<IDetailLayoutBuilder> BuilderRef;
37+
};

Source/SubsystemBrowserTests/SubsystemBrowserTestSubsystem.h

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,15 +218,13 @@ class SUBSYSTEMBROWSERTESTS_API USubsystemBrowserTestSubsystem : public UWorldSu
218218
UPROPERTY(VisibleAnywhere, Category=ArrayWidget)
219219
TArray<USBDemoWidget*> ArrayWidgets;
220220

221-
UFUNCTION(CallInEditor, Category=ArrayWidget)
221+
UFUNCTION(CallInEditor, DisplayName="Arr Fill", Category=ArrayWidget)
222222
void FillArrayWidgets();
223-
UFUNCTION(CallInEditor, Category=ArrayWidget)
223+
UFUNCTION(CallInEditor, DisplayName="Arr Clear", Category=ArrayWidget)
224224
void EmptyArrayWidgets();
225225

226226
UFUNCTION(meta=(SBQuickAction))
227227
void QuickActionTest();
228228
UFUNCTION(DisplayName="Quick Action Second", meta=(SBQuickAction))
229229
void QuickActionTest2();
230230
};
231-
232-

Source/SubsystemSettingsEditor/SubsystemSettingsManager.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include "UObject/UObjectIterator.h"
2121
#include "UI/SubsystemBrowserPanel.h"
2222
#include "UI/SubsystemSettingsWidget.h"
23+
#include "UI/SubsystemDetailsCustomizations.h"
2324
#include "SubsystemSettingsEditorModule.h"
2425

2526
#define LOCTEXT_NAMESPACE "SubsystemBrowser"
@@ -136,6 +137,11 @@ TSharedRef<SDockTab> FSubsystemSettingsManager::HandleSpawnSettingsTab(const FSp
136137
TSharedPtr<IDetailsView> InnerDetailsView = RecursiveFindWidget<IDetailsView>(SettingsEditor, TEXT("SDetailsView"));
137138
if (InnerDetailsView.IsValid())
138139
{
140+
if (FSBDetailsCustomization::IsEnabled())
141+
{
142+
InnerDetailsView->RegisterInstancedCustomPropertyLayout(UObject::StaticClass(),
143+
FOnGetDetailCustomizationInstance::CreateStatic(&FSBDetailsCustomization::MakeForSettings));
144+
}
139145
InnerDetailsView->SetIsPropertyVisibleDelegate(FIsPropertyVisible::CreateStatic(&SSubsystemSettingsWidget::IsDetailsPropertyVisible));
140146

141147
TWeakPtr<IDetailsView> WeakDetails(InnerDetailsView);

Source/SubsystemSettingsEditor/UI/SubsystemSettingsWidget.cpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "Widgets/Layout/SBox.h"
1414
#include "Widgets/Text/STextBlock.h"
1515
#include "Widgets/Input/SButton.h"
16+
#include "UI/SubsystemDetailsCustomizations.h"
1617

1718
#define LOCTEXT_NAMESPACE "SubsystemBrowser"
1819

@@ -51,6 +52,11 @@ void SSubsystemSettingsWidget::Construct(const FArguments& InArgs, UObject* InOb
5152

5253
{
5354
TSharedRef<IDetailsView> View = FModuleManager::GetModuleChecked<FPropertyEditorModule>(TEXT("PropertyEditor")).CreateDetailView(DetailsViewArgs);
55+
if (FSBDetailsCustomization::IsEnabled())
56+
{
57+
View->RegisterInstancedCustomPropertyLayout(UObject::StaticClass(),
58+
FOnGetDetailCustomizationInstance::CreateStatic(&FSBDetailsCustomization::MakeForSettings));
59+
}
5460
if (USubsystemBrowserSettings::Get()->ShouldUseCustomPropertyFilterInSettings())
5561
{
5662
View->SetIsPropertyVisibleDelegate(FIsPropertyVisible::CreateStatic(&SSubsystemSettingsWidget::IsDetailsPropertyVisible));

0 commit comments

Comments
 (0)