159 lines
7.0 KiB
VB.net
159 lines
7.0 KiB
VB.net
Public Class PageDownloadLeft
|
||
Implements IRefreshable
|
||
|
||
#Region "页面切换"
|
||
|
||
''' <summary>
|
||
''' 当前页面的编号。
|
||
''' </summary>
|
||
Public PageID As FormMain.PageSubType = FormMain.PageSubType.DownloadInstall
|
||
|
||
''' <summary>
|
||
''' 勾选事件改变页面。
|
||
''' </summary>
|
||
Private Sub PageCheck(sender As FrameworkElement, e As RouteEventArgs) Handles ItemInstall.Check, ItemMod.Check, ItemPack.Check, ItemResourcePack.Check, ItemShader.Check, ItemDataPack.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.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 FormMain.PageSubType.DownloadResourcePack
|
||
If FrmDownloadResourcePack Is Nothing Then FrmDownloadResourcePack = New PageDownloadResourcePack
|
||
Return FrmDownloadResourcePack
|
||
Case FormMain.PageSubType.DownloadShader
|
||
If FrmDownloadShader Is Nothing Then FrmDownloadShader = New PageDownloadShader
|
||
Return FrmDownloadShader
|
||
Case FormMain.PageSubType.DownloadDataPack
|
||
If FrmDownloadDataPack Is Nothing Then FrmDownloadDataPack = New PageDownloadDataPack
|
||
Return FrmDownloadDataPack
|
||
Case Else
|
||
Throw New Exception("未知的下载子页面种类:" & ID)
|
||
End Select
|
||
End Function
|
||
|
||
''' <summary>
|
||
''' 切换现有页面。
|
||
''' </summary>
|
||
Public Sub PageChange(ID As FormMain.PageSubType)
|
||
If PageID = ID Then Return
|
||
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) '由边栏按钮匿名调用
|
||
Refresh(Val(sender.Tag))
|
||
End Sub
|
||
Public Sub Refresh() Implements IRefreshable.Refresh
|
||
Refresh(FrmMain.PageCurrentSub)
|
||
End Sub
|
||
Public Sub Refresh(SubType As FormMain.PageSubType)
|
||
Select Case SubType
|
||
Case FormMain.PageSubType.DownloadInstall
|
||
DlClientListLoader.Start(IsForceRestart:=True)
|
||
DlOptiFineListLoader.Start(IsForceRestart:=True)
|
||
DlForgeListLoader.Start(IsForceRestart:=True)
|
||
DlNeoForgeListLoader.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
|
||
CompProjectCache.Clear()
|
||
CompFilesCache.Clear()
|
||
If FrmDownloadMod IsNot Nothing Then
|
||
FrmDownloadMod.Content.Storage = New CompProjectStorage
|
||
FrmDownloadMod.Content.Page = 0
|
||
FrmDownloadMod.PageLoaderRestart()
|
||
End If
|
||
ItemMod.Checked = True
|
||
Case FormMain.PageSubType.DownloadPack
|
||
CompProjectCache.Clear()
|
||
CompFilesCache.Clear()
|
||
If FrmDownloadPack IsNot Nothing Then
|
||
FrmDownloadPack.Content.Storage = New CompProjectStorage
|
||
FrmDownloadPack.Content.Page = 0
|
||
FrmDownloadPack.PageLoaderRestart()
|
||
End If
|
||
ItemPack.Checked = True
|
||
Case FormMain.PageSubType.DownloadResourcePack
|
||
CompProjectCache.Clear()
|
||
CompFilesCache.Clear()
|
||
If FrmDownloadResourcePack IsNot Nothing Then
|
||
FrmDownloadResourcePack.Content.Storage = New CompProjectStorage
|
||
FrmDownloadResourcePack.Content.Page = 0
|
||
FrmDownloadResourcePack.PageLoaderRestart()
|
||
End If
|
||
ItemResourcePack.Checked = True
|
||
Case FormMain.PageSubType.DownloadShader
|
||
CompProjectCache.Clear()
|
||
CompFilesCache.Clear()
|
||
If FrmDownloadShader IsNot Nothing Then
|
||
FrmDownloadShader.Content.Storage = New CompProjectStorage
|
||
FrmDownloadShader.Content.Page = 0
|
||
FrmDownloadShader.PageLoaderRestart()
|
||
End If
|
||
ItemShader.Checked = True
|
||
Case FormMain.PageSubType.DownloadDataPack
|
||
CompProjectCache.Clear()
|
||
CompFilesCache.Clear()
|
||
If FrmDownloadDataPack IsNot Nothing Then
|
||
FrmDownloadDataPack.Content.Storage = New CompProjectStorage
|
||
FrmDownloadDataPack.Content.Page = 0
|
||
FrmDownloadDataPack.PageLoaderRestart()
|
||
End If
|
||
ItemDataPack.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 Return
|
||
FrmDownloadInstall.ExitSelectPage()
|
||
End Sub
|
||
|
||
End Class
|