You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
142 lines
4.0 KiB
142 lines
4.0 KiB
using SuperScrollView; |
|
using UnityEngine; |
|
using UnityEngine.UI; |
|
using UniRx; |
|
|
|
public class XLogUIView : UIView |
|
{ |
|
public LoopListView2 XLogLoopListView; |
|
public Toggle Log; |
|
public Text LogsText; |
|
public Toggle Warning; |
|
public Text WarningsText; |
|
public Toggle Error; |
|
public Text ErrorsText; |
|
public Button ClearButton; |
|
public Button CloseButton; |
|
|
|
bool isOtherColor = false; |
|
private XLogPresenter presenter; |
|
|
|
public override UIViewType ViewType |
|
{ |
|
get |
|
{ |
|
return UIViewType.Normal; |
|
} |
|
} |
|
|
|
private void Awake() |
|
{ |
|
// 初始化ScrollView |
|
XLogLoopListView.InitListView(0, OnGetItemByIndex); |
|
// 关闭按钮 |
|
CloseButton.OnClickAsObservable() |
|
.Subscribe(x => Hide()) |
|
.AddTo(this); |
|
// 清空按钮 |
|
ClearButton.OnClickAsObservable() |
|
.Subscribe(x => |
|
{ |
|
presenter.ClearLogs(); |
|
XLogLoopListView.RefreshAllShownItem(); |
|
}) |
|
.AddTo(this); |
|
// Log筛选 |
|
Log.OnValueChangedAsObservable() |
|
.Subscribe(x => |
|
{ |
|
presenter.ShowLog(x); |
|
//XLogLoopListView.RefreshAllShownItem(); |
|
}) |
|
.AddTo(this); |
|
// 警告筛选 |
|
Warning.OnValueChangedAsObservable() |
|
.Subscribe(x => |
|
{ |
|
presenter.ShowWarning(x); |
|
//XLogLoopListView.RefreshAllShownItem(); |
|
}) |
|
.AddTo(this); |
|
// 错误筛选 |
|
Error.OnValueChangedAsObservable() |
|
.Subscribe(x => |
|
{ |
|
presenter.ShowError(x); |
|
//XLogLoopListView.RefreshAllShownItem(); |
|
}) |
|
.AddTo(this); |
|
// 刷新数量 |
|
presenter.ShowLogs |
|
.ObserveCountChanged() |
|
.Subscribe(x => XLogLoopListView.SetListItemCount(x, false)) |
|
.AddTo(this); |
|
// Log数量 |
|
presenter.LogsCount |
|
.SubscribeToText(LogsText) |
|
.AddTo(this); |
|
// 警告数量 |
|
presenter.WarningsCount |
|
.SubscribeToText(WarningsText) |
|
.AddTo(this); |
|
// 错误数量 |
|
presenter.ErrorsCount |
|
.SubscribeToText(ErrorsText) |
|
.AddTo(this); |
|
} |
|
public void SetPresenter(XLogPresenter p) |
|
{ |
|
presenter = p; |
|
} |
|
private LoopListViewItem2 OnGetItemByIndex(LoopListView2 listView, int index) |
|
{ |
|
if (presenter.ShowLogs.Count == 0) |
|
{ |
|
return null; |
|
} |
|
//创建Item |
|
LoopListViewItem2 item = listView.NewListViewItem("XLogItem"); |
|
//获取数据 |
|
XLog itemData = presenter.ShowLogs[index]; |
|
////设置是否可见 |
|
//RectTransform rt = item.gameObject.GetComponent<RectTransform>(); |
|
//if (itemData.IsShow) |
|
//{ |
|
// item.gameObject.SetActive(true); |
|
// rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 40f); |
|
|
|
//获取子页面 |
|
XLogItem itemScript = item.GetComponent<XLogItem>(); |
|
//初始化子页面 |
|
if (item.IsInitHandlerCalled == false) |
|
{ |
|
item.IsInitHandlerCalled = true; |
|
itemScript.Init(); |
|
} |
|
//设置Item颜色 |
|
isOtherColor = !isOtherColor; |
|
if (isOtherColor) |
|
{ |
|
itemScript.Background.color = new Color32(200, 200, 200, 255); |
|
} |
|
else |
|
{ |
|
itemScript.Background.color = new Color32(255, 255, 255, 255); |
|
} |
|
//设置子页面数据 |
|
itemScript.SetItemData(itemData, index); |
|
//} |
|
//else |
|
//{ |
|
// rt.SetSizeWithCurrentAnchors(RectTransform.Axis.Vertical, 0f); |
|
// item.gameObject.SetActive(false); |
|
//} |
|
return item; |
|
} |
|
public override void Refresh() |
|
{ |
|
base.Refresh(); |
|
XLogLoopListView.SetListItemCount(presenter.ShowLogs.Count); |
|
} |
|
} |
|
|
|
|