Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/ios.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'Libraries external/LMMediaPlayer/Pod')
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen.pngbin4144 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen@2x.pngbin4458 -> 0 bytes
-rwxr-xr-xLibraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause.pngbin2999 -> 0 bytes
-rwxr-xr-xLibraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause@2x.pngbin3202 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play.pngbin4025 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play@2x.pngbin4142 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all.pngbin3747 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all@2x.pngbin4246 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none.pngbin3540 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none@2x.pngbin3661 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one.pngbin3715 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one@2x.pngbin4071 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle.pngbin4149 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle@2x.pngbin4694 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen.pngbin4151 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen@2x.pngbin4573 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle.pngbin3626 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle@2x.pngbin4006 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen.pngbin3979 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen@2x.pngbin4438 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause.pngbin3934 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause@2x.pngbin3992 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play.pngbin3901 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play@2x.pngbin4142 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all.pngbin4264 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all@2x.pngbin4643 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none.pngbin4161 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none@2x.pngbin4559 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one.pngbin4230 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one@2x.pngbin4576 -> 0 bytes
-rwxr-xr-xLibraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle.pngbin3797 -> 0 bytes
-rwxr-xr-xLibraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle@2x.pngbin4515 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen.pngbin3641 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen@2x.pngbin4012 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle.pngbin3532 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle@2x.pngbin3683 -> 0 bytes
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.xib250
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.h21
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.m37
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.h29
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.m13
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.h40
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.m207
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.h19
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.m65
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.h16
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.m45
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.h84
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.m399
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.h74
-rw-r--r--Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.m761
51 files changed, 0 insertions, 2060 deletions
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen.png
deleted file mode 100644
index 1876e8a3c..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen@2x.png
deleted file mode 100644
index 8a93e578e..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause.png
deleted file mode 100755
index fab3cab65..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause@2x.png
deleted file mode 100755
index b5b168cf0..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play.png
deleted file mode 100644
index cd24657d9..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play@2x.png
deleted file mode 100644
index d266fd056..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all.png
deleted file mode 100644
index c293a82ed..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all@2x.png
deleted file mode 100644
index e82b6290e..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none.png
deleted file mode 100644
index a2f73d020..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none@2x.png
deleted file mode 100644
index 48bb7cd28..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one.png
deleted file mode 100644
index eb28c76b8..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one@2x.png
deleted file mode 100644
index 6902438a6..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle.png
deleted file mode 100644
index 3d2025184..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle@2x.png
deleted file mode 100644
index cc3eb27f8..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen.png
deleted file mode 100644
index 0fcd6bafe..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen@2x.png
deleted file mode 100644
index 0419a0ae0..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle.png
deleted file mode 100644
index f875a4845..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle@2x.png
deleted file mode 100644
index d4abd97d8..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen.png
deleted file mode 100644
index 77a3f3695..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen@2x.png
deleted file mode 100644
index 7af4de161..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause.png
deleted file mode 100644
index e9cf7e415..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause@2x.png
deleted file mode 100644
index 541bef8a1..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play.png
deleted file mode 100644
index 13b4c8fcf..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play@2x.png
deleted file mode 100644
index d266fd056..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all.png
deleted file mode 100644
index 9a6b8a05c..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all@2x.png
deleted file mode 100644
index 754333249..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none.png
deleted file mode 100644
index 44de0c5b0..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none@2x.png
deleted file mode 100644
index b01077b98..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one.png
deleted file mode 100644
index c3acdc521..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one@2x.png
deleted file mode 100644
index 732be27e6..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle.png
deleted file mode 100755
index 954662b33..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle@2x.png
deleted file mode 100755
index 0611c301a..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen.png
deleted file mode 100644
index 485fb718a..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen@2x.png
deleted file mode 100644
index 5223c567d..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle.png
deleted file mode 100644
index c7ca2a68d..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle@2x.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle@2x.png
deleted file mode 100644
index 45e32ab03..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle@2x.png
+++ /dev/null
Binary files differ
diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.xib b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.xib
deleted file mode 100644
index e0139b39c..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.xib
+++ /dev/null
@@ -1,250 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.CocoaTouch.XIB" version="3.0" toolsVersion="8191" systemVersion="15A284" targetRuntime="iOS.CocoaTouch" variant="6xAndEarlier" propertyAccessControl="none" useAutolayout="YES">
- <dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.IBCocoaTouchPlugin" version="8154"/>
- </dependencies>
- <objects>
- <placeholder placeholderIdentifier="IBFilesOwner" id="-1" userLabel="File's Owner"/>
- <placeholder placeholderIdentifier="IBFirstResponder" id="-2" customClass="UIResponder"/>
- <view contentMode="scaleToFill" id="1hC-He-NDs" customClass="LMMediaPlayerView">
- <rect key="frame" x="0.0" y="0.0" width="320" height="180"/>
- <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
- <subviews>
- <imageView userInteractionEnabled="NO" contentMode="scaleToFill" horizontalHuggingPriority="251" verticalHuggingPriority="251" translatesAutoresizingMaskIntoConstraints="NO" id="077-OQ-G8z">
- <rect key="frame" x="0.0" y="0.0" width="320" height="180"/>
- <animations/>
- </imageView>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="oc7-kf-peg">
- <rect key="frame" x="0.0" y="136" width="320" height="44"/>
- <subviews>
- <slider opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" minValue="0.0" maxValue="1" translatesAutoresizingMaskIntoConstraints="NO" id="tJg-rp-csT">
- <rect key="frame" x="73" y="10" width="169" height="25"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="height" constant="24" id="kJJ-cQ-bc6"/>
- </constraints>
- </slider>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="lWT-Df-Byc">
- <rect key="frame" x="5" y="7" width="30" height="30"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="height" constant="30" id="BUb-5g-dxA"/>
- <constraint firstAttribute="width" constant="30" id="bIg-SV-wIA"/>
- </constraints>
- <fontDescription key="fontDescription" type="system" pointSize="15"/>
- <state key="normal">
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- </button>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="MJc-Lj-1A5">
- <rect key="frame" x="285" y="7" width="30" height="30"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="height" constant="30" id="PML-ws-xeY"/>
- <constraint firstAttribute="width" constant="30" id="qv2-fR-aQZ"/>
- </constraints>
- <fontDescription key="fontDescription" type="system" pointSize="15"/>
- <state key="normal">
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- <connections>
- <action selector="fullscreenButtonPressed:" destination="1hC-He-NDs" eventType="touchUpInside" id="11b-9P-ayj"/>
- </connections>
- </button>
- <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="00:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="7Vp-13-PyP">
- <rect key="frame" x="40" y="16" width="28" height="11"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="width" constant="28" id="BCY-AQ-tvj"/>
- <constraint firstAttribute="height" constant="11" id="nTK-cl-WCl"/>
- </constraints>
- <fontDescription key="fontDescription" type="system" pointSize="9"/>
- <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
- <nil key="highlightedColor"/>
- </label>
- <label opaque="NO" clipsSubviews="YES" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="-00:00" textAlignment="center" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="dCu-1Y-f4h">
- <rect key="frame" x="248" y="16" width="32" height="11"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="height" constant="11" id="Owh-L6-e4H"/>
- <constraint firstAttribute="width" constant="32" id="n6y-4F-K9E"/>
- </constraints>
- <fontDescription key="fontDescription" type="system" pointSize="9"/>
- <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
- <nil key="highlightedColor"/>
- </label>
- </subviews>
- <animations/>
- <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
- <constraints>
- <constraint firstItem="MJc-Lj-1A5" firstAttribute="leading" secondItem="dCu-1Y-f4h" secondAttribute="trailing" constant="5" id="1Qe-bg-QJ0"/>
- <constraint firstItem="tJg-rp-csT" firstAttribute="leading" secondItem="7Vp-13-PyP" secondAttribute="trailing" priority="750" constant="7" id="4m9-ZO-wuT"/>
- <constraint firstAttribute="centerY" secondItem="MJc-Lj-1A5" secondAttribute="centerY" id="Aa6-9f-96F"/>
- <constraint firstItem="lWT-Df-Byc" firstAttribute="leading" secondItem="oc7-kf-peg" secondAttribute="leading" constant="5" id="GyP-3u-tsG"/>
- <constraint firstAttribute="centerY" secondItem="lWT-Df-Byc" secondAttribute="centerY" id="Z6T-ou-Pvm"/>
- <constraint firstItem="dCu-1Y-f4h" firstAttribute="leading" secondItem="tJg-rp-csT" secondAttribute="trailing" priority="750" constant="8" id="e91-ZX-bNq"/>
- <constraint firstAttribute="centerY" secondItem="tJg-rp-csT" secondAttribute="centerY" id="hqn-V1-zkD"/>
- <constraint firstAttribute="trailing" secondItem="MJc-Lj-1A5" secondAttribute="trailing" constant="5" id="kVg-n9-9Kf"/>
- <constraint firstAttribute="height" constant="44" id="mLK-Km-n5G"/>
- <constraint firstAttribute="centerY" secondItem="dCu-1Y-f4h" secondAttribute="centerY" id="o4Y-ym-9zZ"/>
- <constraint firstItem="7Vp-13-PyP" firstAttribute="leading" secondItem="lWT-Df-Byc" secondAttribute="trailing" constant="5" id="xKW-vM-AH5"/>
- <constraint firstAttribute="centerY" secondItem="7Vp-13-PyP" secondAttribute="centerY" id="xkk-d8-cg2"/>
- </constraints>
- </view>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="GIL-kJ-GRw">
- <rect key="frame" x="0.0" y="0.0" width="320" height="44"/>
- <subviews>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gwr-a1-XwM">
- <rect key="frame" x="240" y="4" width="35" height="35"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="height" constant="35" id="DdA-mY-0fd"/>
- <constraint firstAttribute="width" constant="35" id="Gi1-uZ-3x5"/>
- </constraints>
- <fontDescription key="fontDescription" type="system" pointSize="15"/>
- <state key="normal">
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- <connections>
- <action selector="repeatButtonPressed:" destination="1hC-He-NDs" eventType="touchUpInside" id="PR5-Cb-hj1"/>
- </connections>
- </button>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="gdm-wB-X2t">
- <rect key="frame" x="273" y="4" width="35" height="35"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="width" constant="35" id="4cF-3j-vMh"/>
- <constraint firstAttribute="height" constant="35" id="kS2-Ah-NpT"/>
- </constraints>
- <fontDescription key="fontDescription" type="system" pointSize="15"/>
- <state key="normal">
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- <connections>
- <action selector="shuffleButtonPressed:" destination="1hC-He-NDs" eventType="touchUpInside" id="WQD-hl-85t"/>
- </connections>
- </button>
- <label opaque="NO" userInteractionEnabled="NO" contentMode="left" horizontalHuggingPriority="251" verticalHuggingPriority="251" text="" lineBreakMode="tailTruncation" baselineAdjustment="alignBaselines" adjustsFontSizeToFit="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9Qi-Gq-8h6">
- <rect key="frame" x="51" y="11" width="181" height="21"/>
- <animations/>
- <fontDescription key="fontDescription" type="system" pointSize="17"/>
- <color key="textColor" red="1" green="1" blue="1" alpha="1" colorSpace="custom" customColorSpace="calibratedRGB"/>
- <nil key="highlightedColor"/>
- </label>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="Xbe-CP-Is5">
- <rect key="frame" x="8" y="4" width="35" height="35"/>
- <animations/>
- <constraints>
- <constraint firstAttribute="height" constant="35" id="AuO-11-G8A"/>
- <constraint firstAttribute="width" constant="35" id="TF0-cD-vsO"/>
- </constraints>
- <state key="normal">
- <color key="titleShadowColor" white="0.5" alpha="1" colorSpace="calibratedWhite"/>
- </state>
- </button>
- </subviews>
- <animations/>
- <color key="backgroundColor" cocoaTouchSystemColor="darkTextColor"/>
- <constraints>
- <constraint firstItem="9Qi-Gq-8h6" firstAttribute="top" secondItem="GIL-kJ-GRw" secondAttribute="top" constant="11" id="5EV-RQ-nTc"/>
- <constraint firstAttribute="centerY" secondItem="gwr-a1-XwM" secondAttribute="centerY" id="8U3-RP-BCS"/>
- <constraint firstItem="Xbe-CP-Is5" firstAttribute="leading" secondItem="GIL-kJ-GRw" secondAttribute="leading" constant="8" id="BJa-Pf-HsP"/>
- <constraint firstAttribute="trailing" secondItem="gdm-wB-X2t" secondAttribute="trailing" constant="12" id="D6O-mp-kdP"/>
- <constraint firstAttribute="centerY" secondItem="Xbe-CP-Is5" secondAttribute="centerY" id="Gen-x5-5si"/>
- <constraint firstItem="gdm-wB-X2t" firstAttribute="leading" secondItem="gwr-a1-XwM" secondAttribute="trailing" constant="-2" id="LKy-CR-E7x"/>
- <constraint firstItem="gwr-a1-XwM" firstAttribute="leading" secondItem="9Qi-Gq-8h6" secondAttribute="trailing" constant="8" id="NMf-rN-2LZ"/>
- <constraint firstAttribute="bottom" secondItem="9Qi-Gq-8h6" secondAttribute="bottom" constant="12" id="aus-9L-lpw"/>
- <constraint firstItem="9Qi-Gq-8h6" firstAttribute="leading" secondItem="Xbe-CP-Is5" secondAttribute="trailing" constant="8" id="dPd-Vu-4Ul"/>
- <constraint firstAttribute="height" constant="44" id="lSK-HM-Lxp"/>
- <constraint firstAttribute="centerY" secondItem="gdm-wB-X2t" secondAttribute="centerY" id="rep-eI-5fV"/>
- </constraints>
- </view>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="KVB-cs-JcH">
- <rect key="frame" x="0.0" y="60" width="40" height="60"/>
- <subviews>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="qWF-ZD-TKU">
- <rect key="frame" x="0.0" y="0.0" width="40" height="60"/>
- <animations/>
- <fontDescription key="fontDescription" type="system" pointSize="15"/>
- <color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <state key="normal" title="&lt;"/>
- </button>
- </subviews>
- <animations/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- <constraints>
- <constraint firstAttribute="trailing" secondItem="qWF-ZD-TKU" secondAttribute="trailing" id="9sB-5g-AGt"/>
- <constraint firstItem="qWF-ZD-TKU" firstAttribute="leading" secondItem="KVB-cs-JcH" secondAttribute="leading" id="G3s-5e-tXM"/>
- <constraint firstAttribute="height" constant="60" id="KFU-0f-sbL"/>
- <constraint firstAttribute="width" constant="40" id="aLT-vd-fDt"/>
- <constraint firstAttribute="bottom" secondItem="qWF-ZD-TKU" secondAttribute="bottom" id="ars-b6-UsB"/>
- <constraint firstItem="qWF-ZD-TKU" firstAttribute="top" secondItem="KVB-cs-JcH" secondAttribute="top" id="fdN-IR-owH"/>
- </constraints>
- </view>
- <view contentMode="scaleToFill" translatesAutoresizingMaskIntoConstraints="NO" id="EsM-nS-vku">
- <rect key="frame" x="280" y="60" width="40" height="60"/>
- <subviews>
- <button opaque="NO" contentMode="scaleToFill" contentHorizontalAlignment="center" contentVerticalAlignment="center" lineBreakMode="middleTruncation" translatesAutoresizingMaskIntoConstraints="NO" id="zy1-iS-KVp">
- <rect key="frame" x="0.0" y="0.0" width="40" height="60"/>
- <animations/>
- <fontDescription key="fontDescription" type="system" pointSize="17"/>
- <color key="tintColor" white="1" alpha="1" colorSpace="calibratedWhite"/>
- <state key="normal" title="&gt;"/>
- </button>
- </subviews>
- <animations/>
- <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
- <constraints>
- <constraint firstAttribute="bottom" secondItem="zy1-iS-KVp" secondAttribute="bottom" id="5P2-aL-2Mg"/>
- <constraint firstAttribute="height" constant="60" id="Aka-6b-nJP"/>
- <constraint firstAttribute="width" constant="40" id="DPD-LK-uqe"/>
- <constraint firstAttribute="trailing" secondItem="zy1-iS-KVp" secondAttribute="trailing" id="Gfm-sb-b3O"/>
- <constraint firstItem="zy1-iS-KVp" firstAttribute="leading" secondItem="EsM-nS-vku" secondAttribute="leading" id="HN0-cl-Pjp"/>
- <constraint firstItem="zy1-iS-KVp" firstAttribute="top" secondItem="EsM-nS-vku" secondAttribute="top" id="YL4-tY-JVG"/>
- </constraints>
- </view>
- </subviews>
- <animations/>
- <color key="backgroundColor" white="0.0" alpha="1" colorSpace="calibratedWhite"/>
- <constraints>
- <constraint firstItem="077-OQ-G8z" firstAttribute="leading" secondItem="1hC-He-NDs" secondAttribute="leading" id="3CQ-UC-HQH"/>
- <constraint firstAttribute="trailing" secondItem="EsM-nS-vku" secondAttribute="trailing" id="5UB-O3-88A"/>
- <constraint firstItem="077-OQ-G8z" firstAttribute="top" secondItem="GIL-kJ-GRw" secondAttribute="top" id="Eua-v5-Vjh"/>
- <constraint firstAttribute="trailing" secondItem="oc7-kf-peg" secondAttribute="trailing" id="Mbo-TJ-bhY"/>
- <constraint firstAttribute="trailing" secondItem="077-OQ-G8z" secondAttribute="trailing" id="P81-MF-TC8"/>
- <constraint firstItem="KVB-cs-JcH" firstAttribute="leading" secondItem="1hC-He-NDs" secondAttribute="leading" id="RSk-dt-5tT"/>
- <constraint firstAttribute="trailing" secondItem="GIL-kJ-GRw" secondAttribute="trailing" id="V5n-Y2-znX"/>
- <constraint firstItem="oc7-kf-peg" firstAttribute="leading" secondItem="1hC-He-NDs" secondAttribute="leading" id="Vzb-MO-TOX"/>
- <constraint firstItem="077-OQ-G8z" firstAttribute="top" secondItem="1hC-He-NDs" secondAttribute="top" id="hKq-gd-WE6"/>
- <constraint firstAttribute="centerY" secondItem="EsM-nS-vku" secondAttribute="centerY" id="lSO-qw-6Pr"/>
- <constraint firstItem="GIL-kJ-GRw" firstAttribute="top" secondItem="1hC-He-NDs" secondAttribute="top" id="pYr-FF-FBu"/>
- <constraint firstAttribute="bottom" secondItem="077-OQ-G8z" secondAttribute="bottom" id="q7c-z1-0ry"/>
- <constraint firstAttribute="centerX" secondItem="077-OQ-G8z" secondAttribute="centerX" id="qXo-wX-bQC"/>
- <constraint firstAttribute="centerY" secondItem="KVB-cs-JcH" secondAttribute="centerY" id="tfo-Z7-HDJ"/>
- <constraint firstItem="GIL-kJ-GRw" firstAttribute="leading" secondItem="1hC-He-NDs" secondAttribute="leading" id="wKB-kG-MDX"/>
- <constraint firstAttribute="bottom" secondItem="oc7-kf-peg" secondAttribute="bottom" id="wMT-nA-3u7"/>
- </constraints>
- <nil key="simulatedStatusBarMetrics"/>
- <freeformSimulatedSizeMetrics key="simulatedDestinationMetrics"/>
- <connections>
- <outlet property="actionButtonRightMergin" destination="dPd-Vu-4Ul" id="tl6-wA-ktN"/>
- <outlet property="actionButtonWidth_" destination="TF0-cD-vsO" id="MZB-yc-oWV"/>
- <outlet property="actionButton_" destination="Xbe-CP-Is5" id="1vZ-tI-63l"/>
- <outlet property="artworkImageView_" destination="077-OQ-G8z" id="GvA-H8-HRb"/>
- <outlet property="currentTimeSlider" destination="tJg-rp-csT" id="Ycb-MT-Xux"/>
- <outlet property="footerView_" destination="oc7-kf-peg" id="lHD-pN-eyY"/>
- <outlet property="fullscreenButton_" destination="MJc-Lj-1A5" id="eXw-RI-z30"/>
- <outlet property="headerView_" destination="GIL-kJ-GRw" id="rId-yg-Edo"/>
- <outlet property="nextButton" destination="zy1-iS-KVp" id="sBg-DL-vum"/>
- <outlet property="playButton_" destination="lWT-Df-Byc" id="IxQ-r6-Rbc"/>
- <outlet property="playbackTimeLabel_" destination="7Vp-13-PyP" id="IMr-Y3-nNp"/>
- <outlet property="previousButton" destination="qWF-ZD-TKU" id="rsY-Eh-HzY"/>
- <outlet property="remainingTimeLabel_" destination="dCu-1Y-f4h" id="rmY-Cx-VRN"/>
- <outlet property="repeatButton_" destination="gwr-a1-XwM" id="60j-ab-ggg"/>
- <outlet property="shuffleButton_" destination="gdm-wB-X2t" id="hap-jQ-Sd4"/>
- <outlet property="titleLabel" destination="9Qi-Gq-8h6" id="LcN-IL-tU1"/>
- </connections>
- <point key="canvasLocation" x="301" y="749"/>
- </view>
- </objects>
-</document>
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.h b/Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.h
deleted file mode 100644
index 785108ad7..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.h
+++ /dev/null
@@ -1,21 +0,0 @@
-//
-// NSArray+Shuffle.h
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/22.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-@interface NSArray (LMMediaPlayerShuffle)
-
-- (NSArray *)lm_shuffledArray;
-
-@end
-
-@interface NSMutableArray (LMMediaPlayerShuffle)
-
-- (void)lm_shuffle;
-
-@end \ No newline at end of file
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.m b/Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.m
deleted file mode 100644
index 7d361fd88..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/Category/NSArray+LMMediaPlayerShuffle/NSArray+LMMediaPlayerShuffle.m
+++ /dev/null
@@ -1,37 +0,0 @@
-//
-// NSArray+Shuffle.m
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/22.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import "NSArray+LMMediaPlayerShuffle.h"
-
-@implementation NSArray (LMMediaPlayerShuffle)
-
-- (NSArray *)lm_shuffledArray
-{
- NSMutableArray *results = [NSMutableArray arrayWithArray:self];
- NSUInteger i = [results count];
-
- while (--i) {
- [results exchangeObjectAtIndex:i withObjectAtIndex:(NSUInteger)arc4random_uniform(i + 1.0)];
- }
-
- return [NSArray arrayWithArray:results];
-}
-
-@end
-
-@implementation NSMutableArray (LMMediaPlayerShuffle)
-
-- (void)lm_shuffle
-{
- NSUInteger i = [self count];
- while (--i) {
- [self exchangeObjectAtIndex:i withObjectAtIndex:(NSUInteger)arc4random_uniform(i + 1.0)];
- }
-}
-
-@end \ No newline at end of file
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.h b/Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.h
deleted file mode 100644
index 0ff5a73f6..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.h
+++ /dev/null
@@ -1,29 +0,0 @@
-//
-// LMMediaPlayerHelper.h
-// LMMediaPlayer
-//
-// Created by Akira Matsuda on 8/31/14.
-// Copyright (c) 2014 Akira Matsuda. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-
-#if !__has_feature(objc_arc)
-#define LM_AUTORELEASE(v) [v autorelease]
-#define LM_RETAIN(v) [v retain]
-#define LM_DEALLOC(v) [v dealloc]
-#define LM_RELEASE(v) [v release]
-#define LM_RELEASE_NIL(v) \
- [v release]; \
- v = nil;
-#else
-#define LM_AUTORELEASE(v)
-#define LM_RETAIN(v)
-#define LM_DEALLOC(v)
-#define LM_RELEASE(v)
-#define LM_RELEASE_NIL(v)
-#endif
-
-@interface LMMediaPlayerHelper : NSObject
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.m b/Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.m
deleted file mode 100644
index fbb2c73f5..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/Hepler/LMMediaPlayerHelper.m
+++ /dev/null
@@ -1,13 +0,0 @@
-//
-// LMMediaPlayerHelper.m
-// LMMediaPlayer
-//
-// Created by Akira Matsuda on 8/31/14.
-// Copyright (c) 2014 Akira Matsuda. All rights reserved.
-//
-
-#import "LMMediaPlayerHelper.h"
-
-@implementation LMMediaPlayerHelper
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.h b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.h
deleted file mode 100644
index 4b005deaa..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.h
+++ /dev/null
@@ -1,40 +0,0 @@
-//
-// LMMediaItem.h
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/27.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-
-extern NSString *LMMediaItemInfoTitleKey;
-extern NSString *LMMediaItemInfoAlubumTitleKey;
-extern NSString *LMMediaItemInfoArtistKey;
-extern NSString *LMMediaItemInfoArtworkKey;
-extern NSString *LMMediaItemInfoURLKey;
-extern NSString *LMMediaItemInfoContentTypeKey;
-
-typedef NS_ENUM(NSUInteger, LMMediaItemContentType) {
- LMMediaItemContentTypeUnknown = -1,
- LMMediaItemContentTypeAudio = 0,
- LMMediaItemContentTypeVideo = 1
-};
-
-@interface LMMediaItem : NSObject <NSCoding, NSCopying>
-
-- (instancetype)initWithMetaMedia:(id)media contentType:(LMMediaItemContentType)type;
-- (instancetype)initWithInfo:(NSDictionary *)info;
-- (UIImage *)artworkImageWithSize:(CGSize)size;
-- (void)setArtworkImage:(UIImage *)image;
-- (BOOL)isVideo;
-
-@property (nonatomic, copy) NSString *title;
-@property (nonatomic, copy) NSString *albumTitle;
-@property (nonatomic, copy) NSString *artist;
-@property (nonatomic, copy) id metaMedia;
-@property (nonatomic, copy) NSURL *assetURL;
-@property (nonatomic, readonly) LMMediaItemContentType contentType;
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.m b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.m
deleted file mode 100644
index 949103d06..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItem/LMMediaItem.m
+++ /dev/null
@@ -1,207 +0,0 @@
-//
-// LMMediaItem.m
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/27.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import "LMMediaItem.h"
-#import <MediaPlayer/MediaPlayer.h>
-#import <AVFoundation/AVFoundation.h>
-#import "LMMediaPlayerHelper.h"
-
-@interface LMMediaItem () {
- id metaMedia_;
- NSString *title_;
- NSString *albumTitle_;
- NSString *artist_;
- UIImage *artworkImage_;
- NSURL *url_;
-}
-
-@end
-
-@implementation LMMediaItem
-
-NSString *LMMediaItemInfoTitleKey = @"LMMediaItemInfoTitleKey";
-NSString *LMMediaItemInfoAlubumTitleKey = @"LMMediaItemInfoAlubumTitleKey";
-NSString *LMMediaItemInfoArtistKey = @"LMMediaItemInfoArtistKey";
-NSString *LMMediaItemInfoArtworkKey = @"LMMediaItemInfoArtworkKey";
-NSString *LMMediaItemInfoURLKey = @"LMMediaItemInfoURLKey";
-NSString *LMMediaItemInfoContentTypeKey = @"LMMediaItemInfoContentTypeKey";
-
-@synthesize title = title_;
-@synthesize albumTitle = albumTitle_;
-@synthesize artist = artist_;
-@synthesize assetURL = url_;
-
-- (void)dealloc
-{
- LM_RELEASE(title_);
- LM_RELEASE(albumTitle_);
- LM_RELEASE(artist_);
- LM_RELEASE(artworkImage_);
- LM_RELEASE(url_);
- LM_DEALLOC(super);
-}
-
-- (instancetype)initWithMetaMedia:(id)media contentType:(LMMediaItemContentType)type
-{
- self = [super init];
- if (self) {
- metaMedia_ = media;
- _contentType = type;
- }
-
- return self;
-}
-
-- (instancetype)initWithInfo:(NSDictionary *)info
-{
- self = [super init];
- if (self) {
- title_ = ([info[LMMediaItemInfoTitleKey] isKindOfClass:[NSString class]] ? [info[LMMediaItemInfoTitleKey] copy] : nil);
- albumTitle_ = ([info[LMMediaItemInfoAlubumTitleKey] isKindOfClass:[NSString class]] ? [info[LMMediaItemInfoAlubumTitleKey] copy] : nil);
- artist_ = ([info[LMMediaItemInfoArtistKey] isKindOfClass:[NSString class]] ? [info[LMMediaItemInfoArtistKey] copy] : nil);
- artworkImage_ = ([info[LMMediaItemInfoArtworkKey] isKindOfClass:[UIImage class]] ? [info[LMMediaItemInfoArtworkKey] copy] : nil);
- url_ = ([info[LMMediaItemInfoURLKey] isKindOfClass:[NSURL class]] ? [info[LMMediaItemInfoURLKey] copy] : nil);
- _contentType = (LMMediaItemContentType)([info[LMMediaItemInfoContentTypeKey] isKindOfClass:[NSNumber class]] ? [info[LMMediaItemInfoContentTypeKey] integerValue] : -1);
- }
-
- return self;
-}
-
-- (instancetype)initWithCoder:(NSCoder *)coder
-{
- self = [super init];
- if (self) {
- title_ = [coder decodeObjectForKey:LMMediaItemInfoTitleKey];
- albumTitle_ = [coder decodeObjectForKey:LMMediaItemInfoAlubumTitleKey];
- artist_ = [coder decodeObjectForKey:LMMediaItemInfoArtistKey];
- artworkImage_ = [coder decodeObjectForKey:LMMediaItemInfoArtworkKey];
- url_ = [coder decodeObjectForKey:LMMediaItemInfoURLKey];
- _contentType = (LMMediaItemContentType)[[coder decodeObjectForKey:LMMediaItemInfoContentTypeKey] integerValue];
- }
-
- return self;
-}
-
-- (void)encodeWithCoder:(NSCoder *)coder
-{
- [coder encodeObject:title_ forKey:LMMediaItemInfoTitleKey];
- [coder encodeObject:albumTitle_ forKey:LMMediaItemInfoAlubumTitleKey];
- [coder encodeObject:artist_ forKey:LMMediaItemInfoArtistKey];
- [coder encodeObject:artworkImage_ forKey:LMMediaItemInfoArtworkKey];
- [coder encodeObject:url_ forKey:LMMediaItemInfoURLKey];
- [coder encodeObject:[NSNumber numberWithInteger:_contentType] forKey:LMMediaItemInfoContentTypeKey];
-}
-
-- (id)copyWithZone:(NSZone *)zone
-{
- NSMutableDictionary *newInfo = [NSMutableDictionary new];
- if (self.title) {
- NSString *newString = [self.title copy];
- LM_AUTORELEASE(newString);
- newInfo[LMMediaItemInfoTitleKey] = newString ?: [NSNull null];
- }
- if (self.albumTitle) {
- NSString *newString = [self.albumTitle copy];
- LM_AUTORELEASE(newString);
- newInfo[LMMediaItemInfoAlubumTitleKey] = newString ?: [NSNull null];
- }
- if (self.artist) {
- NSString *newString = [self.artist copy];
- LM_AUTORELEASE(newString);
- newInfo[LMMediaItemInfoArtistKey] = newString ?: [NSNull null];
- }
- if (artworkImage_) {
- UIImage *newImage = [artworkImage_ copy];
- LM_AUTORELEASE(newImage);
- newInfo[LMMediaItemInfoArtworkKey] = newImage ?: [NSNull null];
- }
- if (self.assetURL) {
- NSURL *newURL = [self.assetURL copy];
- LM_AUTORELEASE(newURL);
- newInfo[LMMediaItemInfoURLKey] = newURL ?: [NSNull null];
- }
- newInfo[LMMediaItemInfoContentTypeKey] = [NSNumber numberWithInteger:_contentType];
-
- LMMediaItem *newObject = [[[self class] allocWithZone:zone] initWithInfo:newInfo];
- LM_RELEASE(newInfo);
-
- return newObject;
-}
-
-- (id)valueWithProperty:(NSString *)property cache:(id)cache
-{
- id returnValue = nil;
- if ([metaMedia_ isKindOfClass:[MPMediaItem class]]) {
- returnValue = cache = [metaMedia_ valueForProperty:property];
- }
-
- return returnValue;
-}
-
-- (NSString *)title
-{
- return title_ ?: [self valueWithProperty:MPMediaItemPropertyTitle cache:title_];
-}
-
-- (NSString *)albumTitle
-{
- return albumTitle_ ?: [self valueWithProperty:MPMediaItemPropertyAlbumTitle cache:albumTitle_];
-}
-
-- (NSString *)artist
-{
- return artist_ ?: [self valueWithProperty:MPMediaItemPropertyArtist cache:artist_];
-}
-
-- (UIImage *)artworkImageWithSize:(CGSize)size
-{
- UIImage * (^f)(id) = ^UIImage *(id metaMedia)
- {
- UIImage *image = nil;
- if ([metaMedia isKindOfClass:[MPMediaItem class]]) {
- artworkImage_ = image = [[metaMedia_ valueForProperty:MPMediaItemPropertyArtwork] imageWithSize:size];
- }
-
- return image;
- };
-
- return artworkImage_ ?: f(metaMedia_);
-}
-
-- (void)setArtworkImage:(UIImage *)image
-{
- artworkImage_ = [image copy];
-}
-
-- (NSURL *)assetURL
-{
- return url_ ?: [self valueWithProperty:MPMediaItemPropertyAssetURL cache:url_];
-}
-
-- (id)metaMedia
-{
- return metaMedia_;
-}
-
-- (BOOL)isVideo
-{
- return _contentType == LMMediaItemContentTypeVideo;
-}
-
-- (NSString *)description
-{
- return [@{ @"title" : title_ ?: @"nil",
- @"album" : albumTitle_ ?: @"nil",
- @"artist" : artist_ ?: @"nil",
- @"url" : url_ ?: @"nil",
- @"artwork" : artworkImage_ ?: @"nil",
- @"content type" : _contentType == LMMediaItemContentTypeAudio ? @"LMMediaItemContentTypeAudio" : @"LMMediaItemContentTypeVideo",
- @"meta media" : metaMedia_ ?: @"nil" } description];
-}
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.h b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.h
deleted file mode 100644
index 0c84e13aa..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.h
+++ /dev/null
@@ -1,19 +0,0 @@
-//
-// LMMediaItemArchiver.h
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/31.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import "LMMediaItem.h"
-
-@interface LMMediaItemQueueManager : NSObject
-
-+ (NSArray *)queueList;
-+ (void)removeQueueWithKey:(NSString *)key;
-+ (void)saveQueueWithKey:(NSString *)key queue:(NSArray *)queue;
-+ (NSArray *)loadQueueWithKey:(NSString *)key;
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.m b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.m
deleted file mode 100644
index f7b8f2e3a..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemQueueManager/LMMediaItemQueueManager.m
+++ /dev/null
@@ -1,65 +0,0 @@
-//
-// LMMediaItemArchiver.m
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/31.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import "LMMediaItemQueueManager.h"
-#import "LMMediaPlayerHelper.h"
-
-static NSString *const kLMMediaItemQueueManagerQueueList = @"kLMMediaItemQueueManagerQueueList";
-
-@implementation LMMediaItemQueueManager
-
-+ (NSArray *)queueList
-{
- return [[NSUserDefaults standardUserDefaults] arrayForKey:kLMMediaItemQueueManagerQueueList];
-}
-
-+ (void)removeQueueWithKey:(NSString *)key
-{
- [[NSUserDefaults standardUserDefaults] removeObjectForKey:key];
- NSMutableArray *keys = [NSMutableArray arrayWithArray:[LMMediaItemQueueManager queueList]];
- for (NSString *k in keys) {
- if ([k isEqualToString:key]) {
- [keys removeObject:k];
- break;
- }
- }
-
- [[NSUserDefaults standardUserDefaults] setObject:keys forKey:kLMMediaItemQueueManagerQueueList];
-}
-
-+ (void)saveQueueWithKey:(NSString *)key queue:(NSArray *)queue
-{
- NSMutableArray *saveArray = [NSMutableArray new];
- LM_AUTORELEASE(saveArray);
- for (LMMediaItem *item in queue) {
- NSData *data = [NSKeyedArchiver archivedDataWithRootObject:item];
- [saveArray addObject:data];
- }
- [[NSUserDefaults standardUserDefaults] setObject:saveArray forKey:key];
-
- NSMutableArray *keys = [NSMutableArray arrayWithArray:[LMMediaItemQueueManager queueList]];
- [keys addObject:key];
- [[NSUserDefaults standardUserDefaults] setObject:keys forKey:kLMMediaItemQueueManagerQueueList];
-}
-
-+ (NSArray *)loadQueueWithKey:(NSString *)key
-{
- NSMutableArray *result = [NSMutableArray new];
- LM_AUTORELEASE(result);
- NSArray *array = [[NSUserDefaults standardUserDefaults] arrayForKey:key];
- for (id d in array) {
- LMMediaItem *item = [NSKeyedUnarchiver unarchiveObjectWithData:d];
- [result addObject:item];
- }
-
- NSArray *newArray = [result copy];
- LM_AUTORELEASE(newArray);
- return newArray;
-}
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.h b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.h
deleted file mode 100644
index 920550d28..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.h
+++ /dev/null
@@ -1,16 +0,0 @@
-//
-// LMMediaItemCache.h
-// LMMediaPlayer
-//
-// Created by Akira Matsuda on 10/13/14.
-// Copyright (c) 2014 Akira Matsuda. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <AVFoundation/AVFoundation.h>
-
-@interface LMMediaItemStreamingCache : NSObject <AVAssetResourceLoaderDelegate>
-
-+ (instancetype)sharedCache;
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.m b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.m
deleted file mode 100644
index c13503e23..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaItemStreamingCache/LMMediaItemStreamingCache.m
+++ /dev/null
@@ -1,45 +0,0 @@
-//
-// LMMediaItemCache.m
-// LMMediaPlayer
-//
-// Created by Akira Matsuda on 10/13/14.
-// Copyright (c) 2014 Akira Matsuda. All rights reserved.
-//
-
-#import "LMMediaItemStreamingCache.h"
-#import <AVFoundation/AVFoundation.h>
-
-@interface LMMediaItemStreamingCache ()
-
-@end
-
-@implementation LMMediaItemStreamingCache
-
-+ (instancetype)sharedCache
-{
- static id sharedInstance;
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedInstance = [[[self class] alloc] init];
- });
-
- return sharedInstance;
-}
-
-- (BOOL)isCacheAvailable:(NSString *)key
-{
- return NO;
-}
-
-#pragma mark - AVAssetResourceLoaderDelegate
-
-- (BOOL)resourceLoader:(AVAssetResourceLoader *)resourceLoader shouldWaitForLoadingOfRequestedResource:(AVAssetResourceLoadingRequest *)loadingRequest
-{
- return YES;
-}
-
-- (void)resourceLoader:(AVAssetResourceLoader *)resourceLoader didCancelLoadingRequest:(AVAssetResourceLoadingRequest *)loadingRequest
-{
-}
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.h b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.h
deleted file mode 100644
index 119a9c0d2..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.h
+++ /dev/null
@@ -1,84 +0,0 @@
-//
-// LMMediaPlayer.h
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/10.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-#import <MediaPlayer/MediaPlayer.h>
-#import <AVFoundation/AVFoundation.h>
-#import "LMMediaItem.h"
-
-@class LMMediaPlayer;
-
-typedef NS_ENUM(NSUInteger, LMMediaPlaybackState) {
- LMMediaPlaybackStateStopped,
- LMMediaPlaybackStatePlaying,
- LMMediaPlaybackStatePaused
-};
-
-typedef NS_ENUM(NSUInteger, LMMediaRepeatMode) {
- LMMediaRepeatModeDefault,
- LMMediaRepeatModeOne,
- LMMediaRepeatModeAll,
- LMMediaRepeatModeNone = LMMediaRepeatModeDefault
-};
-
-extern NSString *const LMMediaPlayerPauseNotification;
-extern NSString *const LMMediaPlayerStopNotification;
-
-@protocol LMMediaPlayerDelegate <NSObject>
-
-@required
-- (BOOL)mediaPlayerWillStartPlaying:(LMMediaPlayer *)player media:(LMMediaItem *)media;
-
-@optional
-- (void)mediaPlayerWillChangeState:(LMMediaPlaybackState)state;
-- (void)mediaPlayerDidStartPlaying:(LMMediaPlayer *)player media:(LMMediaItem *)media;
-- (void)mediaPlayerDidFinishPlaying:(LMMediaPlayer *)player media:(LMMediaItem *)media;
-- (void)mediaPlayerDidStop:(LMMediaPlayer *)player media:(LMMediaItem *)media;
-- (void)mediaPlayerDidChangeCurrentTime:(LMMediaPlayer *)player;
-- (void)mediaPlayerDidChangeRepeatMode:(LMMediaRepeatMode)mode player:(LMMediaPlayer *)player;
-- (void)mediaPlayerDidChangeShuffleMode:(BOOL)enabled player:(LMMediaPlayer *)player;
-
-@end
-
-@interface LMMediaPlayer : NSObject
-
-@property (nonatomic, assign) id<LMMediaPlayerDelegate> delegate;
-@property (nonatomic, readonly) LMMediaItem *nowPlayingItem;
-@property (nonatomic, readonly) LMMediaPlaybackState playbackState;
-@property (nonatomic, assign) LMMediaRepeatMode repeatMode;
-@property (nonatomic, readonly) BOOL shuffleMode;
-@property (nonatomic, readonly) NSInteger index;
-
-+ (instancetype)sharedPlayer;
-- (AVPlayer *)corePlayer;
-- (void)pauseOtherPlayer;
-- (void)stopOtherPlayer;
-- (void)addMedia:(LMMediaItem *)media;
-- (void)removeMediaAtIndex:(NSUInteger)index;
-- (void)replaceMediaAtIndex:(LMMediaItem *)media index:(NSInteger)index;
-- (void)removeAllMediaInQueue;
-- (void)setQueue:(NSArray *)queue;
-- (void)playMedia:(LMMediaItem *)media;
-- (void)play;
-- (void)playAtIndex:(NSInteger)index;
-- (void)stop;
-- (void)pause;
-- (void)playNextMedia;
-- (void)playPreviousMedia;
-- (NSArray *)queue;
-- (NSUInteger)numberOfQueue;
-- (NSTimeInterval)currentPlaybackTime;
-- (NSTimeInterval)currentPlaybackDuration;
-- (void)seekTo:(NSTimeInterval)time;
-- (void)setShuffleEnabled:(BOOL)enabled;
-- (UIImage *)thumbnailAtTime:(CGFloat)time;
-- (UIImage *)representativeThumbnail;
-- (NSError *)setAudioSessionCategory:(NSString *)category;
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.m b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.m
deleted file mode 100644
index ad21bc286..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayer/LMMediaPlayer/LMMediaPlayer.m
+++ /dev/null
@@ -1,399 +0,0 @@
-//
-// LMMediaPlayer.m
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/10.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import "LMMediaPlayer.h"
-#import "NSArray+LMMediaPlayerShuffle.h"
-#import <AudioToolbox/AudioToolbox.h>
-#import "LMMediaPlayerHelper.h"
-
-NSString *const LMMediaPlayerPauseNotification = @"LMMediaPlayerPauseNotification";
-NSString *const LMMediaPlayerStopNotification = @"LMMediaPlayerStopNotification";
-
-@interface LMMediaPlayer () {
- NSMutableArray *queue_;
-
- LMMediaPlaybackState playbackState_;
- AVPlayer *player_;
- id playerObserver_;
-}
-
-@property (nonatomic, strong) NSMutableArray *currentQueue;
-
-@end
-
-@implementation LMMediaPlayer
-
-@synthesize playbackState = playbackState_;
-
-static LMMediaPlayer *sharedPlayer;
-
-+ (instancetype)sharedPlayer
-{
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedPlayer = [[self class] new];
- });
-
- return sharedPlayer;
-}
-
-- (instancetype)init
-{
- self = [super init];
- if (self) {
- player_ = [AVPlayer new];
- queue_ = [NSMutableArray new];
- self.currentQueue = queue_;
- _repeatMode = LMMediaRepeatModeDefault;
- _shuffleMode = YES;
-
- NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
- [notificationCenter addObserver:self selector:@selector(pause) name:LMMediaPlayerPauseNotification object:nil];
- [notificationCenter addObserver:self selector:@selector(stop) name:LMMediaPlayerStopNotification object:nil];
- }
-
- return self;
-}
-
-- (void)dealloc
-{
- self.delegate = nil;
- NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
- [notificationCenter removeObserver:self name:LMMediaPlayerPauseNotification object:nil];
- [notificationCenter removeObserver:self name:LMMediaPlayerStopNotification object:nil];
- [notificationCenter removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
- LM_RELEASE(player_);
- LM_RELEASE(queue_);
- LM_RELEASE(_currentQueue);
- LM_DEALLOC(super);
-}
-
-#pragma mark -
-
-- (AVPlayer *)corePlayer
-{
- return player_;
-}
-
-- (void)pauseOtherPlayer
-{
- NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
- [notificationCenter removeObserver:self name:LMMediaPlayerPauseNotification object:nil];
- [notificationCenter postNotificationName:LMMediaPlayerPauseNotification object:nil];
- [notificationCenter addObserver:self selector:@selector(pause) name:LMMediaPlayerPauseNotification object:nil];
-}
-
-- (void)stopOtherPlayer
-{
- NSNotificationCenter *notificationCenter = [NSNotificationCenter defaultCenter];
- [notificationCenter removeObserver:self name:LMMediaPlayerStopNotification object:nil];
- [notificationCenter postNotificationName:LMMediaPlayerStopNotification object:nil];
- [notificationCenter addObserver:self selector:@selector(stop) name:LMMediaPlayerStopNotification object:nil];
-}
-
-- (void)playerItemDidReachEnd:(NSNotification *)notification
-{
- AVPlayerItem *item = notification.object;
- if (player_.currentItem == item) {
- [self playNextMedia];
- }
-}
-
-- (void)addMedia:(LMMediaItem *)media
-{
- [self.currentQueue addObject:media];
-}
-
-- (void)removeMediaAtIndex:(NSUInteger)index
-{
- LMMediaItem *item = _currentQueue[index];
- if (item == _nowPlayingItem) {
- _nowPlayingItem = nil;
- [self playNextMedia];
- }
- [self.currentQueue removeObjectAtIndex:index];
-}
-
-- (void)replaceMediaAtIndex:(LMMediaItem *)media index:(NSInteger)index
-{
- LMMediaItem *item = _currentQueue[index];
- if (item == _nowPlayingItem) {
- _nowPlayingItem = nil;
- }
- [self.currentQueue replaceObjectAtIndex:index withObject:media];
-}
-
-- (void)removeAllMediaInQueue
-{
- _nowPlayingItem = nil;
- [self stop];
- [self.currentQueue removeAllObjects];
-}
-
-- (void)setQueue:(NSArray *)queue
-{
- for (LMMediaItem *item in queue) {
- [queue_ addObject:item];
- }
- self.currentQueue = queue_;
-}
-
-- (void)updateLockScreenInfo
-{
- NSMutableDictionary *songInfo = [[NSMutableDictionary alloc] init];
- [songInfo setObject:[_nowPlayingItem title] ?: @"" forKey:MPMediaItemPropertyTitle];
- [songInfo setObject:[_nowPlayingItem albumTitle] ?: @"" forKey:MPMediaItemPropertyAlbumTitle];
- [songInfo setObject:[_nowPlayingItem artist] ?: @"" forKey:MPMediaItemPropertyArtist];
- [songInfo setObject:@([self currentPlaybackTime]) forKey:MPNowPlayingInfoPropertyElapsedPlaybackTime];
- [songInfo setObject:@([self currentPlaybackDuration]) forKey:MPMediaItemPropertyPlaybackDuration];
- UIImage *artworkImage = [_nowPlayingItem artworkImageWithSize:CGSizeMake(320, 320)];
- if (artworkImage) {
- MPMediaItemArtwork *artwork = [[MPMediaItemArtwork alloc] initWithImage:artworkImage];
- [songInfo setObject:artwork forKey:MPMediaItemPropertyArtwork];
- LM_AUTORELEASE(artwork);
- }
- [[MPNowPlayingInfoCenter defaultCenter] setNowPlayingInfo:songInfo];
- LM_AUTORELEASE(songInfo);
-}
-
-- (void)playMedia:(LMMediaItem *)media
-{
- [self stop];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(playerItemDidReachEnd:) name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
- if ([self.delegate respondsToSelector:@selector(mediaPlayerWillStartPlaying:media:)] == NO || [self.delegate mediaPlayerWillStartPlaying:self media:media] == YES) {
- if (media != nil) {
- NSURL *url = [media assetURL];
- _nowPlayingItem = media;
- [player_ removeTimeObserver:playerObserver_];
- [player_ replaceCurrentItemWithPlayerItem:[AVPlayerItem playerItemWithURL:url]];
- [self play];
- if ([self.delegate respondsToSelector:@selector(mediaPlayerDidStartPlaying:media:)]) {
- [self.delegate mediaPlayerDidStartPlaying:self media:media];
- }
- player_.usesExternalPlaybackWhileExternalScreenIsActive = YES;
- __block LMMediaPlayer *bself = self;
- playerObserver_ = [player_ addPeriodicTimeObserverForInterval:CMTimeMake(1, 1) queue:dispatch_get_main_queue() usingBlock:^(CMTime time) {
- if ([bself.delegate respondsToSelector:@selector(mediaPlayerDidChangeCurrentTime:)]) {
- [bself.delegate mediaPlayerDidChangeCurrentTime:bself];
- }
- }];
- }
- }
-}
-
-- (void)play
-{
- if (playbackState_ == LMMediaPlaybackStateStopped) {
- [player_ seekToTime:CMTimeMake(0, 1)];
- }
- if (_nowPlayingItem == nil) {
- [self playMedia:self.currentQueue.firstObject];
- }
- else {
- [player_ play];
- }
-
- [self setCurrentState:LMMediaPlaybackStatePlaying];
-}
-
-- (void)playAtIndex:(NSInteger)index
-{
- _index = MAX(0, MIN(index, self.currentQueue.count - 1));
- [self playMedia:self.currentQueue[_index]];
-}
-
-- (void)stop
-{
- [player_ pause];
- [[NSNotificationCenter defaultCenter] removeObserver:self name:AVPlayerItemDidPlayToEndTimeNotification object:nil];
- [self setCurrentState:LMMediaPlaybackStateStopped];
- if ([self.delegate respondsToSelector:@selector(mediaPlayerDidStop:media:)]) {
- [self.delegate mediaPlayerDidStop:self media:_nowPlayingItem];
- }
- _nowPlayingItem = nil;
-}
-
-- (void)pause
-{
- [player_ pause];
- [self setCurrentState:LMMediaPlaybackStatePaused];
-}
-
-- (void)playNextMedia
-{
- if ([self.delegate respondsToSelector:@selector(mediaPlayerDidFinishPlaying:media:)]) {
- [self.delegate mediaPlayerDidFinishPlaying:self media:_nowPlayingItem];
- }
- if (self.currentQueue.count) {
- if (_repeatMode == LMMediaRepeatModeDefault) {
- if (_index >= self.currentQueue.count - 1) {
- _index = 0;
- [self stop];
- }
- else {
- _index++;
- [self playMedia:self.currentQueue[_index]];
- }
- }
- else if (_repeatMode == LMMediaRepeatModeAll) {
- if (_index >= self.currentQueue.count - 1) {
- _index = 0;
- }
- else {
- _index++;
- }
- [self playMedia:self.currentQueue[_index]];
- }
- else {
- [self playMedia:self.nowPlayingItem];
- }
- }
- else if (_repeatMode == LMMediaRepeatModeOne || _repeatMode == LMMediaRepeatModeAll) {
- [self playMedia:self.nowPlayingItem];
- }
-}
-
-- (void)playPreviousMedia
-{
- if ([self.delegate respondsToSelector:@selector(mediaPlayerDidFinishPlaying:media:)]) {
- [self.delegate mediaPlayerDidFinishPlaying:self media:_nowPlayingItem];
- }
- if (self.currentQueue.count) {
- if (_repeatMode == LMMediaRepeatModeDefault) {
- if (_index - 1 < 0) {
- _index = 0;
- [self stop];
- }
- else {
- _index--;
- [self playMedia:self.currentQueue[_index]];
- }
- }
- else if (_repeatMode == LMMediaRepeatModeAll) {
- if (_index - 1 < 0) {
- _index = self.currentQueue.count - 1;
- }
- else {
- _index--;
- }
- [self playMedia:self.currentQueue[_index]];
- }
- else {
- [self playMedia:self.currentQueue[_index]];
- }
- }
- else if (_repeatMode == LMMediaRepeatModeOne || _repeatMode == LMMediaRepeatModeAll) {
- [self playMedia:self.nowPlayingItem];
- }
-}
-
-- (NSArray *)queue
-{
- NSArray *newArray = [self.currentQueue copy];
- LM_AUTORELEASE(newArray);
- return newArray;
-}
-
-- (NSUInteger)numberOfQueue
-{
- return self.currentQueue.count;
-}
-
-- (NSTimeInterval)currentPlaybackTime
-{
- return player_.currentTime.value == 0 ? 0 : player_.currentTime.value / player_.currentTime.timescale;
-}
-
-- (NSTimeInterval)currentPlaybackDuration
-{
- return CMTimeGetSeconds([[player_.currentItem asset] duration]);
-}
-
-- (void)seekTo:(NSTimeInterval)time
-{
- [player_ seekToTime:CMTimeMake(time, 1)];
-}
-
-- (void)setShuffleEnabled:(BOOL)enabled
-{
- _shuffleMode = enabled;
- if ([self numberOfQueue] > 0 && _shuffleMode) {
- NSMutableArray *newArray = [[self.currentQueue lm_shuffledArray] mutableCopy];
- self.currentQueue = newArray;
- LM_RELEASE(newArray);
- }
- else {
- self.currentQueue = queue_;
- }
-
- if ([self.delegate respondsToSelector:@selector(mediaPlayerDidChangeShuffleMode:player:)]) {
- [self.delegate mediaPlayerDidChangeShuffleMode:enabled player:self];
- }
-}
-
-- (void)setRepeatMode:(LMMediaRepeatMode)repeatMode
-{
- _repeatMode = repeatMode;
- if ([self.delegate respondsToSelector:@selector(mediaPlayerDidChangeRepeatMode:player:)]) {
- [self.delegate mediaPlayerDidChangeRepeatMode:repeatMode player:self];
- }
-}
-
-#pragma mark - private
-
-- (void)setCurrentState:(LMMediaPlaybackState)state
-{
- if (state == playbackState_) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mediaPlayerWillChangeState:)]) {
- [self.delegate mediaPlayerWillChangeState:state];
- }
-
- if (state == LMMediaPlaybackStatePlaying) {
- [self updateLockScreenInfo];
- NSError *e = nil;
- AVAudioSession *audioSession = [AVAudioSession sharedInstance];
- [audioSession setCategory:AVAudioSessionCategoryPlayback error:&e];
- [audioSession setActive:YES error:NULL];
- }
-
- playbackState_ = state;
-}
-
-- (UIImage *)thumbnailAtTime:(CGFloat)time
-{
- AVAssetImageGenerator *imageGenerator = [[AVAssetImageGenerator alloc] initWithAsset:[[player_ currentItem] asset]];
- imageGenerator.appliesPreferredTrackTransform = YES;
- NSError *error = NULL;
- CMTime ctime = CMTimeMake(time, 1);
- CGImageRef imageRef = [imageGenerator copyCGImageAtTime:ctime actualTime:NULL error:&error];
- LM_RELEASE(imageGenerator);
- UIImage *resultImage = [[UIImage alloc] initWithCGImage:imageRef];
- LM_AUTORELEASE(resultImage);
- CGImageRelease(imageRef);
-
- return resultImage;
-}
-
-- (UIImage *)representativeThumbnail
-{
- return [self thumbnailAtTime:self.currentPlaybackDuration / 2];
-}
-
-- (NSError *)setAudioSessionCategory:(NSString *)category
-{
- NSError *e = nil;
- AVAudioSession *audioSession = [AVAudioSession sharedInstance];
- [audioSession setCategory:category error:&e];
-
- return e;
-}
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.h b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.h
deleted file mode 100644
index 87d8a0ce4..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.h
+++ /dev/null
@@ -1,74 +0,0 @@
-//
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/10.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import <Foundation/Foundation.h>
-#import <UIKit/UIKit.h>
-#import "LMMediaPlayer.h"
-
-extern NSString *const LMMediaPlayerViewPlayButtonImageKey;
-extern NSString *const LMMediaPlayerViewPlayButtonSelectedImageKey;
-extern NSString *const LMMediaPlayerViewStopButtonImageKey;
-extern NSString *const LMMediaPlayerViewStopButtonSelectedImageKey;
-extern NSString *const LMMediaPlayerViewFullscreenButtonImageKey;
-extern NSString *const LMMediaPlayerViewFullscreenButtonSelectedImageKey;
-extern NSString *const LMMediaPlayerViewUnfullscreenButtonImageKey;
-extern NSString *const LMMediaPlayerViewUnfullscreenButtonSelectedImageKey;
-extern NSString *const LMMediaPlayerViewShuffleButtonShuffledImageKey;
-extern NSString *const LMMediaPlayerViewShuffleButtonShuffledSelectedImageKey;
-extern NSString *const LMMediaPlayerViewShuffleButtonUnshuffledImageKey;
-extern NSString *const LMMediaPlayerViewShuffleButtonUnshuffledSelectedImageKey;
-extern NSString *const LMMediaPlayerViewRepeatButtonRepeatOneImageKey;
-extern NSString *const LMMediaPlayerViewRepeatButtonRepeatOneSelectedImageKey;
-extern NSString *const LMMediaPlayerViewRepeatButtonRepeatAllImageKey;
-extern NSString *const LMMediaPlayerViewRepeatButtonRepeatAllSelectedImageKey;
-extern NSString *const LMMediaPlayerViewRepeatButtonRepeatNoneImageKey;
-extern NSString *const LMMediaPlayerViewRepeatButtonRepeatNoneSelectedImageKey;
-extern NSString *const LMMediaPlayerViewActionButtonImageKey;
-
-@class LMMediaPlayerView;
-
-@protocol LMMediaPlayerViewDelegate <NSObject>
-
-@required
-- (BOOL)mediaPlayerViewWillStartPlaying:(LMMediaPlayerView *)playerView media:(LMMediaItem *)media;
-
-@optional
-- (void)mediaPlayerViewWillChangeState:(LMMediaPlayerView *)playerView state:(LMMediaPlaybackState)state;
-- (void)mediaPlayerViewDidStartPlaying:(LMMediaPlayerView *)playerView media:(LMMediaItem *)media;
-- (void)mediaPlayerViewDidFinishPlaying:(LMMediaPlayerView *)playerView media:(LMMediaItem *)media;
-- (void)mediaPlayerViewDidChangeCurrentTime:(LMMediaPlayerView *)playerView;
-- (void)mediaPlayerViewDidChangeRepeatMode:(LMMediaRepeatMode)mode playerView:(LMMediaPlayerView *)playerView;
-- (void)mediaPlayerViewDidChangeShuffleMode:(BOOL)enabled playerView:(LMMediaPlayerView *)playerView;
-- (void)mediaPlayerViewWillChangeFullscreenMode:(BOOL)fullscreen;
-- (void)mediaPlayerViewDidChangeFullscreenMode:(BOOL)fullscreen;
-
-@end
-
-@interface LMMediaPlayerView : UIView <LMMediaPlayerDelegate>
-
-@property (nonatomic, assign) id<LMMediaPlayerViewDelegate> delegate;
-@property (nonatomic, readonly) LMMediaPlayer *mediaPlayer;
-@property (nonatomic, unsafe_unretained) IBOutlet UISlider *currentTimeSlider;
-@property (nonatomic, unsafe_unretained) IBOutlet UILabel *titleLabel;
-@property (nonatomic, readonly) BOOL isFullscreen;
-@property (nonatomic, unsafe_unretained) IBOutlet UIButton *nextButton;
-@property (nonatomic, unsafe_unretained) IBOutlet UIButton *fullscreenButton_;
-@property (nonatomic, unsafe_unretained) IBOutlet UIButton *previousButton;
-@property (nonatomic, readonly) UIButton *actionButton;
-@property (nonatomic, assign) BOOL userInterfaceHidden;
-@property (nonatomic, readonly) BOOL bluredUserInterface;
-
-+ (instancetype)sharedPlayerView;
-+ (instancetype)create;
-- (void)setHeaderViewHidden:(BOOL)hidden;
-- (void)setFooterViewHidden:(BOOL)hidden;
-- (void)setFullscreen:(BOOL)fullscreen animated:(BOOL)animated;
-- (void)setFullscreen:(BOOL)fullscreen;
-- (void)setButtonImages:(NSDictionary *)info;
-- (void)setBluredUserInterface:(BOOL)bluredUserInterface visualEffect:(UIVisualEffect *)effect;
-
-@end
diff --git a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.m b/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.m
deleted file mode 100644
index 0d1a301db..000000000
--- a/Libraries external/LMMediaPlayer/Pod/Classes/MediaPlayerView/LMMediaPlayerView.m
+++ /dev/null
@@ -1,761 +0,0 @@
-//
-// LMMediaPlayerView.m
-// iPodMusicSample
-//
-// Created by Akira Matsuda on 2014/01/10.
-// Copyright (c) 2014年 Akira Matsuda. All rights reserved.
-//
-
-#import "LMMediaPlayerView.h"
-#import <MediaPlayer/MediaPlayer.h>
-#import <objc/runtime.h>
-#import "LMMediaPlayerHelper.h"
-
-static CGFloat const kFullscreenTransitionDuration = 0.2;
-static CGFloat const kActionButtonDefaultEdgeLength = 35;
-static CGFloat const kActionButtonDefaultRightMergin = 8;
-
-NSString *const LMMediaPlayerViewPlayButtonImageKey = @"playButtonImageKey";
-NSString *const LMMediaPlayerViewPlayButtonSelectedImageKey = @"playButtonSelectedImageKey";
-NSString *const LMMediaPlayerViewStopButtonImageKey = @"stopButtonImageKey";
-NSString *const LMMediaPlayerViewStopButtonSelectedImageKey = @"stopButtonSelectedImageKey";
-NSString *const LMMediaPlayerViewFullscreenButtonImageKey = @"fullscreenButtonImageKey";
-NSString *const LMMediaPlayerViewFullscreenButtonSelectedImageKey = @"fullscreenButtonSelectedImageKey";
-NSString *const LMMediaPlayerViewUnfullscreenButtonImageKey = @"unfullscreenButtonImageKey";
-NSString *const LMMediaPlayerViewUnfullscreenButtonSelectedImageKey = @"unfullscreenButtonSelectedImageKey";
-NSString *const LMMediaPlayerViewShuffleButtonShuffledImageKey = @"shuffleButtonShuffledImageKey";
-NSString *const LMMediaPlayerViewShuffleButtonShuffledSelectedImageKey = @"shuffleButtonShuffledSelectedImageKey";
-NSString *const LMMediaPlayerViewShuffleButtonUnshuffledImageKey = @"shuffleButtonUnshuffledImageKey";
-NSString *const LMMediaPlayerViewShuffleButtonUnshuffledSelectedImageKey = @"shuffleButtonUnshuffledSelectedImageKey";
-NSString *const LMMediaPlayerViewRepeatButtonRepeatOneImageKey = @"repeatButtonRepeatOneImageKey";
-NSString *const LMMediaPlayerViewRepeatButtonRepeatOneSelectedImageKey = @"repeatButtonRepeatOneSelectedImageKey";
-NSString *const LMMediaPlayerViewRepeatButtonRepeatAllImageKey = @"repeatButtonRepeatAllImageKey";
-NSString *const LMMediaPlayerViewRepeatButtonRepeatAllSelectedImageKey = @"repeatButtonRepeatAllSelectedImageKey";
-NSString *const LMMediaPlayerViewRepeatButtonRepeatNoneImageKey = @"repeatButtonRepeatNoneImageKey";
-NSString *const LMMediaPlayerViewRepeatButtonRepeatNoneSelectedImageKey = @"repeatButtonRepeatNoneSelectedImageKey";
-NSString *const LMMediaPlayerViewActionButtonImageKey = @"LMMediaPlayerViewActionButtonImageKey";
-
-@interface UIViewController (LMMediaPlayerPrefersStatusBarHidden)
-
-- (void)mediaPlayerPrefersStatusBarHidden:(BOOL)hidden;
-
-@end
-
-@interface LMMediaPlayerFullscreenViewController : UIViewController
-
-@end
-
-@implementation LMMediaPlayerFullscreenViewController
-
-- (BOOL)shouldAutorotate
-{
- return YES;
-}
-
-- (UIInterfaceOrientationMask)supportedInterfaceOrientations
-{
- return UIInterfaceOrientationMaskAllButUpsideDown;
-}
-
-- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
-{
- return UIInterfaceOrientationPortrait;
-}
-
-@end
-
-@interface LMMediaPlayerView () {
- __unsafe_unretained IBOutlet UILabel *playbackTimeLabel_;
- __unsafe_unretained IBOutlet UILabel *remainingTimeLabel_;
- __unsafe_unretained IBOutlet UIView *headerView_;
- __unsafe_unretained IBOutlet UIView *footerView_;
- __unsafe_unretained IBOutlet UIImageView *artworkImageView_;
- __unsafe_unretained IBOutlet UIButton *playButton_;
- __unsafe_unretained IBOutlet UIButton *shuffleButton_;
- __unsafe_unretained IBOutlet UIButton *repeatButton_;
- //__unsafe_unretained IBOutlet UIButton *fullscreenButton_;
- __unsafe_unretained IBOutlet UIButton *actionButton_;
- __unsafe_unretained IBOutlet NSLayoutConstraint *actionButtonWidth_;
- __unsafe_unretained IBOutlet NSLayoutConstraint *actionButtonRightMergin;
- BOOL fullscreen_;
- BOOL seeking_;
- BOOL needToSetPlayer_;
- UIView *superView_;
- NSMutableDictionary *buttonImages_;
- AVPlayerLayer *playerLayer_;
-
-#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
- UIVisualEffectView *headerBlurView_;
- UIVisualEffectView *footerBlurView_;
-#endif
-
- UIWindow *mainWindow_;
-}
-
-@end
-
-@implementation LMMediaPlayerView
-
-@synthesize isFullscreen = fullscreen_;
-
-static LMMediaPlayerView *sharedPlayerView;
-
-+ (instancetype)sharedPlayerView
-{
- static dispatch_once_t onceToken;
- dispatch_once(&onceToken, ^{
- sharedPlayerView = [[self class] create];
- });
- return sharedPlayerView;
-}
-
-+ (instancetype)create
-{
- return [[UINib nibWithNibName:NSStringFromClass([self class]) bundle:[NSBundle mainBundle]] instantiateWithOwner:nil options:nil][0];
-}
-
-- (instancetype)initWithFrame:(CGRect)frame
-{
- self = [super initWithFrame:frame];
- if (self) {
- [self setup];
- }
-
- return self;
-}
-
-- (void)drawRect:(CGRect)rect
-{
- [super drawRect:rect];
-
- if (needToSetPlayer_) {
- [playerLayer_ setPlayer:self.mediaPlayer.corePlayer];
- needToSetPlayer_ = NO;
- }
-}
-
-- (void)dealloc
-{
- _mediaPlayer.delegate = nil;
- [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidEnterBackgroundNotification object:nil];
-
- LM_RELEASE(playbackTimeLabel_);
- LM_RELEASE(remainingTimeLabel_);
- LM_RELEASE(headerView_);
- LM_RELEASE(footerView_);
- LM_RELEASE(artworkImageView_);
- LM_RELEASE(playButton_);
- LM_RELEASE(_nextButton);
- LM_RELEASE(_previousButton);
- LM_RELEASE(shuffleButton_);
- LM_RELEASE(repeatButton_);
- LM_RELEASE(fullscreenButton_);
- LM_RELEASE(_mediaPlayer);
- LM_RELEASE(buttonImages_);
- LM_DEALLOC(super);
-}
-
-- (void)awakeFromNib
-{
- [super awakeFromNib];
- [self setup];
- [self setupUserInterface];
-}
-
-- (void)layoutSubviews
-{
- // resize your layers based on the view's new bounds
- [super layoutSubviews];
- playerLayer_.frame = self.bounds;
-}
-
-- (UIButton *)actionButton
-{
- return actionButton_;
-}
-
-- (void)setBluredUserInterface:(BOOL)bluredUserInterface visualEffect:(UIVisualEffect *)effect
-{
-#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_8_0
- if (floor(NSFoundationVersionNumber) > NSFoundationVersionNumber_iOS_7_1) {
- _bluredUserInterface = bluredUserInterface;
- if (_bluredUserInterface == YES) {
- if (headerBlurView_ == nil) {
- headerBlurView_ = [[UIVisualEffectView alloc] initWithEffect:effect];
- footerBlurView_ = [[UIVisualEffectView alloc] initWithEffect:effect];
-
- headerBlurView_.frame = headerView_.bounds;
- headerBlurView_.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
-
- footerBlurView_.frame = footerView_.bounds;
- footerBlurView_.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
-
- [headerView_ insertSubview:headerBlurView_ atIndex:0];
- [footerView_ insertSubview:footerBlurView_ atIndex:0];
- }
-
- headerView_.backgroundColor = [UIColor clearColor];
- footerView_.backgroundColor = [UIColor clearColor];
- }
- else {
- UIColor *backgroundColor = [UIColor colorWithWhite:0.000 alpha:0.400];
- headerView_.backgroundColor = backgroundColor;
- footerView_.backgroundColor = backgroundColor;
- }
-
- headerBlurView_.hidden = footerBlurView_.hidden = !_bluredUserInterface;
- }
-#endif
-}
-
-#pragma mark -
-
-- (void)setup
-{
- [self setTranslatesAutoresizingMaskIntoConstraints:YES];
- self.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
-
- mainWindow_ = [[UIApplication sharedApplication] keyWindow];
- if (mainWindow_ == nil) {
- mainWindow_ = [[UIApplication sharedApplication] windows][0];
- }
- LM_RETAIN(mainWindow_);
-
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mediaPlayerBecomeForgroundMode:) name:UIApplicationWillEnterForegroundNotification object:nil];
- [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(mediaPlayerBecomeBackgroundMode:) name:UIApplicationDidEnterBackgroundNotification object:nil];
-
- needToSetPlayer_ = NO;
- _userInterfaceHidden = NO;
-
- _mediaPlayer = [[LMMediaPlayer alloc] init];
- _mediaPlayer.delegate = self;
-}
-
-- (void)setupUserInterface
-{
- UITapGestureRecognizer *gesture = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(reverseUserInterfaceHidden)];
- [self addGestureRecognizer:gesture];
- LM_RELEASE(gesture);
-
- artworkImageView_.contentMode = UIViewContentModeScaleAspectFit;
-
- [_currentTimeSlider addTarget:self action:@selector(beginSeek:) forControlEvents:UIControlEventTouchDown];
- [_currentTimeSlider addTarget:self action:@selector(seekPositionChanged:) forControlEvents:UIControlEventValueChanged];
- [_currentTimeSlider addTarget:self action:@selector(endSeek:) forControlEvents:(UIControlEventTouchUpInside | UIControlEventTouchUpOutside | UIControlEventTouchCancel)];
-
- [playButton_ addTarget:self action:@selector(changePlaybackState:) forControlEvents:UIControlEventTouchUpInside];
- [_nextButton addTarget:self action:@selector(fourcePlayNextMedia) forControlEvents:UIControlEventTouchUpInside];
- [_previousButton addTarget:self action:@selector(fourcePlayPreviousMedia) forControlEvents:UIControlEventTouchUpInside];
-
- UIColor *backgroundColor = [UIColor colorWithWhite:0.000 alpha:0.400];
- footerView_.backgroundColor = headerView_.backgroundColor = backgroundColor;
- [_mediaPlayer setShuffleEnabled:NO];
- [_mediaPlayer setRepeatMode:LMMediaRepeatModeDefault];
-
- buttonImages_ = [@{ LMMediaPlayerViewPlayButtonImageKey : [[self class] imageForFilename:@"play"],
- LMMediaPlayerViewPlayButtonSelectedImageKey : [[self class] imageForFilename:@"play"],
- LMMediaPlayerViewStopButtonImageKey : [[self class] imageForFilename:@"pause"],
- LMMediaPlayerViewStopButtonSelectedImageKey : [[self class] imageForFilename:@"pause"],
- LMMediaPlayerViewShuffleButtonShuffledImageKey : [[self class] imageForFilename:@"shuffle"],
- LMMediaPlayerViewShuffleButtonShuffledSelectedImageKey : [[self class] imageForFilename:@"shuffle"],
- LMMediaPlayerViewShuffleButtonUnshuffledImageKey : [[self class] imageForFilename:@"unshuffle"],
- LMMediaPlayerViewShuffleButtonUnshuffledSelectedImageKey : [[self class] imageForFilename:@"unshuffle"],
- LMMediaPlayerViewRepeatButtonRepeatNoneImageKey : [[self class] imageForFilename:@"repeat_none"],
- LMMediaPlayerViewRepeatButtonRepeatNoneSelectedImageKey : [[self class] imageForFilename:@"repeat_none"],
- LMMediaPlayerViewRepeatButtonRepeatOneImageKey : [[self class] imageForFilename:@"repeat_one"],
- LMMediaPlayerViewRepeatButtonRepeatOneSelectedImageKey : [[self class] imageForFilename:@"repeat_one"],
- LMMediaPlayerViewRepeatButtonRepeatAllImageKey : [[self class] imageForFilename:@"repeat_all"],
- LMMediaPlayerViewRepeatButtonRepeatAllSelectedImageKey : [[self class] imageForFilename:@"repeat_all"],
- LMMediaPlayerViewFullscreenButtonImageKey : [[self class] imageForFilename:@"fullscreen"],
- LMMediaPlayerViewFullscreenButtonSelectedImageKey : [[self class] imageForFilename:@"fullscreen"],
- LMMediaPlayerViewUnfullscreenButtonImageKey : [[self class] imageForFilename:@"unfullscreen"],
- LMMediaPlayerViewUnfullscreenButtonSelectedImageKey : [[self class] imageForFilename:@"unfullscreen"]
- } mutableCopy];
-
- [playButton_.imageView setContentMode:UIViewContentModeScaleAspectFit];
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewPlayButtonImageKey] forState:UIControlStateNormal];
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewPlayButtonSelectedImageKey] forState:UIControlStateSelected];
-
- [_fullscreenButton_.imageView setContentMode:UIViewContentModeScaleAspectFit];
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewFullscreenButtonImageKey] forState:UIControlStateNormal];
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewFullscreenButtonSelectedImageKey] forState:UIControlStateSelected];
-
- [repeatButton_.imageView setContentMode:UIViewContentModeScaleAspectFit];
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatNoneImageKey] forState:UIControlStateNormal];
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatNoneSelectedImageKey] forState:UIControlStateSelected];
-
- [shuffleButton_.imageView setContentMode:UIViewContentModeScaleAspectFit];
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonUnshuffledImageKey] forState:UIControlStateNormal];
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonUnshuffledSelectedImageKey] forState:UIControlStateSelected];
-
- [actionButton_.imageView setContentMode:UIViewContentModeScaleAspectFit];
- actionButtonWidth_.constant = 0;
- actionButtonRightMergin.constant = 0;
-}
-
-- (void)mediaPlayerBecomeForgroundMode:(NSNotification *)notification
-{
- needToSetPlayer_ = YES;
- [self setNeedsDisplay];
-}
-
-- (void)mediaPlayerBecomeBackgroundMode:(NSNotification *)notification
-{
- double delayInSeconds = 0.01;
- dispatch_time_t popTime = dispatch_time(DISPATCH_TIME_NOW, (int64_t)(delayInSeconds * NSEC_PER_SEC));
- dispatch_after(popTime, dispatch_get_main_queue(), ^(void) {
- [playerLayer_ setPlayer:nil];
- if (self.mediaPlayer.playbackState == LMMediaPlaybackStatePlaying) {
- [self.mediaPlayer play];
- }
- });
-}
-
-#pragma mark LMMediaPlayerDelegate
-
-- (void)mediaPlayerWillChangeState:(LMMediaPlaybackState)state
-{
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewWillChangeState:state:)]) {
- [self.delegate mediaPlayerViewWillChangeState:self state:state];
- }
-
- if (state == LMMediaPlaybackStateStopped || state == LMMediaPlaybackStatePaused) {
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewPlayButtonImageKey] ?: nil forState:UIControlStateNormal];
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewPlayButtonSelectedImageKey] ?: nil forState:UIControlStateSelected];
- }
- else {
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewStopButtonImageKey] ?: nil forState:UIControlStateNormal];
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewStopButtonSelectedImageKey] ?: nil forState:UIControlStateSelected];
- }
-}
-
-- (BOOL)mediaPlayerWillStartPlaying:(LMMediaPlayer *)player media:(LMMediaItem *)media
-{
- BOOL result = NO;
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewWillStartPlaying:media:)] == YES) {
- result = [self.delegate mediaPlayerViewWillStartPlaying:self media:media];
- }
- else {
- result = YES;
- }
- self.titleLabel.text = media.title;
-
- return result;
-}
-
-- (void)mediaPlayerDidStartPlaying:(LMMediaPlayer *)player media:(LMMediaItem *)media
-{
- if (media.isVideo) {
- artworkImageView_.hidden = YES;
- self.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
- if (playerLayer_ == nil) {
- playerLayer_ = [AVPlayerLayer playerLayerWithPlayer:player.corePlayer];
- playerLayer_.frame = self.frame;
- [self.layer insertSublayer:playerLayer_ atIndex:0];
- }
- needToSetPlayer_ = YES;
-
- playerLayer_.hidden = NO;
- }
- else {
- playerLayer_.hidden = YES;
- artworkImageView_.hidden = NO;
- artworkImageView_.image = [media artworkImageWithSize:self.frame.size];
- }
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewDidStartPlaying:media:)]) {
- [self.delegate mediaPlayerViewDidStartPlaying:self media:media];
- }
-}
-
-- (void)mediaPlayerDidFinishPlaying:(LMMediaPlayer *)player media:(LMMediaItem *)media
-{
- _currentTimeSlider.value = 1.0;
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewDidFinishPlaying:media:)]) {
- [self.delegate mediaPlayerViewDidFinishPlaying:self media:media];
- }
-}
-
-- (void)mediaPlayerDidChangeCurrentTime:(LMMediaPlayer *)player
-{
- if (seeking_ == NO) {
- _currentTimeSlider.value = player.currentPlaybackTime / player.currentPlaybackDuration;
-
- NSMutableString *durationString = [NSMutableString new];
- NSInteger duration = (NSInteger)player.currentPlaybackTime;
- if (duration / (60 * 60) > 0) {
- [durationString appendFormat:@"%02ld:",
- (long int)duration / (60 * 60)];
- duration /= 60 * 60;
- }
- [durationString appendFormat:@"%02ld:", (long int)duration / 60];
- duration %= 60;
- [durationString appendFormat:@"%02ld", (long int)duration];
- playbackTimeLabel_.text = durationString;
- LM_RELEASE(durationString);
-
- durationString = [[NSMutableString alloc] initWithString:@"-"];
- duration = (NSInteger)fabs(player.currentPlaybackTime - player.currentPlaybackDuration);
- if (duration / (60 * 60) > 0) {
- [durationString appendFormat:@"%02ld:",
- (long int)duration / (60 * 60)];
- duration /= 60 * 60;
- }
- [durationString appendFormat:@"%02ld:", (long int)duration / 60];
- duration %= 60;
- [durationString appendFormat:@"%02ld", (long int)duration];
- remainingTimeLabel_.text = durationString;
- LM_RELEASE(durationString);
- }
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewDidChangeCurrentTime:)]) {
- [self.delegate mediaPlayerViewDidChangeCurrentTime:self];
- }
-}
-
-- (void)mediaPlayerDidChangeRepeatMode:(LMMediaRepeatMode)mode player:(LMMediaPlayer *)player
-{
- [self setRepeatButtonImageWithRepeatMode:mode];
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewDidChangeRepeatMode:playerView:)]) {
- [self.delegate mediaPlayerViewDidChangeRepeatMode:mode playerView:self];
- }
-}
-
-- (void)mediaPlayerDidChangeShuffleMode:(BOOL)enabled player:(LMMediaPlayer *)player
-{
- [self setShuffleButtonImageWithShuffleMode:enabled];
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewDidChangeShuffleMode:playerView:)]) {
- [self.delegate mediaPlayerViewDidChangeShuffleMode:enabled playerView:self];
- }
-}
-
-#pragma mark -
-
-- (void)beginSeek:(id)sender
-{
- seeking_ = YES;
-}
-
-- (void)seekPositionChanged:(id)sender
-{
- NSMutableString *durationString = [NSMutableString new];
- NSInteger currentTime = (NSInteger)_mediaPlayer.currentPlaybackDuration * _currentTimeSlider.value;
- NSInteger duration = currentTime;
- if (duration / (60 * 60) > 0) {
- [durationString appendFormat:@"%02ld:",
- (long int)duration / (60 * 60)];
- duration /= 60 * 60;
- }
- [durationString appendFormat:@"%02ld:", (long int)duration / 60];
- duration %= 60;
- [durationString appendFormat:@"%02ld", (long int)duration];
- playbackTimeLabel_.text = durationString;
- LM_RELEASE(durationString);
-
- durationString = [[NSMutableString alloc] initWithString:@"-"];
- duration = (NSInteger)_mediaPlayer.currentPlaybackDuration - currentTime;
- if (duration / (60 * 60) > 0) {
- [durationString appendFormat:@"%02ld:",
- (long int)duration / (60 * 60)];
- duration /= 60 * 60;
- }
- [durationString appendFormat:@"%02ld:", (long int)duration / 60];
- duration %= 60;
- [durationString appendFormat:@"%02ld", (long int)duration];
- remainingTimeLabel_.text = durationString;
- LM_RELEASE(durationString);
-}
-
-- (void)endSeek:(id)sender
-{
- UISlider *slider = (UISlider *)sender;
- [_mediaPlayer seekTo:_mediaPlayer.currentPlaybackDuration * slider.value];
- seeking_ = NO;
-}
-
-- (void)changePlaybackState:(id)sender
-{
- if ([_mediaPlayer playbackState] == LMMediaPlaybackStatePlaying) {
- [_mediaPlayer pause];
- }
- else if ([_mediaPlayer playbackState] == LMMediaPlaybackStatePaused || [_mediaPlayer playbackState] == LMMediaPlaybackStateStopped) {
- [_mediaPlayer play];
- }
-}
-
-- (void)reverseUserInterfaceHidden
-{
- if (seeking_ == NO) {
- [self setUserInterfaceHidden:!_userInterfaceHidden];
- }
-}
-
-- (void)fourcePlayNextMedia
-{
- LMMediaRepeatMode repeatMode = _mediaPlayer.repeatMode;
- if (repeatMode == LMMediaRepeatModeOne) {
- _mediaPlayer.repeatMode = LMMediaRepeatModeDefault;
- }
- [_mediaPlayer playNextMedia];
- _mediaPlayer.repeatMode = repeatMode;
-}
-
-- (void)fourcePlayPreviousMedia
-{
- LMMediaRepeatMode repeatMode = _mediaPlayer.repeatMode;
- if (repeatMode == LMMediaRepeatModeOne) {
- _mediaPlayer.repeatMode = LMMediaRepeatModeDefault;
- }
- [_mediaPlayer playPreviousMedia];
- _mediaPlayer.repeatMode = repeatMode;
-}
-
-- (IBAction)shuffleButtonPressed:(id)sender
-{
- [_mediaPlayer setShuffleEnabled:!_mediaPlayer.shuffleMode];
-
- if (_mediaPlayer.shuffleMode) {
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonShuffledImageKey] forState:UIControlStateNormal];
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonShuffledSelectedImageKey] forState:UIControlStateSelected];
- }
- else {
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonUnshuffledImageKey] forState:UIControlStateNormal];
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonUnshuffledSelectedImageKey] forState:UIControlStateSelected];
- }
- [self setRepeatButtonImageWithRepeatMode:_mediaPlayer.repeatMode];
-}
-
-- (IBAction)repeatButtonPressed:(id)sender
-{
- switch (_mediaPlayer.repeatMode) {
- case LMMediaRepeatModeAll: {
- _mediaPlayer.repeatMode = LMMediaRepeatModeOne;
- } break;
- case LMMediaRepeatModeOne: {
- _mediaPlayer.repeatMode = LMMediaRepeatModeDefault;
- } break;
- case LMMediaRepeatModeDefault: {
- _mediaPlayer.repeatMode = LMMediaRepeatModeAll;
- } break;
- default:
- break;
- }
- [self setRepeatButtonImageWithRepeatMode:_mediaPlayer.repeatMode];
-}
-
-- (void)setShuffleButtonImageWithShuffleMode:(BOOL)mode
-{
- if (mode) {
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonShuffledImageKey] forState:UIControlStateNormal];
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonShuffledSelectedImageKey] forState:UIControlStateSelected];
- }
- else {
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonUnshuffledImageKey] forState:UIControlStateNormal];
- [shuffleButton_ setImage:buttonImages_[LMMediaPlayerViewShuffleButtonUnshuffledSelectedImageKey] forState:UIControlStateSelected];
- }
-}
-
-- (void)setRepeatButtonImageWithRepeatMode:(LMMediaRepeatMode)mode
-{
- switch (_mediaPlayer.repeatMode) {
- case LMMediaRepeatModeAll: {
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatAllImageKey] forState:UIControlStateNormal];
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatAllSelectedImageKey] forState:UIControlStateSelected];
- } break;
- case LMMediaRepeatModeOne: {
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatOneImageKey] forState:UIControlStateNormal];
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatOneSelectedImageKey] forState:UIControlStateSelected];
- } break;
- case LMMediaRepeatModeDefault: {
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatNoneImageKey] forState:UIControlStateNormal];
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatNoneSelectedImageKey] forState:UIControlStateSelected];
- } break;
- default: {
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatNoneImageKey] forState:UIControlStateNormal];
- [repeatButton_ setImage:buttonImages_[LMMediaPlayerViewRepeatButtonRepeatNoneSelectedImageKey] forState:UIControlStateSelected];
- } break;
- }
-}
-
-- (IBAction)fullscreenButtonPressed:(id)sender
-{
- [self setFullscreen:!fullscreen_];
-}
-
-#pragma mark -
-
-- (void)setHeaderViewHidden:(BOOL)hidden
-{
- headerView_.hidden = hidden;
-}
-
-- (void)setFooterViewHidden:(BOOL)hidden
-{
- footerView_.hidden = hidden;
-}
-
-- (void)setUserInterfaceHidden:(BOOL)hidden
-{
- _userInterfaceHidden = hidden;
- if (hidden) {
- [UIView animateWithDuration:0.3 animations:^{
- headerView_.alpha = 0;
- footerView_.alpha = 0;
- _currentTimeSlider.alpha = 0;
- _nextButton.superview.alpha = 0;
- _previousButton.superview.alpha = 0;
- } completion:^(BOOL finished){
- }];
- }
- else {
- [UIView animateWithDuration:0.3 animations:^{
- headerView_.alpha = 1;
- footerView_.alpha = 1;
- _currentTimeSlider.alpha = 1;
- _nextButton.superview.alpha = 1;
- _previousButton.superview.alpha = 1;
- } completion:^(BOOL finished){
- }];
- }
-}
-
-- (void)setFullscreen:(BOOL)fullscreen animated:(BOOL)animated
-{
- if (fullscreen_ == fullscreen) {
- return;
- }
-
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewWillChangeFullscreenMode:)]) {
- [self.delegate mediaPlayerViewWillChangeFullscreenMode:fullscreen];
- }
-
- LMMediaPlayerFullscreenViewController *viewController = [[LMMediaPlayerFullscreenViewController alloc] init];
- LM_AUTORELEASE(viewController);
- viewController.view.frame = [UIScreen mainScreen].bounds;
-
- if (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_7_0) {
- viewController.extendedLayoutIncludesOpaqueBars = YES;
- }
- else {
- //viewController.wantsFullScreenLayout = YES;
- }
-
- CGRect newRect;
- if (fullscreen == NO) {
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewFullscreenButtonImageKey] forState:UIControlStateNormal];
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewFullscreenButtonSelectedImageKey] forState:UIControlStateSelected];
-
- newRect = superView_.bounds;
- newRect.size.height = newRect.size.height - 20; // TWS
-
- self.frame = newRect;
- [superView_ addSubview:self];
- LM_RELEASE(superView_);
- [mainWindow_ makeKeyAndVisible];
- [[[UIApplication sharedApplication] delegate] setWindow:mainWindow_];
- [[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];
- [[UIApplication sharedApplication] setStatusBarOrientation:[[UIApplication sharedApplication] statusBarOrientation]];
- [[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationFade];
- }
- else {
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewUnfullscreenButtonImageKey] forState:UIControlStateNormal];
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewUnfullscreenButtonSelectedImageKey] forState:UIControlStateSelected];
- superView_ = self.superview;
- LM_RETAIN(superView_);
- newRect = mainWindow_.frame;
-
- //UIViewController *rootViewController = [mainWindow_ rootViewController];
- UIInterfaceOrientation orientation = [[UIApplication sharedApplication] statusBarOrientation]; //rootViewController.interfaceOrientation;
-
- if (orientation == UIInterfaceOrientationLandscapeRight || orientation == UIInterfaceOrientationLandscapeLeft) {
- if (floor(NSFoundationVersionNumber) >= NSFoundationVersionNumber_iOS_7_0) {
- newRect = CGRectMake(0, 0, CGRectGetWidth(mainWindow_.frame), CGRectGetHeight(mainWindow_.frame));
- }
- else {
- newRect = CGRectMake(0, 0, CGRectGetHeight(mainWindow_.frame), CGRectGetWidth(mainWindow_.frame));
- }
- }
-
- [self removeFromSuperview];
- [viewController.view addSubview:self];
- UIWindow *newWindow = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
- newWindow.windowLevel = UIWindowLevelAlert;
- newWindow.rootViewController = viewController;
- [newWindow addSubview:viewController.view];
- [newWindow makeKeyAndVisible];
- [[[UIApplication sharedApplication] delegate] setWindow:newWindow];
- LM_RELEASE(newWindow);
- }
-
- self.frame = newRect;
- if (animated) {
- self.alpha = 0;
- [UIView animateWithDuration:kFullscreenTransitionDuration animations:^{
- self.alpha = 1;
- }];
- }
- fullscreen_ = fullscreen;
- if ([self.delegate respondsToSelector:@selector(mediaPlayerViewDidChangeFullscreenMode:)]) {
- [self.delegate mediaPlayerViewDidChangeFullscreenMode:fullscreen];
- }
- [[UIApplication sharedApplication] setStatusBarHidden:fullscreen];
- [[NSNotificationCenter defaultCenter] postNotificationName:UIDeviceOrientationDidChangeNotification object:[UIDevice currentDevice]];
-}
-
-- (void)setFullscreen:(BOOL)fullscreen
-{
- [self setFullscreen:fullscreen animated:YES];
-}
-
-- (void)setButtonImages:(NSDictionary *)info
-{
- for (NSString *key in info) {
- buttonImages_[key] = info[key];
- }
- if ([buttonImages_[LMMediaPlayerViewActionButtonImageKey] isKindOfClass:[UIImage class]]) {
- actionButtonWidth_.constant = kActionButtonDefaultEdgeLength;
- actionButtonRightMergin.constant = kActionButtonDefaultRightMergin;
- [actionButton_ setImage:info[LMMediaPlayerViewActionButtonImageKey] forState:UIControlStateNormal];
- }
- else {
- actionButtonWidth_.constant = 0;
- actionButtonRightMergin.constant = 0;
- }
- [self updateButtonImages];
-}
-
-- (void)updateButtonImages
-{
- if (self.mediaPlayer.playbackState == LMMediaPlaybackStatePlaying) {
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewStopButtonImageKey] forState:UIControlStateNormal];
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewStopButtonSelectedImageKey] forState:UIControlStateSelected];
- }
- else {
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewPlayButtonImageKey] forState:UIControlStateNormal];
- [playButton_ setImage:buttonImages_[LMMediaPlayerViewPlayButtonSelectedImageKey] forState:UIControlStateSelected];
- }
-
- if (self.isFullscreen) {
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewUnfullscreenButtonImageKey] forState:UIControlStateNormal];
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewUnfullscreenButtonSelectedImageKey] forState:UIControlStateSelected];
- }
- else {
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewFullscreenButtonImageKey] forState:UIControlStateNormal];
- [_fullscreenButton_ setImage:buttonImages_[LMMediaPlayerViewFullscreenButtonSelectedImageKey] forState:UIControlStateSelected];
- }
-
- [self setRepeatButtonImageWithRepeatMode:self.mediaPlayer.repeatMode];
- [self setShuffleButtonImageWithShuffleMode:self.mediaPlayer.shuffleMode];
-}
-
-+ (UIImage *)imageForFilename:(NSString *)filename
-{
- NSString *version = @"7";
- if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
- version = @"6";
- }
- UIImage *image = [UIImage imageWithContentsOfFile:[NSString stringWithFormat:@"%@/%@/%@.png", [[NSBundle mainBundle] pathForResource:@"LMMediaPlayerView" ofType:@"bundle"], version, filename]];
-
- return image;
-}
-
-@end