181 lines
4.5 KiB
C++
181 lines
4.5 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#include "SDeviceBrowserDefaultPlatformAddWidget.h"
|
|
|
|
#include "Internationalization/Text.h"
|
|
#include "Misc/MessageDialog.h"
|
|
#include "Misc/CoreMisc.h"
|
|
#include "SlateOptMacros.h"
|
|
#include "Widgets/Images/SImage.h"
|
|
#include "Widgets/Input/SButton.h"
|
|
#include "Widgets/Input/SEditableTextBox.h"
|
|
#include "Interfaces/ITargetPlatform.h"
|
|
#include "Interfaces/ITargetPlatformManagerModule.h"
|
|
#include "PlatformInfo.h"
|
|
|
|
#define LOCTEXT_NAMESPACE "SDeviceBrowserDefaultPlatformAddWidget"
|
|
|
|
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
|
|
void SDeviceBrowserDefaultPlatformAddWidget::Construct(const FArguments& InArgs, const FString& InPlatformName)
|
|
{
|
|
// callback for determining the visibility of the credentials box
|
|
auto CredentialsBoxVisibility = [this, InPlatformName]() -> EVisibility {
|
|
ITargetPlatform* Platform = GetTargetPlatformManager()->FindTargetPlatform(*InPlatformName);
|
|
|
|
if ((Platform != nullptr) && Platform->RequiresUserCredentials() != EPlatformAuthentication::Never)
|
|
{
|
|
return EVisibility::Visible;
|
|
}
|
|
|
|
return EVisibility::Collapsed;
|
|
};
|
|
|
|
// construct children
|
|
ChildSlot
|
|
[
|
|
SNew(SVerticalBox)
|
|
|
|
+ SVerticalBox::Slot()
|
|
.AutoHeight()
|
|
.HAlign(HAlign_Fill)
|
|
[
|
|
SNew(SHorizontalBox)
|
|
|
|
// device identifier input
|
|
+ SHorizontalBox::Slot()
|
|
.HAlign(HAlign_Fill)
|
|
.Padding(4.0f, 0.0f, 0.0f, 0.0f)
|
|
[
|
|
SNew(SVerticalBox)
|
|
.ToolTipText(LOCTEXT("DeviceIdToolTip", "The device's unique identifier. Depending on the selected Platform, this can be a host name, an IP address, a MAC address or some other platform specific unique identifier."))
|
|
|
|
+ SVerticalBox::Slot()
|
|
.AutoHeight()
|
|
.HAlign(HAlign_Left)
|
|
[
|
|
SNew(STextBlock)
|
|
.Text(LOCTEXT("DeviceIdLabel", "Device Identifier:"))
|
|
]
|
|
|
|
+ SVerticalBox::Slot()
|
|
.FillHeight(1.0)
|
|
.Padding(0.0f, 4.0f, 0.0f, 0.0f)
|
|
[
|
|
SAssignNew(DeviceIdTextBox, SEditableTextBox)
|
|
]
|
|
]
|
|
|
|
// device name input
|
|
+ SHorizontalBox::Slot()
|
|
.HAlign(HAlign_Fill)
|
|
.Padding(4.0f, 0.0f, 0.0f, 0.0f)
|
|
[
|
|
SNew(SVerticalBox)
|
|
.ToolTipText(LOCTEXT("DeviceNameToolTip", "A display name for this device. Once the device is connected, this will be replaced with the device's actual name."))
|
|
|
|
+ SVerticalBox::Slot()
|
|
.AutoHeight()
|
|
.HAlign(HAlign_Left)
|
|
[
|
|
SNew(STextBlock)
|
|
.Text(LOCTEXT("DisplayNameLabel", "Display Name:"))
|
|
]
|
|
|
|
+ SVerticalBox::Slot()
|
|
.FillHeight(1.0)
|
|
.Padding(0.0f, 4.0f, 0.0f, 0.0f)
|
|
[
|
|
SAssignNew(DeviceNameTextBox, SEditableTextBox)
|
|
]
|
|
]
|
|
]
|
|
|
|
+ SVerticalBox::Slot()
|
|
.AutoHeight()
|
|
.HAlign(HAlign_Fill)
|
|
[
|
|
SNew(SHorizontalBox)
|
|
.Visibility_Lambda(CredentialsBoxVisibility)
|
|
|
|
// user name input
|
|
+ SHorizontalBox::Slot()
|
|
.FillWidth(0.5f)
|
|
.Padding(4.0f, 0.0f, 0.0f, 0.0f)
|
|
[
|
|
SNew(SVerticalBox)
|
|
|
|
+ SVerticalBox::Slot()
|
|
.AutoHeight()
|
|
.HAlign(HAlign_Left)
|
|
[
|
|
SNew(STextBlock)
|
|
.Text(LOCTEXT("UserNameLabel", "User:"))
|
|
]
|
|
|
|
+ SVerticalBox::Slot()
|
|
.FillHeight(1.0f)
|
|
.Padding(0.0f, 4.0f, 0.0f, 0.0f)
|
|
[
|
|
SAssignNew(UserNameTextBox, SEditableTextBox)
|
|
]
|
|
]
|
|
|
|
// user password input
|
|
+ SHorizontalBox::Slot()
|
|
.FillWidth(0.5f)
|
|
.Padding(4.0f, 0.0f, 0.0f, 0.0f)
|
|
[
|
|
SNew(SVerticalBox)
|
|
|
|
+ SVerticalBox::Slot()
|
|
.AutoHeight()
|
|
.HAlign(HAlign_Left)
|
|
[
|
|
SNew(STextBlock)
|
|
.Text(LOCTEXT("UserPasswordLabel", "Password:"))
|
|
]
|
|
|
|
+ SVerticalBox::Slot()
|
|
.FillHeight(1.0f)
|
|
.Padding(0.0f, 4.0f, 0.0f, 0.0f)
|
|
[
|
|
SAssignNew(UserPasswordTextBox, SEditableTextBox)
|
|
.IsPassword(true)
|
|
]
|
|
]
|
|
]
|
|
];
|
|
}
|
|
|
|
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
|
|
|
|
bool SDeviceBrowserDefaultPlatformAddWidget::IsInputValid(const FString& InPlatformName)
|
|
{
|
|
FString TextCheck = DeviceNameTextBox->GetText().ToString();
|
|
TextCheck.TrimStartAndEndInline();
|
|
|
|
if (!TextCheck.IsEmpty())
|
|
{
|
|
ITargetPlatform* Platform = GetTargetPlatformManager()->FindTargetPlatform(*InPlatformName);
|
|
|
|
if (!Platform || Platform->RequiresUserCredentials() != EPlatformAuthentication::Always)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
// check user/password as well
|
|
TextCheck = UserNameTextBox->GetText().ToString();
|
|
TextCheck.TrimStartAndEndInline();
|
|
|
|
if (!TextCheck.IsEmpty())
|
|
{
|
|
// do not trim the password
|
|
return !UserPasswordTextBox->GetText().ToString().IsEmpty();
|
|
}
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
#undef LOCTEXT_NAMESPACE
|