Browse Source

Settings

master
marcoschmickler 4 years ago
parent
commit
dd9d6181f0
  1. 12
      kplayer.xcodeproj/project.pbxproj
  2. 2
      kplayer/Base.lproj/LaunchScreen.xib
  3. 11
      kplayer/core/KSettings.swift
  4. 2
      kplayer/core/NetworkManager.swift
  5. 15
      kplayer/detail/DetailViewController.swift
  6. 39
      kplayer/master/KSettingsView.swift
  7. 28
      kplayer/video/BMPlayer.swift

12
kplayer.xcodeproj/project.pbxproj

@ -7,9 +7,11 @@
objects = {
/* Begin PBXBuildFile section */
1C73600CB93F16F4F28C116F /* KSettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736A6E8396EE306B1AD3A8 /* KSettingsView.swift */; };
1C736048BFA120F5C7D36874 /* readme.md in Sources */ = {isa = PBXBuildFile; fileRef = 1C73685B4BBFDAFBF08C032C /* readme.md */; };
1C7360C0F2A4F0214FE353BD /* FileHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C7367ECBD369A2A0C94C499 /* FileHelper.swift */; };
1C7360F1D2CF83ECDD586B84 /* BMPlayerCompositionResourceDefinition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C73610B997EBA367C806C1B /* BMPlayerCompositionResourceDefinition.swift */; };
1C7361B3AF46CEB30D3F4FA0 /* KSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736AE5021E3D985FE3402D /* KSettings.swift */; };
1C7361D2B6E0AE689FAAF4F4 /* VideoController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736C7FFBDAC665AE04CB65 /* VideoController.swift */; };
1C73631EACF56BABD3B2BCFB /* LayoutTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C736BC4450890C45F8FBC63 /* LayoutTools.swift */; };
1C73635138BBD2BB480A308F /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1C736777456388CA571DA17B /* MediaPlayer.framework */; };
@ -101,6 +103,8 @@
1C736927EA28AFBEB25D7487 /* BMPlayer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BMPlayer.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>"; };
1C736A6E8396EE306B1AD3A8 /* KSettingsView.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KSettingsView.swift; sourceTree = "<group>"; };
1C736AE5021E3D985FE3402D /* KSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KSettings.swift; sourceTree = "<group>"; };
1C736B41C6AC33F3FA592C63 /* MediaModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MediaModel.swift; sourceTree = "<group>"; };
1C736B794396F2E50387B8F2 /* stringutil.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = stringutil.swift; sourceTree = "<group>"; };
1C736BC4450890C45F8FBC63 /* LayoutTools.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LayoutTools.swift; sourceTree = "<group>"; };
@ -183,6 +187,7 @@
children = (
1C73611D226B48C24DB37535 /* MasterViewController.swift */,
1C7364F10BED5DA0F1C0423C /* NetworkDelegate.swift */,
1C736A6E8396EE306B1AD3A8 /* KSettingsView.swift */,
);
path = master;
sourceTree = "<group>";
@ -216,6 +221,7 @@
1C736B41C6AC33F3FA592C63 /* MediaModel.swift */,
1C73631C96E6C860833052CA /* ItemType.swift */,
1C736DBB6986A8B62963FBB3 /* HtmlParser.swift */,
1C736AE5021E3D985FE3402D /* KSettings.swift */,
);
path = core;
sourceTree = "<group>";
@ -528,6 +534,8 @@
1C736048BFA120F5C7D36874 /* readme.md in Sources */,
1C736771C503FB0D52AEB8F7 /* kplayer.js in Sources */,
1C736662E43C6E8FFED11AC4 /* download.js in Sources */,
1C7361B3AF46CEB30D3F4FA0 /* KSettings.swift in Sources */,
1C73600CB93F16F4F28C116F /* KSettingsView.swift in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@ -682,7 +690,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = G9J99WBBN9;
INFOPLIST_FILE = kplayer/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "schmickler.$(PRODUCT_NAME:rfc1034identifier)";
@ -702,7 +710,7 @@
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
CODE_SIGN_IDENTITY = "iPhone Developer";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
DEVELOPMENT_TEAM = "";
DEVELOPMENT_TEAM = G9J99WBBN9;
INFOPLIST_FILE = kplayer/Info.plist;
LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
PRODUCT_BUNDLE_IDENTIFIER = "schmickler.$(PRODUCT_NAME:rfc1034identifier)";

2
kplayer/Base.lproj/LaunchScreen.xib

@ -11,7 +11,7 @@
<rect key="frame" x="0.0" y="0.0" width="480" height="480"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) 2015 Marco Schmickler. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
<label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text=" Copyright (c) 2021 Marco Schmickler. All rights reserved." textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" minimumFontSize="9" translatesAutoresizingMaskIntoConstraints="NO" id="8ie-xW-0ye">
<rect key="frame" x="20" y="439" width="441" height="21"/>
<fontDescription key="fontDescription" type="system" pointSize="17"/>
<color key="textColor" cocoaTouchSystemColor="darkTextColor"/>

11
kplayer/core/KSettings.swift

@ -0,0 +1,11 @@
//
// Created by Marco Schmickler on 28.10.21.
// Copyright (c) 2021 Marco Schmickler. All rights reserved.
//
import Foundation
class KSettings: ObservableObject {
@Published
var scale = 0.5
}

2
kplayer/core/NetworkManager.swift

@ -13,6 +13,8 @@ class NetworkManager {
let baseurl = "http://linkstation:8080/tomcat/media"
let vidurl = "http://linkstation:8089"
let settings = KSettings()
var authenticated = false
var offline = false

15
kplayer/detail/DetailViewController.swift

@ -11,6 +11,7 @@ import Alamofire
import FileBrowser
import AVFoundation
import ZIPFoundation
import SwiftUI
protocol DetailDelegate {
func loadDetails(selectedItem: MediaItem, completionHandler: @escaping () -> Void)
@ -86,11 +87,12 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout
lpgr.delaysTouchesBegan = true
self.collectionView.addGestureRecognizer(lpgr);
let settingsButton = UIBarButtonItem(barButtonSystemItem: .edit, target: self, action: #selector(settings));
let overviewButton = UIBarButtonItem(barButtonSystemItem: .action, target: self, action: #selector(overview));
let favButton = UIBarButtonItem(barButtonSystemItem: .bookmarks, target: self, action: #selector(favorites));
let vidButton = UIBarButtonItem(barButtonSystemItem: .play, target: self, action: #selector(vplayer));
let browserButton = UIBarButtonItem(barButtonSystemItem: .organize, target: self, action: #selector(fileBrowser));
navigationItem.rightBarButtonItems = [vidButton, favButton, overviewButton,browserButton]
navigationItem.rightBarButtonItems = [settingsButton, vidButton, favButton, overviewButton,browserButton]
if detailItem != nil {
print("Details \(detailItem!.children)")
}
@ -151,6 +153,17 @@ class DetailViewController: UIViewController, UICollectionViewDelegateFlowLayout
collectionView.reloadData()
}
@objc func settings() {
let kv = KSettingsView(kSettings: NetworkManager.sharedInstance.settings, completionHandler: {
self.dismiss(animated: true, completion: nil);
} )
let pc = UIHostingController(rootView: kv)
let navController = UINavigationController(rootViewController: pc) // Creating a navigation controller with pc at the root of the navigation stack.
navController.modalPresentationStyle = .fullScreen
present(navController, animated: false, completion: nil)
}
@objc func overview() {
var i = [MediaItem]()

39
kplayer/master/KSettingsView.swift

@ -0,0 +1,39 @@
//
// Created by Marco Schmickler on 28.10.21.
// Copyright (c) 2021 Marco Schmickler. All rights reserved.
//
import SwiftUI
struct KSettingsView: View {
@ObservedObject
var kSettings: KSettings
var completionHandler: (() -> Void)?
@State
var scale = 0.5
var body: some View {
Form {
Section(header: Text("K Settings")) {
HStack {
Text("Size")
Slider(value: $scale, in: 0...1)
}
}
Button(action: {
self.completionHandler?()
}, label: {
Text("ok")
})
}
}
}
struct KSettingsView_Previews: PreviewProvider {
static var previews: some View {
KSettingsView(kSettings: KSettings())
}
}

28
kplayer/video/BMPlayer.swift

@ -187,7 +187,16 @@ open class BMPlayer: UIView {
if BMPlayerConf.shouldAutoPlay {
isURLSet = true
let asset = resource.definitions[definitionIndex]
let size = asset.avURLAsset.videoSize()
if (size.height < 1500) {
zoom = 0.75
xpos = -100
transformLayer()
}
playerLayer?.playAsset(asset: asset.avURLAsset)
} else {
controlView.showCover(url: resource.cover)
controlView.hideLoader()
@ -741,3 +750,22 @@ extension BMPlayer: BMPlayerControlViewDelegate {
self.playerLayer?.player?.rate = rate
}
}
extension AVAsset{
func videoSize()->CGSize{
let tracks = self.tracks(withMediaType: AVMediaType.video)
if (tracks.count > 0){
let videoTrack = tracks[0]
let size = videoTrack.naturalSize
let txf = videoTrack.preferredTransform
let realVidSize = size.applying(txf)
print(videoTrack)
print(txf)
print(size)
print(realVidSize)
return realVidSize
}
return CGSize(width: 0, height: 0)
}
}
Loading…
Cancel
Save