Skip to content

Commit 7dbd601

Browse files
edit items on double-click
1 parent d1ef7a0 commit 7dbd601

File tree

4 files changed

+47
-5
lines changed

4 files changed

+47
-5
lines changed

Example/AddItemController.swift

+13-2
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ class AddItemController: NSWindowController, NSTextFieldDelegate {
2121
didSet {
2222
displayTitle()
2323
displayImage()
24+
displayTintColor()
2425
}
2526
}
2627

@@ -34,6 +35,13 @@ class AddItemController: NSWindowController, NSTextFieldDelegate {
3435
iconImageView.image = viewModel.image
3536
}
3637

38+
private func displayTintColor() {
39+
40+
guard let color = viewModel.tintColor else { return }
41+
42+
tintColorWell.color = color
43+
}
44+
3745
@IBAction func browseImage(_ sender: Any) {
3846

3947
let panel = NSOpenPanel()
@@ -78,11 +86,14 @@ class AddItemController: NSWindowController, NSTextFieldDelegate {
7886
// MARK: -
7987
// MARK: Showing as Sheet
8088

81-
func showSheet(in hostingWindow: NSWindow, completion: @escaping (NewItem?) -> Void) {
89+
func showSheet(
90+
in hostingWindow: NSWindow,
91+
initialValues: NewItem? = nil,
92+
completion: @escaping (NewItem?) -> Void) {
8293

8394
guard let window = self.window else { preconditionFailure("expected window outlet") }
8495

85-
self.viewModel = .empty
96+
self.viewModel = initialValues ?? NewItem.empty
8697

8798
hostingWindow.beginSheet(window) {
8899

Example/AppDelegate.swift

+27-2
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,14 @@ extension SavedSearch {
2020
image: newItem.image ?? SavedSearch.defaultImage,
2121
tintColor: newItem.tintColor)
2222
}
23+
24+
var newItem: NewItem {
25+
return NewItem(title: self.title, image: self.image, tintColor: self.tintColor)
26+
}
2327
}
2428

2529
@NSApplicationMain
26-
class AppDelegate: NSObject, NSApplicationDelegate, FatSidebarDelegate, FatSidebarSelectionChangeDelegate {
30+
class AppDelegate: NSObject, NSApplicationDelegate, FatSidebarDelegate {
2731

2832
@IBOutlet weak var addItemController: AddItemController!
2933
@IBOutlet weak var itemContextualMenu: NSMenu!
@@ -47,13 +51,19 @@ class AppDelegate: NSObject, NSApplicationDelegate, FatSidebarDelegate, FatSideb
4751
func applicationDidFinishLaunching(_ aNotification: Notification) {
4852

4953
fatSidebar.delegate = self
50-
fatSidebar.selectionDelegate = self
5154
fatSidebar.theme = OmniFocusTheme()
5255
fatSidebar.selectionMode = .toggleOne
5356

5457
fatSidebar.sidebarContextualMenu = itemContextualMenu
5558
fatSidebar.itemContextualMenu = itemContextualMenu
5659

60+
replaceSidebarWithModel()
61+
}
62+
63+
fileprivate func replaceSidebarWithModel() {
64+
65+
fatSidebar.removeAllItems()
66+
5767
for savedSearch in savedSearches {
5868
fatSidebar.appendItem(savedSearch)
5969
}
@@ -84,6 +94,21 @@ class AppDelegate: NSObject, NSApplicationDelegate, FatSidebarDelegate, FatSideb
8494
savedSearches.insert(item, at: newIndex)
8595
}
8696

97+
func sidebar(_ sidebar: FatSidebar, editItem index: Int) {
98+
99+
let oldValues = savedSearches[index].newItem
100+
addItemController.showSheet(in: self.window, initialValues: oldValues) { item in
101+
102+
guard let item = item else { return }
103+
104+
let savedSearch = SavedSearch(fromNewItem: item)
105+
self.savedSearches.remove(at: index)
106+
self.savedSearches.insert(savedSearch, at: index)
107+
108+
self.replaceSidebarWithModel()
109+
}
110+
}
111+
87112
func sidebar(_ sidebar: FatSidebar, didChangeSelection selectionIndex: Int) {
88113

89114
Swift.print("Selected \(savedSearches[selectionIndex])")

Example/Base.lproj/MainMenu.xib

+1-1
Original file line numberDiff line numberDiff line change
@@ -877,7 +877,7 @@ Gw
877877
<constraint firstAttribute="width" constant="44" id="cS0-GX-0ZC"/>
878878
<constraint firstAttribute="width" secondItem="WNP-ao-kAS" secondAttribute="height" multiplier="44:23" id="vkH-ei-cJr"/>
879879
</constraints>
880-
<color key="color" red="0.05813049898" green="0.055541899059999997" blue="1" alpha="1" colorSpace="calibratedRGB"/>
880+
<color key="color" red="0.35637060218042749" green="0.35540069113744255" blue="0.3956792091836735" alpha="1" colorSpace="calibratedRGB"/>
881881
<connections>
882882
<action selector="colorChanged:" target="u4l-yW-Ovo" id="TeL-KH-Hpd"/>
883883
</connections>

FatSidebar/FatSidebar.swift

+6
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,14 @@ class FlippedView: NSView {
77
}
88

99
public protocol FatSidebarDelegate: class {
10+
/// Triggered after the user finishes dragging an item into a new place.
1011
func sidebar(_ sidebar: FatSidebar, didMoveItemFrom oldIndex: Int, to newIndex: Int)
12+
13+
/// Triggered when an item is single-clicked and its status changes.
14+
/// Already selected items that cannot be deselected will not trigger this.
1115
func sidebar(_ sidebar: FatSidebar, didChangeSelection selectionIndex: Int)
16+
17+
/// Triggered by double-clicking an item.
1218
func sidebar(_ sidebar: FatSidebar, editItem index: Int)
1319
}
1420

0 commit comments

Comments
 (0)