aboutsummaryrefslogtreecommitdiff
path: root/Hotline/macOS/SettingsView.swift
blob: 2b11ecceae9190ed22dafd461a4320818972613c (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
import SwiftUI

struct GeneralSettingsView: View {
  @Environment(Prefs.self) private var preferences: Prefs
    
  var body: some View {
    @Bindable var preferences = preferences
    
    Form {
      TextField("Your Name", text: $preferences.username, prompt: Text("guest"))
      Toggle("Refuse private messages", isOn: $preferences.refusePrivateMessages)
      Toggle("Refuse private chat", isOn: $preferences.refusePrivateChat)
      Toggle("Automatic Response", isOn: $preferences.enableAutomaticMessage)
      if preferences.enableAutomaticMessage {
        TextField("", text: $preferences.automaticMessage, prompt: Text("Write a response message"))
          .lineLimit(2)
          .multilineTextAlignment(.leading)
//          .fixedSize(horizontal: true, vertical: false)
          .frame(maxWidth: .infinity)
//          .lineLimit(2, reservesSpace: true)
      }
    }
    .padding(20)
    .frame(width: 350)
  }
}

struct IconSettingsView: View {
  @Environment(Prefs.self) private var preferences: Prefs
  
//  @AppStorage(Prefs.userIconID) private var userIconID: Int = Prefs.defaultIconID
  
  var body: some View {
    @Bindable var preferences = preferences
    
    Form {
      ScrollView {
        LazyVGrid(columns: [
          GridItem(.flexible(minimum: 20, maximum: 50)),
          GridItem(.flexible(minimum: 20, maximum: 50)),
          GridItem(.flexible(minimum: 20, maximum: 50)),
          GridItem(.flexible(minimum: 20, maximum: 50)),
          GridItem(.flexible(minimum: 20, maximum: 50)),
          GridItem(.flexible(minimum: 20, maximum: 50)),
          GridItem(.flexible(minimum: 20, maximum: 50))
        ]) {
          ForEach(Hotline.defaultIconSet.sorted(by: >), id: \.key) { iconID, iconText in
            Text(iconText)
              .font(.largeTitle)
              .frame(maxWidth: .infinity)
              .padding(4)
              .background(iconID == preferences.userIconID ? .blue : .clear)
              .clipShape(RoundedRectangle(cornerRadius: 5))
              .onTapGesture {
                preferences.userIconID = iconID
              }
          }
        }
        .padding()
      }
//      for (iconID, iconText) in Hotline.defaultIconSet {
        
//        Text(iconText)
//      }
    }
    .frame(width: 350, height: 300)
    
  }
}

struct SettingsView: View {
  private enum Tabs: Hashable {
    case general, icon
  }
  
  var body: some View {
    TabView {
      GeneralSettingsView()
        .tabItem {
          Label("General", systemImage: "gear")
        }
        .tag(Tabs.general)
      IconSettingsView()
        .tabItem {
          Label("Icon", systemImage: "person.crop.circle")
        }
        .tag(Tabs.icon)
    }
  }
}

#Preview {
  SettingsView()
}