mirror of
https://github.com/kkebo/DNSecure.git
synced 2026-03-11 08:54:36 +00:00
Merge pull request #67 from kkk669/issues/64
FIx UI issues in iOS 15 (#64)
This commit is contained in:
commit
d833ea49c1
1 changed files with 49 additions and 23 deletions
|
|
@ -10,6 +10,7 @@ import SwiftUI
|
||||||
|
|
||||||
struct ContentView {
|
struct ContentView {
|
||||||
@Environment(\.scenePhase) private var scenePhase
|
@Environment(\.scenePhase) private var scenePhase
|
||||||
|
@Environment(\.horizontalSizeClass) private var hSizeClass
|
||||||
@Binding var servers: Resolvers
|
@Binding var servers: Resolvers
|
||||||
@Binding var usedID: String?
|
@Binding var usedID: String?
|
||||||
@State private var isEnabled = false
|
@State private var isEnabled = false
|
||||||
|
|
@ -131,6 +132,9 @@ extension ContentView: View {
|
||||||
var body: some View {
|
var body: some View {
|
||||||
if #available(iOS 16, *) {
|
if #available(iOS 16, *) {
|
||||||
self.modernBody
|
self.modernBody
|
||||||
|
} else if self.hSizeClass == .compact {
|
||||||
|
// Workaround for iOS 15
|
||||||
|
self.legacyBody.navigationViewStyle(.stack)
|
||||||
} else {
|
} else {
|
||||||
self.legacyBody
|
self.legacyBody
|
||||||
}
|
}
|
||||||
|
|
@ -189,22 +193,38 @@ extension ContentView: View {
|
||||||
private var legacyBody: some View {
|
private var legacyBody: some View {
|
||||||
NavigationView {
|
NavigationView {
|
||||||
List {
|
List {
|
||||||
NavigationLink(
|
if self.hSizeClass == .compact {
|
||||||
"Instructions",
|
NavigationLink(
|
||||||
tag: -1,
|
"Instructions",
|
||||||
selection: self.$selection
|
tag: -1,
|
||||||
) {
|
selection: self.$selection
|
||||||
HowToActivateView(isSheet: false)
|
) {
|
||||||
|
HowToActivateView(isSheet: false)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Workaround for iOS 15
|
||||||
|
Button("Instructions") {
|
||||||
|
self.selection = -1
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Section("Servers") {
|
Section("Servers") {
|
||||||
ForEach(0..<self.servers.count, id: \.self) { i in
|
ForEach(0..<self.servers.count, id: \.self) { i in
|
||||||
NavigationLink(
|
if self.hSizeClass == .compact {
|
||||||
tag: i,
|
NavigationLink(
|
||||||
selection: self.$selection
|
tag: i,
|
||||||
) {
|
selection: self.$selection
|
||||||
self.detailView(at: i)
|
) {
|
||||||
} label: {
|
self.detailView(at: i)
|
||||||
self.sidebarRow(at: i)
|
} label: {
|
||||||
|
self.sidebarRow(at: i)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Workaround for iOS 15
|
||||||
|
Button {
|
||||||
|
self.selection = i
|
||||||
|
} label: {
|
||||||
|
self.sidebarRow(at: i)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.onDelete(perform: self.removeServers)
|
.onDelete(perform: self.removeServers)
|
||||||
|
|
@ -218,7 +238,11 @@ extension ContentView: View {
|
||||||
Text(self.alertMessage)
|
Text(self.alertMessage)
|
||||||
}
|
}
|
||||||
|
|
||||||
if !self.isEnabled {
|
if self.selection == -1 {
|
||||||
|
HowToActivateView(isSheet: false)
|
||||||
|
} else if let i = self.selection {
|
||||||
|
self.detailView(at: i)
|
||||||
|
} else if !self.isEnabled {
|
||||||
HowToActivateView(isSheet: false)
|
HowToActivateView(isSheet: false)
|
||||||
} else {
|
} else {
|
||||||
Text("Select a server on the sidebar")
|
Text("Select a server on the sidebar")
|
||||||
|
|
@ -278,15 +302,17 @@ extension ContentView: View {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ViewBuilder private func sidebarRow(at i: Int) -> some View {
|
private func sidebarRow(at i: Int) -> some View {
|
||||||
VStack(alignment: .leading) {
|
HStack {
|
||||||
Text(self.servers[i].name)
|
VStack(alignment: .leading) {
|
||||||
Text(self.servers[i].configuration.description)
|
Text(self.servers[i].name)
|
||||||
.foregroundColor(.secondary)
|
Text(self.servers[i].configuration.description)
|
||||||
}
|
.foregroundColor(.secondary)
|
||||||
if self.usedID == self.servers[i].id.uuidString {
|
}
|
||||||
Spacer()
|
if self.usedID == self.servers[i].id.uuidString {
|
||||||
Image(systemName: "checkmark")
|
Spacer()
|
||||||
|
Image(systemName: "checkmark")
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue