149 lines
4.6 KiB
Swift
149 lines
4.6 KiB
Swift
//
|
|
// AppDelegate.swift
|
|
// SBrowser
|
|
//
|
|
// Created by James Magahern on 7/21/20.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
@main
|
|
class AppDelegate: UIResponder, UIApplicationDelegate {
|
|
|
|
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
|
|
{
|
|
return true
|
|
}
|
|
|
|
// MARK: UISceneSession Lifecycle
|
|
|
|
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration
|
|
{
|
|
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
|
|
}
|
|
|
|
static func appMenuShortcuts() -> [UIKeyCommand] {
|
|
[
|
|
// Preferences
|
|
UIKeyCommand(
|
|
modifiers: .command,
|
|
input: ",",
|
|
title: "Preferences",
|
|
action: #selector(ShortcutResponder.showPreferences)
|
|
)
|
|
]
|
|
}
|
|
|
|
static func fileMenuShortcuts() -> [UIKeyCommand] {
|
|
[
|
|
// Open Location...
|
|
UIKeyCommand(
|
|
modifiers: .command, input: "L",
|
|
title: "Open Location",
|
|
action: #selector(ShortcutResponder.focusURLBar)
|
|
),
|
|
|
|
// Focus Web View
|
|
UIKeyCommand(
|
|
modifiers: .command, input: "e",
|
|
title: "Focus Web View",
|
|
action: #selector(ShortcutResponder.focusWebView)
|
|
),
|
|
|
|
// Go Back
|
|
UIKeyCommand(
|
|
modifiers: .command, input: "[",
|
|
title: "Go Back",
|
|
action: #selector(ShortcutResponder.goBack)
|
|
),
|
|
|
|
// Go Forward
|
|
UIKeyCommand(
|
|
modifiers: .command, input: "]",
|
|
title: "Go Forward",
|
|
action: #selector(ShortcutResponder.goForward)
|
|
),
|
|
|
|
// Create Tab
|
|
UIKeyCommand(
|
|
modifiers: .command, input: "T",
|
|
title: "New Tab",
|
|
action: #selector(ShortcutResponder.createTab)
|
|
),
|
|
|
|
// Previous Tab
|
|
UIKeyCommand(
|
|
modifiers: [.command, .shift], input: "[",
|
|
title: "Previous Tab",
|
|
action: #selector(ShortcutResponder.previousTab)
|
|
),
|
|
|
|
// Close tab
|
|
UIKeyCommand(
|
|
modifiers: [.command], input: "W",
|
|
title: "Close Tab",
|
|
action: #selector(ShortcutResponder.closeTab)
|
|
),
|
|
|
|
// Next Tab
|
|
UIKeyCommand(
|
|
modifiers: [.command, .shift], input: "]",
|
|
title: "Next Tab",
|
|
action: #selector(ShortcutResponder.nextTab)
|
|
),
|
|
|
|
// Find on page
|
|
UIKeyCommand(
|
|
modifiers: [.command], input: "F",
|
|
title: "Find on Page",
|
|
action: #selector(ShortcutResponder.findOnPage)
|
|
),
|
|
|
|
// Refresh
|
|
UIKeyCommand(
|
|
modifiers: [.command], input: "R",
|
|
title: "Refresh",
|
|
action: #selector(ShortcutResponder.refresh)
|
|
),
|
|
|
|
// Toggle Dark Mode
|
|
UIKeyCommand(
|
|
modifiers: [.command], input: "M",
|
|
title: "Toggle Dark Mode",
|
|
action: #selector(ShortcutResponder.toggleDarkMode)
|
|
),
|
|
]
|
|
}
|
|
|
|
override var keyCommands: [UIKeyCommand]? {
|
|
get { return Self.fileMenuShortcuts() + Self.appMenuShortcuts() }
|
|
}
|
|
|
|
override func buildMenu(with builder: UIMenuBuilder) {
|
|
builder.replaceChildren(ofMenu: .file) { children in
|
|
return Self.fileMenuShortcuts() + children
|
|
}
|
|
|
|
builder.remove(menu: .format)
|
|
|
|
builder.replaceChildren(ofMenu: .application, from: { children in
|
|
let index = children.firstIndex(where: { elem in
|
|
if let elem = elem as? UIMenu {
|
|
return elem.identifier == .about
|
|
}
|
|
return false
|
|
})
|
|
|
|
var newChildren = children
|
|
if let index = index {
|
|
newChildren.insert(contentsOf: Self.appMenuShortcuts(), at: index + 1)
|
|
} else {
|
|
newChildren.append(contentsOf: Self.appMenuShortcuts())
|
|
}
|
|
|
|
return newChildren
|
|
})
|
|
}
|
|
}
|
|
|