Files
diehammer/DieHammer/Utilities/ViewUtils.swift
T

40 lines
1.0 KiB
Swift

//
// ViewUtiles.swift
// Bunch O' Dice
//
// Created by Rory Hinnen on 22/6/12.
//
import Foundation
import SwiftUI
class SheetState<State>: ObservableObject {
@Published var isShowing = false
@Published var state: State? {
didSet { isShowing = state != nil }
}
}
class SettingsSheet: SheetState<SettingsSheet.State> {
enum State {
case settings, history
}
}
extension CaseIterable where Self: Equatable {
mutating func next() {
let allCases = Self.allCases
// just a sanity check, as the possibility of a enum case to not be
// present in `allCases` is quite low
guard let selfIndex = allCases.firstIndex(of: self) else { return }
let nextIndex = Self.allCases.index(after: selfIndex)
self = allCases[nextIndex == allCases.endIndex ? allCases.startIndex : nextIndex]
}
}
extension View {
func disabledWithOpacity(_ condition: Bool) -> some View {
self.disabled(condition).opacity(condition ? 0.4 : 1.0)
}
}