97 lines
2.7 KiB
C#
97 lines
2.7 KiB
C#
|
using System;
|
||
|
using JetBrains.Annotations;
|
||
|
using Unity.Cloud.Collaborate.Assets;
|
||
|
using Unity.Cloud.Collaborate.Components;
|
||
|
using Unity.Cloud.Collaborate.Presenters;
|
||
|
using Unity.Cloud.Collaborate.UserInterface;
|
||
|
using UnityEditor;
|
||
|
using UnityEngine.UIElements;
|
||
|
|
||
|
namespace Unity.Cloud.Collaborate.Views
|
||
|
{
|
||
|
internal class StartPageView : PageComponent, IStartView
|
||
|
{
|
||
|
public const string UssClassName = "start-page-view";
|
||
|
public const string UssTitleClassName = UssClassName + "__title";
|
||
|
public const string UssButtonClassName = UssClassName + "__button";
|
||
|
|
||
|
static readonly string k_LayoutPath = $"{CollaborateWindow.LayoutPath}/{nameof(StartPageView)}.uxml";
|
||
|
static readonly string k_StylePath = $"{CollaborateWindow.StylePath}/{nameof(StartPageView)}.uss";
|
||
|
|
||
|
IStartPresenter m_Presenter;
|
||
|
|
||
|
readonly Label m_Text;
|
||
|
readonly Button m_Button;
|
||
|
|
||
|
public StartPageView()
|
||
|
{
|
||
|
AddToClassList(UssClassName);
|
||
|
AssetDatabase.LoadAssetAtPath<VisualTreeAsset>(k_LayoutPath).CloneTree(this);
|
||
|
styleSheets.Add(AssetDatabase.LoadAssetAtPath<StyleSheet>(k_StylePath));
|
||
|
|
||
|
m_Text = this.Q<Label>(className: UssTitleClassName);
|
||
|
m_Button = this.Q<Button>(className: UssButtonClassName);
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public IStartPresenter Presenter
|
||
|
{
|
||
|
set
|
||
|
{
|
||
|
m_Presenter = value;
|
||
|
SetupEvents();
|
||
|
// If page active before presenter has been added, call start once we have it.
|
||
|
if (Active)
|
||
|
{
|
||
|
m_Presenter.Start();
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
protected override void SetActive()
|
||
|
{
|
||
|
m_Presenter?.Start();
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
protected override void SetInactive()
|
||
|
{
|
||
|
m_Presenter?.Stop();
|
||
|
}
|
||
|
|
||
|
void SetupEvents()
|
||
|
{
|
||
|
m_Button.clickable.clicked += m_Presenter.RequestStart;
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public string Text
|
||
|
{
|
||
|
set => m_Text.text = value;
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public string ButtonText
|
||
|
{
|
||
|
set => m_Button.text = value;
|
||
|
}
|
||
|
|
||
|
/// <inheritdoc />
|
||
|
public void SetButtonVisible(bool isVisible)
|
||
|
{
|
||
|
if (isVisible)
|
||
|
{
|
||
|
m_Button.RemoveFromClassList(UiConstants.ussHidden);
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
m_Button.AddToClassList(UiConstants.ussHidden);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
[UsedImplicitly]
|
||
|
public new class UxmlFactory : UxmlFactory<StartPageView> { }
|
||
|
}
|
||
|
}
|