PageLoginLegacy.xaml.vb 3.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. Imports System.Windows.Forms
  2. Public Class PageLoginLegacy
  3. Public Sub New()
  4. InitializeComponent()
  5. Skin.Loader = PageLaunchLeft.SkinLegacy
  6. End Sub
  7. Private Sub PageLoginLegacy_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
  8. Skin.Loader.Start()
  9. End Sub
  10. Public IsReloaded As Boolean = False
  11. ''' <summary>
  12. ''' 刷新页面显示的所有信息。
  13. ''' </summary>
  14. Public Sub Reload(KeepInput As Boolean)
  15. If KeepInput AndAlso IsReloaded Then '避免第一次就以 KeepInput 的方式加载,导致文本框里没东西
  16. '保留输入,只刷新下拉框列表
  17. Dim Input As String = ComboName.Text.Trim
  18. ComboName.ItemsSource = If(Settings.Get(Of String)("LoginLegacyName") = "", Nothing, Settings.Get(Of String)("LoginLegacyName").Split("¨"))
  19. ComboName.Text = Input
  20. Else
  21. '不保留输入,刷新列表后自动选择第一项
  22. If Settings.Get(Of String)("LoginLegacyName") = "" Then
  23. ComboName.ItemsSource = Nothing
  24. Else
  25. ComboName.ItemsSource = Settings.Get(Of String)("LoginLegacyName").ToString.Split("¨")
  26. ComboName.Text = Settings.Get(Of String)("LoginLegacyName").ToString.BeforeFirst("¨").Trim
  27. End If
  28. End If
  29. IsReloaded = True
  30. End Sub
  31. ''' <summary>
  32. ''' 获取当前页面的登录信息。
  33. ''' </summary>
  34. Public Shared Function GetLoginData() As McLoginData
  35. Dim UserName As String = If(FrmLoginLegacy Is Nothing, "", FrmLoginLegacy.ComboName.Text.Replace("¨", "").Trim)
  36. Return New McLoginLegacy With {.UserName = UserName, .SkinType = Settings.Get(Of Integer)("LaunchSkinType"), .SkinName = Settings.Get(Of String)("LaunchSkinID")}
  37. End Function
  38. ''' <summary>
  39. ''' 当前页面的登录信息是否有效。
  40. ''' </summary>
  41. Public Shared Function IsVaild(LoginData As McLoginLegacy) As String
  42. If LoginData.UserName.Trim = "" Then Return "玩家名不能为空!"
  43. If LoginData.UserName.Contains("""") Then Return "玩家名不能包含英文引号!"
  44. If McInstanceSelected IsNot Nothing AndAlso
  45. McInstanceSelected.Version.Valid AndAlso McInstanceSelected.Version.Vanilla >= New Version(20, 0, 3) AndAlso
  46. LoginData.UserName.Trim.Length > 16 Then
  47. Return "自 1.20.3 起,玩家名至多只能包含 16 个字符!"
  48. End If
  49. Return ""
  50. End Function
  51. Public Function IsVaild() As String
  52. Return IsVaild(GetLoginData())
  53. End Function
  54. Private Sub ComboName_PreviewKeyDown(sender As Object, e As Input.KeyEventArgs) Handles ComboName.PreviewKeyDown
  55. If e.Key = Key.Space Then
  56. Dim Index = CType(ComboName.Template.FindName("PART_EditableTextBox", ComboName), MyTextBox).CaretIndex
  57. If Index = ComboName.Text.Length OrElse Index = 0 Then e.Handled = True
  58. End If
  59. End Sub
  60. Private Sub ComboLegacy_TextChanged(sender As Object, e As TextChangedEventArgs) Handles ComboName.TextChanged
  61. If Settings.Get(Of Integer)("LaunchSkinType") = 0 Then PageLaunchLeft.SkinLegacy.Start(IsForceRestart:=True)
  62. HintChinese.Visibility = If(ComboName.Text.RegexCheck("^[0-9A-Za-z_]*$"), Visibility.Collapsed, Visibility.Visible)
  63. RunInUi(Sub() PanMain.InvalidateMeasure(), True) '由于 WPF 的 Bug,它不一定会自动更新 HintChinese 的大小(#6627)
  64. End Sub
  65. Private Sub Skin_Click() Handles Skin.Click
  66. If (Settings.Get(Of Boolean)("UiHiddenPageSetup") OrElse Settings.Get(Of Boolean)("UiHiddenSetupLaunch")) AndAlso Not PageSetupUI.HiddenForceShow Then
  67. Hint("启动设置已被禁用!", HintType.Red)
  68. Else
  69. FrmMain.PageChange(FormMain.PageType.Setup, FormMain.PageSubType.SetupLaunch) '切换到皮肤设置页面
  70. End If
  71. End Sub
  72. End Class