diff options
Diffstat (limited to 'Libraries external/LMMediaPlayer/Pod')
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 Binary files differdeleted file mode 100644 index 1876e8a3c..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 8a93e578e..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/fullscreen@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause.png Binary files differdeleted file mode 100755 index fab3cab65..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause.png +++ /dev/null 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 Binary files differdeleted file mode 100755 index b5b168cf0..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/pause@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play.png Binary files differdeleted file mode 100644 index cd24657d9..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index d266fd056..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/play@2x.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index c293a82ed..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index e82b6290e..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_all@2x.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index a2f73d020..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 48bb7cd28..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_none@2x.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index eb28c76b8..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 6902438a6..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/repeat_one@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle.png Binary files differdeleted file mode 100644 index 3d2025184..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index cc3eb27f8..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/shuffle@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen.png Binary files differdeleted file mode 100644 index 0fcd6bafe..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 0419a0ae0..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unfullscreen@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle.png Binary files differdeleted file mode 100644 index f875a4845..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index d4abd97d8..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/6/unshuffle@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen.png Binary files differdeleted file mode 100644 index 77a3f3695..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 7af4de161..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/fullscreen@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause.png Binary files differdeleted file mode 100644 index e9cf7e415..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 541bef8a1..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/pause@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play.png Binary files differdeleted file mode 100644 index 13b4c8fcf..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index d266fd056..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/play@2x.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 9a6b8a05c..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 754333249..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_all@2x.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 44de0c5b0..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index b01077b98..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_none@2x.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index c3acdc521..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 732be27e6..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/repeat_one@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle.png Binary files differdeleted file mode 100755 index 954662b33..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle.png +++ /dev/null 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 Binary files differdeleted file mode 100755 index 0611c301a..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/shuffle@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen.png Binary files differdeleted file mode 100644 index 485fb718a..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 5223c567d..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unfullscreen@2x.png +++ /dev/null diff --git a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle.png b/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle.png Binary files differdeleted file mode 100644 index c7ca2a68d..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle.png +++ /dev/null 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 Binary files differdeleted file mode 100644 index 45e32ab03..000000000 --- a/Libraries external/LMMediaPlayer/Pod/Assets/LMMediaPlayerView.bundle/7/unshuffle@2x.png +++ /dev/null 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="<"/> - </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=">"/> - </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 |