PageSetupUI.xaml.vb 39 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705
  1. Public Class PageSetupUI
  2. Public Shadows IsLoaded As Boolean = False
  3. Private Sub PageSetupUI_Loaded(sender As Object, e As RoutedEventArgs) Handles Me.Loaded
  4. '重复加载部分
  5. PanBack.ScrollToHome()
  6. ThemeCheckAll(True)
  7. If ThemeDontClick <> 0 Then
  8. Dim NewText As String
  9. Select Case ThemeDontClick
  10. Case 1
  11. NewText = "眼瞎白"
  12. Case 2
  13. NewText = "真·滑稽彩"
  14. Case Else
  15. NewText = "???"
  16. End Select
  17. For Each Control In PanLauncherTheme.Children
  18. If (TypeOf Control Is MyRadioBox) AndAlso CType(Control, MyRadioBox).IsEnabled Then
  19. CType(Control, MyRadioBox).Text = NewText
  20. End If
  21. Next
  22. End If
  23. '非重复加载部分
  24. If IsLoaded Then Exit Sub
  25. IsLoaded = True
  26. AniControlEnabled += 1
  27. SliderLoad()
  28. Reload()
  29. AniControlEnabled -= 1
  30. #If BETA Then
  31. PanLauncherHide.Visibility = Visibility.Visible
  32. #End If
  33. '设置解锁
  34. If Not RadioLauncherTheme8.IsEnabled Then LabLauncherTheme8Copy.ToolTip = "累积赞助达到 ¥23.33 后,在爱发电私信发送【解锁码】以解锁。" & vbCrLf & "右键打开赞助页面,如果觉得 PCL 做得还不错就支持一下吧 =w=!"
  35. RadioLauncherTheme8.ToolTip = "累积赞助达到 ¥23.33 后,在爱发电私信发送【解锁码】以解锁"
  36. If Not RadioLauncherTheme9.IsEnabled Then LabLauncherTheme9Copy.ToolTip = "· 反馈一个 Bug,在 Issue 标记为 [已完成] 后回复 Issue 要求解锁(右键打开反馈页面)" & vbCrLf & "· 向帮助库提交 Pull Request,在龙猫合并后解锁"
  37. RadioLauncherTheme9.ToolTip = "· 反馈一个 Bug,在反馈标记为 [完成] 后回复 Issue 要求解锁" & vbCrLf & "· 向帮助库提交 Pull Request,在龙猫合并后解锁"
  38. '极客蓝的处理在 ThemeCheck 中
  39. End Sub
  40. Public Sub Reload()
  41. Try
  42. '启动器
  43. SliderLauncherOpacity.Value = Setup.Get("UiLauncherTransparent")
  44. SliderLauncherHue.Value = Setup.Get("UiLauncherHue")
  45. SliderLauncherSat.Value = Setup.Get("UiLauncherSat")
  46. SliderLauncherDelta.Value = Setup.Get("UiLauncherDelta")
  47. SliderLauncherLight.Value = Setup.Get("UiLauncherLight")
  48. If Setup.Get("UiLauncherTheme") <= 14 Then CType(FindName("RadioLauncherTheme" & Setup.Get("UiLauncherTheme")), MyRadioBox).Checked = True
  49. CheckLauncherLogo.Checked = Setup.Get("UiLauncherLogo")
  50. CheckLauncherEmail.Checked = Setup.Get("UiLauncherEmail")
  51. '背景图片
  52. SliderBackgroundOpacity.Value = Setup.Get("UiBackgroundOpacity")
  53. SliderBackgroundBlur.Value = Setup.Get("UiBackgroundBlur")
  54. ComboBackgroundSuit.SelectedIndex = Setup.Get("UiBackgroundSuit")
  55. CheckBackgroundColorful.Checked = Setup.Get("UiBackgroundColorful")
  56. BackgroundRefresh(False, False)
  57. '标题栏
  58. CType(FindName("RadioLogoType" & Setup.Get("UiLogoType")), MyRadioBox).Checked = True
  59. CheckLogoLeft.Visibility = If(RadioLogoType0.Checked, Visibility.Visible, Visibility.Collapsed)
  60. PanLogoText.Visibility = If(RadioLogoType2.Checked, Visibility.Visible, Visibility.Collapsed)
  61. PanLogoChange.Visibility = If(RadioLogoType3.Checked, Visibility.Visible, Visibility.Collapsed)
  62. TextLogoText.Text = Setup.Get("UiLogoText")
  63. CheckLogoLeft.Checked = Setup.Get("UiLogoLeft")
  64. '背景音乐
  65. CheckMusicRandom.Checked = Setup.Get("UiMusicRandom")
  66. CheckMusicAuto.Checked = Setup.Get("UiMusicAuto")
  67. CheckMusicStop.Checked = Setup.Get("UiMusicStop")
  68. CheckMusicStart.Checked = Setup.Get("UiMusicStart")
  69. SliderMusicVolume.Value = Setup.Get("UiMusicVolume")
  70. MusicRefreshUI()
  71. '主页
  72. ComboCustomPreset.SelectedIndex = Setup.Get("UiCustomPreset")
  73. CType(FindName("RadioCustomType" & Setup.Load("UiCustomType")), MyRadioBox).Checked = True
  74. TextCustomNet.Text = Setup.Get("UiCustomNet")
  75. '功能隐藏
  76. CheckHiddenPageDownload.Checked = Setup.Get("UiHiddenPageDownload")
  77. CheckHiddenPageLink.Checked = Setup.Get("UiHiddenPageLink")
  78. CheckHiddenPageSetup.Checked = Setup.Get("UiHiddenPageSetup")
  79. CheckHiddenPageOther.Checked = Setup.Get("UiHiddenPageOther")
  80. CheckHiddenFunctionSelect.Checked = Setup.Get("UiHiddenFunctionSelect")
  81. CheckHiddenFunctionHidden.Checked = Setup.Get("UiHiddenFunctionHidden")
  82. CheckHiddenSetupLaunch.Checked = Setup.Get("UiHiddenSetupLaunch")
  83. CheckHiddenSetupUI.Checked = Setup.Get("UiHiddenSetupUi")
  84. CheckHiddenSetupLink.Checked = Setup.Get("UiHiddenSetupLink")
  85. CheckHiddenSetupSystem.Checked = Setup.Get("UiHiddenSetupSystem")
  86. CheckHiddenOtherAbout.Checked = Setup.Get("UiHiddenOtherAbout")
  87. CheckHiddenOtherFeedback.Checked = Setup.Get("UiHiddenOtherFeedback")
  88. CheckHiddenOtherVote.Checked = Setup.Get("UiHiddenOtherVote")
  89. CheckHiddenOtherHelp.Checked = Setup.Get("UiHiddenOtherHelp")
  90. CheckHiddenOtherTest.Checked = Setup.Get("UiHiddenOtherTest")
  91. Catch ex As NullReferenceException
  92. Log(ex, "个性化设置项存在异常,已被自动重置", LogLevel.Msgbox)
  93. Reset()
  94. Catch ex As Exception
  95. Log(ex, "重载个性化设置时出错", LogLevel.Feedback)
  96. End Try
  97. End Sub
  98. '初始化
  99. Public Sub Reset()
  100. Try
  101. Setup.Reset("UiLauncherTransparent")
  102. Setup.Reset("UiLauncherTheme")
  103. Setup.Reset("UiLauncherLogo")
  104. Setup.Reset("UiLauncherHue")
  105. Setup.Reset("UiLauncherSat")
  106. Setup.Reset("UiLauncherDelta")
  107. Setup.Reset("UiLauncherLight")
  108. Setup.Reset("UiLauncherEmail")
  109. Setup.Reset("UiBackgroundColorful")
  110. Setup.Reset("UiBackgroundOpacity")
  111. Setup.Reset("UiBackgroundBlur")
  112. Setup.Reset("UiBackgroundSuit")
  113. Setup.Reset("UiLogoType")
  114. Setup.Reset("UiLogoText")
  115. Setup.Reset("UiLogoLeft")
  116. Setup.Reset("UiMusicVolume")
  117. Setup.Reset("UiMusicStop")
  118. Setup.Reset("UiMusicStart")
  119. Setup.Reset("UiMusicRandom")
  120. Setup.Reset("UiMusicAuto")
  121. Setup.Reset("UiCustomType")
  122. Setup.Reset("UiCustomPreset")
  123. Setup.Reset("UiCustomNet")
  124. Setup.Reset("UiHiddenPageDownload")
  125. Setup.Reset("UiHiddenPageLink")
  126. Setup.Reset("UiHiddenPageSetup")
  127. Setup.Reset("UiHiddenPageOther")
  128. Setup.Reset("UiHiddenFunctionSelect")
  129. Setup.Reset("UiHiddenFunctionHidden")
  130. Setup.Reset("UiHiddenSetupLaunch")
  131. Setup.Reset("UiHiddenSetupUi")
  132. Setup.Reset("UiHiddenSetupLink")
  133. Setup.Reset("UiHiddenSetupSystem")
  134. Setup.Reset("UiHiddenOtherAbout")
  135. Setup.Reset("UiHiddenOtherFeedback")
  136. Setup.Reset("UiHiddenOtherVote")
  137. Setup.Reset("UiHiddenOtherHelp")
  138. Setup.Reset("UiHiddenOtherTest")
  139. Log("[Setup] 已初始化个性化设置!")
  140. Hint("已初始化个性化设置", HintType.Finish, False)
  141. Catch ex As Exception
  142. Log(ex, "初始化个性化设置失败", LogLevel.Msgbox)
  143. End Try
  144. Reload()
  145. End Sub
  146. '将控件改变路由到设置改变
  147. Private Shared Sub SliderChange(sender As MySlider, e As Object) Handles SliderBackgroundOpacity.Change, SliderBackgroundBlur.Change, SliderLauncherOpacity.Change, SliderMusicVolume.Change, SliderLauncherHue.Change, SliderLauncherLight.Change, SliderLauncherSat.Change, SliderLauncherDelta.Change
  148. If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Value)
  149. End Sub
  150. Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboBackgroundSuit.SelectionChanged, ComboCustomPreset.SelectionChanged
  151. If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex)
  152. End Sub
  153. Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckMusicStop.Change, CheckMusicRandom.Change, CheckMusicAuto.Change, CheckBackgroundColorful.Change, CheckLogoLeft.Change, CheckLauncherLogo.Change, CheckHiddenFunctionHidden.Change, CheckHiddenFunctionSelect.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
  154. If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked)
  155. End Sub
  156. Private Shared Sub TextBoxChange(sender As MyTextBox, e As Object) Handles TextLogoText.ValidatedTextChanged, TextCustomNet.ValidatedTextChanged
  157. If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Text)
  158. End Sub
  159. Private Shared Sub RadioBoxChange(sender As MyRadioBox, e As Object) Handles RadioLogoType0.Check, RadioLogoType1.Check, RadioLogoType2.Check, RadioLogoType3.Check, RadioLauncherTheme0.Check, RadioLauncherTheme1.Check, RadioLauncherTheme2.Check, RadioLauncherTheme3.Check, RadioLauncherTheme4.Check, RadioLauncherTheme5.Check, RadioLauncherTheme6.Check, RadioLauncherTheme7.Check, RadioLauncherTheme8.Check, RadioLauncherTheme9.Check, RadioLauncherTheme10.Check, RadioLauncherTheme11.Check, RadioLauncherTheme12.Check, RadioLauncherTheme13.Check, RadioLauncherTheme14.Check, RadioCustomType0.Check, RadioCustomType1.Check, RadioCustomType2.Check, RadioCustomType3.Check
  160. If AniControlEnabled = 0 Then Setup.Set(sender.Tag.ToString.Split("/")(0), Val(sender.Tag.ToString.Split("/")(1)))
  161. End Sub
  162. '背景图片
  163. Private Sub BtnUIBgOpen_Click(sender As Object, e As EventArgs) Handles BtnBackgroundOpen.Click
  164. OpenExplorer("""" & Path & "PCL\Pictures""")
  165. End Sub
  166. Private Sub BtnBackgroundRefresh_Click(sender As Object, e As EventArgs) Handles BtnBackgroundRefresh.Click
  167. BackgroundRefresh(True, True)
  168. End Sub
  169. Public Sub BackgroundRefreshUI(Show As Boolean, Count As Integer)
  170. If IsNothing(PanBackgroundOpacity) Then Exit Sub
  171. If Show Then
  172. PanBackgroundOpacity.Visibility = Visibility.Visible
  173. PanBackgroundBlur.Visibility = Visibility.Visible
  174. PanBackgroundSuit.Visibility = Visibility.Visible
  175. BtnBackgroundClear.Visibility = Visibility.Visible
  176. CardBackground.Title = "背景图片(" & Count & " 张)"
  177. Else
  178. PanBackgroundOpacity.Visibility = Visibility.Collapsed
  179. PanBackgroundBlur.Visibility = Visibility.Collapsed
  180. PanBackgroundSuit.Visibility = Visibility.Collapsed
  181. BtnBackgroundClear.Visibility = Visibility.Collapsed
  182. CardBackground.Title = "背景图片"
  183. End If
  184. CardBackground.TriggerForceResize()
  185. End Sub
  186. Private Sub BtnBackgroundClear_Click(sender As Object, e As EventArgs) Handles BtnBackgroundClear.Click
  187. If MyMsgBox("即将删除背景图片文件夹中的所有文件。" & vbCrLf & "此操作不可撤销,是否确定?", "警告",, "取消", IsWarn:=True) = 1 Then
  188. DeleteDirectory(Path & "PCL\Pictures")
  189. BackgroundRefresh(False, True)
  190. Hint("背景图片已清空!", HintType.Finish)
  191. End If
  192. End Sub
  193. ''' <summary>
  194. ''' 刷新背景图片及设置页 UI。
  195. ''' </summary>
  196. ''' <param name="IsHint">是否显示刷新提示。</param>
  197. ''' <param name="Refresh">是否刷新图片显示。</param>
  198. Public Shared Sub BackgroundRefresh(IsHint As Boolean, Refresh As Boolean)
  199. Try
  200. '获取可用的图片文件
  201. Directory.CreateDirectory(Path & "PCL\Pictures\")
  202. Dim Pic As New List(Of String)
  203. For Each File In EnumerateFiles(Path & "PCL\Pictures\")
  204. If File.Extension.ToLower <> ".ini" AndAlso File.Extension.ToLower <> ".db" Then '文件夹可能会被加入 .ini 和 thumbs.db
  205. Pic.Add(File.FullName)
  206. End If
  207. Next
  208. '加载
  209. If Not Pic.Any() Then
  210. If Refresh Then
  211. If FrmMain.ImgBack.Visibility = Visibility.Collapsed Then
  212. If IsHint Then Hint("未检测到可用背景图片!", HintType.Critical)
  213. Else
  214. FrmMain.ImgBack.Visibility = Visibility.Collapsed
  215. If IsHint Then Hint("背景图片已清除!", HintType.Finish)
  216. End If
  217. End If
  218. If Not IsNothing(FrmSetupUI) Then FrmSetupUI.BackgroundRefreshUI(False, 0)
  219. Else
  220. If Refresh Then
  221. Dim Address As String = RandomOne(Pic)
  222. Try
  223. Log("[UI] 加载背景图片:" & Address)
  224. FrmMain.ImgBack.Background = New MyBitmap(Address)
  225. Setup.Load("UiBackgroundSuit", True)
  226. FrmMain.ImgBack.Visibility = Visibility.Visible
  227. If IsHint Then Hint("背景图片已刷新:" & GetFileNameFromPath(Address), HintType.Finish, False)
  228. Catch ex As Exception
  229. If ex.Message.Contains("参数无效") Then
  230. Log("刷新背景图片失败,该图片文件可能并非标准格式。" & vbCrLf &
  231. "你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。" & vbCrLf &
  232. "文件:" & Address, LogLevel.Msgbox)
  233. Else
  234. Log(ex, "刷新背景图片失败(" & Address & ")", LogLevel.Msgbox)
  235. End If
  236. End Try
  237. End If
  238. If Not IsNothing(FrmSetupUI) Then FrmSetupUI.BackgroundRefreshUI(True, Pic.Count)
  239. End If
  240. Catch ex As Exception
  241. Log(ex, "刷新背景图片时出现未知错误", LogLevel.Feedback)
  242. End Try
  243. End Sub
  244. '顶部栏
  245. Private Sub BtnLogoChange_Click(sender As Object, e As EventArgs) Handles BtnLogoChange.Click
  246. Dim FileName As String = SelectFile("常用图片文件(*.png;*.jpg;*.gif)|*.png;*.jpg;*.gif", "选择图片")
  247. If FileName = "" Then Exit Sub
  248. Try
  249. '拷贝文件
  250. File.Delete(Path & "PCL\Logo.png")
  251. CopyFile(FileName, Path & "PCL\Logo.png")
  252. '设置当前显示
  253. FrmMain.ImageTitleLogo.Source = New MyBitmap(Path & "PCL\Logo.png")
  254. Catch ex As Exception
  255. If ex.Message.Contains("参数无效") Then
  256. Log("改变标题栏图片失败,该图片文件可能并非标准格式。" & vbCrLf &
  257. "你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。", LogLevel.Msgbox)
  258. Else
  259. Log(ex, "设置标题栏图片失败", LogLevel.Msgbox)
  260. End If
  261. FrmMain.ImageTitleLogo.Source = Nothing
  262. End Try
  263. End Sub
  264. Private Sub RadioLogoType3_Check(sender As Object, e As RouteEventArgs) Handles RadioLogoType3.PreviewCheck
  265. If Not (AniControlEnabled = 0 AndAlso e.RaiseByMouse) Then Exit Sub
  266. Refresh:
  267. '已有图片则不再选择
  268. If File.Exists(Path & "PCL\Logo.png") Then
  269. Try
  270. FrmMain.ImageTitleLogo.Source = New MyBitmap(Path & "PCL\Logo.png")
  271. Catch ex As Exception
  272. If ex.Message.Contains("参数无效") Then
  273. Log("调整标题栏图片失败,该图片文件可能并非标准格式。" & vbCrLf &
  274. "你可以尝试使用画图打开该文件并重新保存,这会让图片变为标准格式。", LogLevel.Msgbox)
  275. Else
  276. Log(ex, "调整标题栏图片失败", LogLevel.Msgbox)
  277. End If
  278. FrmMain.ImageTitleLogo.Source = Nothing
  279. e.Handled = True
  280. Try
  281. File.Delete(Path & "PCL\Logo.png")
  282. Catch exx As Exception
  283. Log(exx, "清理错误的标题栏图片失败", LogLevel.Msgbox)
  284. End Try
  285. End Try
  286. Exit Sub
  287. End If
  288. '没有图片则要求选择
  289. Dim FileName As String = SelectFile("常用图片文件(*.png;*.jpg;*.gif)|*.png;*.jpg;*.gif", "选择图片")
  290. If FileName = "" Then
  291. FrmMain.ImageTitleLogo.Source = Nothing
  292. e.Handled = True
  293. Else
  294. Try
  295. '拷贝文件
  296. File.Delete(Path & "PCL\Logo.png")
  297. CopyFile(FileName, Path & "PCL\Logo.png")
  298. GoTo Refresh
  299. Catch ex As Exception
  300. Log(ex, "复制标题栏图片失败", LogLevel.Msgbox)
  301. End Try
  302. End If
  303. End Sub
  304. Private Sub BtnLogoDelete_Click(sender As Object, e As EventArgs) Handles BtnLogoDelete.Click
  305. Try
  306. File.Delete(Path & "PCL\Logo.png")
  307. RadioLogoType1.SetChecked(True, True, True)
  308. Hint("标题栏图片已清空!", HintType.Finish)
  309. Catch ex As Exception
  310. Log(ex, "清空标题栏图片失败", LogLevel.Msgbox)
  311. End Try
  312. End Sub
  313. '背景音乐
  314. Private Sub BtnMusicOpen_Click(sender As Object, e As EventArgs) Handles BtnMusicOpen.Click
  315. OpenExplorer("""" & Path & "PCL\Musics""")
  316. End Sub
  317. Private Sub BtnMusicRefresh_Click(sender As Object, e As EventArgs) Handles BtnMusicRefresh.Click
  318. MusicRefreshPlay(True)
  319. End Sub
  320. Public Sub MusicRefreshUI()
  321. If PanBackgroundOpacity Is Nothing Then Exit Sub
  322. If MusicAllList.Any Then
  323. PanMusicVolume.Visibility = Visibility.Visible
  324. PanMusicDetail.Visibility = Visibility.Visible
  325. BtnMusicClear.Visibility = Visibility.Visible
  326. CardMusic.Title = "背景音乐(" & EnumerateFiles(Path & "PCL\Musics\").Count & " 首)"
  327. Else
  328. PanMusicVolume.Visibility = Visibility.Collapsed
  329. PanMusicDetail.Visibility = Visibility.Collapsed
  330. BtnMusicClear.Visibility = Visibility.Collapsed
  331. CardMusic.Title = "背景音乐"
  332. End If
  333. CardMusic.TriggerForceResize()
  334. End Sub
  335. Private Sub BtnMusicClear_Click(sender As Object, e As EventArgs) Handles BtnMusicClear.Click
  336. If MyMsgBox("即将删除背景音乐文件夹中的所有文件。" & vbCrLf & "此操作不可撤销,是否确定?", "警告",, "取消", IsWarn:=True) = 1 Then
  337. RunInThread(Sub()
  338. Hint("正在删除背景音乐……")
  339. '停止播放音乐
  340. MusicNAudio = Nothing
  341. MusicWaitingList = New List(Of String)
  342. MusicAllList = New List(Of String)
  343. Thread.Sleep(200)
  344. '删除文件
  345. Try
  346. DeleteDirectory(Path & "PCL\Musics")
  347. Hint("背景音乐已删除!", HintType.Finish)
  348. Catch ex As Exception
  349. Log(ex, "删除背景音乐失败", LogLevel.Msgbox)
  350. End Try
  351. Try
  352. Directory.CreateDirectory(Path & "PCL\Musics")
  353. RunInUi(Sub() MusicRefreshPlay(False))
  354. Catch ex As Exception
  355. Log(ex, "重建背景音乐文件夹失败", LogLevel.Msgbox)
  356. End Try
  357. End Sub)
  358. End If
  359. End Sub
  360. Private Sub CheckMusicStart_Change() Handles CheckMusicStart.Change
  361. If AniControlEnabled <> 0 Then Exit Sub
  362. If CheckMusicStart.Checked Then CheckMusicStop.Checked = False
  363. End Sub
  364. Private Sub CheckMusicStop_Change() Handles CheckMusicStop.Change
  365. If AniControlEnabled <> 0 Then Exit Sub
  366. If CheckMusicStop.Checked Then CheckMusicStart.Checked = False
  367. End Sub
  368. '主页
  369. Private Sub BtnCustomFile_Click(sender As Object, e As EventArgs) Handles BtnCustomFile.Click
  370. Try
  371. If File.Exists(Path & "PCL\Custom.xaml") Then
  372. If MyMsgBox("当前已存在布局文件,继续生成教学文件将会覆盖现有布局文件!", "覆盖确认", "继续", "取消", IsWarn:=True) = 2 Then Exit Sub
  373. End If
  374. WriteFile(Path & "PCL\Custom.xaml", GetResources("Custom"))
  375. Hint("教学文件已生成!", HintType.Finish)
  376. OpenExplorer("/select,""" & Path & "PCL\Custom.xaml""")
  377. Catch ex As Exception
  378. Log(ex, "生成教学文件失败", LogLevel.Feedback)
  379. End Try
  380. End Sub
  381. Private Sub BtnCustomRefresh_Click() Handles BtnCustomRefresh.Click
  382. FrmLaunchRight.ForceRefresh()
  383. Hint("已刷新主页!", HintType.Finish)
  384. End Sub
  385. Private Sub BtnCustomTutorial_Click(sender As Object, e As EventArgs) Handles BtnCustomTutorial.Click
  386. MyMsgBox("1. 点击 生成教学文件 按钮,这会在 PCL 文件夹下生成 Custom.xaml 布局文件。" & vbCrLf &
  387. "2. 使用记事本等工具打开这个文件并进行修改,修改完记得保存。" & vbCrLf &
  388. "3. 点击 刷新主页 按钮,查看主页现在长啥样了。" & vbCrLf &
  389. vbCrLf &
  390. "你可以在生成教学文件后直接刷新主页,对照着进行修改,更有助于理解。" & vbCrLf &
  391. "直接将自定义主页文件拖进 PCL 窗口也可以快捷加载。", "主页自定义教程")
  392. End Sub
  393. '主题
  394. Private Sub LabLauncherTheme5Unlock_MouseLeftButtonUp(sender As Object, e As MouseButtonEventArgs) Handles LabLauncherTheme5Unlock.MouseLeftButtonUp
  395. RadioLauncherTheme5Gray.Opacity -= 0.23
  396. RadioLauncherTheme5.Opacity += 0.23
  397. AniStart({
  398. AaOpacity(RadioLauncherTheme5Gray, 1, 1000),
  399. AaOpacity(RadioLauncherTheme5, -1, 1000)
  400. }, "ThemeUnlock")
  401. If RadioLauncherTheme5Gray.Opacity < 0.08 Then
  402. ThemeUnlock(5, UnlockHint:="隐藏主题 玄素黑 已解锁!")
  403. AniStop("ThemeUnlock")
  404. RadioLauncherTheme5.Checked = True
  405. End If
  406. End Sub
  407. Private Sub LabLauncherTheme11Click_MouseLeftButtonUp() Handles LabLauncherTheme11Click.MouseLeftButtonUp, RadioLauncherTheme11.MouseRightButtonUp
  408. If LabLauncherTheme11Click.Visibility = Visibility.Collapsed OrElse LabLauncherTheme11Click.ToolTip.ToString.Contains("点击") Then
  409. If MyMsgBox(
  410. "1. 不爬取或攻击相关服务或网站,不盗取相关账号,没有谜题可以或需要以此来解决。" & vbCrLf &
  411. "2. 不得篡改或损毁相关公开信息,请尽量让它们保持原状。" & vbCrLf &
  412. "3. 在你感到迷茫的时候,看看回声洞可能会给你带来惊喜。" & vbCrLf & vbCrLf &
  413. "若违规,可能会被从任意相关群中踢出!",
  414. "解密游戏的基本规则", "我知道了", "恕我拒绝") = 1 Then
  415. MyMsgBox("你需要用自己的智慧来找到下一步的线索……" & vbCrLf &
  416. "初始线索:gnp.dorC61\60\20\0202\moc.x1xa.2s\\:sp" & "T".ToLower & "th", "解密游戏") '防止触发病毒检测规则
  417. End If
  418. End If
  419. End Sub
  420. Private Sub LabLauncherTheme8Copy_MouseRightButtonUp() Handles LabLauncherTheme8Copy.MouseRightButtonUp
  421. OpenWebsite("https://afdian.net/a/LTCat")
  422. End Sub
  423. Private Sub LabLauncherTheme9Copy_MouseRightButtonUp() Handles LabLauncherTheme9Copy.MouseRightButtonUp
  424. PageOtherLeft.TryFeedback()
  425. End Sub
  426. '主题自定义
  427. Private Sub RadioLauncherTheme14_Change(sender As Object, e As RouteEventArgs) Handles RadioLauncherTheme14.Changed
  428. If RadioLauncherTheme14.Checked Then
  429. If LabLauncherHue.Visibility = Visibility.Visible Then Exit Sub
  430. LabLauncherHue.Visibility = Visibility.Visible
  431. SliderLauncherHue.Visibility = Visibility.Visible
  432. LabLauncherSat.Visibility = Visibility.Visible
  433. SliderLauncherSat.Visibility = Visibility.Visible
  434. LabLauncherDelta.Visibility = Visibility.Visible
  435. SliderLauncherDelta.Visibility = Visibility.Visible
  436. LabLauncherLight.Visibility = Visibility.Visible
  437. SliderLauncherLight.Visibility = Visibility.Visible
  438. Else
  439. If LabLauncherHue.Visibility = Visibility.Collapsed Then Exit Sub
  440. LabLauncherHue.Visibility = Visibility.Collapsed
  441. SliderLauncherHue.Visibility = Visibility.Collapsed
  442. LabLauncherSat.Visibility = Visibility.Collapsed
  443. SliderLauncherSat.Visibility = Visibility.Collapsed
  444. LabLauncherDelta.Visibility = Visibility.Collapsed
  445. SliderLauncherDelta.Visibility = Visibility.Collapsed
  446. LabLauncherLight.Visibility = Visibility.Collapsed
  447. SliderLauncherLight.Visibility = Visibility.Collapsed
  448. End If
  449. CardLauncher.TriggerForceResize()
  450. End Sub
  451. Private Sub HSL_Change() Handles SliderLauncherHue.Change, SliderLauncherLight.Change, SliderLauncherSat.Change, SliderLauncherDelta.Change
  452. If AniControlEnabled <> 0 OrElse SliderLauncherSat Is Nothing OrElse Not SliderLauncherSat.IsLoaded Then Exit Sub
  453. ThemeRefresh()
  454. End Sub
  455. #Region "功能隐藏"
  456. Private Shared _HiddenForceShow As Boolean = False
  457. ''' <summary>
  458. ''' 是否强制显示被禁用的功能。
  459. ''' </summary>
  460. Public Shared Property HiddenForceShow As Boolean
  461. Get
  462. Return _HiddenForceShow
  463. End Get
  464. Set(value As Boolean)
  465. _HiddenForceShow = value
  466. HiddenRefresh()
  467. End Set
  468. End Property
  469. ''' <summary>
  470. ''' 更新功能隐藏带来的显示变化。
  471. ''' </summary>
  472. Public Shared Sub HiddenRefresh() Handles Me.Loaded
  473. If FrmMain.PanTitleSelect Is Nothing OrElse Not FrmMain.PanTitleSelect.IsLoaded Then Exit Sub
  474. Try
  475. '顶部栏
  476. If Not HiddenForceShow AndAlso Setup.Get("UiHiddenPageDownload") AndAlso Setup.Get("UiHiddenPageLink") AndAlso Setup.Get("UiHiddenPageSetup") AndAlso Setup.Get("UiHiddenPageOther") Then
  477. '顶部栏已被全部隐藏
  478. FrmMain.PanTitleSelect.Visibility = Visibility.Collapsed
  479. Else
  480. '顶部栏未被全部隐藏
  481. FrmMain.PanTitleSelect.Visibility = Visibility.Visible
  482. FrmMain.BtnTitleSelect1.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenPageDownload"), Visibility.Collapsed, Visibility.Visible)
  483. FrmMain.BtnTitleSelect2.Visibility = Visibility.Collapsed 'If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenPageLink"), Visibility.Collapsed, Visibility.Visible)
  484. FrmMain.BtnTitleSelect3.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenPageSetup"), Visibility.Collapsed, Visibility.Visible)
  485. FrmMain.BtnTitleSelect4.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenPageOther"), Visibility.Collapsed, Visibility.Visible)
  486. End If
  487. '功能
  488. FrmLaunchLeft.RefreshButtonsUI()
  489. If FrmSetupUI IsNot Nothing Then
  490. FrmSetupUI.CardSwitch.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenFunctionHidden"), Visibility.Collapsed, Visibility.Visible)
  491. End If
  492. '设置子页面
  493. If FrmSetupLeft IsNot Nothing Then
  494. FrmSetupLeft.ItemLaunch.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenSetupLaunch"), Visibility.Collapsed, Visibility.Visible)
  495. FrmSetupLeft.ItemUI.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenSetupUi"), Visibility.Collapsed, Visibility.Visible)
  496. FrmSetupLeft.ItemLink.Visibility = Visibility.Collapsed 'If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenSetupLink"), Visibility.Collapsed, Visibility.Visible)
  497. FrmSetupLeft.ItemSystem.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenSetupSystem"), Visibility.Collapsed, Visibility.Visible)
  498. '隐藏左边选择卡
  499. Dim AvaliableCount As Integer = 0
  500. If Not Setup.Get("UiHiddenSetupLaunch") Then AvaliableCount += 1
  501. If Not Setup.Get("UiHiddenSetupUi") Then AvaliableCount += 1
  502. If Not Setup.Get("UiHiddenSetupLink") Then AvaliableCount += 1
  503. If Not Setup.Get("UiHiddenSetupSystem") Then AvaliableCount += 1
  504. FrmSetupLeft.PanItem.Visibility = If(AvaliableCount < 2 AndAlso Not HiddenForceShow, Visibility.Collapsed, Visibility.Visible)
  505. End If
  506. '更多子页面
  507. Dim OtherAvaliableCount As Integer = 0
  508. If Not Setup.Get("UiHiddenOtherHelp") Then OtherAvaliableCount += 1
  509. If Not Setup.Get("UiHiddenOtherAbout") Then OtherAvaliableCount += 1
  510. If Not Setup.Get("UiHiddenOtherTest") Then OtherAvaliableCount += 1
  511. If Not Setup.Get("UiHiddenOtherFeedback") Then OtherAvaliableCount += 1
  512. If Not Setup.Get("UiHiddenOtherVote") Then OtherAvaliableCount += 1
  513. If FrmOtherLeft IsNot Nothing Then
  514. FrmOtherLeft.ItemHelp.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenOtherHelp"), Visibility.Collapsed, Visibility.Visible)
  515. FrmOtherLeft.ItemFeedback.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenOtherFeedback"), Visibility.Collapsed, Visibility.Visible)
  516. FrmOtherLeft.ItemVote.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenOtherVote"), Visibility.Collapsed, Visibility.Visible)
  517. FrmOtherLeft.ItemAbout.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenOtherAbout"), Visibility.Collapsed, Visibility.Visible)
  518. FrmOtherLeft.ItemTest.Visibility = If(Not HiddenForceShow AndAlso Setup.Get("UiHiddenOtherTest"), Visibility.Collapsed, Visibility.Visible)
  519. '隐藏左边选择卡
  520. FrmOtherLeft.PanItem.Visibility = If(OtherAvaliableCount < 2 AndAlso Not HiddenForceShow, Visibility.Collapsed, Visibility.Visible)
  521. End If
  522. If OtherAvaliableCount = 1 AndAlso Not HiddenForceShow Then
  523. If Not Setup.Get("UiHiddenOtherHelp") Then
  524. FrmMain.BtnTitleSelect4.Text = "帮助"
  525. ElseIf Not Setup.Get("UiHiddenOtherAbout") Then
  526. FrmMain.BtnTitleSelect4.Text = "关于"
  527. Else
  528. FrmMain.BtnTitleSelect4.Text = "百宝箱"
  529. End If
  530. Else
  531. FrmMain.BtnTitleSelect4.Text = "更多"
  532. End If
  533. '各个页面的入口
  534. If FrmMain.PageCurrent = FormMain.PageType.VersionSelect Then FrmSelectRight.BtnEmptyDownload_Loaded()
  535. If FrmMain.PageCurrent = FormMain.PageType.Launch Then FrmLaunchLeft.RefreshButtonsUI()
  536. If FrmMain.PageCurrent = FormMain.PageType.VersionSetup AndAlso FrmVersionModDisabled IsNot Nothing Then FrmVersionModDisabled.BtnDownload_Loaded()
  537. '备注
  538. If FrmSetupUI IsNot Nothing Then FrmSetupUI.CardSwitch.Title = If(HiddenForceShow, "功能隐藏(已暂时关闭,按 F12 以重新启用)", "功能隐藏")
  539. Catch ex As Exception
  540. Log(ex, "刷新功能隐藏项目失败", LogLevel.Feedback)
  541. End Try
  542. End Sub
  543. 'UI 协同改变
  544. Private Sub HiddenSetupMain() Handles CheckHiddenPageSetup.Change
  545. '设置主页面
  546. If CheckHiddenPageSetup.Checked Then
  547. '开启
  548. CheckHiddenSetupLaunch.Checked = True
  549. CheckHiddenSetupSystem.Checked = True
  550. CheckHiddenSetupLink.Checked = True
  551. CheckHiddenSetupUI.Checked = True
  552. Else
  553. '关闭
  554. If Setup.Get("UiHiddenSetupLaunch") AndAlso Setup.Get("UiHiddenSetupUi") AndAlso Setup.Get("UiHiddenSetupSystem") AndAlso Setup.Get("UiHiddenSetupLink") Then
  555. CheckHiddenSetupLaunch.Checked = False
  556. CheckHiddenSetupSystem.Checked = False
  557. CheckHiddenSetupLink.Checked = False
  558. CheckHiddenSetupUI.Checked = False
  559. End If
  560. End If
  561. End Sub
  562. Private Sub HiddenSetupSub() Handles CheckHiddenSetupLaunch.Change, CheckHiddenSetupSystem.Change, CheckHiddenSetupLink.Change, CheckHiddenSetupUI.Change
  563. '设置子页面
  564. If Setup.Get("UiHiddenSetupLaunch") AndAlso Setup.Get("UiHiddenSetupUi") AndAlso Setup.Get("UiHiddenSetupSystem") AndAlso Setup.Get("UiHiddenSetupLink") Then
  565. '已被全部隐藏
  566. CheckHiddenPageSetup.Checked = True
  567. Else
  568. '未被全部隐藏
  569. CheckHiddenPageSetup.Checked = False
  570. End If
  571. End Sub
  572. Private Sub HiddenOtherMain() Handles CheckHiddenPageOther.Change
  573. '更多主页面
  574. If CheckHiddenPageOther.Checked Then
  575. '开启
  576. CheckHiddenOtherAbout.Checked = True
  577. CheckHiddenOtherTest.Checked = True
  578. CheckHiddenOtherFeedback.Checked = True
  579. CheckHiddenOtherVote.Checked = True
  580. CheckHiddenOtherHelp.Checked = True
  581. Else
  582. '关闭
  583. If Setup.Get("UiHiddenOtherHelp") AndAlso Setup.Get("UiHiddenOtherAbout") AndAlso Setup.Get("UiHiddenOtherTest") AndAlso
  584. Setup.Get("UiHiddenOtherVote") AndAlso Setup.Get("UiHiddenOtherFeedback") Then
  585. CheckHiddenOtherAbout.Checked = False
  586. CheckHiddenOtherTest.Checked = False
  587. CheckHiddenOtherFeedback.Checked = False
  588. CheckHiddenOtherVote.Checked = False
  589. CheckHiddenOtherHelp.Checked = False
  590. End If
  591. End If
  592. End Sub
  593. Private Sub HiddenOtherSub(sender As Object, user As Boolean) Handles CheckHiddenOtherHelp.Change, CheckHiddenOtherAbout.Change, CheckHiddenOtherTest.Change
  594. '更多子页面(有具体内容的)
  595. If Setup.Get("UiHiddenOtherHelp") AndAlso Setup.Get("UiHiddenOtherAbout") AndAlso Setup.Get("UiHiddenOtherTest") Then
  596. '已被全部隐藏
  597. CheckHiddenPageOther.Checked = True
  598. Else
  599. '未被全部隐藏
  600. CheckHiddenPageOther.Checked = False
  601. End If
  602. '修改无具体内容的项
  603. If Not user Then Exit Sub
  604. If Setup.Get("UiHiddenOtherHelp") AndAlso Setup.Get("UiHiddenOtherAbout") AndAlso Setup.Get("UiHiddenOtherTest") Then
  605. CheckHiddenOtherFeedback.Checked = True
  606. CheckHiddenOtherVote.Checked = True
  607. End If
  608. End Sub
  609. Private Sub HiddenOtherNet(sender As Object, user As Boolean) Handles CheckHiddenOtherFeedback.Change, CheckHiddenOtherVote.Change
  610. '更多子页面(无具体内容的)
  611. If Not user Then Exit Sub
  612. If Setup.Get("UiHiddenOtherHelp") AndAlso Setup.Get("UiHiddenOtherAbout") AndAlso Setup.Get("UiHiddenOtherTest") AndAlso
  613. (Not Setup.Get("UiHiddenOtherFeedback") OrElse Not Setup.Get("UiHiddenOtherVote")) Then
  614. CheckHiddenOtherAbout.Checked = False
  615. CheckHiddenOtherTest.Checked = False
  616. CheckHiddenOtherHelp.Checked = False
  617. End If
  618. End Sub
  619. '警告提示
  620. Private Sub HiddenHint(sender As Object, user As Boolean) Handles CheckHiddenFunctionHidden.Change, CheckHiddenPageSetup.Change, CheckHiddenSetupUI.Change
  621. If AniControlEnabled = 0 AndAlso sender.Checked Then Hint("按 F12 即可暂时关闭功能隐藏设置。千万别忘了,要不然设置就改不回来了……")
  622. End Sub
  623. #End Region
  624. '公开预览版
  625. Private Sub BtnLauncherDonate_Click(sender As Object, e As EventArgs) Handles BtnLauncherDonate.Click
  626. OpenWebsite("https://afdian.net/a/LTCat")
  627. End Sub
  628. '滑动条
  629. Private Sub SliderLoad()
  630. SliderMusicVolume.GetHintText = Function(Value As Integer)
  631. Return Math.Ceiling(Value * 0.1) & "%"
  632. End Function
  633. SliderLauncherOpacity.GetHintText = Function(Value As Integer)
  634. Return Math.Round(40 + Value * 0.1) & "%"
  635. End Function
  636. SliderLauncherHue.GetHintText = Function(Value As Integer)
  637. Return Value & "°"
  638. End Function
  639. SliderLauncherSat.GetHintText = Function(Value As Integer)
  640. Return Value & "%"
  641. End Function
  642. SliderLauncherDelta.GetHintText = Function(Value As Integer)
  643. If Value > 90 Then
  644. Return "+" & (Value - 90)
  645. ElseIf Value = 90 Then
  646. Return 0
  647. Else
  648. Return Value - 90
  649. End If
  650. End Function
  651. SliderLauncherLight.GetHintText = Function(Value As Integer)
  652. If Value > 20 Then
  653. Return "+" & (Value - 20)
  654. ElseIf Value = 20 Then
  655. Return 0
  656. Else
  657. Return Value - 20
  658. End If
  659. End Function
  660. SliderBackgroundOpacity.GetHintText = Function(Value As Integer)
  661. Return Math.Round(Value * 0.1) & "%"
  662. End Function
  663. SliderBackgroundBlur.GetHintText = Function(Value As Integer)
  664. Return Value & " 像素"
  665. End Function
  666. End Sub
  667. End Class