167 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			167 lines
		
	
	
		
			6.0 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
// Tencent is pleased to support the open source community by making UnLua available.
 | 
						|
// 
 | 
						|
// Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
 | 
						|
//
 | 
						|
// Licensed under the MIT License (the "License"); 
 | 
						|
// you may not use this file except in compliance with the License. You may obtain a copy of the License at
 | 
						|
//
 | 
						|
// http://opensource.org/licenses/MIT
 | 
						|
//
 | 
						|
// Unless required by applicable law or agreed to in writing, 
 | 
						|
// software distributed under the License is distributed on an "AS IS" BASIS, 
 | 
						|
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 
 | 
						|
// See the License for the specific language governing permissions and limitations under the License.
 | 
						|
 | 
						|
#include "UnLuaAboutScreen.h"
 | 
						|
#include "Misc/EngineVersionComparison.h"
 | 
						|
#include "Widgets/SBoxPanel.h"
 | 
						|
#include "Widgets/SOverlay.h"
 | 
						|
#include "Widgets/SWindow.h"
 | 
						|
#include "Framework/Application/SlateApplication.h"
 | 
						|
#include "Widgets/Layout/SSpacer.h"
 | 
						|
#include "Widgets/Images/SImage.h"
 | 
						|
#include "Widgets/Text/STextBlock.h"
 | 
						|
#include "Widgets/Input/SEditableText.h"
 | 
						|
#include "Widgets/Input/SButton.h"
 | 
						|
#include "Widgets/Views/STableViewBase.h"
 | 
						|
#include "Widgets/Views/STableRow.h"
 | 
						|
#include "Widgets/Views/SListView.h"
 | 
						|
#include "Styling/CoreStyle.h"
 | 
						|
#include "EditorStyleSet.h"
 | 
						|
#include "UnLuaEditorFunctionLibrary.h"
 | 
						|
#include "UnLuaEditorStyle.h"
 | 
						|
 | 
						|
#define LOCTEXT_NAMESPACE "UnLuaAboutScreen"
 | 
						|
 | 
						|
void SUnLuaAboutScreen::Construct(const FArguments& InArgs)
 | 
						|
{
 | 
						|
#ifdef _MSC_VER
 | 
						|
#pragma warning(push)
 | 
						|
#pragma warning(disable : 4428)	// universal-character-name encountered in source
 | 
						|
#endif
 | 
						|
    AboutLines.Add(MakeShareable(new FLineDefinition(LOCTEXT("Copyright1", "https://github.com/Tencent/UnLua"), 8, FLinearColor(1.f, 1.f, 1.f), FMargin(0.f))));
 | 
						|
    AboutLines.Add(MakeShareable(new FLineDefinition(LOCTEXT("Copyright2", "Tencent is pleased to support the open source community by making UnLua available."), 8, FLinearColor(1.f, 1.f, 1.f), FMargin(0.0f, 8.0f))));
 | 
						|
    AboutLines.Add(MakeShareable(new FLineDefinition(LOCTEXT("Copyright3", "Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved."), 8, FLinearColor(1.f, 1.f, 1.f), FMargin(0.0f, 2.0f))));
 | 
						|
#ifdef _MSC_VER
 | 
						|
#pragma warning(pop)
 | 
						|
#endif
 | 
						|
 | 
						|
    FText Version = FText::Format(LOCTEXT("VersionLabel", "Version: {0}"), FText::FromString(UUnLuaEditorFunctionLibrary::GetCurrentVersion()));
 | 
						|
 | 
						|
    ChildSlot
 | 
						|
    [
 | 
						|
        SNew(SOverlay)
 | 
						|
        + SOverlay::Slot()
 | 
						|
        [
 | 
						|
            SNew(SVerticalBox)
 | 
						|
            + SVerticalBox::Slot()
 | 
						|
            .AutoHeight()
 | 
						|
            [
 | 
						|
                SNew(SHorizontalBox)
 | 
						|
                + SHorizontalBox::Slot()
 | 
						|
                  .AutoWidth()
 | 
						|
                  .VAlign(VAlign_Top)
 | 
						|
                  .Padding(FMargin(10.f, 10.f, 0.f, 0.f))
 | 
						|
                [
 | 
						|
                    SAssignNew(LogoButton, SButton)
 | 
						|
#if UE_VERSION_OLDER_THAN(5, 1, 0)
 | 
						|
                    .ButtonStyle(FEditorStyle::Get(), "NoBorder")
 | 
						|
#else
 | 
						|
                    .ButtonStyle(FAppStyle::Get(), "NoBorder")
 | 
						|
#endif
 | 
						|
                    .OnClicked(this, &SUnLuaAboutScreen::OnLogoButtonClicked)
 | 
						|
                    [
 | 
						|
                        SNew(SImage).Image(FUnLuaEditorStyle::GetInstance()->GetBrush("UnLuaEditor.UnLuaLogo"))
 | 
						|
                    ]
 | 
						|
                ]
 | 
						|
                + SHorizontalBox::Slot()
 | 
						|
                  .AutoWidth()
 | 
						|
                  .VAlign(VAlign_Top)
 | 
						|
                  .Padding(FMargin(10.f, 10.f, 0.f, 0.f))
 | 
						|
                + SHorizontalBox::Slot()
 | 
						|
                  .FillWidth(1.f)
 | 
						|
                  .HAlign(HAlign_Right)
 | 
						|
                  .Padding(FMargin(0.f, 52.f, 7.f, 0.f))
 | 
						|
                [
 | 
						|
                    SNew(SEditableText)
 | 
						|
						.ColorAndOpacity(FLinearColor(0.7f, 0.7f, 0.7f))
 | 
						|
						.IsReadOnly(true)
 | 
						|
						.Text(Version)
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
            + SVerticalBox::Slot()
 | 
						|
              .Padding(FMargin(5.f, 5.f, 5.f, 5.f))
 | 
						|
              .VAlign(VAlign_Top)
 | 
						|
            [
 | 
						|
                SNew(SListView<TSharedRef<FLineDefinition>>)
 | 
						|
					.ListItemsSource(&AboutLines)
 | 
						|
					.OnGenerateRow(this, &SUnLuaAboutScreen::MakeAboutTextItemWidget)
 | 
						|
					.SelectionMode(ESelectionMode::None)
 | 
						|
            ]
 | 
						|
            + SVerticalBox::Slot()
 | 
						|
            .AutoHeight()
 | 
						|
            [
 | 
						|
                SNew(SHorizontalBox)
 | 
						|
                + SHorizontalBox::Slot()
 | 
						|
                  .HAlign(HAlign_Left)
 | 
						|
                  .Padding(FMargin(5.f, 0.f, 5.f, 5.f))
 | 
						|
                + SHorizontalBox::Slot()
 | 
						|
                  .AutoWidth()
 | 
						|
                  .HAlign(HAlign_Right)
 | 
						|
                  .VAlign(VAlign_Bottom)
 | 
						|
                  .Padding(FMargin(5.f, 0.f, 5.f, 5.f))
 | 
						|
                [
 | 
						|
                    SNew(SButton)
 | 
						|
						.HAlign(HAlign_Center)
 | 
						|
						.VAlign(VAlign_Center)
 | 
						|
						.Text(LOCTEXT("Close", "Close"))
 | 
						|
						.ButtonColorAndOpacity(FLinearColor(0.6f, 0.6f, 0.6f))
 | 
						|
						.OnClicked(this, &SUnLuaAboutScreen::OnClose)
 | 
						|
                ]
 | 
						|
            ]
 | 
						|
        ]
 | 
						|
    ];
 | 
						|
}
 | 
						|
 | 
						|
TSharedRef<ITableRow> SUnLuaAboutScreen::MakeAboutTextItemWidget(TSharedRef<FLineDefinition> Item, const TSharedRef<STableViewBase>& OwnerTable)
 | 
						|
{
 | 
						|
    if (Item->Text.IsEmpty())
 | 
						|
    {
 | 
						|
        return
 | 
						|
            SNew(STableRow< TSharedPtr<FString> >, OwnerTable)
 | 
						|
            .Padding(6.0f)
 | 
						|
            [
 | 
						|
                SNew(SSpacer)
 | 
						|
            ];
 | 
						|
    }
 | 
						|
    else
 | 
						|
    {
 | 
						|
        return
 | 
						|
            SNew(STableRow< TSharedPtr<FString> >, OwnerTable)
 | 
						|
            .Padding(Item->Margin)
 | 
						|
            [
 | 
						|
                SNew(STextBlock)
 | 
						|
				.ColorAndOpacity(Item->TextColor)
 | 
						|
				.Font(FCoreStyle::GetDefaultFontStyle("Regular", Item->FontSize))
 | 
						|
				.Text(Item->Text)
 | 
						|
            ];
 | 
						|
    }
 | 
						|
}
 | 
						|
 | 
						|
FReply SUnLuaAboutScreen::OnLogoButtonClicked()
 | 
						|
{
 | 
						|
    const TCHAR* URL = TEXT("cmd");
 | 
						|
    const TCHAR* Params = TEXT("/k start https://github.com/Tencent/UnLua");
 | 
						|
    FPlatformProcess::ExecProcess(URL, Params, nullptr, nullptr, nullptr);
 | 
						|
    return FReply::Handled();
 | 
						|
}
 | 
						|
 | 
						|
FReply SUnLuaAboutScreen::OnClose()
 | 
						|
{
 | 
						|
    TSharedRef<SWindow> ParentWindow = FSlateApplication::Get().FindWidgetWindow(AsShared()).ToSharedRef();
 | 
						|
    FSlateApplication::Get().RequestDestroyWindow(ParentWindow);
 | 
						|
    return FReply::Handled();
 | 
						|
}
 | 
						|
 | 
						|
#undef LOCTEXT_NAMESPACE
 |