78 lines
2.4 KiB
C++
78 lines
2.4 KiB
C++
|
// Copyright (c) Meta Platforms, Inc. and affiliates.
|
|||
|
|
|||
|
#pragma once
|
|||
|
|
|||
|
#include "OculusXRStatusBarWidget.h"
|
|||
|
|
|||
|
#include "OculusXRProjectSetupToolModule.h"
|
|||
|
#include "OculusXRRuleProcessorSubsystem.h"
|
|||
|
|
|||
|
#define LOCTEXT_NAMESPACE "OculusXRStatusBarWidget"
|
|||
|
|
|||
|
/**
|
|||
|
* Construct the layout for the status bar widget
|
|||
|
*
|
|||
|
* @param InArgs [in] the arguments associated with this tool
|
|||
|
*/
|
|||
|
void SOculusXRStatusBarWidget::Construct(const FArguments& InArgs)
|
|||
|
{
|
|||
|
ChildSlot
|
|||
|
[SNew(SHorizontalBox)
|
|||
|
+ SHorizontalBox::Slot()
|
|||
|
[SNew(SButton)
|
|||
|
.HAlign(HAlign_Center)
|
|||
|
.VAlign(VAlign_Center)
|
|||
|
.ButtonStyle(FAppStyle::Get(), "SimpleButton")
|
|||
|
.ToolTipText(LOCTEXT("StatusBarWidget_Tooltip", "Launch Meta XR Project Setup tool"))
|
|||
|
.OnClicked_Lambda([]() -> FReply {
|
|||
|
IOculusXRProjectSetupToolModule::Get().ShowProjectSetupTool("Toolbar");
|
|||
|
return FReply::Handled();
|
|||
|
})
|
|||
|
.ContentPadding(0)
|
|||
|
[SNew(SOverlay)
|
|||
|
+ SOverlay::Slot()
|
|||
|
[SNew(SHorizontalBox)
|
|||
|
+ SHorizontalBox::Slot()
|
|||
|
.AutoWidth()
|
|||
|
[SNew(SImage)
|
|||
|
.Image(FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.MetaLogo"))
|
|||
|
.DesiredSizeOverride(FVector2D(22.0f, 22.0f))]]
|
|||
|
+ SOverlay::Slot()
|
|||
|
[SNew(SHorizontalBox)
|
|||
|
+ SHorizontalBox::Slot()
|
|||
|
.AutoWidth()
|
|||
|
.Padding(16, 4, -2, 10)
|
|||
|
[SNew(SImage)
|
|||
|
.Image_Static(SOculusXRStatusBarWidget::GetDotImage)
|
|||
|
.DesiredSizeOverride(FVector2D(8.0f, 8.0f))]]]]];
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* Determine the correct image to use
|
|||
|
*/
|
|||
|
const FSlateBrush* SOculusXRStatusBarWidget::GetDotImage()
|
|||
|
{
|
|||
|
const UOculusXRRuleProcessorSubsystem* RuleProcessorSubsystem = GEngine->GetEngineSubsystem<UOculusXRRuleProcessorSubsystem>();
|
|||
|
|
|||
|
if (RuleProcessorSubsystem == nullptr)
|
|||
|
{
|
|||
|
return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.GreenDot");
|
|||
|
}
|
|||
|
|
|||
|
const auto& RuleStatus = RuleProcessorSubsystem->UnAppliedRulesStatus(MetaQuest_All);
|
|||
|
|
|||
|
if (RuleStatus.PendingRequiredRulesCount > 0)
|
|||
|
{
|
|||
|
return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.RedDot");
|
|||
|
}
|
|||
|
|
|||
|
if (RuleStatus.PendingRecommendedRulesCount > 0)
|
|||
|
{
|
|||
|
return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.YellowDot");
|
|||
|
}
|
|||
|
|
|||
|
return FOculusXRProjectSetupToolModule::GetSlateStyle()->GetBrush("ProjectSetupTool.GreenDot");
|
|||
|
}
|
|||
|
|
|||
|
#undef LOCTEXT_NAMESPACE
|