“虞渠成” 36e8055c26 feat: 添加自动锁定功能与配置页面
1.  新增自动锁定相关数据存储与逻辑,支持配置锁定间隔
2.  添加个人页安全设置入口与自动锁定设置页面
3.  重构主页自动锁定检测逻辑,替换原有临时计时变量
4.  更新多语言文案与项目版本号
2026-09-17 08:41:18 +08:00

134 lines
5.3 KiB
C#

using System.Collections;
using System.Collections.Generic;
using System.Threading.Tasks;
using Kill.Managers;
using Kill.Network;
using Kill.UI.Components;
using UnityEngine;
using UnityEngine.UI;
namespace Kill.UI.Pages
{
public class SelfPage : MonoBehaviour
{
public Button backButton;
public Button showQrCodeButton;
public Button showInfoButton;
public SelfInfoPage selfInfoPagePrefab;
public Button safetyTestButton;
public ChangeLanguagePage changeLanguagePagePrefab;
public Button languageSettingButton;
public Image avatarImage;
public Text nicknameText;
public Text emailText;
UserInfo userInfo;
public ShowImageText safeHighlightPagePrefab;
public ShowImageText statusPagePrefab;
public GameObject safetySettingPage;
public Button safetySettingButton;
async Task Start()
{
UIManager.Instance.RegisterBackAction(OnBack);
backButton.onClick.RemoveAllListeners();
backButton.onClick.AddListener(OnBack);
showQrCodeButton.onClick.RemoveAllListeners();
showQrCodeButton.onClick.AddListener(OnShowQrCode);
showInfoButton.onClick.RemoveAllListeners();
showInfoButton.onClick.AddListener(OnShowInfo);
safetyTestButton.onClick.RemoveAllListeners();
safetyTestButton.onClick.AddListener(OnSafetyTest);
languageSettingButton.onClick.RemoveAllListeners();
languageSettingButton.onClick.AddListener(OnChangeLanguage);
safetySettingButton.onClick.RemoveAllListeners();
safetySettingButton.onClick.AddListener(EnterSafetySettingPage);
await RefreshAsync();
}
public void OnBack()
{
UIManager.Instance.OpenMainPage(UIManager.PageName.homePage);
}
public GameObject qrCodePanelPrefab;
public void OnShowQrCode()
{
GameObject qrCodePanel = Instantiate(qrCodePanelPrefab, transform);
qrCodePanel.GetComponent<SelfQrcodePage>().Init(userInfo);
}
public void OnShowInfo()
{
SelfInfoPage infoPage = Instantiate(selfInfoPagePrefab, transform);
infoPage.Init(userInfo);
}
public void OnSafetyTest()
{
UIManager.Instance.OpenPage(UIManager.PageName.safetylearningPage);
}
public void OnChangeLanguage()
{
ChangeLanguagePage languagePage = Instantiate(changeLanguagePagePrefab, transform);
}
public async Task RefreshAsync()
{
userInfo = DataManager.Instance.userInfo;
nicknameText.text = userInfo.username;
emailText.text = userInfo.email;
if (!string.IsNullOrEmpty(userInfo.avatar))
{
avatarImage.gameObject.SetActive(true);
await NetworkCtrl.Instance.LoadImageToUIImageAsync(userInfo.avatar, avatarImage);
avatarImage.transform.parent.GetComponent<Mask>().showMaskGraphic=false;
}
}
public void EnterSafePage()
{
ShowImageText safePage=Instantiate(safeHighlightPagePrefab,transform);
safePage.gameObject.SetActive(true);
safePage.Init(()=>{UIManager.Instance.RegisterBackAction(OnSafetySettingBack);});
}
public Button safetySettingBackButton;
public Button autoLockButton;
public GameObject autoLockSettingPanelPrefab;
public void EnterSafetySettingPage()
{
safetySettingPage.SetActive(true);
safetySettingBackButton.onClick.RemoveAllListeners();
safetySettingBackButton.onClick.AddListener(OnSafetySettingBack);
autoLockButton.onClick.RemoveAllListeners();
autoLockButton.onClick.AddListener(OnAutoLockSetting);
UIManager.Instance.RegisterBackAction(OnSafetySettingBack);
}
public void OnSafetySettingBack()
{
safetySettingPage.SetActive(false);
UIManager.Instance.RegisterBackAction(OnBack);
}
GameObject autoLockSettingPanel;
public void OnAutoLockSetting()
{
autoLockSettingPanel=Instantiate(autoLockSettingPanelPrefab,transform);
autoLockSettingPanel.gameObject.SetActive(true);
}
public void EnterStatusPage()
{
ShowImageText statusPage=Instantiate(statusPagePrefab,transform);
statusPage.gameObject.SetActive(true);
statusPage.Init(()=>{UIManager.Instance.RegisterBackAction(OnBack);});
}
public FAQPage fAQPagePrefab;
public void EnterFaqPage()
{
FAQPage fAQPage=Instantiate(fAQPagePrefab,transform);
fAQPage.gameObject.SetActive(true);
fAQPage.Init(()=>{UIManager.Instance.RegisterBackAction(OnBack);});
}
public DeviceTeachingPage[] deviceTeachingPagePrefabs;
public void EnterDeviceTeachingPage()
{
int type=(int)LanguageManager.Instance.languageType;
DeviceTeachingPage deviceTeachingPage=Instantiate(deviceTeachingPagePrefabs[type],transform);
deviceTeachingPage.gameObject.SetActive(true);
deviceTeachingPage.Init(()=>{UIManager.Instance.RegisterBackAction(OnBack);});
}
}
}