|
@@ -46,6 +46,7 @@ class KMBookMarkViewController: KMNBotaBaseViewController {
|
|
|
return view
|
|
|
}()
|
|
|
private var groupView: ComponentGroup? = ComponentGroup.createFromNib(in: ComponentLibrary.shared.componentBundle())
|
|
|
+ private var menuGroupView_: ComponentGroup?
|
|
|
|
|
|
var dataSource: [KMBookmarkItem] = []
|
|
|
var renameTextField: NSTextField?
|
|
@@ -89,6 +90,42 @@ class KMBookMarkViewController: KMNBotaBaseViewController {
|
|
|
|
|
|
bookTableView.hasImageToolTips = true
|
|
|
bookTableView.botaDelegate = self
|
|
|
+ bookTableView.menuClickedAction = { [unowned self] point in
|
|
|
+ let idxs = self.bookTableView.selectedRowIndexes.count
|
|
|
+
|
|
|
+ let convertP = self.bookTableView.convert(point, from: nil)
|
|
|
+ let row = self.bookTableView.row(at: convertP)
|
|
|
+ if row == -1 {
|
|
|
+ var viewHeight: CGFloat = 0
|
|
|
+ let items: [String] = ["Add Bookmark", "All Select", "Delete"]
|
|
|
+ var menuItemArr: [ComponentMenuitemProperty] = []
|
|
|
+ for value in items {
|
|
|
+ let properties_Menuitem: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
|
|
|
+ itemSelected: false,
|
|
|
+ isDisabled: false,
|
|
|
+ keyEquivalent: nil,
|
|
|
+ text: KMLocalizedString(value),
|
|
|
+ identifier: value)
|
|
|
+ if value == "Delete" {
|
|
|
+ properties_Menuitem.keyEquivalent = "⌘ " + String(Unicode.Scalar(NSBackspaceCharacter)!)
|
|
|
+ properties_Menuitem.isDisabled = idxs == 0
|
|
|
+ }
|
|
|
+ menuItemArr.append(properties_Menuitem)
|
|
|
+ viewHeight += 36
|
|
|
+ }
|
|
|
+
|
|
|
+ self.menuGroupView_ = ComponentGroup.createFromNib(in: ComponentLibrary.shared.componentBundle())
|
|
|
+ self.menuGroupView_?.clickedAutoHide = false
|
|
|
+ self.menuGroupView_?.groupDelegate = self
|
|
|
+ self.menuGroupView_?.frame = CGRectMake(0, 0, 180, viewHeight)
|
|
|
+ self.menuGroupView_?.updateGroupInfo(menuItemArr)
|
|
|
+
|
|
|
+ self.menuGroupView_?.showWithPoint(CGPoint(x: point.x, y: point.y - viewHeight), relativeTo: self.bookTableView)
|
|
|
+
|
|
|
+ return NSMenu()
|
|
|
+ }
|
|
|
+ return NSMenu()
|
|
|
+ }
|
|
|
|
|
|
topView.addSubview(searchButton)
|
|
|
searchButton.km_add_size_constraint(size: NSMakeSize(24, 24))
|
|
@@ -336,9 +373,9 @@ class KMBookMarkViewController: KMNBotaBaseViewController {
|
|
|
}
|
|
|
|
|
|
func updateAddBookMarkState() {
|
|
|
- addButton_.properties.isDisabled = !canAddBorkMark()
|
|
|
- addButton_.properties.state = .normal
|
|
|
- addButton_.reloadData()
|
|
|
+// addButton_.properties.isDisabled = !canAddBorkMark()
|
|
|
+// addButton_.properties.state = .normal
|
|
|
+// addButton_.reloadData()
|
|
|
}
|
|
|
|
|
|
// MARK: - Public Methods
|
|
@@ -414,6 +451,9 @@ class KMBookMarkViewController: KMNBotaBaseViewController {
|
|
|
}
|
|
|
|
|
|
@IBAction func addBookmarkAction(_ sender: Any) {
|
|
|
+ addButton_.properties.state = .normal
|
|
|
+ addButton_.reloadData()
|
|
|
+
|
|
|
let currentPageIndex = handdler.currentPageIndex
|
|
|
if let data = handdler.bookmark(for: currentPageIndex) {
|
|
|
delegate?.bkControllerAddAction?(controller: self, bookmark: data, info: ["result" : false])
|
|
@@ -435,7 +475,7 @@ class KMBookMarkViewController: KMNBotaBaseViewController {
|
|
|
alter.addButton(withTitle: KMLocalizedString("Yes", comment:""))
|
|
|
alter.addButton(withTitle: KMLocalizedString("No", comment:""))
|
|
|
let modlres = alter.runModal()
|
|
|
- if modlres == NSApplication.ModalResponse.alertFirstButtonReturn {
|
|
|
+ if modlres == .alertFirstButtonReturn {
|
|
|
let bookMark = KMBookmarkItem()
|
|
|
bookMark.bookMark = item.bookMark
|
|
|
bookMark.label = item.label
|
|
@@ -565,7 +605,10 @@ extension KMBookMarkViewController : NSTableViewDelegate,NSTableViewDataSource {
|
|
|
|
|
|
let tempView = self?.bookTableView.rowView(atRow: row, makeIfNecessary: false)
|
|
|
var viewHeight: CGFloat = 0
|
|
|
- let items: [String] = ["Delete", "Add", "Rename", "Delete All"]
|
|
|
+ var items: [String] = ["Rename", "Setting Destination", "Delete"]
|
|
|
+ if idxs > 1 {
|
|
|
+ items = ["Delete"]
|
|
|
+ }
|
|
|
var menuItemArr: [ComponentMenuitemProperty] = []
|
|
|
for value in items {
|
|
|
let properties_Menuitem: ComponentMenuitemProperty = ComponentMenuitemProperty(multipleSelect: false,
|
|
@@ -575,14 +618,14 @@ extension KMBookMarkViewController : NSTableViewDelegate,NSTableViewDataSource {
|
|
|
text: KMLocalizedString(value),
|
|
|
identifier: value)
|
|
|
|
|
|
+
|
|
|
+ if value == "Delete" {
|
|
|
+ properties_Menuitem.keyEquivalent = "⌘ " + String(Unicode.Scalar(NSBackspaceCharacter)!)
|
|
|
+ }
|
|
|
menuItemArr.append(properties_Menuitem)
|
|
|
viewHeight += 36
|
|
|
}
|
|
|
- if idxs > 1 {
|
|
|
- (menuItemArr.safe_element(for: 1) as? ComponentMenuitemProperty)?.isDisabled = true
|
|
|
- (menuItemArr.safe_element(for: 2) as? ComponentMenuitemProperty)?.isDisabled = true
|
|
|
- }
|
|
|
-
|
|
|
+
|
|
|
if self?.groupView != nil {
|
|
|
self?.groupView?.clickedAutoHide = false
|
|
|
self?.groupView?.groupDelegate = self
|
|
@@ -809,8 +852,7 @@ extension KMBookMarkViewController: ComponentGroupDelegate {
|
|
|
func componentGroupDidSelect(group: ComponentGroup?, menuItemProperty: ComponentMenuitemProperty?) {
|
|
|
if group == groupView {
|
|
|
if let selItem = menuItemProperty {
|
|
|
- let index = group?.menuItemArr.firstIndex(of: selItem)
|
|
|
- if index == 0 {
|
|
|
+ if selItem.text == KMLocalizedString("Delete") {
|
|
|
group?.removeFromSuperview()
|
|
|
var pageIndexs = IndexSet()
|
|
|
for i in bookTableView.selectedRowIndexes {
|
|
@@ -822,19 +864,12 @@ extension KMBookMarkViewController: ComponentGroupDelegate {
|
|
|
}
|
|
|
}
|
|
|
_ = handdler.removeBookmarks(for: pageIndexs)
|
|
|
- } else if index == 1 {
|
|
|
-
|
|
|
- } else if index == 2 {
|
|
|
+ } else if selItem.text == KMLocalizedString("Rename") {
|
|
|
group?.removeFromSuperview()
|
|
|
|
|
|
renameBookAction()
|
|
|
- } else if index == 3 {
|
|
|
- Task {
|
|
|
- let resp = await KMAlertTool.runModel(message: KMLocalizedString("此操作将删除文档中的所有书签,是否继续?"), buttons: [KMLocalizedString("OK"), KMLocalizedString("No")])
|
|
|
- if resp == .alertFirstButtonReturn {
|
|
|
- _ = handdler.removeAllBookmarks()
|
|
|
- }
|
|
|
- }
|
|
|
+ } else if selItem.text == KMLocalizedString("Setting Destination") {
|
|
|
+ changeLocationAction()
|
|
|
}
|
|
|
}
|
|
|
} else if group == searchGroupView {
|
|
@@ -855,6 +890,31 @@ extension KMBookMarkViewController: ComponentGroupDelegate {
|
|
|
|
|
|
handdler.caseSensitive = !value
|
|
|
}
|
|
|
+ } else if group == menuGroupView_ {
|
|
|
+ guard let menuI = menuItemProperty else {
|
|
|
+ return
|
|
|
+ }
|
|
|
+ let idx = group?.menuItemArr.firstIndex(of: menuI)
|
|
|
+ if idx == 0 {
|
|
|
+ group?.removeFromSuperview()
|
|
|
+
|
|
|
+ addBookmarkAction(addButton_)
|
|
|
+ } else if idx == 1 {
|
|
|
+ group?.removeFromSuperview()
|
|
|
+
|
|
|
+ var indexs = IndexSet()
|
|
|
+ for (i, _) in dataSource.enumerated() {
|
|
|
+ indexs.insert(i)
|
|
|
+ }
|
|
|
+ bookTableView.km_safe_selectRowIndexes(indexs, byExtendingSelection: false)
|
|
|
+ for i in indexs {
|
|
|
+ didSelectItem(row: i, event: nil)
|
|
|
+ }
|
|
|
+ } else if idx == 2 {
|
|
|
+ group?.removeFromSuperview()
|
|
|
+
|
|
|
+ deleteBookAction()
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|