Public Class formMain
#Region "全窗体事件"
'''
''' 从Win10任务栏关闭。
'''
'''
'''
'''
Private Sub formMain_Closing(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Me.Closing
EndForce()
End Sub
'''
''' 初始化加载。
'''
'''
'''
'''
Private Sub Window_Loaded(ByVal sender As System.Object, ByVal e As EventArgs) Handles MyBase.ContentRendered
Try
log("[Main] 初始化开始")
'数据统计
'If Not MODE_OFFLINE Then
' webData.Navigate(New Uri(QN_SERVER & "stats.html"))
' SetWebBrowserSilent(webData, True)
'End If
'开始动画
UseControlAnimation = True
AniStartRun()
AniLastTick = 0
'检查最后的版本号
Dim th As New Thread(Sub()
frmMain.Dispatcher.Invoke(Sub()
Select Case Val(ReadIni("setup", "LastVersionCode", "0"))
Case VERSION_CODE
'已经启动过当前版本
Case 0
'从未启动过
WriteIni("setup", "LastVersionCode", VERSION_CODE)
Case Is < VERSION_CODE
'已经启动过老版本
WriteIni("setup", "LastVersionCode", VERSION_CODE)
OutputFileInResource("UpdateLog", PATH & "PCL\UpdateLog.txt", True)
If File.Exists(PATH & "PCL\UpdateLog.txt") Then Shell("notepad", """" & PATH & "PCL\UpdateLog.txt""")
End Select
End Sub)
End Sub)
th.Start()
'开始遍历
timerRuntimeCheck.IsEnabled = True
'播放 BGM
If File.Exists(PATH & "PCL\bgm.wav") Or File.Exists(PATH & "PCL\bgm.mp3") Then
If ReadIni("setup", "UiBgmAuto", "True") Then ChangeBgm()
imgTopMusic.Visibility = Windows.Visibility.Visible
Else
imgTopMusic.Visibility = Windows.Visibility.Collapsed
End If
'首次启动
If frmStart.IsFirstUsing Then
log("[Main] 首次启动 PCL,进入设置向导")
panTop.Height = 40
labFirst.Visibility = Visibility.Visible
panTopSelect.Visibility = Visibility.Collapsed
labTopVer.Visibility = Visibility.Collapsed
panGuild.Visibility = Visibility.Visible
'控件置入
Dim frmGuild As New formGuild
If Not IsNothing(frmGuild.panMain.Parent) Then frmGuild.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
panGuild.Children.Add(frmGuild.panMain)
Exit Sub
Else
panTop.Height = 92
labFirst.Visibility = Visibility.Collapsed
panTopSelect.Visibility = Visibility.Visible
labTopVer.Visibility = Visibility.Visible
panGuild.Visibility = Visibility.Collapsed
End If
'打开 4 次或 99 次后请求反馈
If ReadReg("RequiredFeedback", "False") = "False" And Not MODE_OFFLINE Then
If Val(ReadIni("setup", "Count", "0")) >= 4 Then
If MyMsgbox("你对 PCL 有没有什么建议?在刚开始使用时,你有没有什么不清楚的地方?" & vbCrLf & "有了你的反馈,PCL 才能够做得更好!", "用户反馈", "反馈", "取消") = 1 Then Process.Start("https://www.wjx.cn/jq/14677608.aspx")
WriteReg("RequiredFeedback", "True")
GoTo EndFeedback
End If
End If
If ReadReg("RequiredFeedback2", "False") = "False" And Not MODE_OFFLINE Then
If Val(ReadIni("setup", "Count", "0")) >= 99 Then
Select Case MyMsgbox("你对 PCL 有没有什么建议?你觉得 PCL 怎样才能做得更好?我们期待你的反馈!" & vbCrLf & "你随时都可以通过设置进入反馈页面。", "用户反馈", "捐助", "反馈", "取消")
Case 1
'捐助
Process.Start("https://afdian.net/@LTCat")
Case 2
'反馈
Process.Start("https://www.wjx.cn/jq/14677608.aspx")
End Select
WriteReg("RequiredFeedback2", "True")
End If
End If
EndFeedback:
'打开 25 的倍数次的时候发送反馈信息
If Val(ReadIni("setup", "Count", "0")) Mod 25 = 5 And Not MODE_OFFLINE Then
Dim FeedbackThread As New Thread(Sub() FeedbackSetup())
FeedbackThread.Priority = ThreadPriority.Lowest
FeedbackThread.Start()
End If
'打开 10 的倍数次的时候发送次数反馈信息
If Val(ReadIni("setup", "Count", "0")) Mod 10 = 1 And Not MODE_OFFLINE Then
SendStat("反馈", "启动器打开次数", ReadIni("setup", "Count", "0"), ReadIni("setup", "Count", "0"))
End If
Catch ex As Exception
ExShow(ex, "主窗体初始化失败", ErrorLevel.MsgboxAndFeedback)
End Try
End Sub
'''
''' 窗体拖动。
'''
'''
'''
'''
Private Sub FormDragDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles labTopVer.MouseLeftButtonDown
On Error Resume Next
Me.DragMove()
End Sub
Private Sub FormDragDown(ByVal sender As Grid, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles panTop.MouseLeftButtonDown
On Error Resume Next
If sender.IsMouseDirectlyOver Then Me.DragMove()
End Sub
'''
''' 在设置按钮隐藏时,双击版本号进入设置页。
'''
'''
'''
'''
Private Sub labTopVer_MouseDoubleClick(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles labTopVer.MouseDoubleClick
If btnTopSetup.Visibility = Visibility.Collapsed Then PageChange("设置")
End Sub
'''
''' 按回车直接启动游戏。
'''
'''
'''
'''
Private Sub formMain_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Input.KeyEventArgs) Handles Me.KeyDown
If Math.Abs(ReadIni("setup", "UiLauncherOpacity", "100") / 100 - Me.Opacity) > 0.01 Then Exit Sub
If PageSelect = "首页" And e.Key = Key.Enter Then frmHomeRight.ClickStartButton()
End Sub
#End Region
#Region "动画"
'指向动画
Private Sub AniMouseEnter(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs) Handles imgTopMin.MouseEnter, imgTopClose.MouseEnter, imgTopMusic.MouseEnter
AniStart({AaOpacity(sender, 0.75 - sender.Opacity, 80)}, "MouseEnter" & sender.Name)
End Sub
Private Sub AniMouseLeave(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs) Handles imgTopMin.MouseLeave, imgTopClose.MouseLeave, imgTopMusic.MouseLeave
AniStart({AaOpacity(sender, 0.35 - sender.Opacity, 80)}, "MouseEnter" & sender.Name)
btnTopMin_Down = False
btnTopClose_Down = False
End Sub
Private Sub AniMouseEnter2(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs) Handles btnTopMain.MouseEnter, btnTopManage.MouseEnter, btnTopDown.MouseEnter, btnTopHelp.MouseEnter, btnTopSetup.MouseEnter
If PageSelect = sender.Tag Or panTopSelect.Tag = "Changing" Then Exit Sub '已经选中的项目、切换中不响应事件
AniStart({AaOpacity(sender, 0.75 - sender.Opacity, 80)}, "MouseEnter" & sender.Name)
End Sub
Private Sub AniMouseLeave2(ByVal sender As Object, ByVal e As System.Windows.Input.MouseEventArgs) Handles btnTopMain.MouseLeave, btnTopManage.MouseLeave, btnTopDown.MouseLeave, btnTopHelp.MouseLeave, btnTopSetup.MouseLeave
If PageSelect = sender.Tag Or panTopSelect.Tag = "Changing" Then Exit Sub '已经选中的项目、切换中不响应事件
AniStart({AaOpacity(sender, 0.35 - sender.Opacity, 80)}, "MouseEnter" & sender.Name)
End Sub
#End Region
#Region "最小化、关闭、音乐"
Private btnTopMin_Down As Boolean = False
Private Sub btnTopMin_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles imgTopMin.MouseLeftButtonDown
btnTopMin_Down = True
End Sub
Private Sub imgTopMin_MouseLeftButtonUp(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles imgTopMin.MouseLeftButtonUp
If Not btnTopMin_Down Then Exit Sub
btnTopMin_Down = False
log("[Main] 点击最小化按钮")
Me.WindowState = WindowState.Minimized
End Sub
Private btnTopClose_Down As Boolean = False
Private Sub imgTopClose_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles imgTopClose.MouseLeftButtonDown
btnTopClose_Down = True
End Sub
Private Sub btnTopClose_MouseLeftButtonUp(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles imgTopClose.MouseLeftButtonUp
If Not btnTopClose_Down Then Exit Sub
btnTopClose_Down = False
log("[Main] 点击关闭按钮")
EndNormal()
End Sub
Private btnTopMusic_Down As Boolean = False
Private Sub imgTopMusic_MouseLeftButtonDown(ByVal sender As Object, ByVal e As System.Windows.Input.MouseButtonEventArgs) Handles imgTopMusic.MouseLeftButtonDown
btnTopMusic_Down = True
End Sub
Private Sub btnTopMusic_MouseLeftButtonUp() Handles imgTopMusic.MouseLeftButtonUp
If Not btnTopMusic_Down Then Exit Sub
btnTopMusic_Down = False
ChangeBgm()
End Sub
'''
''' 切换 BGM 播放状态。
'''
'''
Public Sub ChangeBgm()
Try
Dim FilePath As String = If(File.Exists(PATH & "PCL\bgm.wav"), PATH & "PCL\bgm.wav", PATH & "PCL\bgm.mp3")
If IsPlayingMusic Then
PlayBgm(FilePath, True)
Else
PlayBgm(FilePath, False)
End If
IsPlayingMusic = Not IsPlayingMusic
Catch ex As Exception
ExShow(ex, "切换音乐播放出错", ErrorLevel.MsgboxAndFeedback)
End Try
End Sub
#End Region
#Region "顶部选择条"
'''
''' 当前选择的页面名称,如“首页”。
'''
'''
Public PageSelect As String = "首页"
'''
''' 当前选择的页面编号,首页为0。
'''
'''
Public PageSelectId As Integer = 0
Public ENTER_PAGE_TIME As Integer = 200
Public LEAVE_PAGE_TIME As Integer = 100
Public Const CHANGE_PAGE_DISTANCE As Integer = 65
'''
''' 切换页面
'''
''' 页面的名称,如“首页”
'''
Public Sub PageChange(ByVal PageNew As String)
Try
'已经选中的项目不响应事件
If PageNew = PageSelect Then Exit Sub
'初始化
frmHomeLeft.timerPage.Reset()
'改变页面
AniStop("HomeLeftChange")
Select Case PageNew
Case "管理"
SendPage("manage")
'计算动画朝向
Dim Towards As Integer = If(PageSelectId < 1, -1, 1)
'切换页面的动画,用对象保存再单独丢出去会莫名找不到对象
If Not IsNothing(frmManageLeft.panMain.Parent) Then frmManageLeft.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
If Not IsNothing(frmManageRight.panMain.Parent) Then frmManageRight.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
frmHomeRight.HideVersion()
AniStart({
AaOpacity(panMain, -panMain.Opacity, LEAVE_PAGE_TIME),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards - panMain.Margin.Left, LEAVE_PAGE_TIME, , New AniEaseStart),
AaCode({"Clear", panHostLeft.Children}, , True),
AaCode({"Clear", panHostRight.Children}),
AaCode({"Add", panHostLeft.Children, frmManageLeft.panMain}),
AaCode({"Add", panHostRight.Children, frmManageRight.panMain}),
AaX(panMain, -CHANGE_PAGE_DISTANCE * 2 * Towards, 1),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards, ENTER_PAGE_TIME, , New AniEaseJumpEnd(0.6)),
AaOpacity(panMain, 1, ENTER_PAGE_TIME)
}, "HomeLeftChange")
'顶部条的动画
AniStart({
AaOpacity(btnTopMain, 0.35 - btnTopMain.Opacity, 80),
AaOpacity(btnTopManage, 1 - btnTopManage.Opacity, 80),
AaOpacity(btnTopDown, 0.35 - btnTopDown.Opacity, 80),
AaOpacity(btnTopHelp, 0.35 - btnTopHelp.Opacity, 80),
AaOpacity(btnTopSetup, 0.35 - btnTopSetup.Opacity, 80)
}, "HomeLeftChange2")
PageSelectId = 1
Case "下载"
SendPage("download")
If IsNothing(frmDownloadRight) Then frmDownloadRight = New formDownloadRight
Dim Towards As Integer = If(PageSelectId < 2, -1, 1)
If Not IsNothing(frmDownloadLeft.panMain.Parent) Then frmDownloadLeft.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
If Not IsNothing(frmDownloadRight.panMain.Parent) Then frmDownloadRight.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
frmHomeRight.HideVersion()
AniStart({
AaOpacity(panMain, -panMain.Opacity, LEAVE_PAGE_TIME),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards - panMain.Margin.Left, LEAVE_PAGE_TIME, , New AniEaseStart),
AaCode({"Clear", panHostLeft.Children}, , True),
AaCode({"Clear", panHostRight.Children}),
AaCode({"Add", panHostLeft.Children, frmDownloadLeft.panMain}),
AaCode({"Add", panHostRight.Children, frmDownloadRight.panMain}),
AaX(panMain, -CHANGE_PAGE_DISTANCE * 2 * Towards, 1),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards, ENTER_PAGE_TIME, , New AniEaseJumpEnd(0.6)),
AaOpacity(panMain, 1, ENTER_PAGE_TIME)
}, "HomeLeftChange")
AniStart({
AaOpacity(btnTopMain, 0.35 - btnTopMain.Opacity, 80),
AaOpacity(btnTopManage, 0.35 - btnTopManage.Opacity, 80),
AaOpacity(btnTopDown, 1 - btnTopDown.Opacity, 80),
AaOpacity(btnTopHelp, 0.35 - btnTopHelp.Opacity, 80),
AaOpacity(btnTopSetup, 0.35 - btnTopSetup.Opacity, 80)
}, "HomeLeftChange2")
PageSelectId = 2
Case "帮助"
SendPage("help")
Dim Towards As Integer = If(PageSelectId < 3, -1, 1)
If Not IsNothing(frmHelpLeft.panMain.Parent) Then frmHelpLeft.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
If Not IsNothing(frmHelpRight.panMain.Parent) Then frmHelpRight.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
frmHomeRight.HideVersion()
AniStart({
AaOpacity(panMain, -panMain.Opacity, LEAVE_PAGE_TIME),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards - panMain.Margin.Left, LEAVE_PAGE_TIME, , New AniEaseStart),
AaCode({"Clear", panHostLeft.Children}, , True),
AaCode({"Clear", panHostRight.Children}),
AaCode({"Add", panHostLeft.Children, frmHelpLeft.panMain}),
AaCode({"Add", panHostRight.Children, frmHelpRight.panMain}),
AaX(panMain, -CHANGE_PAGE_DISTANCE * 2 * Towards, 1),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards, ENTER_PAGE_TIME, , New AniEaseJumpEnd(0.6)),
AaOpacity(panMain, 1, ENTER_PAGE_TIME)
}, "HomeLeftChange")
AniStart({
AaOpacity(btnTopMain, 0.35 - btnTopMain.Opacity, 80),
AaOpacity(btnTopManage, 0.35 - btnTopManage.Opacity, 80),
AaOpacity(btnTopDown, 0.35 - btnTopDown.Opacity, 80),
AaOpacity(btnTopHelp, 1 - btnTopHelp.Opacity, 80),
AaOpacity(btnTopSetup, 0.35 - btnTopSetup.Opacity, 80)
}, "HomeLeftChange2")
PageSelectId = 3
Case "设置"
SendPage("setup")
If IsNothing(frmSetup) Then frmSetup = New formSetup
Dim Towards As Integer = If(PageSelectId < 4, -1, 1)
If Not IsNothing(frmSetup.panMain.Parent) Then frmSetup.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
frmHomeRight.HideVersion()
AniStart({
AaOpacity(panMain, -panMain.Opacity, LEAVE_PAGE_TIME),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards - panMain.Margin.Left, LEAVE_PAGE_TIME, , New AniEaseStart),
AaCode({"Clear", panHostLeft.Children}, , True),
AaCode({"Clear", panHostRight.Children}),
AaCode({"Add", panHostLeft.Children, frmSetup.panMain}),
AaX(panMain, -CHANGE_PAGE_DISTANCE * 2 * Towards, 1),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards, ENTER_PAGE_TIME, , New AniEaseJumpEnd(0.6)),
AaOpacity(panMain, 1, ENTER_PAGE_TIME)
}, "HomeLeftChange")
AniStart({
AaOpacity(btnTopMain, 0.35 - btnTopMain.Opacity, 80),
AaOpacity(btnTopManage, 0.35 - btnTopManage.Opacity, 80),
AaOpacity(btnTopDown, 0.35 - btnTopDown.Opacity, 80),
AaOpacity(btnTopHelp, 0.35 - btnTopHelp.Opacity, 80),
AaOpacity(btnTopSetup, 1 - btnTopSetup.Opacity, 80)
}, "HomeLeftChange2")
PageSelectId = 4
Case Else '首页作为默认选项
SendPage("stats")
Dim Towards As Integer = If(PageSelectId < 0, -1, 1)
If Not IsNothing(frmHomeLeft.panMain.Parent) Then frmHomeLeft.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
If Not IsNothing(frmHomeRight.panMain.Parent) Then frmHomeRight.panMain.Parent.SetValue(ContentPresenter.ContentProperty, Nothing)
AniStart({
AaOpacity(panMain, -panMain.Opacity, LEAVE_PAGE_TIME),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards - panMain.Margin.Left, LEAVE_PAGE_TIME, , New AniEaseStart),
AaCode({"Clear", panHostLeft.Children}, , True),
AaCode({"Clear", panHostRight.Children}),
AaCode({"Add", panHostLeft.Children, frmHomeLeft.panMain}),
AaCode({"Add", panHostRight.Children, frmHomeRight.panMain}),
AaX(panMain, -CHANGE_PAGE_DISTANCE * 2 * Towards, 1),
AaX(panMain, CHANGE_PAGE_DISTANCE * Towards, ENTER_PAGE_TIME, , New AniEaseJumpEnd(0.6)),
AaOpacity(panMain, 1, ENTER_PAGE_TIME)
}, "HomeLeftChange")
AniStart({
AaOpacity(btnTopMain, 1 - btnTopMain.Opacity, 80),
AaOpacity(btnTopManage, 0.35 - btnTopManage.Opacity, 80),
AaOpacity(btnTopDown, 0.35 - btnTopDown.Opacity, 80),
AaOpacity(btnTopHelp, 0.35 - btnTopHelp.Opacity, 80),
AaOpacity(btnTopSetup, 0.35 - btnTopSetup.Opacity, 80)
}, "HomeLeftChange2")
PageSelectId = 0
End Select
'回设
PageSelect = PageNew
Catch ex As Exception
ExShow(ex, "切换页面失败", ErrorLevel.MsgboxAndFeedback)
End Try
End Sub
'''
''' 点击Grid触发切换页面
'''
'''
'''
'''
Private Sub PageChangeClick(ByVal sender As Grid, ByVal e As EventArgs) Handles btnTopMain.MouseLeftButtonUp, btnTopManage.MouseLeftButtonUp, btnTopDown.MouseLeftButtonUp, btnTopHelp.MouseLeftButtonUp, btnTopSetup.MouseLeftButtonUp
PageChange(sender.Tag)
End Sub
#End Region
#Region "文件拖放"
'进入的动画
Private Sub AniDragEnter() Handles panBack.DragEnter
AniStart({
AaOpacity(panDrag, 1 - panDrag.Opacity, 150)
}, "frmMainDrag", False)
End Sub
'离开的动画
Private Sub AniDragLeave() Handles panBack.DragLeave, panBack.Drop
AniStart({
AaOpacity(panDrag, -panDrag.Opacity, 150)
}, "frmMainDrag", False)
End Sub
'接受文件拖放
Private Sub panBack_DragEnter(ByVal sender As Object, ByVal e As System.Windows.DragEventArgs) Handles panBack.DragEnter
'接受拖放
e.Effects = DragDropEffects.Link
End Sub
'文件放入
Private Sub panBack_Drop(ByVal sender As Object, ByVal e As System.Windows.DragEventArgs) Handles panBack.Drop
'获取文件列表
Dim FilePathList As New ArrayList
Try
FilePathList.AddRange(CType(e.Data.GetData(DataFormats.FileDrop), Array))
If FilePathList.Count = 0 Then Exit Sub
Catch
Exit Sub
End Try
'处理文件
For Each File As String In FilePathList
AutoSetup(File)
Next
End Sub
#End Region
#Region "任务栏"
Private Sub CommandBinding_Executed(ByVal sender As System.Object, ByVal e As System.Windows.Input.ExecutedRoutedEventArgs)
frmHomeRight.ClickStartButton()
e.Handled = True
End Sub
Private Sub CommandBinding_CanExecute(ByVal sender As System.Object, ByVal e As System.Windows.Input.CanExecuteRoutedEventArgs)
e.CanExecute = True
e.Handled = True
End Sub
#End Region
Private IsRamWarned As Boolean = False
Private IsSendStat As Boolean = False
Private Sub timerRuntimeCheck_Tick() Handles timerRuntimeCheck.Tick
Try
'显示提示
If WaitingHint.Count > 1 Then WaitingHint = ArrayNoDouble(WaitingHint.ToArray)
Do While WaitingHint.Count > 0
WaitingHint(0).Text = WaitingHint(0).Text.Replace(vbCrLf, " ").Replace(vbCr, " ").Replace(vbLf, " ") '去回车
log("[Main] 显示弹出提示:" & CType(WaitingHint(0), HintConverter).toString)
'准备控件
Dim NewGrid As New Grid With {.Name = "panHintChildren" & GetUUID(), .Opacity = 0, .Background = New MyColor(CType(WaitingHint(0), HintConverter)), .Height = 0, .HorizontalAlignment = HorizontalAlignment.Left, .Margin = New Thickness(-15, 0, 0, 0)}
NewGrid.Children.Add(New Label With {.Content = WaitingHint(0).Text, .FontSize = 13, .Foreground = New MyColor(255, 255, 255), .Height = 25, .HorizontalAlignment = HorizontalAlignment.Left, .Padding = New Thickness(23, 0, 7, 0), .VerticalAlignment = VerticalAlignment.Center, .VerticalContentAlignment = VerticalAlignment.Center})
NewGrid.Children.Add(New Image With {.Height = 16, .HorizontalAlignment = HorizontalAlignment.Left, .Margin = New Thickness(4, 5, 0, 4), .VerticalAlignment = VerticalAlignment.Center, .Width = 16, .Source = CType((New ImageSourceConverter).ConvertFromString(PATH_IMAGE & "Hint-" & WaitingHint(0).GetTypeName & ".png"), ImageSource)})
frmMain.panHint.Children.Add(NewGrid)
'控件动画
'NewGrid 高度增加25px,向右移动15px,透明度增加1
'等待大约3秒后,NewGrid 平滑收回并且删除
AniStart({
AaX(NewGrid, 15, , , New AniEaseEnd),
AaOpacity(NewGrid, 1, 200),
AaHeight(NewGrid, 25, , , New AniEaseEnd),
AaOpacity(NewGrid, -1, 200, 850 + MathRange(Len(WaitingHint(0).Text), 5, 23) * 180),
AaHeight(NewGrid, -25, 300, 850 + MathRange(Len(WaitingHint(0).Text), 5, 23) * 180, New AniEaseEnd),
AaCode({"Remove", frmMain.panHint.Children, NewGrid}, , True)
}, "ShowHint" & GetUUID())
WaitingHint.RemoveAt(0)
Loop
'显示弹窗
Do While WaitingHintWindow.Count > 0
WaitingHintWindow(0)(1) = WaitingHintWindow(0)(1).Replace(vbCrLf, " ").Replace(vbCr, " ").Replace(vbLf, " ") '去回车
log("[Main] 显示弹出提示窗口:" & WaitingHintWindow(0)(0) & ",内容:" & WaitingHintWindow(0)(1))
'准备窗口
Dim Window As New formHint
Window.labTitle.Content = WaitingHintWindow(0)(0)
Window.labText.Text = WaitingHintWindow(0)(1)
Window.Show()
'控件动画
'AniStart({
' AaX(NewGrid, 15, , , AniAdditionType.FadeOut),
' AaOpacity(NewGrid, 1, 200),
' AaHeight(NewGrid, 25, , , AniAdditionType.FadeOut),
' AaOpacity(NewGrid, -1, 200, 850 + MathRange(Len(WaitingHint(0).Text), 5, 20) * 160, 120),
' AaHeight(NewGrid, -25, 300, 850 + MathRange(Len(WaitingHint(0).Text), 5, 20) * 160, AniAdditionType.FadeOut),
' AaCode({"Remove", frmMain.panHint.Children, NewGrid}, , True)
' }, "ShowHint" & GetUUID())
WaitingHintWindow.RemoveAt(0)
Loop
'彩蛋检查
If panHint.ActualHeight > MAINFORM_HEIGHT - 20 And Not IsShowingDeathBlue Then
If ReadReg("ThemeDeathBlue", "False") = "False" Then
IsShowingDeathBlue = True
Dim BlueScreen As New formBlueScreen
BlueScreen.Show()
End If
End If
'显示弹窗
Do While WaitingMyMsgbox.Count > 0
MyMsgbox(WaitingMyMsgbox(0))
WaitingMyMsgbox.RemoveAt(0)
Loop
'显示内存警告
Dim RamLeft As Integer = (New Devices.ComputerInfo).AvailablePhysicalMemory / 1024 / 1024
If RamLeft < 500 And Not IsRamWarned Then
'放在里面是为了防止多次读取导致卡顿
If RamLeft < ReadReg("SystemWarn", "100") Then
ShowHintWindow("PCL - 内存警告", "电脑内存目前仅剩 " & RamLeft & " M!")
IsRamWarned = True
End If
End If
If IsRamWarned Then
If RamLeft > Val(ReadReg("SystemWarn", "100")) + 400 Then
ShowHintWindow("PCL - 内存提示", "电脑内存已回升至 " & RamLeft & " M。")
IsRamWarned = False
End If
End If
'发送统计
If IsSendStat Then
Try
Do While SendInvokes.Count > 0
webData.InvokeScript("eval", New Object() {SendInvokes(0)})
SendInvokes.RemoveAt(0)
Loop
Catch ex As Exception
log("[Main] 发送统计数据失败:" & GetStringFromException(ex))
End Try
End If
'刷新 UI 显示的文件组的进度条
For i = 0 To WebGroups.Count - 1
frmDownloadRight.RefreshGroup(WebGroups.Values(i))
Next
Catch ex As Exception
ExShow(ex, "主时钟执行异常")
End Try
End Sub
Private Sub webData_LoadCompleted() Handles webData.LoadCompleted
log("[Main] 统计页面加载完成")
IsSendStat = True
End Sub
End Class