aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/Settings/IconSettingsView.swift
diff options
context:
space:
mode:
authorRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
committerRuben Beltran del Rio <git@r.bdr.sh>2025-11-27 23:38:04 +0100
commit213710bf5bd6413c747bf126db50816ef5de5a6e (patch)
tree912f8cf87955a08077c92fea8ad934f50b7ab975 /Hotline/macOS/Settings/IconSettingsView.swift
parentf466b21dc02f78c984ba6748e703f6780a7a0db4 (diff)
parent6a95b53616a4abfa306ddce43151cf4fefbd20ed (diff)
Merge remote-tracking branch 'upstream/main'
Diffstat (limited to 'Hotline/macOS/Settings/IconSettingsView.swift')
-rw-r--r--Hotline/macOS/Settings/IconSettingsView.swift58
1 files changed, 58 insertions, 0 deletions
diff --git a/Hotline/macOS/Settings/IconSettingsView.swift b/Hotline/macOS/Settings/IconSettingsView.swift
new file mode 100644
index 0000000..2bb92c4
--- /dev/null
+++ b/Hotline/macOS/Settings/IconSettingsView.swift
@@ -0,0 +1,58 @@
+import SwiftUI
+
+struct IconSettingsView: View {
+ @State private var hoveredUserIconID: Int = -1
+
+ var body: some View {
+ @Bindable var preferences = Prefs.shared
+
+ Form {
+ ScrollViewReader { scrollProxy in
+ ScrollView {
+ LazyVGrid(columns: [
+ GridItem(.fixed(4+32+4)),
+ GridItem(.fixed(4+32+4)),
+ GridItem(.fixed(4+32+4)),
+ GridItem(.fixed(4+32+4)),
+ GridItem(.fixed(4+32+4)),
+ GridItem(.fixed(4+32+4)),
+ GridItem(.fixed(4+32+4))
+ ], spacing: 0) {
+ ForEach(HotlineState.classicIconSet, id: \.self) { iconID in
+ HStack {
+ Image("Classic/\(iconID)")
+ .resizable()
+ .interpolation(.none)
+ .scaledToFit()
+ .frame(width: 32, height: 16)
+ .help("Icon \(String(iconID))")
+ }
+ .tag(iconID)
+ .frame(width: 32, height: 32)
+ .padding(4)
+ .background(iconID == preferences.userIconID ? Color.accentColor : (iconID == hoveredUserIconID ? Color.accentColor.opacity(0.1) : Color(nsColor: .textBackgroundColor)))
+ .clipShape(RoundedRectangle(cornerRadius: 5))
+ .onTapGesture {
+ preferences.userIconID = iconID
+ }
+ .onHover { hovered in
+ if hovered {
+ self.hoveredUserIconID = iconID
+ }
+ }
+ }
+ }
+ .padding()
+ }
+ .background(Color(nsColor: .textBackgroundColor))
+ .clipShape(RoundedRectangle(cornerRadius: 6))
+ .overlay(RoundedRectangle(cornerRadius: 6).stroke(Color(nsColor: .separatorColor), lineWidth: 1))
+ .onAppear {
+ scrollProxy.scrollTo(preferences.userIconID, anchor: .center)
+ }
+ .frame(height: 355)
+ }
+ }
+ .padding()
+ }
+}