.../Source/App/Preferences/PreferencesService/CutBoxPreferences+SelectTheme.swift
Line | Count | Source |
1 | | // |
2 | | // CutBoxPreferences+SelectTheme.swift |
3 | | // CutBox |
4 | | // |
5 | | // Created by Jason Milkins on 12/4/18. |
6 | | // Copyright © 2018-2023 ocodo. All rights reserved. |
7 | | // |
8 | | |
9 | | import Foundation |
10 | | |
11 | | extension CutBoxPreferencesService { |
12 | | var theme: Int { |
13 | 624 | get { |
14 | 624 | // 1.5.8 - theme saved to prefs as themeName |
15 | 624 | if let name = defaults.string(forKey: "themeName"), |
16 | 624 | let index = themes.firstIndex(where: { $0.name == name }) { |
17 | 15 | return index |
18 | 609 | } |
19 | 609 | |
20 | 609 | let legacyIndex = defaults.integer(forKey: "theme") |
21 | 609 | if themes.count < legacyIndex + 1 { |
22 | 1 | self.theme = 0 |
23 | 1 | return 0 |
24 | 608 | } |
25 | 608 | return legacyIndex |
26 | 609 | } |
27 | | |
28 | 16 | set { |
29 | 16 | // 1.5.8 - theme saved to prefs as themeName |
30 | 16 | defaults.set(themes[newValue].name, forKey: "themeName") |
31 | 16 | |
32 | 16 | defaults.set(newValue, forKey: "theme") |
33 | 16 | self.events.onNext(.themeChanged) |
34 | 16 | } |
35 | | } |
36 | | |
37 | 3 | var themeName: String { |
38 | 3 | if let name = defaults.string(forKey: "themeName"), |
39 | 23 | let themeIndex = themes.firstIndex(where: { $0.name == name }) { |
40 | 1 | theme = themeIndex |
41 | 1 | return name |
42 | 2 | } |
43 | 2 | return themes[theme].name |
44 | 3 | } |
45 | | |
46 | 557 | var currentTheme: CutBoxColorTheme { return themes[theme] } |
47 | | |
48 | 13 | func cycleTheme() { |
49 | 13 | theme = (theme + 1) % themes.count |
50 | 13 | } |
51 | | } |