Files
UnrealEngineUWP/Engine/Source/Developer/ProjectLauncher/Private/Widgets/SProjectLauncherMessageListRow.h
Chris Gagnon 9ccd8c9ec4 Target Platform API added to provide more information about variants and variant support.
Device Services Refactoring to create the concept of a physical device.
Game launcher and device viewer UI changes to show these new concepts.
#codereview Max.Preussner, Matt.Kuhlenschmidt

[CL 2290918 by Chris Gagnon in Main branch]
2014-09-09 12:20:43 -04:00

102 lines
2.2 KiB
C++

// Copyright 1998-2014 Epic Games, Inc. All Rights Reserved.
#pragma once
#define LOCTEXT_NAMESPACE "SProjectLauncherMessageListRow"
struct FProjectLauncherMessage
{
FString Message;
ELogVerbosity::Type Verbosity;
FProjectLauncherMessage(const FString& NewMessage, ELogVerbosity::Type InVerbosity)
: Message(NewMessage)
, Verbosity(InVerbosity)
{ }
};
/**
* Implements a row widget for the launcher's task list.
*/
class SProjectLauncherMessageListRow
: public SMultiColumnTableRow<TSharedPtr<FProjectLauncherMessage>>
{
public:
SLATE_BEGIN_ARGS(SProjectLauncherMessageListRow) { }
SLATE_ARGUMENT(TSharedPtr<FProjectLauncherMessage>, Message)
SLATE_END_ARGS()
public:
/**
* Constructs the widget.
*
* @param InArgs The construction arguments.
* @param InDeviceProxyManager The device proxy manager to use.
*/
void Construct( const FArguments& InArgs, const TSharedRef<STableViewBase>& InOwnerTableView )
{
Message = InArgs._Message;
SMultiColumnTableRow<TSharedPtr<FProjectLauncherMessage>>::Construct(FSuperRowType::FArguments(), InOwnerTableView);
}
public:
/**
* Generates the widget for the specified column.
*
* @param ColumnName The name of the column to generate the widget for.
* @return The widget.
*/
BEGIN_SLATE_FUNCTION_BUILD_OPTIMIZATION
virtual TSharedRef<SWidget> GenerateWidgetForColumn( const FName& ColumnName ) override
{
if (ColumnName == "Status")
{
return SNew(SBox)
.Padding(FMargin(4.0, 0.0))
.VAlign((VAlign_Center))
[
SNew(STextBlock)
.ColorAndOpacity(HandleGetTextColor())
.Text(Message->Message)
];
}
return SNullWidget::NullWidget;
}
END_SLATE_FUNCTION_BUILD_OPTIMIZATION
private:
// Callback for getting the task's status text.
FSlateColor HandleGetTextColor( ) const
{
if ((Message->Verbosity == ELogVerbosity::Error) ||
(Message->Verbosity == ELogVerbosity::Fatal))
{
return FLinearColor::Red;
}
else if (Message->Verbosity == ELogVerbosity::Warning)
{
return FLinearColor::Yellow;
}
else
{
return FSlateColor::UseForeground();
}
}
private:
// Holds a pointer to the task that is displayed in this row.
TSharedPtr<FProjectLauncherMessage> Message;
};
#undef LOCTEXT_NAMESPACE