68 lines
1.7 KiB
Swift
68 lines
1.7 KiB
Swift
//
|
|
// PreferenceOptions.swift
|
|
// Privado
|
|
//
|
|
// Created by Juraldinio on 5/21/20.
|
|
// Copyright © 2020 Privado LLC. All rights reserved.
|
|
//
|
|
|
|
import Foundation
|
|
|
|
typealias PreferenceOptionsID = Int
|
|
typealias PreferenceOptionsTitle = String
|
|
typealias PreferenceOptionsEnabled = Bool
|
|
typealias PreferenceOptionsIndex = Int
|
|
typealias PreferenceRadioBoxForm = RadioBoxForm
|
|
|
|
struct PreferenceOptionsValue {
|
|
let title: String
|
|
let value: Any?
|
|
}
|
|
|
|
protocol RadioButtonOption {
|
|
var title: String { get set }
|
|
}
|
|
|
|
struct WindowDockStyle: Equatable, RadioButtonOption {
|
|
|
|
var title: String
|
|
let option: DockType
|
|
|
|
enum DockType {
|
|
case dock
|
|
case undock
|
|
}
|
|
}
|
|
|
|
struct RadioBoxForm {
|
|
var size: CGSize
|
|
var fontName: String
|
|
var fontSize: CGFloat
|
|
var textYoffset: CGFloat
|
|
}
|
|
|
|
struct AutoConnectPreferenceRecord: Equatable, RadioButtonOption {
|
|
var title: String
|
|
let type: PreferredServerType
|
|
}
|
|
|
|
enum PreferenceOptions: Equatable {
|
|
case empty
|
|
case check(PreferenceOptionsID, PreferenceOptionsEnabled, PreferenceOptionsValue)
|
|
case toggle(PreferenceOptionsID, PreferenceOptionsEnabled, PreferenceOptionsValue)
|
|
case menu(PreferenceOptionsID, PreferenceOptionsTitle, PreferenceOptionsIndex, [PreferenceOptionsValue])
|
|
case radio([RadioButtonOption], PreferenceOptionsTitle, PreferenceOptionsIndex, PreferenceRadioBoxForm)
|
|
|
|
static func == (lhs: PreferenceOptions, rhs: PreferenceOptions) -> Bool {
|
|
switch (lhs, rhs) {
|
|
case (.check, .check),
|
|
(.toggle, .toggle),
|
|
(.menu, .menu),
|
|
(.radio, .radio):
|
|
return true
|
|
default:
|
|
return false
|
|
}
|
|
}
|
|
}
|