diff options
Diffstat (limited to 'iosApp/iosApp')
-rw-r--r-- | iosApp/iosApp/Devices/DevicesView.swift | 41 | ||||
-rw-r--r-- | iosApp/iosApp/Map/MapView.swift | 23 | ||||
-rw-r--r-- | iosApp/iosApp/Units/UnitsView.swift | 66 | ||||
-rw-r--r-- | iosApp/iosApp/iOSApp.swift | 7 |
4 files changed, 74 insertions, 63 deletions
diff --git a/iosApp/iosApp/Devices/DevicesView.swift b/iosApp/iosApp/Devices/DevicesView.swift index 07951fd..48458ca 100644 --- a/iosApp/iosApp/Devices/DevicesView.swift +++ b/iosApp/iosApp/Devices/DevicesView.swift @@ -12,33 +12,24 @@ struct DevicesView: View { @StateObject var unitsViewModel: UnitsViewModel var body: some View { - List(selection: $unitsViewModel.selectedUnit) { - ForEach(unitsViewModel.units, id: \.device.id) { unit in - DeviceRow(unit: unit, callback: { action in - switch action { - case .details: - print ("Selected details of \(unit.device.name)") - case .reports: - print ("Selected reports of \(unit.device.name)") - case .commands: - print ("Selected commands of \(unit.device.name)") - } - }) - } - } - - .navigationTitle("devices") - .toolbar { - ToolbarItem(placement: .navigationBarLeading) { - Button(action: unitsViewModel.toggleDisplayMode) { - Image(systemName: "map") + List(unitsViewModel.units, id: \.device.id) { unit in + DeviceRow(unit: unit, callback: { action in + switch action { + case .details: + print ("Selected details of \(unit.device.name)") + case .reports: + print ("Selected reports of \(unit.device.name)") + case .commands: + print ("Selected commands of \(unit.device.name)") } - } - ToolbarItem(placement: .navigationBarTrailing) { - Button(action: {}) { - Image(systemName: "person") + }) + .onTapGesture { + unitsViewModel.searchQuery = "" + unitsViewModel.isEditing = false + unitsViewModel.unitsDisplayMode = .map + unitsViewModel.selectedUnit = unit + UIApplication.shared.endEditing() } - } } } } diff --git a/iosApp/iosApp/Map/MapView.swift b/iosApp/iosApp/Map/MapView.swift index 3530946..8732ef4 100644 --- a/iosApp/iosApp/Map/MapView.swift +++ b/iosApp/iosApp/Map/MapView.swift @@ -12,26 +12,13 @@ struct MapView: View { @StateObject var unitsViewModel: UnitsViewModel var body: some View { - ZStack { + VStack { Text("Unimplemented!") - } - .navigationTitle("map") - .toolbar { - ToolbarItem(placement: .navigationBarLeading) { - Button(action: unitsViewModel.toggleDisplayMode) { - Image(systemName: "list.bullet") - } - } - ToolbarItem(placement: .navigationBarTrailing) { - Button(action: {}) { - Image(systemName: "square.stack.3d.up") - } - } - ToolbarItem(placement: .navigationBarTrailing) { - Button(action: {}) { - Image(systemName: "person") - } + if let deviceName = unitsViewModel.selectedUnit?.device.name { + Text("Selected: \(deviceName)") + .padding() } + } } } diff --git a/iosApp/iosApp/Units/UnitsView.swift b/iosApp/iosApp/Units/UnitsView.swift index fd673a6..fc4952f 100644 --- a/iosApp/iosApp/Units/UnitsView.swift +++ b/iosApp/iosApp/Units/UnitsView.swift @@ -15,29 +15,55 @@ struct UnitsView: View { var body: some View { NavigationView { - ZStack { - switch unitsViewModel.unitsDisplayMode { - case .list: - DevicesView(unitsViewModel: unitsViewModel) - case .map: - MapView(unitsViewModel: unitsViewModel) + TabView(selection: $unitsViewModel.unitsDisplayMode, content: { + MapView(unitsViewModel: unitsViewModel) + .tabItem { + Image(systemName: "map") + Text("map") + } + .tag(UnitsViewModel.UnitsDisplayMode.map) + DevicesView(unitsViewModel: unitsViewModel) + .tabItem { + Image(systemName: "list.bullet") + Text("devices") + } + .tag(UnitsViewModel.UnitsDisplayMode.list) + }) + .navigationTitle(getNavigationTitle(unitsViewModel.unitsDisplayMode)) + .navigationBarTitleDisplayMode(.inline) + .navigationSearchBar { + SearchBar(NSLocalizedString("search", comment: ""), + text: $unitsViewModel.searchQuery, + isEditing: $unitsViewModel.isEditing, + onCommit: {}) + .showsCancelButton(unitsViewModel.isEditing) + .onCancel { + unitsViewModel.searchQuery = "" + } + } + .navigationSearchBarHiddenWhenScrolling(false) + .toolbar { + ToolbarItem(placement: .navigationBarTrailing) { + Button(action: {}) { + Image(systemName: "square.stack.3d.up") + } + .visible(unitsViewModel.unitsDisplayMode == .map) + } + ToolbarItem(placement: .navigationBarTrailing) { + Button(action: {}) { + Image(systemName: "person") + } + } } - } - .navigationBarTitleDisplayMode(.inline) - .navigationSearchBar { - searchBar() - } } } - private func searchBar () -> SearchBar { - SearchBar(NSLocalizedString("search", comment: ""), - text: $unitsViewModel.searchQuery, - isEditing: $unitsViewModel.isEditing, - onCommit: {}) - .showsCancelButton(unitsViewModel.isEditing) - .onCancel { - unitsViewModel.searchQuery = "" - } + private func getNavigationTitle(_ unitDisplayMode: UnitsViewModel.UnitsDisplayMode) -> LocalizedStringKey { + switch unitDisplayMode { + case .list: + return "devices" + case .map: + return "map" + } } } diff --git a/iosApp/iosApp/iOSApp.swift b/iosApp/iosApp/iOSApp.swift index 88eb146..9b21276 100644 --- a/iosApp/iosApp/iOSApp.swift +++ b/iosApp/iosApp/iOSApp.swift @@ -52,3 +52,10 @@ struct iOSApp: App { } } } + +// Source: https://stackoverflow.com/questions/56491386 +extension UIApplication { + func endEditing() { + sendAction(#selector(UIResponder.resignFirstResponder), to: nil, from: nil, for: nil) + } +} |