This commit is contained in:
龙腾猫跃
2026-04-29 05:37:25 +08:00
parent 6aedd20512
commit 67764b393d
113 changed files with 5147 additions and 5865 deletions
@@ -28,13 +28,11 @@
SliderLoad()
#If BETA Then
PanLauncherHide.Visibility = Visibility.Visible
#End If
If BuildType = BuildTypes.Release Then PanLauncherHide.Visibility = Visibility.Visible
'设置解锁
If Not RadioLauncherTheme8.IsEnabled Then LabLauncherTheme8Copy.ToolTip = "累积赞助达到 ¥23.33 后,在爱发电私信发送【解锁码】以解锁。" & vbCrLf & "右键打开赞助页面,如果觉得 PCL 做得还不错就支持一下吧 =w=!"
RadioLauncherTheme8.ToolTip = "累积赞助达到 ¥23.33 后,在爱发电私信发送【解锁码】以解锁"
If Not RadioLauncherTheme8.IsEnabled Then LabLauncherTheme8Copy.ToolTip = $"累积赞助达到 ¥23.33 后,在爱发电私信发送【土豆 {Identify}】以解锁。" & vbCrLf & "右键打开赞助页面,如果觉得 PCL 做得还不错就支持一下吧 =w=!"
RadioLauncherTheme8.ToolTip = $"累积赞助达到 ¥23.33 后,在爱发电私信发送【土豆 {Identify}】以解锁"
If Not RadioLauncherTheme9.IsEnabled Then LabLauncherTheme9Copy.ToolTip = "· 反馈一个 Bug,在标记为 [完成] 后回复识别码要求解锁(右键打开反馈页面)" & vbCrLf & "· 提交一个 Pull Request 或主页预设,在标记为 [完成] 后回复识别码要求解锁"
RadioLauncherTheme9.ToolTip = "· 反馈一个 Bug,在标记为 [完成] 后回复识别码要求解锁" & vbCrLf & "· 提交一个 Pull Request 或主页预设,在标记为 [完成] 后回复识别码要求解锁"
'极客蓝的处理在 ThemeCheck 中
@@ -46,112 +44,36 @@
BackgroundRefresh(False, False)
'标题栏
CType(FindName("RadioLogoType" & Settings.Get("UiLogoType")), MyRadioBox).Checked = True
CheckLogoLeft.Visibility = If(RadioLogoType0.Checked, Visibility.Visible, Visibility.Collapsed)
PanLogoText.Visibility = If(RadioLogoType2.Checked, Visibility.Visible, Visibility.Collapsed)
PanLogoChange.Visibility = If(RadioLogoType3.Checked, Visibility.Visible, Visibility.Collapsed)
TextLogoText.Text = Settings.Get("UiLogoText")
CheckLogoLeft.Checked = Settings.Get("UiLogoLeft")
'背景音乐
CheckMusicRandom.Checked = Settings.Get("UiMusicRandom")
CheckMusicAuto.Checked = Settings.Get("UiMusicAuto")
CheckMusicStop.Checked = Settings.Get("UiMusicStop")
CheckMusicStart.Checked = Settings.Get("UiMusicStart")
SliderMusicVolume.Value = Settings.Get("UiMusicVolume")
MusicRefreshUI()
'主页
CType(FindName("RadioCustomType" & Settings.Get("UiCustomType")), MyRadioBox).Checked = True
OnUiCustomTypeChanged(Settings.Get("UiCustomType"))
TextCustomNet.Text = Settings.Get("UiCustomNet")
'功能隐藏
CheckLauncherEmail.Checked = Settings.Get("UiLauncherEmail")
CheckHiddenPageDownload.Checked = Settings.Get("UiHiddenPageDownload")
CheckHiddenPageLink.Checked = Settings.Get("UiHiddenPageLink")
CheckHiddenPageSetup.Checked = Settings.Get("UiHiddenPageSetup")
CheckHiddenPageOther.Checked = Settings.Get("UiHiddenPageOther")
CheckHiddenFunctionSelect.Checked = Settings.Get("UiHiddenFunctionSelect")
CheckHiddenFunctionModUpdate.Checked = Settings.Get("UiHiddenFunctionModUpdate")
CheckHiddenFunctionHidden.Checked = Settings.Get("UiHiddenFunctionHidden")
CheckHiddenSetupLaunch.Checked = Settings.Get("UiHiddenSetupLaunch")
CheckHiddenSetupUI.Checked = Settings.Get("UiHiddenSetupUi")
CheckHiddenSetupLink.Checked = Settings.Get("UiHiddenSetupLink")
CheckHiddenSetupSystem.Checked = Settings.Get("UiHiddenSetupSystem")
CheckHiddenOtherAbout.Checked = Settings.Get("UiHiddenOtherAbout")
CheckHiddenOtherFeedback.Checked = Settings.Get("UiHiddenOtherFeedback")
CheckHiddenOtherVote.Checked = Settings.Get("UiHiddenOtherVote")
CheckHiddenOtherHelp.Checked = Settings.Get("UiHiddenOtherHelp")
CheckHiddenOtherTest.Checked = Settings.Get("UiHiddenOtherTest")
OnMainPageTypeChanged()
Catch ex As NullReferenceException
Log(ex, "个性化设置项存在异常,已被自动重置", LogLevel.Msgbox)
Log(ex, "个性化设置项存在异常,已被自动重置", NotifyLevel.MsgBox)
Reset()
Catch ex As Exception
Log(ex, "重载个性化设置时出错", LogLevel.Feedback)
Log(ex, "重载个性化设置时出错", NotifyLevel.MsgBoxAndFeedback)
End Try
End Sub
'初始化
Public Sub Reset()
Try
SettingService.ResetSettings(Me)
Settings.Reset("UiLauncherLogo")
Settings.Reset("UiLauncherEmail")
Settings.Reset("UiLogoType")
Settings.Reset("UiLogoText")
Settings.Reset("UiLogoLeft")
Settings.Reset("UiMusicVolume")
Settings.Reset("UiMusicStop")
Settings.Reset("UiMusicStart")
Settings.Reset("UiMusicRandom")
Settings.Reset("UiMusicAuto")
Settings.Reset("UiCustomType")
Settings.Reset("UiCustomNet")
Settings.Reset("UiHiddenPageDownload")
Settings.Reset("UiHiddenPageLink")
Settings.Reset("UiHiddenPageSetup")
Settings.Reset("UiHiddenPageOther")
Settings.Reset("UiHiddenFunctionSelect")
Settings.Reset("UiHiddenFunctionModUpdate")
Settings.Reset("UiHiddenFunctionHidden")
Settings.Reset("UiHiddenSetupLaunch")
Settings.Reset("UiHiddenSetupUi")
Settings.Reset("UiHiddenSetupLink")
Settings.Reset("UiHiddenSetupSystem")
Settings.Reset("UiHiddenOtherAbout")
Settings.Reset("UiHiddenOtherFeedback")
Settings.Reset("UiHiddenOtherVote")
Settings.Reset("UiHiddenOtherHelp")
Settings.Reset("UiHiddenOtherTest")
Log("[Setup] 已初始化个性化设置!")
Hint("已初始化个性化设置", HintType.Green, False)
Catch ex As Exception
Log(ex, "初始化个性化设置失败", LogLevel.Msgbox)
Log(ex, "初始化个性化设置失败", NotifyLevel.MsgBox)
End Try
Refresh()
End Sub
'将控件改变路由到设置改变
Private Shared Sub SliderChange(sender As MySlider, e As Object) Handles SliderMusicVolume.Change
If AniControlEnabled = 0 Then Settings.Set(sender.Tag, sender.Value)
End Sub
Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckMusicStop.Change, CheckMusicRandom.Change, CheckMusicAuto.Change, CheckLogoLeft.Change, CheckHiddenFunctionHidden.Change, CheckHiddenFunctionSelect.Change, CheckHiddenFunctionModUpdate.Change, CheckHiddenPageDownload.Change, CheckHiddenPageLink.Change, CheckHiddenPageOther.Change, CheckHiddenPageSetup.Change, CheckHiddenSetupLaunch.Change, CheckHiddenSetupSystem.Change, CheckHiddenSetupLink.Change, CheckHiddenSetupUI.Change, CheckHiddenOtherAbout.Change, CheckHiddenOtherFeedback.Change, CheckHiddenOtherVote.Change, CheckHiddenOtherHelp.Change, CheckHiddenOtherTest.Change, CheckMusicStart.Change, CheckLauncherEmail.Change
If AniControlEnabled = 0 Then Settings.Set(sender.Tag, sender.Checked)
End Sub
Private Shared Sub TextBoxChange(sender As MyTextBox, e As Object) Handles TextLogoText.ValidatedTextChanged, TextCustomNet.ValidatedTextChanged
If AniControlEnabled = 0 Then Settings.Set(sender.Tag, sender.Text)
End Sub
Private Shared Sub RadioBoxChange(sender As MyRadioBox, e As Object) Handles RadioLogoType0.Check, RadioLogoType1.Check, RadioLogoType2.Check, RadioLogoType3.Check, RadioCustomType0.Check, RadioCustomType1.Check, RadioCustomType2.Check, RadioCustomType3.Check
If AniControlEnabled = 0 Then Settings.Set(sender.Tag.ToString.Split("/")(0), Val(sender.Tag.ToString.Split("/")(1)))
End Sub
'背景图片
Private Sub BtnUIBgOpen_Click(sender As Object, e As EventArgs) Handles BtnBackgroundOpen.Click
OpenExplorer(Path & "PCL\Pictures\")
OpenExplorer(PathExeFolder & "PCL\Pictures\")
End Sub
Private Sub BtnBackgroundRefresh_Click(sender As Object, e As EventArgs) Handles BtnBackgroundRefresh.Click
BackgroundRefresh(True, True)
@@ -175,7 +97,7 @@
End Sub
Private Sub BtnBackgroundClear_Click(sender As Object, e As EventArgs) Handles BtnBackgroundClear.Click
If MyMsgBox("即将删除背景图片文件夹中的所有文件。" & vbCrLf & "此操作不可撤销,是否确定?", "警告",, "取消", IsWarn:=True) = 1 Then
DeleteDirectory(Path & "PCL\Pictures")
DeleteDirectory(PathExeFolder & "PCL\Pictures")
BackgroundRefresh(False, True)
Hint("背景图片已清空!", HintType.Green)
End If
@@ -189,9 +111,9 @@
Try
'获取可用的图片文件
Directory.CreateDirectory(Path & "PCL\Pictures\")
DirectoryUtils.Create(PathExeFolder & "PCL\Pictures\")
Dim Pic As New List(Of String)
For Each File In EnumerateFiles(Path & "PCL\Pictures\")
For Each File In EnumerateFiles(PathExeFolder & "PCL\Pictures\")
If File.Extension.Lower <> ".ini" AndAlso File.Extension.Lower <> ".db" Then '文件夹可能会被加入 .ini 和 thumbs.db
Pic.Add(File.FullName)
End If
@@ -220,9 +142,9 @@
If ex.Message.Contains("参数无效") Then
Log("刷新背景图片失败,该图片文件可能并非标准格式。" & vbCrLf &
"你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。" & vbCrLf &
"文件:" & Address, LogLevel.Msgbox)
"文件:" & Address, NotifyLevel.MsgBox)
Else
Log(ex, "刷新背景图片失败(" & Address & ")", LogLevel.Msgbox)
Log(ex, "刷新背景图片失败(" & Address & ")", NotifyLevel.MsgBox)
End If
End Try
End If
@@ -230,7 +152,7 @@
End If
Catch ex As Exception
Log(ex, "刷新背景图片时出现未知错误", LogLevel.Feedback)
Log(ex, "刷新背景图片时出现未知错误", NotifyLevel.MsgBoxAndFeedback)
End Try
End Sub
@@ -240,17 +162,17 @@
If FileName = "" Then Return
Try
'拷贝文件
File.Delete(Path & "PCL\Logo.png")
CopyFile(FileName, Path & "PCL\Logo.png")
File.Delete(PathExeFolder & "PCL\Logo.png")
CopyFile(FileName, PathExeFolder & "PCL\Logo.png")
'设置当前显示
FrmMain.ImageTitleLogo.Source = Nothing '防止因为 Source 属性前后的值相同而不更新 (#5628)
FrmMain.ImageTitleLogo.Source = Path & "PCL\Logo.png"
FrmMain.ImageTitleLogo.Source = PathExeFolder & "PCL\Logo.png"
Catch ex As Exception
If ex.Message.Contains("参数无效") Then
Log("改变标题栏图片失败,该图片文件可能并非标准格式。" & vbCrLf &
"你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。", LogLevel.Msgbox)
"你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。", NotifyLevel.MsgBox)
Else
Log(ex, "设置标题栏图片失败", LogLevel.Msgbox)
Log(ex, "设置标题栏图片失败", NotifyLevel.MsgBox)
End If
FrmMain.ImageTitleLogo.Source = Nothing
End Try
@@ -259,23 +181,23 @@
If Not (AniControlEnabled = 0 AndAlso e.RaiseByMouse) Then Return
Refresh:
'已有图片则不再选择
If File.Exists(Path & "PCL\Logo.png") Then
If File.Exists(PathExeFolder & "PCL\Logo.png") Then
Try
FrmMain.ImageTitleLogo.Source = Nothing '防止因为 Source 属性前后的值相同而不更新 (#5628)
FrmMain.ImageTitleLogo.Source = Path & "PCL\Logo.png"
FrmMain.ImageTitleLogo.Source = PathExeFolder & "PCL\Logo.png"
Catch ex As Exception
If ex.Message.Contains("参数无效") Then
Log("调整标题栏图片失败,该图片文件可能并非标准格式。" & vbCrLf &
"你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。", LogLevel.Msgbox)
"你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。", NotifyLevel.MsgBox)
Else
Log(ex, "调整标题栏图片失败", LogLevel.Msgbox)
Log(ex, "调整标题栏图片失败", NotifyLevel.MsgBox)
End If
FrmMain.ImageTitleLogo.Source = Nothing
e.Handled = True
Try
File.Delete(Path & "PCL\Logo.png")
File.Delete(PathExeFolder & "PCL\Logo.png")
Catch exx As Exception
Log(exx, "清理错误的标题栏图片失败", LogLevel.Msgbox)
Log(exx, "清理错误的标题栏图片失败", NotifyLevel.MsgBox)
End Try
End Try
Return
@@ -288,27 +210,27 @@ Refresh:
Else
Try
'拷贝文件
File.Delete(Path & "PCL\Logo.png")
CopyFile(FileName, Path & "PCL\Logo.png")
File.Delete(PathExeFolder & "PCL\Logo.png")
CopyFile(FileName, PathExeFolder & "PCL\Logo.png")
GoTo Refresh
Catch ex As Exception
Log(ex, "复制标题栏图片失败", LogLevel.Msgbox)
Log(ex, "复制标题栏图片失败", NotifyLevel.MsgBox)
End Try
End If
End Sub
Private Sub BtnLogoDelete_Click(sender As Object, e As EventArgs) Handles BtnLogoDelete.Click
Try
File.Delete(Path & "PCL\Logo.png")
File.Delete(PathExeFolder & "PCL\Logo.png")
RadioLogoType1.SetChecked(True, True)
Hint("标题栏图片已清空!", HintType.Green)
Catch ex As Exception
Log(ex, "清空标题栏图片失败", LogLevel.Msgbox)
Log(ex, "清空标题栏图片失败", NotifyLevel.MsgBox)
End Try
End Sub
'背景音乐
Private Sub BtnMusicOpen_Click(sender As Object, e As EventArgs) Handles BtnMusicOpen.Click
OpenExplorer(Path & "PCL\Musics\")
OpenExplorer(PathExeFolder & "PCL\Musics\")
End Sub
Private Sub BtnMusicRefresh_Click(sender As Object, e As EventArgs) Handles BtnMusicRefresh.Click
MusicRefreshPlay(True)
@@ -320,7 +242,7 @@ Refresh:
PanMusicDetail.Visibility = Visibility.Visible
BtnMusicClear.Visibility = Visibility.Visible
CardMusic.Title = "背景音乐(" &
EnumerateFiles(Path & "PCL\Musics\").Count(Function(f) Not {".ini", ".jpg", ".txt", ".cfg", ".lrc", ".db", ".png"}.Contains(f.Extension.Lower)) &
EnumerateFiles(PathExeFolder & "PCL\Musics\").Count(Function(f) Not {".ini", ".jpg", ".txt", ".cfg", ".lrc", ".db", ".png"}.Contains(f.Extension.Lower)) &
" 首)"
Else
PanMusicVolume.Visibility = Visibility.Collapsed
@@ -342,16 +264,16 @@ Refresh:
Thread.Sleep(200)
'删除文件
Try
DeleteDirectory(Path & "PCL\Musics")
DeleteDirectory(PathExeFolder & "PCL\Musics")
Hint("背景音乐已删除!", HintType.Green)
Catch ex As Exception
Log(ex, "删除背景音乐失败", LogLevel.Msgbox)
Log(ex, "删除背景音乐失败", NotifyLevel.MsgBox)
End Try
Try
Directory.CreateDirectory(Path & "PCL\Musics")
DirectoryUtils.Create(PathExeFolder & "PCL\Musics\")
RunInUi(Sub() MusicRefreshPlay(False))
Catch ex As Exception
Log(ex, "重建背景音乐文件夹失败", LogLevel.Msgbox)
Log(ex, "重建背景音乐文件夹失败", NotifyLevel.MsgBox)
End Try
End Sub)
End If
@@ -368,14 +290,14 @@ Refresh:
'主页
Private Sub BtnCustomFile_Click(sender As Object, e As EventArgs) Handles BtnCustomFile.Click
Try
If File.Exists(Path & "PCL\Custom.xaml") Then
If File.Exists(PathExeFolder & "PCL\Custom.xaml") Then
If MyMsgBox("当前已存在布局文件,继续生成教学文件将会覆盖现有布局文件!", "覆盖确认", "继续", "取消", IsWarn:=True) = 2 Then Return
End If
WriteFile(Path & "PCL\Custom.xaml", GetResources("Custom"))
FileUtils.Write(PathExeFolder & "PCL\Custom.xaml", GetResources("Custom"))
Hint("教学文件已生成!", HintType.Green)
OpenExplorer(Path & "PCL\Custom.xaml")
OpenExplorer(PathExeFolder & "PCL\Custom.xaml")
Catch ex As Exception
Log(ex, "生成教学文件失败", LogLevel.Feedback)
Log(ex, "生成教学文件失败", NotifyLevel.MsgBoxAndFeedback)
End Try
End Sub
Private Sub BtnCustomRefresh_Click() Handles BtnCustomRefresh.Click
@@ -390,9 +312,9 @@ Refresh:
"你可以在生成教学文件后直接刷新主页,对照着进行修改,更有助于理解。" & vbCrLf &
"直接将主页文件拖进 PCL 窗口也可以快捷加载。", "主页自定义教程")
End Sub
Public Shared Sub OnUiCustomTypeChanged(Value As Integer)
Public Shared Sub OnMainPageTypeChanged()
If FrmSetupUI Is Nothing Then Return
Select Case Value
Select Case CInt(Settings.Get("UiCustomType"))
Case 0 '无
FrmSetupUI.PanCustomPreset.Visibility = Visibility.Collapsed
FrmSetupUI.PanCustomLocal.Visibility = Visibility.Collapsed
@@ -577,7 +499,7 @@ Refresh:
'备注
If FrmSetupUI IsNot Nothing Then FrmSetupUI.CardSwitch.Title = If(HiddenForceShow, "功能隐藏(已暂时关闭,按 F12 以重新启用)", "功能隐藏")
Catch ex As Exception
Log(ex, "刷新功能隐藏项目失败", LogLevel.Feedback)
Log(ex, "刷新功能隐藏项目失败", NotifyLevel.MsgBoxAndFeedback)
End Try
End Sub