Files
Studio/Assets/Scripts/Studio/UI/Panel/Panel_MQTTSetting.cs

89 lines
2.8 KiB
C#

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using XRLib.UI;
using System;
using Studio.Util;
namespace Studio.UI
{
public class Panel_MQTTSetting : PanelBase
{
private RectTransform Content;
private Button Button_AddMQTTConnectionItem;
private RectTransform AddMQTTConnection;
private UI_MQTTConnection prf_MQTTConnectionItem;
private List<UI_MQTTConnection> mqttConnectionItems = new List<UI_MQTTConnection>();
public Action onClose;
public Button Button_Close;
public void Active(bool isActive)
{
gameObject.SetActive(isActive);
if (!isActive)
{
onClose?.Invoke();
}
}
public override void AfterAwake()
{
prf_MQTTConnectionItem = Resources.Load<UI_MQTTConnection>("Prefabs/UI/PRF_MQTTConnectionItem");
Button_AddMQTTConnectionItem.onClick.AddListener(OnClickAddAPIConnectionItemButton);
mqttConnectionItems.Clear();
Button_Close.onClick.AddListener(() => Active(false));
}
private void OnClickAddAPIConnectionItemButton()
{
var item = Instantiate(prf_MQTTConnectionItem, Content);
item.onRemoveMQTTConnectionItem += RemoveMQTTConnectionItem;
AddMQTTConnectionItem(item);
AddMQTTConnection.transform.SetAsLastSibling();
}
private void AddMQTTConnectionItem(UI_MQTTConnection item)
{
mqttConnectionItems.Add(item);
}
private void RemoveMQTTConnectionItem(UI_MQTTConnection item)
{
mqttConnectionItems.Remove(item);
Destroy(item.gameObject);
}
public MQTTSetting GetMQTTSetting()
{
var mqttSetting = new MQTTSetting();
foreach(var item in mqttConnectionItems)
{
var mqttConnection = item.GetMQTTConnection();
mqttSetting.mqttConnections.Add(mqttConnection);
}
return mqttSetting;
}
public void SetMQTTSetting(MQTTSetting mqttSetting)
{
foreach(var item in mqttConnectionItems)
{
Destroy(item.gameObject);
}
mqttConnectionItems.Clear();
if (mqttSetting == null)
return;
foreach (var mqttConnection in mqttSetting.mqttConnections)
{
var item = Instantiate(prf_MQTTConnectionItem, Content);
item.onRemoveMQTTConnectionItem += RemoveMQTTConnectionItem;
item.SetMQTTConnection(mqttConnection);
AddMQTTConnectionItem(item);
Button_AddMQTTConnectionItem.transform.SetAsLastSibling();
}
}
}
}