91 lines
2.8 KiB
C#
91 lines
2.8 KiB
C#
using UnityEngine;
|
|
using XRLib.UI;
|
|
using TMPro;
|
|
using UnityEngine.UI;
|
|
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
|
|
namespace XED
|
|
{
|
|
public class Panel_MQTTConnectModal : PanelBase
|
|
{
|
|
private TextMeshProUGUI Text_Domain;
|
|
private TextMeshProUGUI Text_Port;
|
|
private RectTransform TopicContent;
|
|
|
|
private Button Button_AddTopic;
|
|
private Button Button_Save;
|
|
|
|
private UI_DataBindingItem prf_mqttTopicItem;
|
|
private List<UI_DataBindingItem> topicItems = new List<UI_DataBindingItem>();
|
|
private UI_DataBindingItem selectedTopicItem;
|
|
|
|
public MQTTData loadMQTTData;
|
|
public Action<string> onClickFilterButton;
|
|
public Action<SaveMQTTData> onSaveMQTTData;
|
|
|
|
private void TestDataConnected()
|
|
{
|
|
var mqttJson = Resources.Load<TextAsset>("MQTTData").text;
|
|
loadMQTTData = JsonConvert.DeserializeObject<MQTTData>(mqttJson);
|
|
}
|
|
public override void AfterAwake()
|
|
{
|
|
TestDataConnected();
|
|
prf_mqttTopicItem = Resources.Load<UI_DataBindingItem>("Prefabs/UI/PRF_DataBindingItemItem");
|
|
|
|
Text_Domain.SetText(loadMQTTData.domain);
|
|
Text_Port.SetText(loadMQTTData.port);
|
|
|
|
Button_AddTopic.onClick.AddListener(AddTopicItem);
|
|
Button_Save.onClick.AddListener(Save);
|
|
}
|
|
|
|
private void OnClickFilterButton(UI_DataBindingItem item)
|
|
{
|
|
selectedTopicItem = item;
|
|
var itemName = item.GetTopicName();
|
|
onClickFilterButton?.Invoke(itemName);
|
|
}
|
|
|
|
private void AddTopicItem()
|
|
{
|
|
var item = Instantiate(prf_mqttTopicItem, TopicContent);
|
|
item.onRemove += RemoveTopicItem;
|
|
item.onFilter += OnClickFilterButton;
|
|
topicItems.Add(item);
|
|
}
|
|
private void RemoveTopicItem(UI_DataBindingItem item)
|
|
{
|
|
topicItems.Remove(item);
|
|
Destroy(item.gameObject);
|
|
}
|
|
private void Save()
|
|
{
|
|
var saveData = GetMQTTData();
|
|
onSaveMQTTData?.Invoke(saveData);
|
|
}
|
|
public void SetFilterData(SaveFilterData filterData)
|
|
{
|
|
if (selectedTopicItem == null)
|
|
return;
|
|
|
|
selectedTopicItem.SetFilterData(filterData);
|
|
selectedTopicItem.SetChangedInputFieldTopicName();
|
|
}
|
|
|
|
private SaveMQTTData GetMQTTData()
|
|
{
|
|
SaveMQTTData saveMQTTData = new SaveMQTTData();
|
|
saveMQTTData.domain = Text_Domain.text;
|
|
saveMQTTData.port = Text_Port.text;
|
|
foreach (var topicItem in topicItems)
|
|
{
|
|
saveMQTTData.saveFilterData.Add(topicItem.GetFilterData());
|
|
}
|
|
return saveMQTTData;
|
|
}
|
|
}
|
|
}
|