feat: add appearance parameter mapping model and size
This commit is contained in:
1 parent
4854cfd968
commit
e7ac3e41c6
1 file changed
+114
-14
+114
-14
@@ -148,7 +148,7 @@ class Preferences {
|
||||
|
||||
// macro values
|
||||
static var appearanceModel: AppearanceModelPreference { defaults.macroPref("appearanceModel", AppearanceModelPreference.allCases) }
|
||||
static var appearanceSize: AppearanceModelPreference { defaults.macroPref("appearanceSize", AppearanceSizePreference.allCases) }
|
||||
static var appearanceSize: AppearanceSizePreference { defaults.macroPref("appearanceSize", AppearanceSizePreference.allCases) }
|
||||
static var theme: ThemePreference { defaults.macroPref("theme", ThemePreference.allCases) }
|
||||
static var showOnScreen: ShowOnScreenPreference { defaults.macroPref("showOnScreen", ShowOnScreenPreference.allCases) }
|
||||
static var titleTruncation: TitleTruncationPreference { defaults.macroPref("titleTruncation", TitleTruncationPreference.allCases) }
|
||||
@@ -209,6 +209,93 @@ class Preferences {
|
||||
|
||||
static var all: [String: Any] { defaults.persistentDomain(forName: App.id)! }
|
||||
|
||||
static func appearanceParameters(model: AppearanceModelPreference, size: AppearanceSizePreference) -> AppearanceParameters {
|
||||
var parameters = AppearanceParameters()
|
||||
if model == AppearanceModelPreference.thumbnails {
|
||||
parameters.hideThumbnails = true
|
||||
if size == AppearanceSizePreference.small {
|
||||
parameters.rowsCount = 6
|
||||
parameters.windowMinWidthInRow = 8
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 25
|
||||
parameters.fontHeight = 15
|
||||
parameters.maxWidthOnScreen = 85
|
||||
parameters.maxHeightOnScreen = 80
|
||||
} else if size == AppearanceSizePreference.middle {
|
||||
parameters.rowsCount = 5
|
||||
parameters.windowMinWidthInRow = 8
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 30
|
||||
parameters.fontHeight = 15
|
||||
parameters.maxWidthOnScreen = 90
|
||||
parameters.maxHeightOnScreen = 90
|
||||
} else if size == AppearanceSizePreference.large {
|
||||
parameters.rowsCount = 4
|
||||
parameters.windowMinWidthInRow = 8
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 30
|
||||
parameters.fontHeight = 15
|
||||
parameters.maxWidthOnScreen = 95
|
||||
parameters.maxHeightOnScreen = 90
|
||||
}
|
||||
} else if model == AppearanceModelPreference.appIcons {
|
||||
parameters.hideThumbnails = false
|
||||
if size == AppearanceSizePreference.small {
|
||||
parameters.rowsCount = 0
|
||||
parameters.windowMinWidthInRow = 4
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 60
|
||||
parameters.fontHeight = 0
|
||||
parameters.maxWidthOnScreen = 80
|
||||
parameters.maxHeightOnScreen = 80
|
||||
} else if size == AppearanceSizePreference.middle {
|
||||
parameters.rowsCount = 0
|
||||
parameters.windowMinWidthInRow = 5
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 75
|
||||
parameters.fontHeight = 0
|
||||
parameters.maxWidthOnScreen = 90
|
||||
parameters.maxHeightOnScreen = 90
|
||||
} else if size == AppearanceSizePreference.large {
|
||||
parameters.rowsCount = 0
|
||||
parameters.windowMinWidthInRow = 6
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 90
|
||||
parameters.fontHeight = 0
|
||||
parameters.maxWidthOnScreen = 95
|
||||
parameters.maxHeightOnScreen = 90
|
||||
}
|
||||
} else if model == AppearanceModelPreference.titles {
|
||||
parameters.hideThumbnails = false
|
||||
if size == AppearanceSizePreference.small {
|
||||
parameters.rowsCount = 0
|
||||
parameters.windowMinWidthInRow = 70
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 30
|
||||
parameters.fontHeight = 15
|
||||
parameters.maxWidthOnScreen = 50
|
||||
parameters.maxHeightOnScreen = 90
|
||||
} else if size == AppearanceSizePreference.middle {
|
||||
parameters.rowsCount = 0
|
||||
parameters.windowMinWidthInRow = 50
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 30
|
||||
parameters.fontHeight = 15
|
||||
parameters.maxWidthOnScreen = 70
|
||||
parameters.maxHeightOnScreen = 90
|
||||
} else if size == AppearanceSizePreference.large {
|
||||
parameters.rowsCount = 0
|
||||
parameters.windowMinWidthInRow = 30
|
||||
parameters.windowMaxWidthInRow = 90
|
||||
parameters.iconSize = 30
|
||||
parameters.fontHeight = 15
|
||||
parameters.maxWidthOnScreen = 90
|
||||
parameters.maxHeightOnScreen = 90
|
||||
}
|
||||
}
|
||||
return parameters
|
||||
}
|
||||
|
||||
static func migratePreferences() {
|
||||
let preferencesKey = "preferencesVersion"
|
||||
if let diskVersion = defaults.string(forKey: preferencesKey) {
|
||||
@@ -449,20 +536,33 @@ protocol MacroPreference {
|
||||
var localizedString: LocalizedString { get }
|
||||
}
|
||||
|
||||
struct AppearanceModelParameters {
|
||||
let label: String
|
||||
let hideThumbnails: Bool
|
||||
}
|
||||
struct AppearanceParameters {
|
||||
var hideThumbnails: Bool
|
||||
var rowsCount: CGFloat
|
||||
var windowMinWidthInRow: CGFloat
|
||||
var windowMaxWidthInRow: CGFloat
|
||||
var iconSize: CGFloat
|
||||
var fontHeight: CGFloat
|
||||
var maxWidthOnScreen: CGFloat
|
||||
var maxHeightOnScreen: CGFloat
|
||||
|
||||
struct AppearanceSizeParameters {
|
||||
let label: String
|
||||
let rowsCount: Bool
|
||||
let windowMinWidthInRow: CGFloat
|
||||
let windowMaxWidthInRow: CGFloat
|
||||
let iconSize: CGFloat
|
||||
let fontHeight: CGFloat
|
||||
let maxWidthOnScreen: CGFloat
|
||||
let maxHeightOnScreen: CGFloat
|
||||
init(hideThumbnails: Bool = true,
|
||||
rowsCount: CGFloat = 0,
|
||||
windowMinWidthInRow: CGFloat = 0,
|
||||
windowMaxWidthInRow: CGFloat = 0,
|
||||
iconSize: CGFloat = 0,
|
||||
fontHeight: CGFloat = 0,
|
||||
maxWidthOnScreen: CGFloat = 0,
|
||||
maxHeightOnScreen: CGFloat = 0) {
|
||||
self.hideThumbnails = hideThumbnails
|
||||
self.rowsCount = rowsCount
|
||||
self.windowMinWidthInRow = windowMinWidthInRow
|
||||
self.windowMaxWidthInRow = windowMaxWidthInRow
|
||||
self.iconSize = iconSize
|
||||
self.fontHeight = fontHeight
|
||||
self.maxWidthOnScreen = maxWidthOnScreen
|
||||
self.maxHeightOnScreen = maxHeightOnScreen
|
||||
}
|
||||
}
|
||||
|
||||
struct ThemeParameters {
|
||||
|
||||
Reference in new issue
Block a user