From b4dccac04463049eda8c0eaea3bb1b0834674894 Mon Sep 17 00:00:00 2001 From: Aiden Vigue Date: Fri, 18 Jun 2021 19:17:03 -0400 Subject: [PATCH] Add cast button --- .../CastConnected.imageset/Contents.json | 23 +++++++++++++++ .../ic_cast_connected_white_24dp-1.png | Bin 0 -> 981 bytes .../ic_cast_connected_white_24dp-2.png | Bin 0 -> 981 bytes .../ic_cast_connected_white_24dp.png | Bin 0 -> 1461 bytes .../CastConnecting0.imageset/Contents.json | 23 +++++++++++++++ .../ic_cast0_white_24dp-1.png | Bin 0 -> 856 bytes .../ic_cast0_white_24dp-2.png | Bin 0 -> 1208 bytes .../ic_cast0_white_24dp.png | Bin 0 -> 856 bytes .../CastConnecting1.imageset/Contents.json | 23 +++++++++++++++ .../ic_cast1_white_24dp-1.png | Bin 0 -> 888 bytes .../ic_cast1_white_24dp-2.png | Bin 0 -> 1249 bytes .../ic_cast1_white_24dp.png | Bin 0 -> 888 bytes .../CastConnecting2.imageset/Contents.json | 23 +++++++++++++++ .../ic_cast2_white_24dp-1.png | Bin 0 -> 884 bytes .../ic_cast2_white_24dp-2.png | Bin 0 -> 1266 bytes .../ic_cast2_white_24dp.png | Bin 0 -> 884 bytes .../CastDisconnected.imageset/Contents.json | 23 +++++++++++++++ .../ic_cast_white_24dp-1.png | Bin 0 -> 824 bytes .../ic_cast_white_24dp-2.png | Bin 0 -> 1230 bytes .../ic_cast_white_24dp.png | Bin 0 -> 824 bytes JellyfinPlayer/JellyfinPlayerApp.swift | 12 +------- JellyfinPlayer/VideoPlayer.storyboard | 20 +++++++++++-- JellyfinPlayer/VideoPlayer.swift | 27 ++++++++++++++++-- 23 files changed, 159 insertions(+), 15 deletions(-) create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnected.imageset/Contents.json create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnected.imageset/ic_cast_connected_white_24dp-1.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnected.imageset/ic_cast_connected_white_24dp-2.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnected.imageset/ic_cast_connected_white_24dp.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting0.imageset/Contents.json create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting0.imageset/ic_cast0_white_24dp-1.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting0.imageset/ic_cast0_white_24dp-2.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting0.imageset/ic_cast0_white_24dp.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting1.imageset/Contents.json create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting1.imageset/ic_cast1_white_24dp-1.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting1.imageset/ic_cast1_white_24dp-2.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting1.imageset/ic_cast1_white_24dp.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting2.imageset/Contents.json create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting2.imageset/ic_cast2_white_24dp-1.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting2.imageset/ic_cast2_white_24dp-2.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastConnecting2.imageset/ic_cast2_white_24dp.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/Contents.json create mode 100644 JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/ic_cast_white_24dp-1.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/ic_cast_white_24dp-2.png create mode 100644 JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/ic_cast_white_24dp.png diff --git a/JellyfinPlayer/Assets.xcassets/CastConnected.imageset/Contents.json b/JellyfinPlayer/Assets.xcassets/CastConnected.imageset/Contents.json new file mode 100644 index 00000000..1ecf6fb1 --- /dev/null +++ b/JellyfinPlayer/Assets.xcassets/CastConnected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ic_cast_connected_white_24dp-2.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_cast_connected_white_24dp-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_cast_connected_white_24dp.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer/Assets.xcassets/CastConnected.imageset/ic_cast_connected_white_24dp-1.png b/JellyfinPlayer/Assets.xcassets/CastConnected.imageset/ic_cast_connected_white_24dp-1.png new file mode 100644 index 0000000000000000000000000000000000000000..dcba78d8c16d00b7af95d9bc3690fd488fa77957 GIT binary patch literal 981 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 literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/CastConnecting1.imageset/ic_cast1_white_24dp.png b/JellyfinPlayer/Assets.xcassets/CastConnecting1.imageset/ic_cast1_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..090d9226bed7877560af281bb459f5e5de0f0904 GIT binary patch literal 888 zcmV-;1Bd*HP)Px&GD$>1RA>e5nagVwK@i4wec%hh2b$8k3Q>F?|6?wQ%tYL!$o zP|ZL!1EraPR;$%OZ=y}KY_bF(VQbh4t9!?FJjLJXV=Ls517lYNiY`@Efubw0 z&I9nf+WUjjR!gYpN)3Dk!XDs3H^ppzHToI*HTr@5(e@N1RvHNeK(rR!;?x5?gz*h> zBGQD&iti{(YYAjw+CayM6e90vpF`w*R&u}N|GEcu0B`~#Cs9?aa0zdm08%wJI^9IO z3*C*bN7Ljx!MT1dEAX}LL&i<82LfpbxkeSztnWvM({hN-bFamWzTCoH5wN3k0}(lb zZntq~FG6BIC7xU8zX^CG+~@%IQSY0!rF((-XF0WFEc=p|H3 zM$5s9evf&OLgFRy_{rS2Dr7zf0D2H$)988Bihdb8#q0}sBIN3bJ>y*8|X^e>^yRqwlYoC&!Y z#p0*&5ILC@j;`(64Fni$3Y|pvp=|>@5_h9fu1CJAVE2vQVz)&(xx0Y?ch>iS20VtI zhJ;@1tX#&i07uCg^9hjDGSjJKWym_cuq^?5f35Q|TL}Oz5W8oSu+K&QO5|^j{2KS{ zN}~JdjUkaN0_qfrktA#NPfTEPwJWi{M1EYwsJmLzY z1ayq+WK5(J0X^KTgwnZSd{p+5z%pa%_zwS_vA`<3nt^Htsu?I|27UroeYoWv(6MU( O0000Px&E=fc|RA>e5nZIjPK@i99G=dNU5e0t)6w)Xb3QkvND$c_SV7<2v=;xT&JOGmOq)Q%;>IENS$kfx3ewIU@Yy3|`$tAD6Uck3 z${omi2gU+`P}M;nm9{)WdGFN7??9{pF1l~5rd}rke?)!+zoI_cZb59tBVE-gRL6b? zKAk6OkF5iXcSzBnVL#q6cnAiMr(;U*&_lmZ|8z%?3=JMnm@2+;;xK_xuhV)>-3!md z3-C6$8?9lyM14Hz);VaK60kA<>E2?@7<>wT0C%Hxj8|;ntYklV-}4Y)7Owd~iGHi^ zfPD_|^Y%Hsf`8@@r%dL%waS+3E*e0sNK8n9C!GV$mt-zs(d%a4G<9md`bFkz{1bB;b z8U7WGf1X(Sx-m5Bl|TTZRaO!^fZ3{c&LXHD zEY0IHuuCp2fz%@;fbeS&y|bv0x4<*jhTjYHht`IC(dn6}sR@MH0QUjeCo##2G{1}m zKibb10vzz6B)0fco7!9POcPuDbwJ`xE*bJ+H z55Xr$LIrI}k4;-hyq zg_s*67bjky^6?3L4Fi+bAG5eJNq-gz ztP=Zrz|kv#iQt&DKb$_y1nSIv503wxaac;VT!C^0$`#0A1%3mW`}Y|Y_}9w-0000< KMNUMnLSTaGJC;BI literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/CastConnecting2.imageset/ic_cast2_white_24dp-2.png b/JellyfinPlayer/Assets.xcassets/CastConnecting2.imageset/ic_cast2_white_24dp-2.png new file mode 100644 index 0000000000000000000000000000000000000000..a49ee68df824f8036f4b3224c8761ae10ebdd517 GIT binary patch literal 1266 zcmVPx(tVu*cRA>e5noEckM-+xrD1T9ge+BXtu7Qn zM?^?guEd495)nbg*DeY8LMJ{^abXfj7!u!#GboONUcdj|uA1t)b;mni?Az`1fq$yb zsZ-tOKlQw=4Gp>E8OSq`XCTi&o`KY4pfMClp->o!eLk28J_-4x*!F_hu7mc*#>Pi) zjT5pfKo`imbV6W-PdGNhk;87^DdYM|MtYCoUqq6R8xrkZiMZz6dgZpHKi{Do%`Jg=Y%sbD{Bg|-;J={ zw77$AB6aJ)Q}7V{1#W>$KzHiLl$jSx7$zER{X7)L0{7Pw`6yh)b^z>y{Qs1hlxnB6 zJ`~Ibzkm+N9|Tjf$hca4roH|ygbgPxht=S3NN)iHO+%VXm+)2s z9S7!sWk6(hfxDnL8A78ryx$=`syD|pwAoFIjp!8t-HCA71P2MNUwxzg4*UovfRHT0 zcoF|)JWJn&Qz`BU2LmMd0yq!W<1iVl0gr;t4GmvlKL_d73hi|_zm>2XA*5e|?bs%P zpTP^aJ*sPpA4)6fJ`pzLAl(Tzptpd~8rL$|3u*mRO{&DMVS>}SIuUe7=%l#aPP?L!KBjj39=Hwlth*zuQPJnjVPG^+0=_2TZ^1M$0KH5g^B+cSSjWm5 zOKbWteN%H}xr77p7EOcstIg^g0-prR`at?Q?LUAkz!xQBqi?L2UKV^WfoO!MgGG>5 z5@HgO*3lJO(`)H7Cf1=&N?!<@5H;l&L*P?mFl98oThaa9TkCnV@vCR)68@7weg$X1 z4R9Y6KuEOK7giwMPMeM{UsmEj)i)-sTf&TvE*Rb53HTTMK`_68jtW7k?_5ZfO>gWv zqy5W?PK0fsu3`y?qKFc3jW&(CHYQ&*(jpyu4*fc@hsd?!+w4CiNj(;5r58is32h>+ z(ig4iFMT8W4$$G*^}e4xTcT=JgcT8_wGmwap^=`<$Y~e1g8xgD{npS^`M#%`e9aOj z;3;4!mmwdqHo6)lYZeIRtWA!J7wB@5ZJd1fLmORO&XR z8Q_XOCisLaoyYI%a&p}SPx&E=fc|RA>e5nZIjPK@i99G=dNU5e0t)6w)Xb3QkvND$c_SV7<2v=;xT&JOGmOq)Q%;>IENS$kfx3ewIU@Yy3|`$tAD6Uck3 z${omi2gU+`P}M;nm9{)WdGFN7??9{pF1l~5rd}rke?)!+zoI_cZb59tBVE-gRL6b? zKAk6OkF5iXcSzBnVL#q6cnAiMr(;U*&_lmZ|8z%?3=JMnm@2+;;xK_xuhV)>-3!md z3-C6$8?9lyM14Hz);VaK60kA<>E2?@7<>wT0C%Hxj8|;ntYklV-}4Y)7Owd~iGHi^ zfPD_|^Y%Hsf`8@@r%dL%waS+3E*e0sNK8n9C!GV$mt-zs(d%a4G<9md`bFkz{1bB;b z8U7WGf1X(Sx-m5Bl|TTZRaO!^fZ3{c&LXHD zEY0IHuuCp2fz%@;fbeS&y|bv0x4<*jhTjYHht`IC(dn6}sR@MH0QUjeCo##2G{1}m zKibb10vzz6B)0fco7!9POcPuDbwJ`xE*bJ+H z55Xr$LIrI}k4;-hyq zg_s*67bjky^6?3L4Fi+bAG5eJNq-gz ztP=Zrz|kv#iQt&DKb$_y1nSIv503wxaac;VT!C^0$`#0A1%3mW`}Y|Y_}9w-0000< KMNUMnLSTaGJC;BI literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/Contents.json b/JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/Contents.json new file mode 100644 index 00000000..23b70ec4 --- /dev/null +++ b/JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "ic_cast_white_24dp.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "ic_cast_white_24dp-1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "ic_cast_white_24dp-2.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/ic_cast_white_24dp-1.png b/JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/ic_cast_white_24dp-1.png new file mode 100644 index 0000000000000000000000000000000000000000..62c086f1459c1195631f7ed81e23920abeba8ca0 GIT binary patch literal 824 zcmV-81IPS{P)Px%@<~KNRA>e5nLB6{Q51%=A*B{#r2z{C3md^o1VMw^SXgOcDQG8F+KZhwwyD)d zh}c;9K-40Fjb#cgglrmPigco^-x=o4ocZtUV|2!ug*ou=-1E5Saqry6?k+6!)Q>6G88~QZ`T|BiZwxY>m$%in1?gjl{QN8A^>fqi3ut?)`Wa|@ z29`nsVO0lyUY`9c)b>ox{S0JlfP-$A(X{JCz*pKYz(>|c;S@yHJ+h;E3~eD_1?Sq# zT62qXQG+r3JLD&$&i_H6`9vYrU<$v6{&3`^L4oEILS;8j4E7?l>$F`{4}tUGBG?DY zXb0gH*2k+dW!*9>!26u(+@jACSOL#K8T~?d(>rdet-&kD!NDo;K^>+1!^#dTcF?#L zyXWROx&>_Hl^UH14VGt=wlLTQ8{iGN3r<8vx$On?JHV3_)!0_+16e!DO$}1s3c4H_ zBS3x(Xc0eKgKSb32uL1kUbZ>OTxbtzOdL$r-{tUi(mWJn9#TaOld`2Ppt9} zE#P#nN?PB9PkuobSsm=#;ABz(W^*kVrq55p7yd0lmyJwn*F*u^_`V}~jGbEhqMs4d zZHJwwN_unTJ6CKEv5)>@%986F{Rs3U(2qbXBk%`{5QN!E62hne0000Px(h)G02RA>e5noDR@Nfd??6=e_=6v3z{D5ERI=iq=~_G(02Xpn&cM-*K7SSS(G zK}2VxD-lswq9R1`F^nrAGN1t;GmN+ppNJY6R7emczIwjD?Q^NFRIVM{bnZ3xz@Mr* z=hUt9*Zba1O-&|Q4`e-%^+47GSq~(p2Wmr+(e`!l|M-Gr|>hUkWN`Bb})S-hh|j9=Ho`0NtrylcruG!Z6Wj>-A8m1Mb@s{gMA0-Dz+F^3O<9DdkRS zeJGd*eg{t=-wI}=k#V_%U2dwg3fzJ8Auz!;CO!W(gpHGy!$xo)(k)=P8Iqj3gm)9@ zM6duf0FgNYUVu0miBTKgWk`>Yb4-FQ+O*h+J`zwz5jQP3NND})8}$m%2&RCLEJk@9 z{|26=@4|@`cZ7oh5_}$91KV-<5o`gkg3dKHQ_)|A^vYiB1FrreVK+iZzXJ!*O$Ylx zw`(uvHO0>)m2{s78#zdKf*q9WL1>L@861bSeyT~7M1%=$CwLBSfD51*%!!K@((Tw6 zf?EMUjkKPV%#Dn|av&s+QSJs~0;CEmY(IeWAS8dGtlE)9TOl4fi#-})Qv_0NL_5I) z9=16YJR|)U`x+1$Y3<%kAQ4gyVGC5hJ?#hAAU)ZXmKI6t=nAdrt<*`xjjS((jhpV& zI&XD0mk6YvqR^4#@7`L^%_YtQU4Xz)PzUCN4d74E4SJKe7Gv|H!#v>EaBKG%@pkb8;Ij4@FWnA)}?mm zl3kcOo#^)j{8!>TDWI>KDweQC0Rip4I&ZI=&PlbVH#ud?9wg&;lG3f(j z=Y0j`xjcJpKwlM=OG>YbbznI-33SDrMp`1p=^g!(h-3W4$y-)ePybxjJ-gl^aK60(Y~TitikJ|3P06@~H9`DXcH5EYU}XvsSPa-<;(uNb3W2 z{d+;->XlQycE4)h0zR@*$wtx!mIE%k}%@)w81iJk$3j)dqDN=sR3A svVD0#=9~3E)&p4&WId4eK$Uvne~Jo}f1er4IRF3v07*qoM6N<$f)ced@&Et; literal 0 HcmV?d00001 diff --git a/JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/ic_cast_white_24dp.png b/JellyfinPlayer/Assets.xcassets/CastDisconnected.imageset/ic_cast_white_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..62c086f1459c1195631f7ed81e23920abeba8ca0 GIT binary patch literal 824 zcmV-81IPS{P)Px%@<~KNRA>e5nLB6{Q51%=A*B{#r2z{C3md^o1VMw^SXgOcDQG8F+KZhwwyD)d zh}c;9K-40Fjb#cgglrmPigco^-x=o4ocZtUV|2!ug*ou=-1E5Saqry6?k+6!)Q>6G88~QZ`T|BiZwxY>m$%in1?gjl{QN8A^>fqi3ut?)`Wa|@ z29`nsVO0lyUY`9c)b>ox{S0JlfP-$A(X{JCz*pKYz(>|c;S@yHJ+h;E3~eD_1?Sq# zT62qXQG+r3JLD&$&i_H6`9vYrU<$v6{&3`^L4oEILS;8j4E7?l>$F`{4}tUGBG?DY zXb0gH*2k+dW!*9>!26u(+@jACSOL#K8T~?d(>rdet-&kD!NDo;K^>+1!^#dTcF?#L zyXWROx&>_Hl^UH14VGt=wlLTQ8{iGN3r<8vx$On?JHV3_)!0_+16e!DO$}1s3c4H_ zBS3x(Xc0eKgKSb32uL1kUbZ>OTxbtzOdL$r-{tUi(mWJn9#TaOld`2Ppt9} zE#P#nN?PB9PkuobSsm=#;ABz(W^*kVrq55p7yd0lmyJwn*F*u^_`V}~jGbEhqMs4d zZHJwwN_unTJ6CKEv5)>@%986F{Rs3U(2qbXBk%`{5QN!E62hne0000 @@ -173,6 +187,7 @@ + @@ -196,10 +211,11 @@ - + + diff --git a/JellyfinPlayer/VideoPlayer.swift b/JellyfinPlayer/VideoPlayer.swift index c1b6f689..705bdbdb 100644 --- a/JellyfinPlayer/VideoPlayer.swift +++ b/JellyfinPlayer/VideoPlayer.swift @@ -50,7 +50,8 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe @IBOutlet weak var jumpBackButton: UIButton! @IBOutlet weak var jumpForwardButton: UIButton! @IBOutlet weak var playerSettingsButton: UIButton! - + @IBOutlet weak var castButton: UIButton! + var shouldShowLoadingScreen: Bool = false var ssTargetValueOffset: Int = 0 var ssStartValue: Int = 0 @@ -172,7 +173,11 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe self.mainActionButton.setImage(UIImage(systemName: "play"), for: .normal) } } - + + @IBAction func castButtonPressed(_ sender: Any) { + + } + func settingsPopoverDismissed() { optionsVC?.dismiss(animated: true, completion: nil) self.mediaPlayer.play() @@ -276,6 +281,23 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe } } + func mediaHasStartedPlaying() { + let scanner = CastDeviceScanner() + + NotificationCenter.default.addObserver(forName: CastDeviceScanner.deviceListDidChange, object: scanner, queue: nil) { _ in + dump(scanner.devices) + if(!scanner.devices.isEmpty) { + self.castButton.isEnabled = true; + self.castButton.setImage(UIImage(named: "CastDisconnected"), for: .normal) + } else { + self.castButton.isEnabled = false; + self.castButton.setImage(nil, for: .normal) + } + } + + scanner.startScanning() + } + override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) overrideUserInterfaceStyle = .dark @@ -432,6 +454,7 @@ class PlayerViewController: UIViewController, VLCMediaDelegate, VLCMediaPlayerDe mediaPlayer.currentVideoSubTitleIndex = selectedCaptionTrack mediaPlayer.pause() mediaPlayer.play() + self.mediaHasStartedPlaying() }) .store(in: &cancellables) }