// // StatusTableViewControllerNavigateable.swift // Mastodon // // Created by MainasuK Cirno on 2021-5-19. // import os.log import UIKit import MastodonAsset import MastodonLocalization typealias StatusTableViewControllerNavigateable = StatusTableViewControllerNavigateableCore & StatusTableViewControllerNavigateableRelay protocol StatusTableViewControllerNavigateableCore: TableViewControllerNavigateableCore { var statusNavigationKeyCommands: [UIKeyCommand] { get } func statusKeyCommandHandler(_ sender: UIKeyCommand) } extension StatusTableViewControllerNavigateableCore { var overrideNavigationScrollPosition: UITableView.ScrollPosition? { get { return nil } set { } } } @objc protocol StatusTableViewControllerNavigateableRelay: TableViewControllerNavigateableRelay { func statusKeyCommandHandlerRelay(_ sender: UIKeyCommand) } enum StatusTableViewNavigation: String, CaseIterable { case openAuthorProfile case openRebloggerProfile case replyStatus case toggleReblog case toggleFavorite case toggleContentWarning case previewImage var title: String { switch self { case .openAuthorProfile: return L10n.Common.Controls.Keyboard.Timeline.openAuthorProfile case .openRebloggerProfile: return L10n.Common.Controls.Keyboard.Timeline.openRebloggerProfile case .replyStatus: return L10n.Common.Controls.Keyboard.Timeline.replyStatus case .toggleReblog: return L10n.Common.Controls.Keyboard.Timeline.toggleReblog case .toggleFavorite: return L10n.Common.Controls.Keyboard.Timeline.toggleFavorite case .toggleContentWarning: return L10n.Common.Controls.Keyboard.Timeline.toggleContentWarning case .previewImage: return L10n.Common.Controls.Keyboard.Timeline.previewImage } } // UIKeyCommand input var input: String { switch self { case .openAuthorProfile: return "p" case .openRebloggerProfile: return "p" // + option case .replyStatus: return "n" // + shift + command case .toggleReblog: return "r" case .toggleFavorite: return "f" case .toggleContentWarning: return "o" case .previewImage: return "i" } } var modifierFlags: UIKeyModifierFlags { switch self { case .openAuthorProfile: return [] case .openRebloggerProfile: return [.alternate] case .replyStatus: return [.shift, .alternate] case .toggleReblog: return [] case .toggleFavorite: return [] case .toggleContentWarning: return [] case .previewImage: return [] } } var propertyList: Any { return rawValue } }