Browse Source

Swift 4.2

master
Marco Schmickler 7 years ago
parent
commit
95b8399e69
  1. 8
      kplayer.xcodeproj/project.pbxproj
  2. 8
      kplayer/AppDelegate.swift
  3. 4
      kplayer/core/MediaItem.swift
  4. 73
      kplayer/detail/BrowserController.swift
  5. 14
      kplayer/detail/DetailViewController.swift
  6. 10
      kplayer/master/MasterViewController.swift
  7. 0
      kplayer/readme.md

8
kplayer.xcodeproj/project.pbxproj

@ -8,6 +8,7 @@
/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
1C7361D2B6E0AE689FAAF4F4 /* AVPlayerController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736C7FFBDAC665AE04CB65 /* AVPlayerController.swift */; }; 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 */; }; 1C73631EACF56BABD3B2BCFB /* LayoutTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736BC4450890C45F8FBC63 /* LayoutTools.swift */; };
1C73635138BBD2BB480A308F /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C736777456388CA571DA17B /* MediaPlayer.framework */; }; 1C73635138BBD2BB480A308F /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C736777456388CA571DA17B /* MediaPlayer.framework */; };
1C73640D928DE56D35175D39 /* UploadOperation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736260E748CF136FF37EA7 /* UploadOperation.swift */; }; 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 */; }; 1C73688D13E5A804880C8768 /* UIImageExtension.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736DCCE3AA9993E15F7652 /* UIImageExtension.swift */; };
1C73691A9C7174E0C6B57267 /* stringutil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736B794396F2E50387B8F2 /* stringutil.swift */; }; 1C73691A9C7174E0C6B57267 /* stringutil.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736B794396F2E50387B8F2 /* stringutil.swift */; };
1C73693A1334A7792856FC58 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C73611D226B48C24DB37535 /* MasterViewController.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 */; }; 1C7369763AB6C73472E11B55 /* KBMPlayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736D981F8315FFD7D40695 /* KBMPlayer.swift */; };
1C7369ABC44CFB530EA71FB6 /* HeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736D9BB5498E7E8F11C754 /* HeaderCell.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 */; }; 1C736A5FA5BA53B2597F2ED7 /* Kirschkeks-256x256.png in Resources */ = {isa = PBXBuildFile; fileRef = 1C736059262A57AADE6AB761 /* Kirschkeks-256x256.png */; };
@ -50,6 +52,7 @@
/* End PBXContainerItemProxy section */ /* End PBXContainerItemProxy section */
/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
1C73602350ACE2436736F981 /* BrowserController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BrowserController.swift; sourceTree = "<group>"; };
1C736059262A57AADE6AB761 /* Kirschkeks-256x256.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Kirschkeks-256x256.png"; path = "kplayer/Kirschkeks-256x256.png"; sourceTree = "<group>"; }; 1C736059262A57AADE6AB761 /* Kirschkeks-256x256.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "Kirschkeks-256x256.png"; path = "kplayer/Kirschkeks-256x256.png"; sourceTree = "<group>"; };
1C736069C214E9522BB1BD97 /* ItemCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemCell.swift; sourceTree = "<group>"; }; 1C736069C214E9522BB1BD97 /* ItemCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ItemCell.swift; sourceTree = "<group>"; };
1C7360744ABACC3557D05760 /* HanekeFetchOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HanekeFetchOperation.swift; sourceTree = "<group>"; }; 1C7360744ABACC3557D05760 /* HanekeFetchOperation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = HanekeFetchOperation.swift; sourceTree = "<group>"; };
@ -63,6 +66,7 @@
1C7367379DEE94EBF3FAFA78 /* VideoPlayerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPlayerController.swift; sourceTree = "<group>"; }; 1C7367379DEE94EBF3FAFA78 /* VideoPlayerController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = VideoPlayerController.swift; sourceTree = "<group>"; };
1C73673DC671535E3A049F54 /* MediaPhotoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPhotoController.swift; sourceTree = "<group>"; }; 1C73673DC671535E3A049F54 /* MediaPhotoController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaPhotoController.swift; sourceTree = "<group>"; };
1C736777456388CA571DA17B /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = System/Library/Frameworks/MediaPlayer.framework; sourceTree = SDKROOT; }; 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 = "<group>"; };
1C73688DAB88F9360FB62A49 /* MediaItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaItem.swift; sourceTree = "<group>"; }; 1C73688DAB88F9360FB62A49 /* MediaItem.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaItem.swift; sourceTree = "<group>"; };
1C7369EC16B19B32B515169E /* NetData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetData.swift; sourceTree = "<group>"; }; 1C7369EC16B19B32B515169E /* NetData.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NetData.swift; sourceTree = "<group>"; };
1C7369F53095B7A4D65679C2 /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = "<group>"; }; 1C7369F53095B7A4D65679C2 /* DetailViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = "<group>"; };
@ -116,6 +120,7 @@
1C736D9BB5498E7E8F11C754 /* HeaderCell.swift */, 1C736D9BB5498E7E8F11C754 /* HeaderCell.swift */,
1C7369F53095B7A4D65679C2 /* DetailViewController.swift */, 1C7369F53095B7A4D65679C2 /* DetailViewController.swift */,
1C736C7FFBDAC665AE04CB65 /* AVPlayerController.swift */, 1C736C7FFBDAC665AE04CB65 /* AVPlayerController.swift */,
1C73602350ACE2436736F981 /* BrowserController.swift */,
); );
path = detail; path = detail;
sourceTree = "<group>"; sourceTree = "<group>";
@ -225,6 +230,7 @@
1C7364808E72BFA7575E75E1 /* master */, 1C7364808E72BFA7575E75E1 /* master */,
1C7363B608460DED4F522D1C /* photo */, 1C7363B608460DED4F522D1C /* photo */,
1C736F3946A38499113D351A /* video */, 1C736F3946A38499113D351A /* video */,
1C736871C9B012CB704AB803 /* readme.md */,
); );
path = kplayer; path = kplayer;
sourceTree = "<group>"; sourceTree = "<group>";
@ -439,6 +445,8 @@
1C736821D6DF2237A3EABCC1 /* ViewControllerExtensions.swift in Sources */, 1C736821D6DF2237A3EABCC1 /* ViewControllerExtensions.swift in Sources */,
1C7361D2B6E0AE689FAAF4F4 /* AVPlayerController.swift in Sources */, 1C7361D2B6E0AE689FAAF4F4 /* AVPlayerController.swift in Sources */,
1C7369763AB6C73472E11B55 /* KBMPlayer.swift in Sources */, 1C7369763AB6C73472E11B55 /* KBMPlayer.swift in Sources */,
1C736953BDBBAFC40884132A /* BrowserController.swift in Sources */,
1C7362A6FA1C5DA0B0677F1E /* readme.md in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
}; };

8
kplayer/AppDelegate.swift

@ -24,6 +24,13 @@ class AppDelegate: UIResponder, UIApplicationDelegate, UISplitViewControllerDele
let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController let masterNavigationController = splitViewController.viewControllers[0] as! UINavigationController
let controller = masterNavigationController.topViewController as! MasterViewController 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 = [ controller.model.items = [
MediaItem(name: "sp", path:"", root: "/srv/samba/ren/sp/video", type: ItemType.VIDEOROOT), 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: "series", path:"", root: "/srv/samba/ren/series", type: ItemType.ROOT),
MediaItem(name: "bm", path:"", root: "/srv/samba/ren/bm", 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), MediaItem(name: "medieval", path:"", root: "/srv/samba/ren/medieval", type: ItemType.ROOT),
web,
] ]
return true return true

4
kplayer/core/MediaItem.swift

@ -17,6 +17,8 @@ enum ItemType: String, CustomStringConvertible {
*/ */
case VIDEOROOT = "videoroot" case VIDEOROOT = "videoroot"
case WEBROOT = "webroot"
/** /**
Repräsentiert einen Ordner. Darin sind weitere Ordner enthalten. Repräsentiert einen Ordner. Darin sind weitere Ordner enthalten.
*/ */
@ -27,6 +29,8 @@ enum ItemType: String, CustomStringConvertible {
*/ */
case VIDEO = "video" case VIDEO = "video"
case WEB = "web"
/** /**
Snapshots eines Videos. Snapshots eines Videos.
*/ */

73
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!()
}
}
}

14
kplayer/detail/DetailViewController.swift

@ -326,6 +326,7 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout
} }
} }
} }
func showPhotos(_ im: [MediaItem]) { func showPhotos(_ im: [MediaItem]) {
let pc = MediaPhotoController() let pc = MediaPhotoController()
@ -338,14 +339,25 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout
self.present(navController, animated: false, completion: nil) 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() { func showVideo() {
// performSegue(withIdentifier: "showVideo", sender: self)
var pc: ItemController? var pc: ItemController?
if videoplayer { if videoplayer {
pc = AVPlayerController() pc = AVPlayerController()
} }
else { else {
// pc = BrowserController()
pc = VideoPlayerController() pc = VideoPlayerController()
} }

10
kplayer/master/MasterViewController.swift

@ -98,6 +98,9 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating {
} }
/**
* Item ausgewaehlt
*/
override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
print("\(indexPath.row)") print("\(indexPath.row)")
@ -111,7 +114,6 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating {
if selectedItem.type == ItemType.DETAILS { if selectedItem.type == ItemType.DETAILS {
gotoDetails(selectedItem) gotoDetails(selectedItem)
return return
// selectLoadedItem(selectedItem)
} }
if (selectedItem.isFolder()) { if (selectedItem.isFolder()) {
@ -221,7 +223,11 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating {
if p.type == ItemType.VIDEOROOT { if p.type == ItemType.VIDEOROOT {
NetworkManager.sharedInstance.loadDirs(dir, completionHandler: weiter) NetworkManager.sharedInstance.loadDirs(dir, completionHandler: weiter)
} else {
}
else if p.type == ItemType.WEBROOT {
}
else {
NetworkManager.sharedInstance.loadPicDirs(dir, completionHandler: weiter) NetworkManager.sharedInstance.loadPicDirs(dir, completionHandler: weiter)
} }
} }

0
kplayer/readme.md

Loading…
Cancel
Save