diff --git a/kplayer/SceneDelegate.swift b/kplayer/SceneDelegate.swift new file mode 100644 index 0000000..b138aa6 --- /dev/null +++ b/kplayer/SceneDelegate.swift @@ -0,0 +1,48 @@ +// +// Created by Marco Schmickler. +// Copyright (c) 2023 Marco Schmickler. All rights reserved. +// + +import UIKit + +class SceneDelegate: UIResponder, UIWindowSceneDelegate, UISplitViewControllerDelegate { + + var window: UIWindow? + + func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) { + guard let _ = scene as? UIWindowScene else { return } + setupSplitViewController() + } + + func sceneDidBecomeActive(_ scene: UIScene) { + NetworkManager.sharedInstance.alive() + } + + func sceneDidEnterBackground(_ scene: UIScene) { + (UIApplication.shared.delegate as? AppDelegate)?.saveContext() + } + + private func setupSplitViewController() { + guard let split = window?.rootViewController as? UISplitViewController else { return } + + let detailNav = split.viewControllers[split.viewControllers.count - 1] as! UINavigationController + detailNav.topViewController!.navigationItem.leftBarButtonItem = split.displayModeButtonItem + split.delegate = self + + let masterNav = split.viewControllers[0] as! UINavigationController + let controller = masterNav.topViewController as! MasterViewController + controller.delegate = NetworkDelegate() + controller.model.items = LocalManager.sharedInstance.model!.items + } + + // MARK: - Split view + + func splitViewController(_ splitViewController: UISplitViewController, collapseSecondary secondaryViewController: UIViewController, onto primaryViewController: UIViewController) -> Bool { + if let nav = secondaryViewController as? UINavigationController, + let detail = nav.topViewController as? DetailViewController, + detail.detailItem == nil { + return true + } + return false + } +}