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 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) { 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 } guard let self = self else { return nil }
var actions = [UIAction]() var menuElements = [UIMenuElement]()
if let inspectorAction = self.getInfoAction(indexPath: indexPath) { 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) { 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) { if let copyFeedPageAction = self.copyFeedPageAction(indexPath: indexPath) {
actions.append(copyFeedPageAction) pageActions.append(copyFeedPageAction)
} }
if let copyHomePageAction = self.copyHomePageAction(indexPath: indexPath) { 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) { if let markAllAction = self.markAllAsReadAction(indexPath: indexPath) {
actions.append(markAllAction) menuElements.append(UIMenu(title: "", options: .displayInline, children: [markAllAction]))
} }
if includeDeleteRename { if includeDeleteRename {
actions.append(self.renameAction(indexPath: indexPath)) menuElements.append(UIMenu(title: "",
actions.append(self.deleteAction(indexPath: indexPath)) 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 } guard let self = self else { return nil }
var actions = [UIAction]() var menuElements = [UIMenuElement]()
actions.append(self.deleteAction(indexPath: indexPath))
actions.append(self.renameAction(indexPath: indexPath))
if let markAllAction = self.markAllAsReadAction(indexPath: indexPath) { 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 } guard let self = self else { return nil }
var actions = [UIAction]() var menuElements = [UIMenuElement]()
var markActions = [UIAction]()
if let action = self.toggleArticleReadStatusAction(article) { if let action = self.toggleArticleReadStatusAction(article) {
actions.append(action) markActions.append(action)
} }
markActions.append(self.toggleArticleStarStatusAction(article))
actions.append(self.toggleArticleStarStatusAction(article))
if let action = self.markAboveAsReadAction(article, indexPath: indexPath) { if let action = self.markAboveAsReadAction(article, indexPath: indexPath) {
actions.append(action) markActions.append(action)
} }
if let action = self.markBelowAsReadAction(article, indexPath: indexPath) { 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) { if let action = self.discloseFeedAction(article) {
actions.append(action) secondaryActions.append(action)
} }
if let action = self.markAllInFeedAsReadAction(article, indexPath: indexPath) { 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) { 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) { 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)
}) })