Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import SwiftUI
- class MenuBarViewModel: ObservableObject {
- static let shared = MenuBarViewModel()
- @Published var leftExtended: Bool = true
- @Published var rightExtended: Bool = true
- private init(){
- }
- }
- struct LeftToolBarItems: ToolbarContent {
- @ObservedObject var mbvm = MenuBarViewModel.shared
- var body: some ToolbarContent {
- ToolbarItemGroup(placement: .primaryAction) {
- Button {
- mbvm.leftExtended.toggle()
- } label: {
- Image(systemName: "sidebar.leading")
- .font(.system(size: 17))
- }
- }
- }
- }
- struct RightToolBarItems: ToolbarContent {
- @ObservedObject var mbvm = MenuBarViewModel.shared
- var body: some ToolbarContent {
- ToolbarItemGroup(placement: .cancellationAction) {
- Spacer()
- Button {
- mbvm.rightExtended.toggle()
- } label: {
- Image(systemName: "sidebar.trailing")
- .font(.system(size: 17))
- }
- }
- }
- }
- struct ButtonToolbarView: View {
- let columns = [GridItem(), GridItem()]
- var body: some View {
- LazyVGrid(columns: columns){
- Text("Toolbar")
- Text("Toolbar")
- Text("Toolbar")
- Text("Toolbar")
- }
- .frame(width: 150)
- }
- }
- struct InspectorToolbarView: View {
- var body: some View {
- VStack{
- Text("Toolbar")
- Text("Toolbar")
- Text("Toolbar")
- Text("Toolbar")
- }
- .frame(width: 200)
- }
- }
- struct PreView: View {
- var body: some View {
- Rectangle()
- .frame(width: 512, height: 512)
- .background(Color.white)
- .padding()
- }
- }
- struct ContentView: View {
- @ObservedObject var mbvm = MenuBarViewModel.shared
- var body: some View {
- if (mbvm.leftExtended == true && mbvm.rightExtended == true){
- BothSidebars()
- } else if (mbvm.leftExtended == true && mbvm.rightExtended == false){
- LeftSidebars()
- } else if (mbvm.leftExtended == false && mbvm.rightExtended == true){
- RightSidebars()
- } else {
- NoSidebars()
- }
- }
- }
- struct RightSidebars: View {
- @ObservedObject var mbvm = MenuBarViewModel.shared
- var body: some View {
- GeometryReader { window in
- NavigationView{
- PreView()
- .frame(width: window.size.width-200)
- .toolbar {
- LeftToolBarItems()
- }
- InspectorToolbarView()
- .toolbar {
- RightToolBarItems()
- }
- }
- }
- }
- }
- struct LeftSidebars: View {
- @ObservedObject var mbvm = MenuBarViewModel.shared
- var body: some View {
- GeometryReader{ window in
- NavigationView{
- ButtonToolbarView()
- .toolbar {
- LeftToolBarItems()
- }
- PreView()
- .frame(width: window.size.width-100)
- .toolbar {
- RightToolBarItems()
- }
- }
- }
- }
- }
- struct NoSidebars: View {
- @ObservedObject var mbvm = MenuBarViewModel.shared
- var body: some View {
- GeometryReader{ window in
- NavigationView{
- PreView()
- .frame(width: window.size.width)
- .toolbar {
- LeftToolBarItems()
- RightToolBarItems()
- }
- }
- }
- }
- }
- struct BothSidebars: View {
- @ObservedObject var mbvm = MenuBarViewModel.shared
- var body: some View {
- GeometryReader{ window in
- NavigationView{
- ButtonToolbarView()
- .toolbar {
- LeftToolBarItems()
- }
- PreView()
- .frame(width: window.size.width-300)
- InspectorToolbarView()
- .toolbar {
- RightToolBarItems()
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment