Unroll ProfileView toolbar items
Also leave them visible when disabled.
This commit is contained in:
parent
992178bcd6
commit
fd7c232ecc
|
@ -32,7 +32,7 @@
|
||||||
0E3B7FD627E5173A00C66F13 /* ProfileView+VPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3B7FD527E5173A00C66F13 /* ProfileView+VPN.swift */; };
|
0E3B7FD627E5173A00C66F13 /* ProfileView+VPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3B7FD527E5173A00C66F13 /* ProfileView+VPN.swift */; };
|
||||||
0E3B7FDA27E51A0200C66F13 /* ProfileView+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3B7FD927E51A0200C66F13 /* ProfileView+Provider.swift */; };
|
0E3B7FDA27E51A0200C66F13 /* ProfileView+Provider.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3B7FD927E51A0200C66F13 /* ProfileView+Provider.swift */; };
|
||||||
0E3CD47F280DA14B007075C0 /* OrganizerView+AddMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3CD47E280DA14B007075C0 /* OrganizerView+AddMenu.swift */; };
|
0E3CD47F280DA14B007075C0 /* OrganizerView+AddMenu.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3CD47E280DA14B007075C0 /* OrganizerView+AddMenu.swift */; };
|
||||||
0E3CD483280DAE92007075C0 /* ProfileView+MenuBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3CD482280DAE92007075C0 /* ProfileView+MenuBar.swift */; };
|
0E3CD483280DAE92007075C0 /* ProfileView+Toolbar.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E3CD482280DAE92007075C0 /* ProfileView+Toolbar.swift */; };
|
||||||
0E44689627B051C300A14CE4 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E44689527B051C300A14CE4 /* ProfileView.swift */; };
|
0E44689627B051C300A14CE4 /* ProfileView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E44689527B051C300A14CE4 /* ProfileView.swift */; };
|
||||||
0E44689C27B11B5300A14CE4 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E44689B27B11B5300A14CE4 /* AboutView.swift */; };
|
0E44689C27B11B5300A14CE4 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E44689B27B11B5300A14CE4 /* AboutView.swift */; };
|
||||||
0E49F6BB27D7638300385834 /* EndpointAdvancedView+OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E49F6BA27D7638300385834 /* EndpointAdvancedView+OpenVPN.swift */; };
|
0E49F6BB27D7638300385834 /* EndpointAdvancedView+OpenVPN.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E49F6BA27D7638300385834 /* EndpointAdvancedView+OpenVPN.swift */; };
|
||||||
|
@ -212,7 +212,7 @@
|
||||||
0E3B7FD527E5173A00C66F13 /* ProfileView+VPN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileView+VPN.swift"; sourceTree = "<group>"; };
|
0E3B7FD527E5173A00C66F13 /* ProfileView+VPN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileView+VPN.swift"; sourceTree = "<group>"; };
|
||||||
0E3B7FD927E51A0200C66F13 /* ProfileView+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileView+Provider.swift"; sourceTree = "<group>"; };
|
0E3B7FD927E51A0200C66F13 /* ProfileView+Provider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileView+Provider.swift"; sourceTree = "<group>"; };
|
||||||
0E3CD47E280DA14B007075C0 /* OrganizerView+AddMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OrganizerView+AddMenu.swift"; sourceTree = "<group>"; };
|
0E3CD47E280DA14B007075C0 /* OrganizerView+AddMenu.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "OrganizerView+AddMenu.swift"; sourceTree = "<group>"; };
|
||||||
0E3CD482280DAE92007075C0 /* ProfileView+MenuBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileView+MenuBar.swift"; sourceTree = "<group>"; };
|
0E3CD482280DAE92007075C0 /* ProfileView+Toolbar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "ProfileView+Toolbar.swift"; sourceTree = "<group>"; };
|
||||||
0E44689527B051C300A14CE4 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
|
0E44689527B051C300A14CE4 /* ProfileView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ProfileView.swift; sourceTree = "<group>"; };
|
||||||
0E44689B27B11B5300A14CE4 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
|
0E44689B27B11B5300A14CE4 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
|
||||||
0E49F6BA27D7638300385834 /* EndpointAdvancedView+OpenVPN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EndpointAdvancedView+OpenVPN.swift"; sourceTree = "<group>"; };
|
0E49F6BA27D7638300385834 /* EndpointAdvancedView+OpenVPN.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "EndpointAdvancedView+OpenVPN.swift"; sourceTree = "<group>"; };
|
||||||
|
@ -446,9 +446,9 @@
|
||||||
0E92D7C527F103300033CB7B /* ProfileView+Configuration.swift */,
|
0E92D7C527F103300033CB7B /* ProfileView+Configuration.swift */,
|
||||||
0E92D7F327F104B80033CB7B /* ProfileView+Diagnostics.swift */,
|
0E92D7F327F104B80033CB7B /* ProfileView+Diagnostics.swift */,
|
||||||
0E92D7C827F1042A0033CB7B /* ProfileView+Extra.swift */,
|
0E92D7C827F1042A0033CB7B /* ProfileView+Extra.swift */,
|
||||||
0E3CD482280DAE92007075C0 /* ProfileView+MenuBar.swift */,
|
|
||||||
0E3B7FD927E51A0200C66F13 /* ProfileView+Provider.swift */,
|
0E3B7FD927E51A0200C66F13 /* ProfileView+Provider.swift */,
|
||||||
0EBC074B27EB673C00208AD9 /* ProfileView+Rename.swift */,
|
0EBC074B27EB673C00208AD9 /* ProfileView+Rename.swift */,
|
||||||
|
0E3CD482280DAE92007075C0 /* ProfileView+Toolbar.swift */,
|
||||||
0E3B7FD527E5173A00C66F13 /* ProfileView+VPN.swift */,
|
0E3B7FD527E5173A00C66F13 /* ProfileView+VPN.swift */,
|
||||||
0E0AD48F27BD53CB00FBB520 /* ProfileView+Welcome.swift */,
|
0E0AD48F27BD53CB00FBB520 /* ProfileView+Welcome.swift */,
|
||||||
0E71ACF027C1073800F85C4B /* ProviderLocationView.swift */,
|
0E71ACF027C1073800F85C4B /* ProviderLocationView.swift */,
|
||||||
|
@ -960,7 +960,7 @@
|
||||||
0E71ACF927C12E4800F85C4B /* CreditsView.swift in Sources */,
|
0E71ACF927C12E4800F85C4B /* CreditsView.swift in Sources */,
|
||||||
0ED89C1527DE0A0C008B36D6 /* Shortcut.swift in Sources */,
|
0ED89C1527DE0A0C008B36D6 /* Shortcut.swift in Sources */,
|
||||||
0E34A2B927CAA96A00C73B67 /* OpenVPN+L10n.swift in Sources */,
|
0E34A2B927CAA96A00C73B67 /* OpenVPN+L10n.swift in Sources */,
|
||||||
0E3CD483280DAE92007075C0 /* ProfileView+MenuBar.swift in Sources */,
|
0E3CD483280DAE92007075C0 /* ProfileView+Toolbar.swift in Sources */,
|
||||||
0EB17EAE27D226CF00D473B5 /* LocalProduct.swift in Sources */,
|
0EB17EAE27D226CF00D473B5 /* LocalProduct.swift in Sources */,
|
||||||
0E71ACEB27C1060D00F85C4B /* EndpointView.swift in Sources */,
|
0E71ACEB27C1060D00F85C4B /* EndpointView.swift in Sources */,
|
||||||
0E53249927D26B51002565C3 /* ProductManager.swift in Sources */,
|
0E53249927D26B51002565C3 /* ProductManager.swift in Sources */,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
//
|
//
|
||||||
// ProfileView+MenuBar.swift
|
// ProfileView+Toolbar.swift
|
||||||
// Passepartout
|
// Passepartout
|
||||||
//
|
//
|
||||||
// Created by Davide De Rosa on 2/6/22.
|
// Created by Davide De Rosa on 2/6/22.
|
||||||
|
@ -27,34 +27,26 @@ import SwiftUI
|
||||||
import PassepartoutCore
|
import PassepartoutCore
|
||||||
|
|
||||||
extension ProfileView {
|
extension ProfileView {
|
||||||
struct MenuBar: View {
|
struct ShortcutsItem: View {
|
||||||
@ObservedObject private var productManager: ProductManager
|
@ObservedObject private var productManager: ProductManager
|
||||||
|
|
||||||
@ObservedObject private var currentProfile: ObservableProfile
|
|
||||||
|
|
||||||
@Binding private var modalType: ModalType?
|
@Binding private var modalType: ModalType?
|
||||||
|
|
||||||
|
init(modalType: Binding<ModalType?>) {
|
||||||
|
productManager = .shared
|
||||||
|
_modalType = modalType
|
||||||
|
}
|
||||||
|
|
||||||
private var isEligibleForSiri: Bool {
|
private var isEligibleForSiri: Bool {
|
||||||
productManager.isEligible(forFeature: .siriShortcuts)
|
productManager.isEligible(forFeature: .siriShortcuts)
|
||||||
}
|
}
|
||||||
|
|
||||||
init(currentProfile: ObservableProfile, modalType: Binding<ModalType?>) {
|
|
||||||
productManager = .shared
|
|
||||||
self.currentProfile = currentProfile
|
|
||||||
_modalType = modalType
|
|
||||||
}
|
|
||||||
|
|
||||||
var body: some View {
|
var body: some View {
|
||||||
Button {
|
Button {
|
||||||
presentShortcutsOrPaywall()
|
presentShortcutsOrPaywall()
|
||||||
} label: {
|
} label: {
|
||||||
themeShortcutsImage.asSystemImage
|
themeShortcutsImage.asSystemImage
|
||||||
}
|
}
|
||||||
Button {
|
|
||||||
modalType = .rename
|
|
||||||
} label: {
|
|
||||||
themeRenameProfileImage.asSystemImage
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private func presentShortcutsOrPaywall() {
|
private func presentShortcutsOrPaywall() {
|
||||||
|
@ -67,4 +59,23 @@ extension ProfileView {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct RenameItem: View {
|
||||||
|
@ObservedObject private var currentProfile: ObservableProfile
|
||||||
|
|
||||||
|
@Binding private var modalType: ModalType?
|
||||||
|
|
||||||
|
init(currentProfile: ObservableProfile, modalType: Binding<ModalType?>) {
|
||||||
|
self.currentProfile = currentProfile
|
||||||
|
_modalType = modalType
|
||||||
|
}
|
||||||
|
|
||||||
|
var body: some View {
|
||||||
|
Button {
|
||||||
|
modalType = .rename
|
||||||
|
} label: {
|
||||||
|
themeRenameProfileImage.asSystemImage
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
|
@ -79,14 +79,15 @@ struct ProfileView: View {
|
||||||
welcomeView
|
welcomeView
|
||||||
}
|
}
|
||||||
}.toolbar {
|
}.toolbar {
|
||||||
// FIXME: toolbars, unroll single items
|
|
||||||
ToolbarItemGroup(placement: .navigationBarTrailing) {
|
ToolbarItemGroup(placement: .navigationBarTrailing) {
|
||||||
if !isDeleted {
|
ShortcutsItem(
|
||||||
MenuBar(
|
modalType: $modalType
|
||||||
currentProfile: profileManager.currentProfile,
|
).disabled(isDeleted)
|
||||||
modalType: $modalType
|
|
||||||
)
|
RenameItem(
|
||||||
}
|
currentProfile: profileManager.currentProfile,
|
||||||
|
modalType: $modalType
|
||||||
|
).disabled(isDeleted)
|
||||||
}
|
}
|
||||||
}.sheet(item: $modalType, content: presentedModal)
|
}.sheet(item: $modalType, content: presentedModal)
|
||||||
.onAppear(perform: loadProfileIfNeeded)
|
.onAppear(perform: loadProfileIfNeeded)
|
||||||
|
|
Loading…
Reference in New Issue