mirror of
https://github.com/dscyrescotti/Memola.git
synced 2026-07-13 16:22:49 +02:00
feat: add toggle sidebar command
This commit is contained in:
@@ -47,6 +47,7 @@
|
|||||||
EC6E3BD72C43C6A400DD20F3 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6E3BD62C43C6A400DD20F3 /* Application.swift */; };
|
EC6E3BD72C43C6A400DD20F3 /* Application.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6E3BD62C43C6A400DD20F3 /* Application.swift */; };
|
||||||
EC6E3BD92C43C6C000DD20F3 /* OnDismissSearchViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6E3BD82C43C6C000DD20F3 /* OnDismissSearchViewModifier.swift */; };
|
EC6E3BD92C43C6C000DD20F3 /* OnDismissSearchViewModifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6E3BD82C43C6C000DD20F3 /* OnDismissSearchViewModifier.swift */; };
|
||||||
EC6E3BDB2C43C78700DD20F3 /* NavigationSplitViewVisibility++.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6E3BDA2C43C78700DD20F3 /* NavigationSplitViewVisibility++.swift */; };
|
EC6E3BDB2C43C78700DD20F3 /* NavigationSplitViewVisibility++.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6E3BDA2C43C78700DD20F3 /* NavigationSplitViewVisibility++.swift */; };
|
||||||
|
EC6E3BDE2C43D5A500DD20F3 /* SidebarVisibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC6E3BDC2C43D5A500DD20F3 /* SidebarVisibility.swift */; };
|
||||||
EC7F6BEC2BE5E6E300A34A7B /* MemolaApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC7F6BEB2BE5E6E300A34A7B /* MemolaApp.swift */; };
|
EC7F6BEC2BE5E6E300A34A7B /* MemolaApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC7F6BEB2BE5E6E300A34A7B /* MemolaApp.swift */; };
|
||||||
EC7F6BF02BE5E6E400A34A7B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC7F6BEF2BE5E6E400A34A7B /* Assets.xcassets */; };
|
EC7F6BF02BE5E6E400A34A7B /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC7F6BEF2BE5E6E400A34A7B /* Assets.xcassets */; };
|
||||||
EC7F6BF32BE5E6E400A34A7B /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC7F6BF22BE5E6E400A34A7B /* Preview Assets.xcassets */; };
|
EC7F6BF32BE5E6E400A34A7B /* Preview Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = EC7F6BF22BE5E6E400A34A7B /* Preview Assets.xcassets */; };
|
||||||
@@ -185,6 +186,7 @@
|
|||||||
EC6E3BD62C43C6A400DD20F3 /* Application.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = "<group>"; };
|
EC6E3BD62C43C6A400DD20F3 /* Application.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Application.swift; sourceTree = "<group>"; };
|
||||||
EC6E3BD82C43C6C000DD20F3 /* OnDismissSearchViewModifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnDismissSearchViewModifier.swift; sourceTree = "<group>"; };
|
EC6E3BD82C43C6C000DD20F3 /* OnDismissSearchViewModifier.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OnDismissSearchViewModifier.swift; sourceTree = "<group>"; };
|
||||||
EC6E3BDA2C43C78700DD20F3 /* NavigationSplitViewVisibility++.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NavigationSplitViewVisibility++.swift"; sourceTree = "<group>"; };
|
EC6E3BDA2C43C78700DD20F3 /* NavigationSplitViewVisibility++.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "NavigationSplitViewVisibility++.swift"; sourceTree = "<group>"; };
|
||||||
|
EC6E3BDC2C43D5A500DD20F3 /* SidebarVisibility.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SidebarVisibility.swift; sourceTree = "<group>"; };
|
||||||
EC7F6BE82BE5E6E300A34A7B /* Memola.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Memola.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
EC7F6BE82BE5E6E300A34A7B /* Memola.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Memola.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||||
EC7F6BEB2BE5E6E300A34A7B /* MemolaApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemolaApp.swift; sourceTree = "<group>"; };
|
EC7F6BEB2BE5E6E300A34A7B /* MemolaApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MemolaApp.swift; sourceTree = "<group>"; };
|
||||||
EC7F6BEF2BE5E6E400A34A7B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
EC7F6BEF2BE5E6E400A34A7B /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
|
||||||
@@ -519,6 +521,14 @@
|
|||||||
path = Algorithms;
|
path = Algorithms;
|
||||||
sourceTree = "<group>";
|
sourceTree = "<group>";
|
||||||
};
|
};
|
||||||
|
EC6E3BDD2C43D5A500DD20F3 /* SidebarVisibility */ = {
|
||||||
|
isa = PBXGroup;
|
||||||
|
children = (
|
||||||
|
EC6E3BDC2C43D5A500DD20F3 /* SidebarVisibility.swift */,
|
||||||
|
);
|
||||||
|
path = SidebarVisibility;
|
||||||
|
sourceTree = "<group>";
|
||||||
|
};
|
||||||
EC7F6BDF2BE5E6E300A34A7B = {
|
EC7F6BDF2BE5E6E300A34A7B = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
@@ -989,6 +999,7 @@
|
|||||||
ECF7B2E52C391DFA004D2C57 /* Utilies */ = {
|
ECF7B2E52C391DFA004D2C57 /* Utilies */ = {
|
||||||
isa = PBXGroup;
|
isa = PBXGroup;
|
||||||
children = (
|
children = (
|
||||||
|
EC6E3BDD2C43D5A500DD20F3 /* SidebarVisibility */,
|
||||||
EC2002EE2C417BBF002EBD5F /* AppScene */,
|
EC2002EE2C417BBF002EBD5F /* AppScene */,
|
||||||
ECF7B2CF2C39169C004D2C57 /* Extensions */,
|
ECF7B2CF2C39169C004D2C57 /* Extensions */,
|
||||||
ECF7B2E22C39172D004D2C57 /* Platform */,
|
ECF7B2E22C39172D004D2C57 /* Platform */,
|
||||||
@@ -1133,6 +1144,7 @@
|
|||||||
ECA738DA2BE60FF100A4542E /* CacheRenderPass.swift in Sources */,
|
ECA738DA2BE60FF100A4542E /* CacheRenderPass.swift in Sources */,
|
||||||
ECF7B2DA2C39169C004D2C57 /* Float++.swift in Sources */,
|
ECF7B2DA2C39169C004D2C57 /* Float++.swift in Sources */,
|
||||||
ECA738CD2BE60F2F00A4542E /* PointGridContext.swift in Sources */,
|
ECA738CD2BE60F2F00A4542E /* PointGridContext.swift in Sources */,
|
||||||
|
EC6E3BDE2C43D5A500DD20F3 /* SidebarVisibility.swift in Sources */,
|
||||||
ECFA15202BEF21EF00455818 /* MemoObject.swift in Sources */,
|
ECFA15202BEF21EF00455818 /* MemoObject.swift in Sources */,
|
||||||
ECE883C12C00C9CB0045C53D /* StrokeStyle.swift in Sources */,
|
ECE883C12C00C9CB0045C53D /* StrokeStyle.swift in Sources */,
|
||||||
EC37FB122C1B2DD90008D976 /* ToolSelection.swift in Sources */,
|
EC37FB122C1B2DD90008D976 /* ToolSelection.swift in Sources */,
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import Combine
|
|||||||
import SwiftUI
|
import SwiftUI
|
||||||
|
|
||||||
final class Application: NSObject, ObservableObject {
|
final class Application: NSObject, ObservableObject {
|
||||||
|
@Published private(set) var sidebarVisibility: SidebarVisibility = .shown
|
||||||
}
|
}
|
||||||
|
|
||||||
extension Application {
|
extension Application {
|
||||||
@@ -23,6 +23,18 @@ extension Application {
|
|||||||
#warning("TODO: implement for ipad")
|
#warning("TODO: implement for ipad")
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func toggleSidebar() {
|
||||||
|
#if os(macOS)
|
||||||
|
NSApp.sendAction(#selector(NSSplitViewController.toggleSidebar(_:)), to: nil, from: nil)
|
||||||
|
#else
|
||||||
|
#warning("TODO: implement for ipad")
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
func changeSidebarVisibility(_ visibility: SidebarVisibility) {
|
||||||
|
self.sidebarVisibility = visibility
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if os(macOS)
|
#if os(macOS)
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ import CoreData
|
|||||||
import Foundation
|
import Foundation
|
||||||
|
|
||||||
final class Tool: NSObject, ObservableObject {
|
final class Tool: NSObject, ObservableObject {
|
||||||
private let object: ToolObject
|
let object: ToolObject
|
||||||
|
|
||||||
@Published var pens: [Pen] = []
|
@Published var pens: [Pen] = []
|
||||||
|
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ struct DashboardView: View {
|
|||||||
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
|
@Environment(\.horizontalSizeClass) private var horizontalSizeClass
|
||||||
|
|
||||||
@StateObject private var memoManager: MemoManager = .shared
|
@StateObject private var memoManager: MemoManager = .shared
|
||||||
|
@EnvironmentObject private var application: Application
|
||||||
|
|
||||||
@State private var sidebarItem: SidebarItem? = .memos
|
@State private var sidebarItem: SidebarItem? = .memos
|
||||||
@AppStorage("memola.app.scene.side-bar.column-visibility") private var columnVisibility: NavigationSplitViewVisibility = .all
|
@AppStorage("memola.app.scene.side-bar.column-visibility") private var columnVisibility: NavigationSplitViewVisibility = .all
|
||||||
@@ -45,6 +46,9 @@ struct DashboardView: View {
|
|||||||
.transition(.move(edge: .bottom))
|
.transition(.move(edge: .bottom))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
.onChange(of: columnVisibility) { oldValue, newValue in
|
||||||
|
application.changeSidebarVisibility(newValue == .all ? .shown : .hidden)
|
||||||
|
}
|
||||||
#else
|
#else
|
||||||
NavigationSplitView(columnVisibility: $columnVisibility) {
|
NavigationSplitView(columnVisibility: $columnVisibility) {
|
||||||
Sidebar(sidebarItem: $sidebarItem, horizontalSizeClass: horizontalSizeClass)
|
Sidebar(sidebarItem: $sidebarItem, horizontalSizeClass: horizontalSizeClass)
|
||||||
|
|||||||
@@ -17,7 +17,7 @@ struct ViewCommands: Commands {
|
|||||||
|
|
||||||
var body: some Commands {
|
var body: some Commands {
|
||||||
CommandGroup(replacing: .toolbar) {
|
CommandGroup(replacing: .toolbar) {
|
||||||
if appScene == .trash || appScene == .memos {
|
if appScene == .memos || appScene == .trash {
|
||||||
Button {
|
Button {
|
||||||
application.activateSearchBar()
|
application.activateSearchBar()
|
||||||
} label: {
|
} label: {
|
||||||
@@ -25,6 +25,19 @@ struct ViewCommands: Commands {
|
|||||||
}
|
}
|
||||||
.keyboardShortcut("f", modifiers: [.command])
|
.keyboardShortcut("f", modifiers: [.command])
|
||||||
}
|
}
|
||||||
|
if appScene == .memos || appScene == .trash {
|
||||||
|
Button {
|
||||||
|
application.toggleSidebar()
|
||||||
|
} label: {
|
||||||
|
switch application.sidebarVisibility {
|
||||||
|
case .shown:
|
||||||
|
Text("Hide Sidebar")
|
||||||
|
case .hidden:
|
||||||
|
Text("Show Sidebar")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
.keyboardShortcut("o", modifiers: [.command])
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user