- LocalizationManager: 新增翻译表(SetFormatted/SetDuration/LocalizeOperateMsg) - LoginPanel: InputField placeholder本地化、字体颜色保持 - HistoryPanel: 用时数据本地化、placeholder本地化 - RecordDetailPanel: 操作详情消息本地化(LanguageChanged重建) - AppraiseWindowBase: 评价等级本地化、操作消息重建 - EditorAppraiser: 所有评估消息改用InjectOperateMsgLocalized - StudentOperateRecorder: 新增InjectOperateMsgLocalized方法 - LocalizationLanguageTestBar: 单例模式、ScreenSpaceOverlay筛选 - 字体切换时保留颜色和verticalOverflow
254 lines
7.3 KiB
C#
254 lines
7.3 KiB
C#
using System.Collections;
|
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using XFramework.Objects;
|
|
/// <summary>
|
|
/// 可翻页显示的数据展示框
|
|
/// </summary>
|
|
public class EnquireConntentCtrl : MonoBasePanel {
|
|
public GameObject showMessPrefab;
|
|
List<GameObject> showPool = new List<GameObject>();//当前显示或隐藏的所有子物体
|
|
int Page = 1;//默认显示第一页
|
|
List< User> userMsg = new List<User>();//数据库中所有的用户数据
|
|
List<RecordClassDemo> recordClasses = new List<RecordClassDemo>();//数据库中查询到的所有记录信息
|
|
int allPage;//总页数
|
|
public int onePageCount=10;//单页显示的数量
|
|
public MessType messType = MessType.result;
|
|
public UserType userType = UserType.Teacher;
|
|
public Sprite iconSprite;
|
|
Text showPage;
|
|
// Use this for initialization
|
|
protected override void Start()
|
|
{
|
|
base.Start();
|
|
if (messType == MessType.user)
|
|
{
|
|
EventCenter.Instance.AddEventListener<User>("ChangeUser", ChangeUser);
|
|
EventCenter.Instance.AddEventListener<User>("AddUser", AddNewMess);
|
|
}
|
|
}
|
|
|
|
protected override void InitComponent()
|
|
{
|
|
Debug.Log("conntent ui Init ");
|
|
this.transform.parent.Find("Button_nextPage").GetComponent<Button>().onClick.AddListener(NextPage);
|
|
this.transform.parent.Find("Button_lastPage").GetComponent<Button>().onClick.AddListener(LastPage);
|
|
showPage = this.transform.parent.Find("Text_page").GetComponent<Text>();
|
|
}
|
|
|
|
//显示一页数据
|
|
void ShowOnePageMessage(int pageNumber)
|
|
{
|
|
HideAllMessage();
|
|
ActiveMessagePage(Page, allPage);
|
|
int maxIndex;//计算当前页数 数据的开始索引
|
|
switch (messType)
|
|
{
|
|
//case MessType.result:
|
|
// maxIndex = pageNumber * onePageCount > recordClasses.Count ? recordClasses.Count : pageNumber * onePageCount;
|
|
// for (int i = (pageNumber - 1) * onePageCount; i < maxIndex; i++)
|
|
// {
|
|
// CreatShowMessageGO().GetComponent<MessagePrefabCtrl>().SetMessage(recordClasses[i]);
|
|
// }
|
|
// break;
|
|
case MessType.user:
|
|
maxIndex = pageNumber * onePageCount > userMsg.Count ? userMsg.Count : pageNumber * onePageCount;
|
|
for (int i = (pageNumber - 1) * onePageCount; i < maxIndex; i++)
|
|
{
|
|
CreatShowMessageGO().GetComponent<MessagePrefabCtrl>().SetMessage(userMsg[i], iconSprite);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// 翻页
|
|
/// </summary>
|
|
/// <param name="turn"></param>
|
|
/// <returns>当前页码</returns>
|
|
int TurnPage(TurnPageType turn)
|
|
{
|
|
int allMess = 0;
|
|
switch (messType)
|
|
{
|
|
case MessType.result:
|
|
allMess = recordClasses.Count;
|
|
break;
|
|
case MessType.user:
|
|
allMess = userMsg.Count;
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
switch (turn)
|
|
{
|
|
case TurnPageType.Up:
|
|
if (Page > 1)
|
|
{
|
|
Page -= 1;
|
|
ShowOnePageMessage(Page);
|
|
}
|
|
break;
|
|
case TurnPageType.Down:
|
|
if (Page*onePageCount < allMess)
|
|
{
|
|
Page += 1;
|
|
ShowOnePageMessage(Page);
|
|
}
|
|
break;
|
|
default:
|
|
break;
|
|
}
|
|
return Page;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 显示查找到的结果数据
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
public void ShowEnquireMess(RecordClassDemo[] message)
|
|
{
|
|
InitPanel();
|
|
HideAllMessage();
|
|
recordClasses.Clear();
|
|
for (int i = 0; i < message.Length; i++)
|
|
{
|
|
recordClasses.Add(message[i]);
|
|
}
|
|
allPage = recordClasses.Count / onePageCount;
|
|
if (recordClasses.Count % onePageCount > 0)
|
|
{
|
|
allPage += 1;
|
|
}
|
|
ShowOnePageMessage(1);
|
|
// return allPage;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 显示查找到的学员数据
|
|
/// </summary>
|
|
/// <param name="message"></param>
|
|
public int ShowEnquireMess(User[] message)
|
|
{
|
|
InitPanel();
|
|
HideAllMessage();
|
|
userMsg.Clear();
|
|
if (message.Length == 0) return 0;
|
|
for (int i = 0; i < message.Length; i++)
|
|
{
|
|
userMsg.Add(message[i]);
|
|
}
|
|
allPage = userMsg.Count / onePageCount;
|
|
if (userMsg.Count % onePageCount > 0)
|
|
{
|
|
allPage += 1;
|
|
}
|
|
ShowOnePageMessage(1);
|
|
return allPage;
|
|
}
|
|
|
|
//修改一个用户
|
|
void ChangeUser(User newUser)
|
|
{
|
|
for (int i = 0; i < userMsg.Count; i++)
|
|
{
|
|
if (userMsg[i].user == newUser.user)
|
|
userMsg[i] = newUser;
|
|
}
|
|
}
|
|
|
|
//新增一个用户
|
|
void AddNewMess(User newUser)
|
|
{
|
|
if (newUser.userType != userType) return;
|
|
userMsg.Add(newUser);
|
|
allPage = userMsg.Count / onePageCount;
|
|
if (userMsg.Count % onePageCount > 0)
|
|
{
|
|
allPage += 1;
|
|
}
|
|
ShowOnePageMessage(Page);
|
|
}
|
|
|
|
//删除一条用户数据
|
|
public void DeleteOneStMessage(string number,GameObject go)
|
|
{
|
|
for (int i = 0; i < userMsg.Count; i++)
|
|
{
|
|
if (userMsg[i].user == number)
|
|
userMsg.RemoveAt(i);
|
|
}
|
|
ObjectPool.Instance.Destroy(go);
|
|
showPool.Remove(go);
|
|
}
|
|
|
|
//删除一条记录数据
|
|
public void DeleteOneRecordMessage(string date, GameObject go)
|
|
{
|
|
for (int i = 0; i < recordClasses.Count; i++)
|
|
{
|
|
if (recordClasses[i].msg == date)
|
|
recordClasses.RemoveAt(i);
|
|
}
|
|
ObjectPool.Instance.Destroy(go);
|
|
showPool.Remove(go);
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// 隐藏所有信息
|
|
/// </summary>
|
|
void HideAllMessage()
|
|
{
|
|
for (int i = 0; i < showPool.Count; i++)
|
|
{
|
|
showPool[i].SetActive(false);
|
|
}
|
|
ActiveMessagePage(0, 0);
|
|
}
|
|
|
|
void NextPage()
|
|
{
|
|
TurnPage(TurnPageType.Down);
|
|
}
|
|
|
|
void LastPage()
|
|
{
|
|
TurnPage(TurnPageType.Up);
|
|
}
|
|
|
|
void ActiveMessagePage(int currentPage, int AllPage)
|
|
{
|
|
if (showPage==null) return;
|
|
LocalizationManager.SetFormatted(showPage, "第{0}页/共{1}页", currentPage, AllPage);
|
|
}
|
|
|
|
//翻页时 或刷新界面时从showPool中获取一个不用的子物体
|
|
private GameObject CreatShowMessageGO()
|
|
{
|
|
GameObject returnGO = null;
|
|
for (int i = 0; i < showPool.Count; i++)
|
|
{
|
|
if (!showPool[i].gameObject.activeSelf)
|
|
{
|
|
returnGO = showPool[i];
|
|
returnGO.SetActive(true);
|
|
return returnGO;
|
|
}
|
|
}
|
|
returnGO = ObjectPool.Instance.Instantiate(showMessPrefab);
|
|
returnGO.transform.SetParent(this.transform);
|
|
returnGO.transform.localScale = Vector3.one;
|
|
showPool.Add(returnGO);
|
|
return returnGO;
|
|
}
|
|
|
|
void OnDisable()
|
|
{
|
|
HideAllMessage();
|
|
}
|
|
}
|