Add separators to iOS context menus

This commit is contained in:
Maurice Parker 2020-11-13 05:23:04 -06:00
parent cab5a8178d
commit a80fc871c4
2 changed files with 50 additions and 34 deletions

View File

@ -594,16 +594,17 @@ extension MasterFeedViewController: UIContextMenuInteractionDelegate {
}
return UIContextMenuConfiguration(identifier: sectionIndex as NSCopying, previewProvider: nil) { suggestedActions in
let accountInfoAction = self.getAccountInfoAction(account: account)
let deactivateAction = self.deactivateAccountAction(account: account)
var actions = [accountInfoAction, deactivateAction]
var menuElements = [UIMenuElement]()
menuElements.append(UIMenu(title: "", options: .displayInline, children: [self.getAccountInfoAction(account: account)]))
if let markAllAction = self.markAllAsReadAction(account: account, contentView: interaction.view) {
actions.insert(markAllAction, at: 1)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [markAllAction]))
}
return UIMenu(title: "", children: actions)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [self.deactivateAccountAction(account: account)]))
return UIMenu(title: "", children: menuElements)
}
}
@ -891,34 +892,41 @@ private extension MasterFeedViewController {
guard let self = self else { return nil }
var actions = [UIAction]()
var menuElements = [UIMenuElement]()
if let inspectorAction = self.getInfoAction(indexPath: indexPath) {
actions.append(inspectorAction)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [inspectorAction]))
}
if let homePageAction = self.homePageAction(indexPath: indexPath) {
actions.append(homePageAction)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [homePageAction]))
}
var pageActions = [UIAction]()
if let copyFeedPageAction = self.copyFeedPageAction(indexPath: indexPath) {
actions.append(copyFeedPageAction)
pageActions.append(copyFeedPageAction)
}
if let copyHomePageAction = self.copyHomePageAction(indexPath: indexPath) {
actions.append(copyHomePageAction)
pageActions.append(copyHomePageAction)
}
if !pageActions.isEmpty {
menuElements.append(UIMenu(title: "", options: .displayInline, children: pageActions))
}
if let markAllAction = self.markAllAsReadAction(indexPath: indexPath) {
actions.append(markAllAction)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [markAllAction]))
}
if includeDeleteRename {
actions.append(self.renameAction(indexPath: indexPath))
actions.append(self.deleteAction(indexPath: indexPath))
menuElements.append(UIMenu(title: "",
options: .displayInline,
children: [
self.renameAction(indexPath: indexPath),
self.deleteAction(indexPath: indexPath)
]))
}
return UIMenu(title: "", children: actions)
return UIMenu(title: "", children: menuElements)
})
@ -929,15 +937,20 @@ private extension MasterFeedViewController {
guard let self = self else { return nil }
var actions = [UIAction]()
actions.append(self.deleteAction(indexPath: indexPath))
actions.append(self.renameAction(indexPath: indexPath))
var menuElements = [UIMenuElement]()
if let markAllAction = self.markAllAsReadAction(indexPath: indexPath) {
actions.append(markAllAction)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [markAllAction]))
}
return UIMenu(title: "", children: actions)
menuElements.append(UIMenu(title: "",
options: .displayInline,
children: [
self.renameAction(indexPath: indexPath),
self.deleteAction(indexPath: indexPath)
]))
return UIMenu(title: "", children: menuElements)
})
}

View File

@ -336,38 +336,41 @@ class MasterTimelineViewController: UITableViewController, UndoableCommandRunner
guard let self = self else { return nil }
var actions = [UIAction]()
var menuElements = [UIMenuElement]()
var markActions = [UIAction]()
if let action = self.toggleArticleReadStatusAction(article) {
actions.append(action)
markActions.append(action)
}
actions.append(self.toggleArticleStarStatusAction(article))
markActions.append(self.toggleArticleStarStatusAction(article))
if let action = self.markAboveAsReadAction(article, indexPath: indexPath) {
actions.append(action)
markActions.append(action)
}
if let action = self.markBelowAsReadAction(article, indexPath: indexPath) {
actions.append(action)
markActions.append(action)
}
menuElements.append(UIMenu(title: "", options: .displayInline, children: markActions))
var secondaryActions = [UIAction]()
if let action = self.discloseFeedAction(article) {
actions.append(action)
secondaryActions.append(action)
}
if let action = self.markAllInFeedAsReadAction(article, indexPath: indexPath) {
actions.append(action)
secondaryActions.append(action)
}
if !secondaryActions.isEmpty {
menuElements.append(UIMenu(title: "", options: .displayInline, children: secondaryActions))
}
if let action = self.openInBrowserAction(article) {
actions.append(action)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [action]))
}
if let action = self.shareAction(article, indexPath: indexPath) {
actions.append(action)
menuElements.append(UIMenu(title: "", options: .displayInline, children: [action]))
}
return UIMenu(title: "", children: actions)
return UIMenu(title: "", children: menuElements)
})