aboutsummaryrefslogtreecommitdiff
path: root/iosApp/iosApp
diff options
context:
space:
mode:
Diffstat (limited to 'iosApp/iosApp')
-rw-r--r--iosApp/iosApp/Devices/DevicesView.swift41
-rw-r--r--iosApp/iosApp/Map/MapView.swift23
-rw-r--r--iosApp/iosApp/Units/UnitsView.swift66
-rw-r--r--iosApp/iosApp/iOSApp.swift7
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)
+ }
+}