@@ -19,11 +19,11 @@ class PrefsViewController: NSViewController {
19
19
@IBOutlet weak var tableViewGroups : NSTableView !
20
20
21
21
@IBAction func buttonCheckConnection( _ sender: NSButton ) {
22
- checkConnection ( )
22
+ connect ( )
23
23
}
24
24
25
25
var prefs = Preferences ( )
26
- var groups = [ String : HaEntity] ( )
26
+ var groups = [ HaEntity] ( )
27
27
var menuItems = [ PrefMenuItem] ( )
28
28
private var dragDropType = NSPasteboard . PasteboardType ( rawValue: " private.table-row " )
29
29
@@ -36,18 +36,19 @@ class PrefsViewController: NSViewController {
36
36
tableViewGroups. dataSource = self
37
37
tableViewGroups. registerForDraggedTypes ( [ dragDropType] )
38
38
tableViewGroups. target = self
39
- tableViewGroups. doubleAction = #selector( tableViewGroupsDoubleClick ( _: ) )
39
+ // tableViewGroups.doubleAction = #selector(tableViewGroupsDoubleClick(_:))
40
40
41
- checkConnection ( )
41
+ connect ( )
42
42
}
43
43
44
44
override func viewWillDisappear( ) {
45
45
saveNewPrefs ( )
46
+ saveNewMenuItems ( )
46
47
NSApp . stopModal ( )
47
48
super. viewWillDisappear ( )
48
49
}
49
50
50
- func checkConnection ( ) {
51
+ func connect ( ) {
51
52
saveNewPrefs ( )
52
53
53
54
self . menuItems. removeAll ( )
@@ -59,11 +60,7 @@ class PrefsViewController: NSViewController {
59
60
DispatchQueue . main. async {
60
61
self . textfieldStatus. stringValue = " OK "
61
62
62
- let groupEntities = self . haService. filterEntities ( entityDomain: EntityDomains . groupDomain. rawValue)
63
-
64
- for groupEntity in groupEntities {
65
- self . groups [ groupEntity. entityId] = groupEntity
66
- }
63
+ self . groups = self . haService. filterEntities ( entityDomain: EntityDomains . groupDomain. rawValue) . reversed ( )
67
64
68
65
let menuItemsWithFriendlyNames = self . prefs. menuItemsWithFriendlyNames ( groups: self . groups)
69
66
@@ -78,6 +75,9 @@ class PrefsViewController: NSViewController {
78
75
79
76
case . failure( let haServiceApiError) :
80
77
DispatchQueue . main. async {
78
+ self . menuItems. removeAll ( )
79
+ self . tableViewGroups. reloadData ( )
80
+
81
81
switch haServiceApiError {
82
82
case . URLMissing:
83
83
self . textfieldStatus. stringValue = " Server URL missing "
@@ -103,39 +103,31 @@ class PrefsViewController: NSViewController {
103
103
func showExistingPrefs( ) {
104
104
textfieldServer. stringValue = prefs. server
105
105
textfieldToken. stringValue = prefs. token
106
- // buttonLights.state = (prefs.domainLights == true ? .on : .off)
107
- // buttonSwitches.state = (prefs.domainSwitches == true ? .on : .off)
108
- // buttonAutomations.state = (prefs.domainAutomations == true ? .on : .off)
109
- // buttonInputBooleans.state = (prefs.domainInputBooleans == true ? .on : .off)
110
- // buttonInputSelects.state = (prefs.domainInputSelects == true ? .on : .off)
111
- // textfieldGroup.stringValue = prefs.groupList
112
106
buttonLogin. state = ( prefs. launch == true ? . on : . off)
113
107
}
114
108
115
109
func saveNewPrefs( ) {
116
110
prefs. server = textfieldServer. stringValue
117
111
prefs. token = textfieldToken. stringValue
118
- // prefs.domainLights = (buttonLights.state == .on)
119
- // prefs.domainSwitches = (buttonSwitches.state == .on)
120
- // prefs.domainAutomations = (buttonAutomations.state == .on)
121
- // prefs.domainInputBooleans = (buttonInputBooleans.state == .on)
122
- // prefs.domainInputSelects = (buttonInputSelects.state == .on)
123
- // prefs.groupList = textfieldGroup.stringValue
124
112
prefs. launch = ( buttonLogin. state == . on)
125
113
126
114
NotificationCenter . default. post ( name: Notification . Name ( rawValue: " PrefsChanged " ) ,
127
115
object: nil )
128
116
}
129
117
130
- @objc func tableViewGroupsDoubleClick( _ sender: AnyObject ) {
131
-
132
- guard tableViewGroups. selectedRow >= 0 else {
133
- return
134
- }
135
-
136
- let item = self . menuItems [ tableViewGroups. selectedRow]
118
+ func saveNewMenuItems( ) {
119
+ prefs. menuItems = menuItems
137
120
}
138
121
122
+ // @objc func tableViewGroupsDoubleClick(_ sender:AnyObject) {
123
+ //
124
+ // guard tableViewGroups.selectedRow >= 0 else {
125
+ // return
126
+ // }
127
+ //
128
+ // let item = self.menuItems[tableViewGroups.selectedRow]
129
+ // }
130
+
139
131
}
140
132
141
133
extension PrefsViewController : NSTableViewDelegate , NSTableViewDataSource {
@@ -144,9 +136,9 @@ extension PrefsViewController: NSTableViewDelegate, NSTableViewDataSource {
144
136
return self . menuItems. count
145
137
}
146
138
147
- // fileprivate enum TableColumns {
148
- // static let GroupName = NSUserInterfaceItemIdentifier("GroupName")
149
- // }
139
+ // fileprivate enum TableColumns {
140
+ // static let GroupName = NSUserInterfaceItemIdentifier("GroupName")
141
+ // }
150
142
151
143
private func tableView( _ tableView: NSTableView , typeSelectStringFor tableColumn: NSTableColumn ? , row: Int ) -> PrefMenuItem ? {
152
144
return self . menuItems [ row]
@@ -166,7 +158,7 @@ extension PrefsViewController: NSTableViewDelegate, NSTableViewDataSource {
166
158
167
159
if tableColumn == tableView. tableColumns [ 1 ] {
168
160
let item = self . menuItems [ row]
169
- return item. friendlyName!
161
+ return item. friendlyName
170
162
}
171
163
172
164
if tableColumn == tableView. tableColumns [ 2 ] {
@@ -225,23 +217,18 @@ extension PrefsViewController: NSTableViewDelegate, NSTableViewDataSource {
225
217
}
226
218
}
227
219
228
- var oldIndexOffset = 0
229
- var newIndexOffset = 0
230
220
231
- // For simplicity, the code below uses `tableView.moveRowAtIndex` to move rows around directly.
232
- // You may want to move rows in your content array and then call `tableView.reloadData()` instead.
233
- tableView. beginUpdates ( )
234
- for oldIndex in oldIndexes {
235
- if oldIndex < row {
236
- tableView. moveRow ( at: oldIndex + oldIndexOffset, to: row - 1 )
237
- oldIndexOffset -= 1
238
- } else {
239
- tableView. moveRow ( at: oldIndex, to: row + newIndexOffset)
240
- newIndexOffset += 1
241
- }
221
+ let oldIndex = oldIndexes [ 0 ]
222
+ let element = menuItems. remove ( at: oldIndexes [ 0 ] )
223
+
224
+ if oldIndex < row {
225
+ self . menuItems. insert ( element, at: row - 1 )
226
+ }
227
+ else {
228
+ self . menuItems. insert ( element, at: row)
242
229
}
243
- tableView. endUpdates ( )
244
230
231
+ tableView. reloadData ( )
245
232
return true
246
233
}
247
234
0 commit comments