| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183 |
- Public Class PageDownloadLeft
- #Region "页面切换"
- ''' <summary>
- ''' 当前页面的编号。
- ''' </summary>
- Public PageID As FormMain.PageSubType = FormMain.PageSubType.DownloadInstall
- ''' <summary>
- ''' 勾选事件改变页面。
- ''' </summary>
- Private Sub PageCheck(sender As MyListItem, e As RouteEventArgs) Handles ItemInstall.Check, ItemClient.Check, ItemOptiFine.Check, ItemForge.Check, ItemLiteLoader.Check, ItemMod.Check, ItemFabric.Check, ItemPack.Check
- '尚未初始化控件属性时,sender.Tag 为 Nothing,会导致切换到页面 0
- '若使用 IsLoaded,则会导致模拟点击不被执行(模拟点击切换页面时,控件的 IsLoaded 为 False)
- If sender.Tag IsNot Nothing Then PageChange(Val(sender.Tag))
- End Sub
- Public Function PageGet(Optional ID As FormMain.PageSubType = -1)
- If ID = -1 Then ID = PageID
- Select Case ID
- Case FormMain.PageSubType.DownloadInstall
- If FrmDownloadInstall Is Nothing Then FrmDownloadInstall = New PageDownloadInstall
- Return FrmDownloadInstall
- Case FormMain.PageSubType.DownloadClient
- If FrmDownloadClient Is Nothing Then FrmDownloadClient = New PageDownloadClient
- Return FrmDownloadClient
- Case FormMain.PageSubType.DownloadOptiFine
- If FrmDownloadOptiFine Is Nothing Then FrmDownloadOptiFine = New PageDownloadOptiFine
- Return FrmDownloadOptiFine
- Case FormMain.PageSubType.DownloadForge
- If FrmDownloadForge Is Nothing Then FrmDownloadForge = New PageDownloadForge
- Return FrmDownloadForge
- Case FormMain.PageSubType.DownloadLiteLoader
- If FrmDownloadLiteLoader Is Nothing Then FrmDownloadLiteLoader = New PageDownloadLiteLoader
- Return FrmDownloadLiteLoader
- Case FormMain.PageSubType.DownloadFabric
- If FrmDownloadFabric Is Nothing Then FrmDownloadFabric = New PageDownloadFabric
- Return FrmDownloadFabric
- Case FormMain.PageSubType.DownloadMod
- If FrmDownloadMod Is Nothing Then FrmDownloadMod = New PageDownloadMod
- Return FrmDownloadMod
- Case FormMain.PageSubType.DownloadPack
- If FrmDownloadPack Is Nothing Then FrmDownloadPack = New PageDownloadPack
- Return FrmDownloadPack
- Case Else
- Throw New Exception("未知的下载子页面种类:" & ID)
- End Select
- End Function
- ''' <summary>
- ''' 切换现有页面。
- ''' </summary>
- Public Sub PageChange(ID As FormMain.PageSubType)
- If PageID = ID Then Exit Sub
- AniControlEnabled += 1
- Try
- PageChangeRun(PageGet(ID))
- PageID = ID
- Catch ex As Exception
- Log(ex, "切换设置分页面失败(ID " & ID & ")", LogLevel.Feedback)
- Finally
- AniControlEnabled -= 1
- End Try
- End Sub
- Private Shared Sub PageChangeRun(Target As MyPageRight)
- AniStop("FrmMain PageChangeRight") '停止主页面的右页面切换动画,防止它与本动画一起触发多次 PageOnEnter
- If Target.Parent IsNot Nothing Then Target.SetValue(ContentPresenter.ContentProperty, Nothing)
- FrmMain.PageRight = Target
- CType(FrmMain.PanMainRight.Child, MyPageRight).PageOnExit()
- AniStart({
- AaCode(Sub()
- CType(FrmMain.PanMainRight.Child, MyPageRight).PageOnForceExit()
- FrmMain.PanMainRight.Child = FrmMain.PageRight
- FrmMain.PageRight.Opacity = 0
- End Sub, 130),
- AaCode(Sub()
- '延迟触发页面通用动画,以使得在 Loaded 事件中加载的控件得以处理
- FrmMain.PageRight.Opacity = 1
- FrmMain.PageRight.PageOnEnter()
- End Sub, 30, True)
- }, "PageLeft PageChange")
- End Sub
- #End Region
- '强制刷新
- Public Sub Refresh(sender As Object, e As EventArgs) '由边栏按钮匿名调用
- Select Case Val(sender.Tag)
- Case FormMain.PageSubType.DownloadInstall
- DlClientListLoader.Start(IsForceRestart:=True)
- DlOptiFineListLoader.Start(IsForceRestart:=True)
- DlForgeListLoader.Start(IsForceRestart:=True)
- DlLiteLoaderListLoader.Start(IsForceRestart:=True)
- DlFabricListLoader.Start(IsForceRestart:=True)
- DlFabricApiLoader.Start(IsForceRestart:=True)
- DlOptiFabricLoader.Start(IsForceRestart:=True)
- ItemInstall.Checked = True
- Case FormMain.PageSubType.DownloadMod
- PageDownloadMod.Storage = New CompProjectStorage
- PageDownloadMod.Page = 0
- CompProjectCache.Clear()
- If FrmDownloadMod IsNot Nothing Then FrmDownloadMod.PageLoaderRestart()
- ItemMod.Checked = True
- Case FormMain.PageSubType.DownloadPack
- PageDownloadPack.Storage = New CompProjectStorage
- PageDownloadPack.Page = 0
- CompProjectCache.Clear()
- If FrmDownloadPack IsNot Nothing Then FrmDownloadPack.PageLoaderRestart()
- ItemPack.Checked = True
- Case FormMain.PageSubType.DownloadClient
- DlClientListLoader.Start(IsForceRestart:=True)
- ItemClient.Checked = True
- Case FormMain.PageSubType.DownloadOptiFine
- DlOptiFineListLoader.Start(IsForceRestart:=True)
- ItemOptiFine.Checked = True
- Case FormMain.PageSubType.DownloadForge
- DlForgeListLoader.Start(IsForceRestart:=True)
- ItemForge.Checked = True
- Case FormMain.PageSubType.DownloadLiteLoader
- DlLiteLoaderListLoader.Start(IsForceRestart:=True)
- ItemLiteLoader.Checked = True
- Case FormMain.PageSubType.DownloadFabric
- DlFabricListLoader.Start(IsForceRestart:=True)
- ItemFabric.Checked = True
- End Select
- Hint("正在刷新……", Log:=False)
- End Sub
- '点击返回
- Private Sub ItemInstall_Click(sender As Object, e As MouseButtonEventArgs) Handles ItemInstall.Click
- If Not ItemInstall.Checked Then Exit Sub
- FrmDownloadInstall.ExitSelectPage()
- End Sub
- '展开手动安装
- Private Sub ItemHand_Click(sender As Object, e As RouteEventArgs) Handles ItemHand.Changed
- If ItemHand.Checked = False Then Exit Sub
- e.Handled = True
- AniControlEnabled += 1
- If Not Setup.Get("HintHandInstall") Then
- Setup.Set("HintHandInstall", True)
- If MyMsgBox("手动安装包功能提供了 OptiFine、Forge 等组件的 .jar 安装文件下载,但无法自动安装。" & vbCrLf &
- "在自动安装页面先选择 MC 版本,然后就可以选择 OptiFine、Forge 等组件,让 PCL 自动进行安装了。", "自动安装提示", "返回自动安装", "继续下载手动安装包") = 1 Then
- FrmMain.PageChange(New FormMain.PageStackData With {.Page = FormMain.PageType.Download}, FormMain.PageSubType.DownloadInstall)
- AniControlEnabled -= 1
- Exit Sub
- End If
- End If
- ItemHand.Visibility = Visibility.Collapsed
- LabGame.Visibility = Visibility.Collapsed
- LabHand.Visibility = Visibility.Visible
- ItemClient.Visibility = Visibility.Visible
- ItemOptiFine.Visibility = Visibility.Visible
- ItemFabric.Visibility = Visibility.Visible
- ItemForge.Visibility = Visibility.Visible
- ItemLiteLoader.Visibility = Visibility.Visible
- RunInThread(Sub()
- Thread.Sleep(20)
- RunInUiWait(Sub() ItemClient.SetChecked(True, True, True))
- AniControlEnabled -= 1
- End Sub)
- End Sub
- '折叠手动安装
- Private Sub LabHand_Click(sender As Object, e As MouseButtonEventArgs) Handles LabHand.MouseLeftButtonUp
- e.Handled = True
- AniControlEnabled += 1
- ItemHand.Visibility = Visibility.Visible
- LabGame.Visibility = Visibility.Visible
- LabHand.Visibility = Visibility.Collapsed
- ItemClient.Visibility = Visibility.Collapsed
- ItemOptiFine.Visibility = Visibility.Collapsed
- ItemFabric.Visibility = Visibility.Collapsed
- ItemForge.Visibility = Visibility.Collapsed
- ItemLiteLoader.Visibility = Visibility.Collapsed
- RunInThread(Sub()
- Thread.Sleep(20)
- RunInUiWait(Sub() ItemInstall.SetChecked(True, True, True))
- AniControlEnabled -= 1
- End Sub)
- End Sub
- End Class
|