Files
Naked-Desire/Source/NakedDesire/UI/Phone/PhoneScreenWidget.cpp
T
2026-06-02 00:06:13 +03:00

67 lines
1.4 KiB
C++

// © 2025 Naked People Team. All Rights Reserved.
#include "PhoneScreenWidget.h"
#include "PhoneHomeScreenWidget.h"
#include "Components/Button.h"
#include "Widgets/CommonActivatableWidgetContainer.h"
void UPhoneScreenWidget::NativeOnActivated()
{
Super::NativeOnActivated();
HomeButton->OnClicked.AddUniqueDynamic(this, &UPhoneScreenWidget::GoHome);
// Open on the home screen every time the phone is brought up.
if (AppStack)
{
AppStack->ClearWidgets();
PushHomeScreen();
}
}
UWidget* UPhoneScreenWidget::NativeGetDesiredFocusTarget() const
{
return HomeButton;
}
void UPhoneScreenWidget::OpenApp(TSubclassOf<UPhoneAppWidget> AppClass)
{
if (AppStack && AppClass)
{
AppStack->AddWidget<UPhoneAppWidget>(AppClass);
}
}
UPhoneHomeScreenWidget* UPhoneScreenWidget::PushHomeScreen()
{
if (!AppStack || !HomeScreenClass)
{
return nullptr;
}
HomeScreen = AppStack->AddWidget<UPhoneHomeScreenWidget>(HomeScreenClass);
if (HomeScreen)
{
HomeScreen->OnAppSelected.BindUObject(this, &UPhoneScreenWidget::OpenApp);
}
return HomeScreen;
}
void UPhoneScreenWidget::GoHome()
{
if (!AppStack)
{
return;
}
// Already on the home screen — nothing to do.
if (HomeScreen && AppStack->GetActiveWidget() == HomeScreen)
{
DeactivateWidget();
}
// Drop every app and re-seat the home screen at the base of the stack.
AppStack->ClearWidgets();
PushHomeScreen();
}