vChewing-macOS/Source/Modules/UIModules/PrefUI/CtlPrefUIShared.swift

88 lines
2.3 KiB
Swift

// (c) 2021 and onwards The vChewing Project (MIT-NTL License).
// ====================
// This code is released under the MIT license (SPDX-License-Identifier: MIT)
// ... with NTL restriction stating that:
// No trademark license is granted to use the trade names, trademarks, service
// marks, or product names of Contributor, except as required to fulfill notice
// requirements defined in MIT License.
import MainAssembly
import SwiftExtension
import SwiftUI
@available(macOS 10.15, *)
extension PrefUITabs {
@ViewBuilder
var suiView: some View {
switch self {
case .tabGeneral: VwrPrefPaneGeneral()
case .tabCandidates: VwrPrefPaneCandidates()
case .tabBehavior: VwrPrefPaneBehavior()
case .tabOutput: VwrPrefPaneOutput()
case .tabDictionary: VwrPrefPaneDictionary()
case .tabPhrases: VwrPrefPanePhrases()
case .tabCassette: VwrPrefPaneCassette()
case .tabKeyboard: VwrPrefPaneKeyboard()
case .tabDevZone: VwrPrefPaneDevZone()
}
}
}
@available(macOS 10.15, *)
class CtlPrefUIShared {
static var sharedWindow: NSWindow? {
CtlPrefUI.shared?.window
}
static let shared = CtlPrefUIShared()
static let sentenceSeparator: String = {
switch PrefMgr.shared.appleLanguages[0] {
case "ja":
return ""
default:
if PrefMgr.shared.appleLanguages[0].contains("zh-Han") {
return ""
} else {
return " "
}
}
}()
static let contentMaxHeight: Double = 490
static let formWidth: Double = {
switch PrefMgr.shared.appleLanguages[0] {
case "ja":
return 520
default:
if PrefMgr.shared.appleLanguages[0].contains("zh-Han") {
return 500
} else {
return 580
}
}
}()
static var isCJKInterface: Bool {
PrefMgr.shared.appleLanguages[0].contains("zh-Han") || PrefMgr.shared.appleLanguages[0] == "ja"
}
}
@available(macOS 10.15, *)
public extension View {
func settingsDescription(maxWidth: CGFloat? = .infinity) -> some View {
controlSize(.small)
.frame(maxWidth: maxWidth, alignment: .leading)
// TODO: Use `.foregroundStyle` when targeting macOS 12.
.foregroundColor(.secondary)
}
}
@available(macOS 10.15, *)
public extension View {
func formStyled() -> some View {
if #available(macOS 13, *) { return self.formStyle(.grouped) }
return padding()
}
}