PageSetupUI.xaml.vb 38 KB

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