Guest User

Untitled

a guest
Sep 22nd, 2022
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.37 KB | None | 0 0
  1. import SwiftUI
  2.  
  3. class MenuBarViewModel: ObservableObject {
  4.  
  5. static let shared = MenuBarViewModel()
  6.  
  7. @Published var leftExtended: Bool = true
  8. @Published var rightExtended: Bool = true
  9.  
  10. private init(){
  11.  
  12. }
  13. }
  14.  
  15. struct LeftToolBarItems: ToolbarContent {
  16.  
  17. @ObservedObject var mbvm = MenuBarViewModel.shared
  18.  
  19. var body: some ToolbarContent {
  20. ToolbarItemGroup(placement: .primaryAction) {
  21. Button {
  22. mbvm.leftExtended.toggle()
  23. } label: {
  24. Image(systemName: "sidebar.leading")
  25. .font(.system(size: 17))
  26. }
  27. }
  28. }
  29. }
  30.  
  31. struct RightToolBarItems: ToolbarContent {
  32.  
  33. @ObservedObject var mbvm = MenuBarViewModel.shared
  34.  
  35. var body: some ToolbarContent {
  36. ToolbarItemGroup(placement: .cancellationAction) {
  37. Spacer()
  38. Button {
  39. mbvm.rightExtended.toggle()
  40. } label: {
  41. Image(systemName: "sidebar.trailing")
  42. .font(.system(size: 17))
  43. }
  44. }
  45. }
  46. }
  47.  
  48. struct ButtonToolbarView: View {
  49. let columns = [GridItem(), GridItem()]
  50.  
  51. var body: some View {
  52. LazyVGrid(columns: columns){
  53. Text("Toolbar")
  54. Text("Toolbar")
  55. Text("Toolbar")
  56. Text("Toolbar")
  57. }
  58. .frame(width: 150)
  59. }
  60. }
  61.  
  62. struct InspectorToolbarView: View {
  63. var body: some View {
  64. VStack{
  65. Text("Toolbar")
  66. Text("Toolbar")
  67. Text("Toolbar")
  68. Text("Toolbar")
  69. }
  70. .frame(width: 200)
  71. }
  72. }
  73.  
  74. struct PreView: View {
  75. var body: some View {
  76. Rectangle()
  77. .frame(width: 512, height: 512)
  78. .background(Color.white)
  79. .padding()
  80. }
  81. }
  82.  
  83. struct ContentView: View {
  84.  
  85. @ObservedObject var mbvm = MenuBarViewModel.shared
  86.  
  87. var body: some View {
  88.  
  89. if (mbvm.leftExtended == true && mbvm.rightExtended == true){
  90. BothSidebars()
  91. } else if (mbvm.leftExtended == true && mbvm.rightExtended == false){
  92. LeftSidebars()
  93. } else if (mbvm.leftExtended == false && mbvm.rightExtended == true){
  94. RightSidebars()
  95. } else {
  96. NoSidebars()
  97. }
  98. }
  99. }
  100.  
  101. struct RightSidebars: View {
  102.  
  103. @ObservedObject var mbvm = MenuBarViewModel.shared
  104.  
  105. var body: some View {
  106. GeometryReader { window in
  107. NavigationView{
  108. PreView()
  109. .frame(width: window.size.width-200)
  110. .toolbar {
  111. LeftToolBarItems()
  112. }
  113. InspectorToolbarView()
  114. .toolbar {
  115. RightToolBarItems()
  116. }
  117. }
  118. }
  119. }
  120. }
  121.  
  122. struct LeftSidebars: View {
  123.  
  124. @ObservedObject var mbvm = MenuBarViewModel.shared
  125.  
  126. var body: some View {
  127. GeometryReader{ window in
  128. NavigationView{
  129. ButtonToolbarView()
  130. .toolbar {
  131. LeftToolBarItems()
  132. }
  133. PreView()
  134. .frame(width: window.size.width-100)
  135. .toolbar {
  136. RightToolBarItems()
  137. }
  138. }
  139. }
  140. }
  141. }
  142.  
  143. struct NoSidebars: View {
  144.  
  145. @ObservedObject var mbvm = MenuBarViewModel.shared
  146.  
  147. var body: some View {
  148. GeometryReader{ window in
  149. NavigationView{
  150. PreView()
  151. .frame(width: window.size.width)
  152. .toolbar {
  153. LeftToolBarItems()
  154. RightToolBarItems()
  155. }
  156. }
  157. }
  158. }
  159. }
  160.  
  161. struct BothSidebars: View {
  162.  
  163. @ObservedObject var mbvm = MenuBarViewModel.shared
  164.  
  165. var body: some View {
  166. GeometryReader{ window in
  167. NavigationView{
  168. ButtonToolbarView()
  169. .toolbar {
  170. LeftToolBarItems()
  171. }
  172. PreView()
  173. .frame(width: window.size.width-300)
  174. InspectorToolbarView()
  175. .toolbar {
  176. RightToolBarItems()
  177. }
  178. }
  179. }
  180. }
  181. }
Advertisement
Add Comment
Please, Sign In to add comment