From 95b8399e69a36d5f8c12c0149241dcc7a9cb0349 Mon Sep 17 00:00:00 2001 From: Marco Schmickler Date: Mon, 5 Nov 2018 16:55:16 +0100 Subject: [PATCH] Swift 4.2 --- kplayer.xcodeproj/project.pbxproj | 8 +++ kplayer/AppDelegate.swift | 8 +++ kplayer/core/MediaItem.swift | 4 ++ kplayer/detail/BrowserController.swift | 73 +++++++++++++++++++++++ kplayer/detail/DetailViewController.swift | 14 ++++- kplayer/master/MasterViewController.swift | 10 +++- kplayer/readme.md | 0 7 files changed, 114 insertions(+), 3 deletions(-) create mode 100644 kplayer/detail/BrowserController.swift create mode 100644 kplayer/readme.md diff --git a/kplayer.xcodeproj/project.pbxproj b/kplayer.xcodeproj/project.pbxproj index dda6767..70c307b 100644 --- a/kplayer.xcodeproj/project.pbxproj +++ b/kplayer.xcodeproj/project.pbxproj @@ -8,6 +8,7 @@ /* Begin PBXBuildFile section */ 1C7361D2B6E0AE689FAAF4F4 /* AVPlayerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736C7FFBDAC665AE04CB65 /* AVPlayerController.swift */; }; + 1C7362A6FA1C5DA0B0677F1E /* readme.md in Sources */ = {isa = PBXBuildFile; fileRef = 1C736871C9B012CB704AB803 /* readme.md */; }; 1C73631EACF56BABD3B2BCFB /* LayoutTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736BC4450890C45F8FBC63 /* LayoutTools.swift */; }; 1C73635138BBD2BB480A308F /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C736777456388CA571DA17B /* MediaPlayer.framework */; }; 1C73640D928DE56D35175D39 /* UploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736260E748CF136FF37EA7 /* UploadOperation.swift */; }; @@ -22,6 +23,7 @@ 1C73688D13E5A804880C8768 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736DCCE3AA9993E15F7652 /* UIImageExtension.swift */; }; 1C73691A9C7174E0C6B57267 /* stringutil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736B794396F2E50387B8F2 /* stringutil.swift */; }; 1C73693A1334A7792856FC58 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C73611D226B48C24DB37535 /* MasterViewController.swift */; }; + 1C736953BDBBAFC40884132A /* BrowserController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C73602350ACE2436736F981 /* BrowserController.swift */; }; 1C7369763AB6C73472E11B55 /* KBMPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736D981F8315FFD7D40695 /* KBMPlayer.swift */; }; 1C7369ABC44CFB530EA71FB6 /* HeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736D9BB5498E7E8F11C754 /* HeaderCell.swift */; }; 1C736A5FA5BA53B2597F2ED7 /* Kirschkeks-256x256.png in Resources */ = {isa = PBXBuildFile; fileRef = 1C736059262A57AADE6AB761 /* Kirschkeks-256x256.png */; }; @@ -50,6 +52,7 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ + 1C73602350ACE2436736F981 /* BrowserController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BrowserController.swift; sourceTree = ""; }; 1C736059262A57AADE6AB761 /* Kirschkeks-256x256.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Kirschkeks-256x256.png"; path = "kplayer/Kirschkeks-256x256.png"; sourceTree = ""; }; 1C736069C214E9522BB1BD97 /* ItemCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemCell.swift; sourceTree = ""; }; 1C7360744ABACC3557D05760 /* HanekeFetchOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HanekeFetchOperation.swift; sourceTree = ""; }; @@ -63,6 +66,7 @@ 1C7367379DEE94EBF3FAFA78 /* VideoPlayerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPlayerController.swift; sourceTree = ""; }; 1C73673DC671535E3A049F54 /* MediaPhotoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPhotoController.swift; sourceTree = ""; }; 1C736777456388CA571DA17B /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; + 1C736871C9B012CB704AB803 /* readme.md */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = net.daringfireball.markdown; path = readme.md; sourceTree = ""; }; 1C73688DAB88F9360FB62A49 /* MediaItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaItem.swift; sourceTree = ""; }; 1C7369EC16B19B32B515169E /* NetData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetData.swift; sourceTree = ""; }; 1C7369F53095B7A4D65679C2 /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = ""; }; @@ -116,6 +120,7 @@ 1C736D9BB5498E7E8F11C754 /* HeaderCell.swift */, 1C7369F53095B7A4D65679C2 /* DetailViewController.swift */, 1C736C7FFBDAC665AE04CB65 /* AVPlayerController.swift */, + 1C73602350ACE2436736F981 /* BrowserController.swift */, ); path = detail; sourceTree = ""; @@ -225,6 +230,7 @@ 1C7364808E72BFA7575E75E1 /* master */, 1C7363B608460DED4F522D1C /* photo */, 1C736F3946A38499113D351A /* video */, + 1C736871C9B012CB704AB803 /* readme.md */, ); path = kplayer; sourceTree = ""; @@ -439,6 +445,8 @@ 1C736821D6DF2237A3EABCC1 /* ViewControllerExtensions.swift in Sources */, 1C7361D2B6E0AE689FAAF4F4 /* AVPlayerController.swift in Sources */, 1C7369763AB6C73472E11B55 /* KBMPlayer.swift in Sources */, + 1C736953BDBBAFC40884132A /* BrowserController.swift in Sources */, + 1C7362A6FA1C5DA0B0677F1E /* readme.md in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/kplayer/AppDelegate.swift b/kplayer/AppDelegate.swift index c254a19..cfc04f3 100644 --- a/kplayer/AppDelegate.swift +++ b/kplayer/AppDelegate.swift @@ -24,6 +24,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController let controller = masterNavigationController.topViewController as! MasterViewController + let web = MediaItem(name: "web", path:"", root: "/srv/samba/ren/web", type: ItemType.DETAILS) + let google = MediaItem(name: "google", path:"", root: "www.google.de", type: ItemType.FOLDER) + let a = MediaItem(name: "google", path:"", root: "www.google.de", type: ItemType.WEB) + google.children = [ a ] + web.children = [ +google + ] controller.model.items = [ MediaItem(name: "sp", path:"", root: "/srv/samba/ren/sp/video", type: ItemType.VIDEOROOT), @@ -42,6 +49,7 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele MediaItem(name: "series", path:"", root: "/srv/samba/ren/series", type: ItemType.ROOT), MediaItem(name: "bm", path:"", root: "/srv/samba/ren/bm", type: ItemType.ROOT), MediaItem(name: "medieval", path:"", root: "/srv/samba/ren/medieval", type: ItemType.ROOT), + web, ] return true diff --git a/kplayer/core/MediaItem.swift b/kplayer/core/MediaItem.swift index 403c9bc..9599f02 100644 --- a/kplayer/core/MediaItem.swift +++ b/kplayer/core/MediaItem.swift @@ -17,6 +17,8 @@ enum ItemType: String, CustomStringConvertible { */ case VIDEOROOT = "videoroot" + case WEBROOT = "webroot" + /** Repräsentiert einen Ordner. Darin sind weitere Ordner enthalten. */ @@ -27,6 +29,8 @@ enum ItemType: String, CustomStringConvertible { */ case VIDEO = "video" + case WEB = "web" + /** Snapshots eines Videos. */ diff --git a/kplayer/detail/BrowserController.swift b/kplayer/detail/BrowserController.swift new file mode 100644 index 0000000..707140b --- /dev/null +++ b/kplayer/detail/BrowserController.swift @@ -0,0 +1,73 @@ +// +// Created by Marco Schmickler on 2018-11-01. +// Copyright (c) 2018 Marco Schmickler. All rights reserved. +// + +import Foundation +import UIKit +import WebBrowser +import WebKit + +class BrowserController : UIViewController, ItemController, WebBrowserDelegate, UINavigationControllerDelegate { + var completionHandler: (() -> Void)? + + func setCurrentItem(item: MediaItem) { + + } + + func setCompletionHandler(handler: @escaping (() -> Void)) { + completionHandler = handler + } + + override func viewDidLoad() { + let webBrowserViewController = WebBrowserViewController() + + webBrowserViewController.delegate = self + + webBrowserViewController.language = .english + // webBrowserViewController.tintColor = ... + // webBrowserViewController.barTintColor = ... + webBrowserViewController.isToolbarHidden = false + webBrowserViewController.isShowActionBarButton = false + webBrowserViewController.toolbarItemSpace = 50 + webBrowserViewController.isShowURLInNavigationBarWhenLoading = true + webBrowserViewController.isShowPageTitleInNavigationBar = true + + // webBrowserViewController.customApplicationActivities = ... + webBrowserViewController.loadURLString("https://www.xvideos.com") + webBrowserViewController.onOpenExternalAppHandler = { [weak self] _ in + guard let `self` = self else { return } + self.completionHandler!() + //self.navigationController?.popViewController(animated: true) + } + navigationController?.delegate = self + navigationController?.pushViewController(webBrowserViewController, animated: true) + // present(webBrowserViewController, animated: false) + } + + func webBrowser(_ webBrowser: WebBrowserViewController, didStartLoad url: URL?) { + + } + + func webBrowser(_ webBrowser: WebBrowserViewController, didFinishLoad url: URL?) { + } + + func webBrowser(_ webBrowser: WebBrowserViewController, didFailLoad url: URL?, withError error: Error) { + } + + func webBrowserWillDismiss(_ webBrowser: WebBrowserViewController) { + completionHandler!() + } + + func webBrowserDidDismiss(_ webBrowser: WebBrowserViewController) { + completionHandler!() + } + + func navigationController(_ navigationController: UINavigationController, willShow viewController: UIViewController, animated: Bool) { + + if (animated && viewController == self) { + completionHandler!() + } + } + +} diff --git a/kplayer/detail/DetailViewController.swift b/kplayer/detail/DetailViewController.swift index 3e89f9c..1f3e51b 100644 --- a/kplayer/detail/DetailViewController.swift +++ b/kplayer/detail/DetailViewController.swift @@ -326,6 +326,7 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout } } } + func showPhotos(_ im: [MediaItem]) { let pc = MediaPhotoController() @@ -338,14 +339,25 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout self.present(navController, animated: false, completion: nil) } + func showWeb(_ im: [MediaItem]) { + let pc = BrowserController() + + pc.completionHandler = { + self.dismiss(animated: true, completion: nil); + } + let navController = UINavigationController(rootViewController: pc) // Creating a navigation controller with pc at the root of the navigation stack. + + self.present(navController, animated: false, completion: nil) + } + func showVideo() { -// performSegue(withIdentifier: "showVideo", sender: self) var pc: ItemController? if videoplayer { pc = AVPlayerController() } else { + // pc = BrowserController() pc = VideoPlayerController() } diff --git a/kplayer/master/MasterViewController.swift b/kplayer/master/MasterViewController.swift index d1f9c21..bfd3112 100644 --- a/kplayer/master/MasterViewController.swift +++ b/kplayer/master/MasterViewController.swift @@ -98,6 +98,9 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating { } + /** + * Item ausgewaehlt + */ override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { print("\(indexPath.row)") @@ -111,7 +114,6 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating { if selectedItem.type == ItemType.DETAILS { gotoDetails(selectedItem) return - // selectLoadedItem(selectedItem) } if (selectedItem.isFolder()) { @@ -221,7 +223,11 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating { if p.type == ItemType.VIDEOROOT { NetworkManager.sharedInstance.loadDirs(dir, completionHandler: weiter) - } else { + } + else if p.type == ItemType.WEBROOT { + + } + else { NetworkManager.sharedInstance.loadPicDirs(dir, completionHandler: weiter) } } diff --git a/kplayer/readme.md b/kplayer/readme.md new file mode 100644 index 0000000..e69de29