From ed9220d061d0ed75941de1b60c2ed33e0c692931 Mon Sep 17 00:00:00 2001 From: Marco Schmickler Date: Tue, 25 Dec 2018 15:11:42 +0100 Subject: [PATCH] Slideshow --- kplayer/AppDelegate.swift | 20 +++++++++++--------- kplayer/core/MediaItem.swift | 18 ++++++++++++++---- kplayer/core/NetworkManager.swift | 7 +++---- kplayer/detail/DetailViewController.swift | 20 +++++++++++--------- kplayer/master/MasterViewController.swift | 4 ++-- kplayer/photo/MediaPhotoController.swift | 16 +++++++++++----- 6 files changed, 52 insertions(+), 33 deletions(-) diff --git a/kplayer/AppDelegate.swift b/kplayer/AppDelegate.swift index cfc04f3..65d9ff4 100644 --- a/kplayer/AppDelegate.swift +++ b/kplayer/AppDelegate.swift @@ -24,7 +24,8 @@ 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 web = MediaItem(name: "web", path:"", root: "/srv/samba/ren/web", type: ItemType.WEBROOT) 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 ] @@ -41,14 +42,15 @@ google MediaItem(name: "knk_archiv3", path:"", root: "/srv/samba/ren/knk_archiv3", type: ItemType.VIDEOROOT), MediaItem(name: "knk_archiv4", path:"", root: "/srv/samba/ren/knk_archiv4", type: ItemType.VIDEOROOT), MediaItem(name: "fetish", path:"", root: "/srv/samba/ren/fetish", type: ItemType.VIDEOROOT), - MediaItem(name: "fjoy", path:"", root: "/srv/samba/ren/fjoy", type: ItemType.ROOT), - MediaItem(name: "heg", path:"", root: "/srv/samba/ren/heg", type: ItemType.ROOT), - MediaItem(name: "ten", path:"", root: "/srv/samba/ren/ten", type: ItemType.ROOT), - MediaItem(name: "leg", path:"", root: "/srv/samba/ren/leg", type: ItemType.ROOT), - MediaItem(name: "ang", path:"", root: "/srv/samba/ren/ang", 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: "medieval", path:"", root: "/srv/samba/ren/medieval", type: ItemType.ROOT), + MediaItem(name: "fjoy", path:"", root: "/srv/samba/ren/fjoy", type: ItemType.PICROOT), + MediaItem(name: "heg", path:"", root: "/srv/samba/ren/heg", type: ItemType.PICROOT), + MediaItem(name: "hegvid", path:"", root: "/srv/samba/ren/heg/videos", type: ItemType.VIDEOROOT), + MediaItem(name: "ten", path:"", root: "/srv/samba/ren/ten", type: ItemType.PICROOT), + MediaItem(name: "leg", path:"", root: "/srv/samba/ren/leg", type: ItemType.PICROOT), + MediaItem(name: "ang", path:"", root: "/srv/samba/ren/ang", type: ItemType.PICROOT), + MediaItem(name: "series", path:"", root: "/srv/samba/ren/series", type: ItemType.PICROOT), + MediaItem(name: "bm", path:"", root: "/srv/samba/ren/bm", type: ItemType.PICROOT), + MediaItem(name: "medieval", path:"", root: "/srv/samba/ren/medieval", type: ItemType.PICROOT), web, ] diff --git a/kplayer/core/MediaItem.swift b/kplayer/core/MediaItem.swift index 9599f02..92437a2 100644 --- a/kplayer/core/MediaItem.swift +++ b/kplayer/core/MediaItem.swift @@ -10,13 +10,16 @@ enum ItemType: String, CustomStringConvertible { /** Repräsentiert eine Wurzel, in der nur Bilder angezeigt werden. */ - case ROOT = "root" + case PICROOT = "root" /** Repräsentiert eine Wurzel, in der nur Videos angezeigt werden. */ case VIDEOROOT = "videoroot" + /** + Repräsentiert eine Wurzel, in der nur Webseiten angezeigt werden. + */ case WEBROOT = "webroot" /** @@ -29,6 +32,9 @@ enum ItemType: String, CustomStringConvertible { */ case VIDEO = "video" + /** + Web-Browser + */ case WEB = "web" /** @@ -194,15 +200,19 @@ class MediaItem: CustomDebugStringConvertible { }) } + func isWeb() -> Bool { + return superRoot().type == ItemType.WEBROOT + } + func isPic() -> Bool { - return superRoot().type == ItemType.ROOT + return superRoot().type == ItemType.PICROOT && type == ItemType.PICS } func isVideo() -> Bool { - return superRoot().type == ItemType.VIDEOROOT + return superRoot().type == ItemType.VIDEOROOT && (type == ItemType.VIDEO || type == ItemType.SNAPSHOT) } func isFolder() -> Bool { - return type == ItemType.ROOT || type == ItemType.VIDEOROOT || type == ItemType.FOLDER + return type == ItemType.PICROOT || type == ItemType.VIDEOROOT || type == ItemType.FOLDER || type == ItemType.WEBROOT } } diff --git a/kplayer/core/NetworkManager.swift b/kplayer/core/NetworkManager.swift index 4a1b223..f78e992 100644 --- a/kplayer/core/NetworkManager.swift +++ b/kplayer/core/NetworkManager.swift @@ -24,7 +24,7 @@ class NetworkManager { internal typealias Weiter = ([MediaItem]) -> Void - func loadDirs(_ rootParam: String, completionHandler: @escaping Weiter) -> Void { + func loadVideoDirs(_ rootParam: String, completionHandler: @escaping Weiter) -> Void { var root = rootParam if root.contains("*") { @@ -338,7 +338,7 @@ class NetworkManager { } - func loadDetails(items: MediaItem, result: @escaping ([MediaItem]) -> () ) { + func loadPicDetails(items: MediaItem, result: @escaping ([MediaItem]) -> () ) { let len = items.root.count let url = NetworkManager.sharedInstance.baseurl + "/service/listfiles" + items.fullPath @@ -358,11 +358,10 @@ class NetworkManager { let name = NSURL(fileURLWithPath: s).lastPathComponent! var pathlen = l - len - name.count -// if (pathlen > 1000) { print(pathlen) print(name) print(s) -// } + if (pathlen < 2) { pathlen = 2 } diff --git a/kplayer/detail/DetailViewController.swift b/kplayer/detail/DetailViewController.swift index b62bf78..55937ae 100644 --- a/kplayer/detail/DetailViewController.swift +++ b/kplayer/detail/DetailViewController.swift @@ -68,7 +68,8 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout // attach long press gesture to collectionView let lpgr = UILongPressGestureRecognizer(target: self, action: #selector(handleLongPress(_:))) - lpgr.minimumPressDuration = 3; //seconds + lpgr.minimumPressDuration = 3; + //seconds lpgr.delaysTouchesBegan = true self.collectionView.addGestureRecognizer(lpgr); @@ -246,10 +247,10 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout switch kind { case UICollectionView.elementKindSectionHeader: let headerView = - collectionView.dequeueReusableSupplementaryView(ofKind: kind, - withReuseIdentifier: "HeaderView", - for: indexPath) - as! HeaderCell + collectionView.dequeueReusableSupplementaryView(ofKind: kind, + withReuseIdentifier: "HeaderView", + for: indexPath) + as! HeaderCell let items = detailItem!.children[indexPath.section] headerView.setItem(items) @@ -273,13 +274,14 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout self.currentItem = items } - if items.type == ItemType.VIDEO || items.type == ItemType.SNAPSHOT { + if items.isVideo() { showVideo() - } - else { - NetworkManager.sharedInstance.loadDetails(items: items, result: { (im: [MediaItem]) in + } else if items.isPic() { + NetworkManager.sharedInstance.loadPicDetails(items: items, result: { (im: [MediaItem]) in self.showPhotos(im) }) + } else { + showWeb(items.children) } } } diff --git a/kplayer/master/MasterViewController.swift b/kplayer/master/MasterViewController.swift index bfd3112..68a2917 100644 --- a/kplayer/master/MasterViewController.swift +++ b/kplayer/master/MasterViewController.swift @@ -222,10 +222,10 @@ class MasterViewController: UITableViewController, UISearchResultsUpdating { let dir = selectedItem.encodedDir! if p.type == ItemType.VIDEOROOT { - NetworkManager.sharedInstance.loadDirs(dir, completionHandler: weiter) + NetworkManager.sharedInstance.loadVideoDirs(dir, completionHandler: weiter) } else if p.type == ItemType.WEBROOT { - + weiter(p.children) } else { NetworkManager.sharedInstance.loadPicDirs(dir, completionHandler: weiter) diff --git a/kplayer/photo/MediaPhotoController.swift b/kplayer/photo/MediaPhotoController.swift index 49c7595..be33d3c 100644 --- a/kplayer/photo/MediaPhotoController.swift +++ b/kplayer/photo/MediaPhotoController.swift @@ -95,6 +95,10 @@ class MediaPhotoController: NIToolbarPhotoViewController, NIPhotoAlbumScrollView } @objc func back() { + if let t = timer { + t.invalidate() + } + operationQueue.cancelAllOperations() thumbnails?.cancel(); @@ -122,12 +126,8 @@ class MediaPhotoController: NIToolbarPhotoViewController, NIPhotoAlbumScrollView photoAlbumView.moveToPage(at: nextItem, animated: false); photoScrubberView.setSelectedPhotoIndex(nextItem, animated: true) + pagingScrollViewDidChangePages(photoAlbumView) - if (slide > 0) { - timer = Timer.scheduledTimer(timeInterval: Double(slide) / 2.0, target: self, selector: #selector(showItem), userInfo: nil, repeats: false) - } else { - timer = nil - } } @objc func play() { @@ -320,6 +320,12 @@ class MediaPhotoController: NIToolbarPhotoViewController, NIPhotoAlbumScrollView i in self.nextImage = i self.nextImageIndex = currentIndex + 1 + + if (self.slide > 0) { + self.timer = Timer.scheduledTimer(timeInterval: Double(self.slide) / 2, target: self, selector: #selector(self.showItem), userInfo: nil, repeats: false) + } else { + self.timer = nil + } }, index: currentIndex) loadNext = op3 op3.qualityOfService = QualityOfService.userInitiated