131 lines
3.8 KiB
C#
131 lines
3.8 KiB
C#
using Newtonsoft.Json;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using XRLib.UI;
|
|
|
|
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");
|
|
|
|
SetURLText();
|
|
|
|
Button_AddTopic.onClick.AddListener(AddTopicItem);
|
|
Button_Save.onClick.AddListener(Save);
|
|
}
|
|
|
|
//app_config
|
|
/// <summary>
|
|
/// 설정한 데이터값 가져와 적용
|
|
/// </summary>
|
|
private void ConnectedData()
|
|
{
|
|
//string path = Path.Combine(Application.streamingAssetsPath, "app_config.json");
|
|
//string json = System.IO.File.ReadAllText(path);
|
|
//loadMQTTData = JsonUtility.FromJson<MQTTData>(json);
|
|
|
|
SetURLText();
|
|
}
|
|
/// <summary>
|
|
/// 도메인 PORT 설정
|
|
/// </summary>
|
|
private void SetURLText()
|
|
{
|
|
Text_Domain.SetText(loadMQTTData.domain);
|
|
Text_Port.SetText(loadMQTTData.port);
|
|
}
|
|
private void OnClickFilterButton(UI_DataBindingItem item)
|
|
{
|
|
selectedTopicItem = item;
|
|
var itemName = item.GetTopicName();
|
|
onClickFilterButton?.Invoke(itemName);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 토픽 아이템 추가
|
|
/// </summary>
|
|
private void AddTopicItem()
|
|
{
|
|
var item = Instantiate(prf_mqttTopicItem, TopicContent);
|
|
item.onRemove += RemoveTopicItem;
|
|
item.onFilter += OnClickFilterButton;
|
|
topicItems.Add(item);
|
|
}
|
|
/// <summary>
|
|
/// TopicItem 제거
|
|
/// </summary>
|
|
/// <param name="item"></param>
|
|
private void RemoveTopicItem(UI_DataBindingItem item)
|
|
{
|
|
topicItems.Remove(item);
|
|
Destroy(item.gameObject);
|
|
}
|
|
|
|
/// <summary>
|
|
/// MQTT 데이터 추가
|
|
/// </summary>
|
|
private void Save()
|
|
{
|
|
var saveData = GetMQTTData();
|
|
onSaveMQTTData?.Invoke(saveData);
|
|
}
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
/// <param name="filterData"></param>
|
|
public void SetFilterData(SaveFilterData filterData)
|
|
{
|
|
if (selectedTopicItem == null)
|
|
return;
|
|
|
|
selectedTopicItem.SetFilterData(filterData);
|
|
selectedTopicItem.SetChangedInputFieldTopicName();
|
|
}
|
|
|
|
/// <summary>
|
|
/// MQTTData 가져오기
|
|
/// </summary>
|
|
/// <returns></returns>
|
|
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;
|
|
}
|
|
}
|
|
}
|