using System.Collections;
using System.Collections.Generic;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
///
/// 报警记录面板
/// 显示系统报警历史记录,支持滚动查看
///
public class AlarmRecordPanel : BasePanel
{
[Header("滚动列表")]
public ScrollableListView AlarmListView; // 新的滚动列表组件
// public RectTransform ContentRoot; // 保留兼容性
// public GameObject RecordItemTemplate; // 预制体:包含Index, Priority, Reason, Time四个TMP文本
[Header("操作按钮")]
public Button HomeButton;
public Button BackButton;
public Button RefreshButton; // 刷新按钮
public Button ClearButton; // 清空记录按钮
[Header("状态显示")]
public TextMeshProUGUI StatusText; // 状态文本
public TextMeshProUGUI RecordCountText; // 记录数量文本
public override void Init()
{
InitializeUI();
Populate();
}
private void InitializeUI()
{
if (HomeButton != null)
HomeButton.onClick.AddListener(() =>
{
ReturnToHome();
});
if (BackButton != null)
BackButton.onClick.AddListener(() => ClosePanel());
if (RefreshButton != null)
RefreshButton.onClick.AddListener(OnRefreshClicked);
if (ClearButton != null)
ClearButton.onClick.AddListener(OnClearClicked);
SetStatus("正在加载报警记录...", true);
}
private void SetStatus(string message, bool isSuccess)
{
if (StatusText != null)
{
StatusText.text = message;
StatusText.color = isSuccess ? Color.green : Color.red;
}
}
private void UpdateRecordCount(int count)
{
if (RecordCountText != null)
{
RecordCountText.text = $"共 {count} 条记录";
}
}
private void OnRefreshClicked()
{
Populate();
SetStatus("记录已刷新", true);
}
private void OnClearClicked()
{
// 显示确认对话框
ConfirmDialog.ShowDeleteConfirm(
"所有报警记录",
() => ClearAllRecords(),
() => Debug.Log("取消清空记录")
);
}
private void ClearAllRecords()
{
// 优先使用DCSAlarmManager清空记录
if (DCSAlarmManager.Instance != null)
{
DCSAlarmManager.Instance.ClearAlarmRecords();
}
// 清空UI显示
if (AlarmListView != null)
{
AlarmListView.ClearItems();
}
UpdateRecordCount(0);
SetStatus("记录已清空", true);
}
private void Populate()
{
var list = DCSAlarmManager.Instance.GetAlarmRecords(1000);
if (list == null)
{
SetStatus("无报警记录", false);
UpdateRecordCount(0);
return;
}
// 优先使用新的ScrollableListView
if (AlarmListView != null)
{
PopulateWithScrollableList(list);
}
UpdateRecordCount(list.Count);
SetStatus($"成功加载 {list.Count} 条记录", true);
}
private void PopulateWithScrollableList(IReadOnlyList records)
{
AlarmListView.ClearItems();
for (int i = 0; i < records.Count; i++)
{
var evt = records[i];
var listItem = AlarmListView.AddItem(evt);
if (listItem != null)
{
var alarmItem = listItem.gameObject.GetComponent();
alarmItem.Initialize(evt, i + 1);
}
}
// 滚动到底部显示最新记录
AlarmListView.ScrollToBottom();
}
}