123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- //
- // 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
- }
- }
|