Surface the existing pin (keep-from-cull) and per-file delete actions as visible inline buttons on each offline cache row instead of context-menu-only: a star toggles protection from auto-cull (and restore-if-missing), a trash culls that file early. Aligns wording/icons to the star metaphor. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
41 lines
No EOL
1.4 KiB
Swift
41 lines
No EOL
1.4 KiB
Swift
import Foundation
|
|
|
|
/// App-wide visual theme. Persisted in `settings.json` as `appTheme`.
|
|
public enum AppTheme: String, Codable, Sendable, CaseIterable, Identifiable {
|
|
/// Current Netflix-style dark UI (default).
|
|
case standard = "standard"
|
|
/// Winamp 2.x classic green / beige skin.
|
|
case winampClassic = "winamp-classic"
|
|
/// Late Winamp: dark blue / purple chrome.
|
|
case winampModern = "winamp-modern"
|
|
/// High-contrast yellow / black (Llama-adjacent).
|
|
case winampLlama = "winamp-llama"
|
|
|
|
public var id: String { rawValue }
|
|
|
|
public var label: String {
|
|
switch self {
|
|
case .standard: "Standard"
|
|
case .winampClassic: "Winamp Classic"
|
|
case .winampModern: "Winamp Modern"
|
|
case .winampLlama: "Winamp Llama"
|
|
}
|
|
}
|
|
|
|
public var help: String {
|
|
switch self {
|
|
case .standard: "Dark streaming-style layout"
|
|
case .winampClassic: "Green title bar, beveled buttons, LED time readout"
|
|
case .winampModern: "Compact player with purple spectrum and dark chrome"
|
|
case .winampLlama: "Loud yellow accents on black — maximum contrast"
|
|
}
|
|
}
|
|
|
|
/// Themes that swap Player chrome to the compact Winamp control deck.
|
|
public var usesWinampChrome: Bool {
|
|
switch self {
|
|
case .standard: false
|
|
case .winampClassic, .winampModern, .winampLlama: true
|
|
}
|
|
}
|
|
} |