vlc | branch: master | Felix Paul Kühne <fe...@feepk.net> | Mon May 6 11:02:21 2019 +0200| [30fc2fd4be67f70f0e7a892504fd64beeee3776f] | committer: Felix Paul Kühne
macosx/library: move recent media to its on collection view > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=30fc2fd4be67f70f0e7a892504fd64beeee3776f --- .../gui/macosx/UI/VLCLibraryCollectionViewItem.xib | 4 +- modules/gui/macosx/UI/VLCLibraryWindow.xib | 158 ++++++++++++++------- modules/gui/macosx/library/VLCLibraryDataSource.h | 2 + modules/gui/macosx/library/VLCLibraryDataSource.m | 8 +- modules/gui/macosx/library/VLCLibraryModel.m | 5 +- modules/gui/macosx/library/VLCLibraryWindow.h | 4 +- modules/gui/macosx/library/VLCLibraryWindow.m | 30 ++-- 7 files changed, 140 insertions(+), 71 deletions(-) diff --git a/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib b/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib index 4639a95f6f..7747707f6a 100644 --- a/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib +++ b/modules/gui/macosx/UI/VLCLibraryCollectionViewItem.xib @@ -55,7 +55,6 @@ <constraints> <constraint firstAttribute="bottom" secondItem="dFt-oZ-h9P" secondAttribute="bottom" id="4q3-3S-7PA"/> <constraint firstItem="S3I-5Z-qgS" firstAttribute="centerX" secondItem="2aB-sB-hfY" secondAttribute="centerX" id="Seo-tS-piW"/> - <constraint firstAttribute="height" constant="168" id="Vrp-AD-scC"/> <constraint firstItem="S3I-5Z-qgS" firstAttribute="centerY" secondItem="2aB-sB-hfY" secondAttribute="centerY" id="ZWU-oW-OVa"/> <constraint firstItem="dFt-oZ-h9P" firstAttribute="leading" secondItem="2aB-sB-hfY" secondAttribute="leading" id="gTe-sx-hdP"/> <constraint firstAttribute="trailing" secondItem="dFt-oZ-h9P" secondAttribute="trailing" id="kBI-UU-vnc"/> @@ -101,13 +100,14 @@ </textField> </subviews> <constraints> + <constraint firstItem="2aB-sB-hfY" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="3Ah-0T-rA9"/> <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="OBS-Eh-1mT" secondAttribute="trailing" id="457-oy-EbD"/> <constraint firstItem="Ubz-8I-W2F" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="7" id="8Qf-Un-Gdl"/> + <constraint firstItem="VAn-gF-QiZ" firstAttribute="top" secondItem="OBS-Eh-1mT" secondAttribute="bottom" constant="-1" id="ALi-0z-Mza"/> <constraint firstAttribute="trailing" secondItem="u2r-zy-XEW" secondAttribute="trailing" id="Dd7-va-0UJ"/> <constraint firstItem="u2r-zy-XEW" firstAttribute="centerY" secondItem="VAn-gF-QiZ" secondAttribute="centerY" id="H5N-j9-THf"/> <constraint firstAttribute="bottom" secondItem="VAn-gF-QiZ" secondAttribute="bottom" id="Kp0-Hx-3Ek"/> <constraint firstItem="VAn-gF-QiZ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" id="QUW-dn-Fbc"/> - <constraint firstItem="2aB-sB-hfY" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" id="YP6-lv-ECe"/> <constraint firstAttribute="trailing" secondItem="Ubz-8I-W2F" secondAttribute="trailing" constant="20" id="ZVz-SL-rxZ"/> <constraint firstItem="tm2-NW-WsZ" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="7" id="cvk-A5-enS"/> <constraint firstItem="tm2-NW-WsZ" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="12" id="fH0-Om-7gV"/> diff --git a/modules/gui/macosx/UI/VLCLibraryWindow.xib b/modules/gui/macosx/UI/VLCLibraryWindow.xib index f516b40197..af383765c6 100644 --- a/modules/gui/macosx/UI/VLCLibraryWindow.xib +++ b/modules/gui/macosx/UI/VLCLibraryWindow.xib @@ -18,12 +18,12 @@ <windowPositionMask key="initialPositionMask" leftStrut="YES" rightStrut="YES" topStrut="YES" bottomStrut="YES"/> <rect key="contentRect" x="196" y="240" width="480" height="363"/> <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1177"/> - <view key="contentView" wantsLayer="YES" id="EiT-Mj-1SZ"> - <rect key="frame" x="0.0" y="0.0" width="480" height="363"/> - <autoresizingMask key="autoresizingMask"/> + <view key="contentView" wantsLayer="YES" misplaced="YES" id="EiT-Mj-1SZ"> + <rect key="frame" x="0.0" y="0.0" width="480" height="654"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <segmentedControl verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="W1M-0o-qYG"> - <rect key="frame" x="88" y="332" width="304" height="25"/> + <rect key="frame" x="88" y="849" width="304" height="25"/> <constraints> <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="300" id="Wg7-mn-ahw"/> </constraints> @@ -37,47 +37,99 @@ </segmentedCell> </segmentedControl> <splitView autosaveName="librarywindowsplitview" dividerStyle="thin" vertical="YES" translatesAutoresizingMaskIntoConstraints="NO" id="u8g-jy-S4e"> - <rect key="frame" x="0.0" y="36" width="480" height="291"/> + <rect key="frame" x="0.0" y="36" width="480" height="808"/> <subviews> - <customView id="iSp-bV-w6B"> - <rect key="frame" x="0.0" y="0.0" width="242" height="291"/> + <customView misplaced="YES" id="iSp-bV-w6B"> + <rect key="frame" x="0.0" y="0.0" width="242" height="808"/> <autoresizingMask key="autoresizingMask"/> <subviews> - <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nXS-11-7iK"> - <rect key="frame" x="0.0" y="0.0" width="242" height="291"/> - <clipView key="contentView" id="OKa-dt-1yY"> - <rect key="frame" x="0.0" y="0.0" width="242" height="291"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> - <subviews> - <collectionView selectable="YES" id="B8x-e8-7zp" customClass="VLCLibraryCollectionView"> - <rect key="frame" x="0.0" y="0.0" width="242" height="291"/> - <autoresizingMask key="autoresizingMask" widthSizable="YES"/> - <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="20" minimumLineSpacing="20" id="Rag-cM-k1g"> - <size key="itemSize" width="256" height="214"/> - <edgeInsets key="sectionInset" left="20" right="20" top="20" bottom="20"/> - </collectionViewFlowLayout> - <color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> - <color key="secondaryBackgroundColor" name="controlAlternatingRowColor" catalog="System" colorSpace="catalog"/> - </collectionView> - </subviews> - </clipView> - <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="7ik-B8-JYg"> - <rect key="frame" x="-100" y="-100" width="233" height="15"/> - <autoresizingMask key="autoresizingMask"/> - </scroller> - <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="rUh-Qg-gUL"> - <rect key="frame" x="226" y="0.0" width="16" height="291"/> - <autoresizingMask key="autoresizingMask"/> - </scroller> - </scrollView> - <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cFG-c9-cI9"> - <rect key="frame" x="0.0" y="0.0" width="242" height="291"/> + <stackView distribution="fill" orientation="vertical" alignment="leading" spacing="0.0" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="vak-Gp-ljo"> + <rect key="frame" x="0.0" y="0.0" width="242" height="808"/> + <subviews> + <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasVerticalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="HmU-mL-Tjk"> + <rect key="frame" x="0.0" y="364" width="242" height="444"/> + <clipView key="contentView" id="J5s-sy-il6"> + <rect key="frame" x="0.0" y="0.0" width="242" height="444"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <collectionView selectable="YES" id="hnE-Hj-MZo"> + <rect key="frame" x="0.0" y="0.0" width="242" height="444"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES"/> + <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="20" minimumLineSpacing="20" scrollDirection="horizontal" id="N2a-bI-WQc"> + <size key="itemSize" width="532" height="404"/> + <edgeInsets key="sectionInset" left="20" right="20" top="20" bottom="20"/> + </collectionViewFlowLayout> + <color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + <color key="secondaryBackgroundColor" name="controlAlternatingRowColor" catalog="System" colorSpace="catalog"/> + </collectionView> + </subviews> + </clipView> + <constraints> + <constraint firstAttribute="height" constant="444" id="Htb-Ql-chZ"/> + </constraints> + <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="f2z-AL-CFF"> + <rect key="frame" x="-100" y="-100" width="233" height="15"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="psR-Xx-0YH"> + <rect key="frame" x="-100" y="-100" width="16" height="218"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + </scrollView> + <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nXS-11-7iK"> + <rect key="frame" x="0.0" y="0.0" width="242" height="364"/> + <clipView key="contentView" id="OKa-dt-1yY"> + <rect key="frame" x="0.0" y="0.0" width="242" height="364"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> + <subviews> + <collectionView selectable="YES" id="B8x-e8-7zp" customClass="VLCLibraryCollectionView"> + <rect key="frame" x="0.0" y="0.0" width="242" height="364"/> + <autoresizingMask key="autoresizingMask" widthSizable="YES"/> + <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="20" minimumLineSpacing="20" id="Rag-cM-k1g"> + <size key="itemSize" width="256" height="214"/> + <edgeInsets key="sectionInset" left="20" right="20" top="20" bottom="20"/> + </collectionViewFlowLayout> + <color key="primaryBackgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/> + <color key="secondaryBackgroundColor" name="controlAlternatingRowColor" catalog="System" colorSpace="catalog"/> + </collectionView> + </subviews> + </clipView> + <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="7ik-B8-JYg"> + <rect key="frame" x="-100" y="-100" width="233" height="15"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="rUh-Qg-gUL"> + <rect key="frame" x="226" y="0.0" width="16" height="291"/> + <autoresizingMask key="autoresizingMask"/> + </scroller> + </scrollView> + </subviews> + <constraints> + <constraint firstItem="HmU-mL-Tjk" firstAttribute="leading" secondItem="vak-Gp-ljo" secondAttribute="leading" id="5co-en-4Uf"/> + <constraint firstAttribute="trailing" secondItem="HmU-mL-Tjk" secondAttribute="trailing" id="9Wn-DC-CFC"/> + <constraint firstItem="nXS-11-7iK" firstAttribute="leading" secondItem="vak-Gp-ljo" secondAttribute="leading" id="LP8-Hf-WCx"/> + <constraint firstItem="HmU-mL-Tjk" firstAttribute="top" secondItem="vak-Gp-ljo" secondAttribute="top" id="XE0-gE-X8v"/> + <constraint firstAttribute="trailing" secondItem="nXS-11-7iK" secondAttribute="trailing" id="kmc-KU-iRY"/> + <constraint firstAttribute="bottom" secondItem="nXS-11-7iK" secondAttribute="bottom" id="tpH-Q7-TH4"/> + <constraint firstItem="nXS-11-7iK" firstAttribute="top" secondItem="HmU-mL-Tjk" secondAttribute="bottom" id="w6G-g6-ZtO"/> + </constraints> + <visibilityPriorities> + <integer value="1000"/> + <integer value="1000"/> + </visibilityPriorities> + <customSpacing> + <real value="3.4028234663852886e+38"/> + <real value="3.4028234663852886e+38"/> + </customSpacing> + </stackView> + <scrollView wantsLayer="YES" borderType="none" autohidesScrollers="YES" horizontalLineScroll="10" horizontalPageScroll="10" verticalLineScroll="10" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="cFG-c9-cI9"> + <rect key="frame" x="0.0" y="0.0" width="242" height="808"/> <clipView key="contentView" id="tI4-x3-55j"> - <rect key="frame" x="0.0" y="0.0" width="242" height="291"/> + <rect key="frame" x="0.0" y="0.0" width="242" height="808"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <collectionView id="r7v-GI-W1U"> - <rect key="frame" x="0.0" y="0.0" width="242" height="158"/> + <rect key="frame" x="0.0" y="0.0" width="242" height="808"/> <autoresizingMask key="autoresizingMask" widthSizable="YES"/> <collectionViewFlowLayout key="collectionViewLayout" minimumInteritemSpacing="10" minimumLineSpacing="10" id="v0C-1b-7Ss"> <size key="itemSize" width="210" height="150"/> @@ -87,7 +139,7 @@ </subviews> </clipView> <scroller key="horizontalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="WUt-1y-tQd"> - <rect key="frame" x="1" y="143" width="240" height="16"/> + <rect key="frame" x="-100" y="-100" width="240" height="16"/> <autoresizingMask key="autoresizingMask"/> </scroller> <scroller key="verticalScroller" hidden="YES" wantsLayer="YES" verticalHuggingPriority="750" doubleValue="1" horizontal="NO" id="247-FY-ZXk"> @@ -98,21 +150,21 @@ </subviews> <constraints> <constraint firstAttribute="trailing" secondItem="cFG-c9-cI9" secondAttribute="trailing" id="0zl-H8-IAo"/> + <constraint firstItem="vak-Gp-ljo" firstAttribute="leading" secondItem="iSp-bV-w6B" secondAttribute="leading" id="7Kf-lr-a7P"/> <constraint firstItem="cFG-c9-cI9" firstAttribute="leading" secondItem="iSp-bV-w6B" secondAttribute="leading" id="8SS-VG-YAQ"/> - <constraint firstItem="nXS-11-7iK" firstAttribute="leading" secondItem="iSp-bV-w6B" secondAttribute="leading" id="SPv-yC-58y"/> - <constraint firstItem="nXS-11-7iK" firstAttribute="top" secondItem="iSp-bV-w6B" secondAttribute="top" id="Sje-VZ-Kcw"/> - <constraint firstAttribute="trailing" secondItem="nXS-11-7iK" secondAttribute="trailing" id="Tuh-vj-qaU"/> + <constraint firstAttribute="trailing" secondItem="vak-Gp-ljo" secondAttribute="trailing" id="JmX-Jh-gqa"/> + <constraint firstItem="vak-Gp-ljo" firstAttribute="top" secondItem="iSp-bV-w6B" secondAttribute="top" id="WPE-jF-WiQ"/> <constraint firstAttribute="bottom" secondItem="cFG-c9-cI9" secondAttribute="bottom" id="oAJ-yE-oGZ"/> - <constraint firstAttribute="bottom" secondItem="nXS-11-7iK" secondAttribute="bottom" id="piy-A4-FaO"/> <constraint firstItem="cFG-c9-cI9" firstAttribute="top" secondItem="iSp-bV-w6B" secondAttribute="top" id="wBq-BN-AMy"/> + <constraint firstAttribute="bottom" secondItem="vak-Gp-ljo" secondAttribute="bottom" id="x8Z-Ec-6sN"/> </constraints> </customView> - <customView id="dus-WQ-AmE"> - <rect key="frame" x="243" y="0.0" width="237" height="291"/> + <customView misplaced="YES" id="dus-WQ-AmE"> + <rect key="frame" x="243" y="0.0" width="237" height="808"/> <autoresizingMask key="autoresizingMask"/> <subviews> <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Vry-OZ-ySI"> - <rect key="frame" x="18" y="274" width="51" height="17"/> + <rect key="frame" x="18" y="791" width="51" height="17"/> <textFieldCell key="cell" lineBreakMode="clipping" title="Up next" id="7PB-pT-1Xp"> <font key="font" usesAppearanceFont="YES"/> <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/> @@ -120,16 +172,16 @@ </textFieldCell> </textField> <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="qmL-Ar-cj1"> - <rect key="frame" x="20" y="247" width="197" height="5"/> + <rect key="frame" x="20" y="764" width="197" height="5"/> </box> <scrollView borderType="none" autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10" verticalLineScroll="19" verticalPageScroll="10" hasHorizontalScroller="NO" usesPredominantAxisScrolling="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Z7y-D0-11Q"> - <rect key="frame" x="20" y="63" width="217" height="178"/> + <rect key="frame" x="20" y="63" width="217" height="695"/> <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Vdr-bg-tuS"> - <rect key="frame" x="0.0" y="0.0" width="217" height="178"/> + <rect key="frame" x="0.0" y="0.0" width="217" height="695"/> <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/> <subviews> <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="Fr1-af-8gb" customClass="VLCPlaylistTableView"> - <rect key="frame" x="0.0" y="0.0" width="217" height="178"/> + <rect key="frame" x="0.0" y="0.0" width="217" height="695"/> <autoresizingMask key="autoresizingMask"/> <size key="intercellSpacing" width="3" height="2"/> <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/> @@ -362,7 +414,7 @@ </constraints> </customView> <customView hidden="YES" translatesAutoresizingMaskIntoConstraints="NO" id="12s-0J-Uvj" customClass="VLCVoutView"> - <rect key="frame" x="0.0" y="36" width="480" height="291"/> + <rect key="frame" x="0.0" y="36" width="480" height="808"/> </customView> </subviews> <constraints> @@ -385,15 +437,17 @@ <connections> <outlet property="clearPlaylistButton" destination="cih-xp-HmY" id="PoU-co-0kn"/> <outlet property="clearPlaylistSeparator" destination="nAW-KH-ipk" id="Af9-fg-u7m"/> - <outlet property="libraryCollectionView" destination="B8x-e8-7zp" id="djF-Lw-nXT"/> <outlet property="mediaSourceCollectionView" destination="r7v-GI-W1U" id="3JJ-GU-o5o"/> <outlet property="mediaSourceScrollView" destination="cFG-c9-cI9" id="gRO-Y7-kdb"/> <outlet property="playlistTableView" destination="Fr1-af-8gb" id="yaB-Ab-jrx"/> + <outlet property="recentVideoLibraryCollectionView" destination="hnE-Hj-MZo" id="Fko-5v-1bC"/> <outlet property="repeatPlaylistButton" destination="8zF-Wo-H79" id="6bH-HF-arx"/> <outlet property="segmentedTitleControl" destination="W1M-0o-qYG" id="Gw1-T6-78k"/> <outlet property="shufflePlaylistButton" destination="jg5-33-vH0" id="FV2-36-3lG"/> <outlet property="upNextLabel" destination="Vry-OZ-ySI" id="KxM-oZ-tSg"/> <outlet property="upNextSeparator" destination="qmL-Ar-cj1" id="GRX-ZE-2UG"/> + <outlet property="videoLibraryCollectionView" destination="B8x-e8-7zp" id="u1I-gn-IU1"/> + <outlet property="videoLibraryStackView" destination="vak-Gp-ljo" id="ulu-pc-ctF"/> <outlet property="videoView" destination="12s-0J-Uvj" id="zTg-s0-qZ5"/> </connections> <point key="canvasLocation" x="139" y="204.5"/> diff --git a/modules/gui/macosx/library/VLCLibraryDataSource.h b/modules/gui/macosx/library/VLCLibraryDataSource.h index abb4daed9e..ab2dc75401 100644 --- a/modules/gui/macosx/library/VLCLibraryDataSource.h +++ b/modules/gui/macosx/library/VLCLibraryDataSource.h @@ -29,6 +29,8 @@ NS_ASSUME_NONNULL_BEGIN @interface VLCLibraryDataSource : NSObject <NSCollectionViewDataSource, NSCollectionViewDelegate> @property (readwrite, assign) VLCLibraryModel *libraryModel; +@property (readwrite, assign) NSCollectionView *recentMediaCollectionView; +@property (readwrite, assign) NSCollectionView *libraryMediaCollectionView; @end diff --git a/modules/gui/macosx/library/VLCLibraryDataSource.m b/modules/gui/macosx/library/VLCLibraryDataSource.m index 8f6d04726f..f57b19b374 100644 --- a/modules/gui/macosx/library/VLCLibraryDataSource.m +++ b/modules/gui/macosx/library/VLCLibraryDataSource.m @@ -34,7 +34,7 @@ - (NSInteger)collectionView:(NSCollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { - if (_libraryModel.numberOfRecentMedia && section == 0) { + if (collectionView == self.recentMediaCollectionView) { return [_libraryModel numberOfRecentMedia]; } @@ -55,7 +55,7 @@ - (NSInteger)numberOfSectionsInCollectionView:(NSCollectionView *)collectionView { - return _libraryModel.numberOfRecentMedia > 0 ? 2 : 1; + return 1; } - (NSCollectionViewItem *)collectionView:(NSCollectionView *)collectionView @@ -64,7 +64,7 @@ VLCLibraryCollectionViewItem *viewItem = [collectionView makeItemWithIdentifier:VLCLibraryCellIdentifier forIndexPath:indexPath]; NSArray *mediaArray; - if (indexPath.section == 0 && _libraryModel.numberOfRecentMedia > 0) { + if (collectionView == self.recentMediaCollectionView) { mediaArray = [_libraryModel listOfRecentMedia]; } else { switch (_libraryModel.libraryMode) { @@ -95,7 +95,7 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind VLCLibraryCollectionViewSupplementaryElementView *view = [collectionView makeSupplementaryViewOfKind:kind withIdentifier:VLCLibrarySupplementaryElementViewIdentifier forIndexPath:indexPath]; - if (indexPath.section == 0 && _libraryModel.numberOfRecentMedia > 0) { + if (collectionView == self.recentMediaCollectionView) { view.stringValue = _NS("Recent"); } else { view.stringValue = _NS("Library"); diff --git a/modules/gui/macosx/library/VLCLibraryModel.m b/modules/gui/macosx/library/VLCLibraryModel.m index e8bac59ba4..23c302de8a 100644 --- a/modules/gui/macosx/library/VLCLibraryModel.m +++ b/modules/gui/macosx/library/VLCLibraryModel.m @@ -211,7 +211,10 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event) - (void)updateCachedListOfRecentMedia { - vlc_ml_media_list_t *p_media_list = vlc_ml_list_history(_p_mediaLibrary, NULL); + vlc_ml_query_params_t queryParameters; + memset(&queryParameters, 0, sizeof(vlc_ml_query_params_t)); + queryParameters.i_nbResults = 20; + vlc_ml_media_list_t *p_media_list = vlc_ml_list_history(_p_mediaLibrary, &queryParameters); if (p_media_list == NULL) { return; } diff --git a/modules/gui/macosx/library/VLCLibraryWindow.h b/modules/gui/macosx/library/VLCLibraryWindow.h index 18f5f7b7a3..df65de2363 100644 --- a/modules/gui/macosx/library/VLCLibraryWindow.h +++ b/modules/gui/macosx/library/VLCLibraryWindow.h @@ -36,7 +36,9 @@ NS_ASSUME_NONNULL_BEGIN @interface VLCLibraryWindow : VLCVideoWindowCommon @property (readwrite, weak) IBOutlet NSSegmentedControl *segmentedTitleControl; -@property (readwrite, weak) IBOutlet VLCLibraryCollectionView *libraryCollectionView; +@property (readwrite, weak) IBOutlet NSStackView *videoLibraryStackView; +@property (readwrite, weak) IBOutlet VLCLibraryCollectionView *videoLibraryCollectionView; +@property (readwrite, weak) IBOutlet NSCollectionView *recentVideoLibraryCollectionView; @property (readwrite, weak) IBOutlet NSCollectionView *mediaSourceCollectionView; @property (readwrite, weak) IBOutlet NSScrollView *mediaSourceScrollView; @property (readwrite, weak) IBOutlet NSTableView *playlistTableView; diff --git a/modules/gui/macosx/library/VLCLibraryWindow.m b/modules/gui/macosx/library/VLCLibraryWindow.m index f3d754e024..db3749bc38 100644 --- a/modules/gui/macosx/library/VLCLibraryWindow.m +++ b/modules/gui/macosx/library/VLCLibraryWindow.m @@ -128,13 +128,18 @@ static const float f_playlist_row_height = 72.; _libraryDataSource = [[VLCLibraryDataSource alloc] init]; _libraryDataSource.libraryModel = mainInstance.libraryController.libraryModel; - _libraryCollectionView.dataSource = _libraryDataSource; - _libraryCollectionView.delegate = _libraryDataSource; - [_libraryCollectionView registerClass:[VLCLibraryCollectionViewItem class] forItemWithIdentifier:VLCLibraryCellIdentifier]; - [_libraryCollectionView registerClass:[VLCLibraryCollectionViewSupplementaryElementView class] + _libraryDataSource.recentMediaCollectionView = _recentVideoLibraryCollectionView; + _libraryDataSource.libraryMediaCollectionView = _videoLibraryCollectionView; + _videoLibraryCollectionView.dataSource = _libraryDataSource; + _videoLibraryCollectionView.delegate = _libraryDataSource; + [_videoLibraryCollectionView registerClass:[VLCLibraryCollectionViewItem class] forItemWithIdentifier:VLCLibraryCellIdentifier]; + [_videoLibraryCollectionView registerClass:[VLCLibraryCollectionViewSupplementaryElementView class] forSupplementaryViewOfKind:NSCollectionElementKindSectionHeader withIdentifier:VLCLibrarySupplementaryElementViewIdentifier]; - [(NSCollectionViewFlowLayout *)_libraryCollectionView.collectionViewLayout setHeaderReferenceSize:[VLCLibraryCollectionViewSupplementaryElementView defaultHeaderSize]]; + [(NSCollectionViewFlowLayout *)_videoLibraryCollectionView.collectionViewLayout setHeaderReferenceSize:[VLCLibraryCollectionViewSupplementaryElementView defaultHeaderSize]]; + _recentVideoLibraryCollectionView.dataSource = _libraryDataSource; + _recentVideoLibraryCollectionView.delegate = _libraryDataSource; + [_recentVideoLibraryCollectionView registerClass:[VLCLibraryCollectionViewItem class] forItemWithIdentifier:VLCLibraryCellIdentifier]; _mediaSourceDataSource = [[VLCMediaSourceDataSource alloc] init]; _mediaSourceDataSource.collectionView = _mediaSourceCollectionView; @@ -252,20 +257,22 @@ static const float f_playlist_row_height = 72.; case 0: _libraryDataSource.libraryModel.libraryMode = VLCLibraryModeVideo; _mediaSourceScrollView.hidden = YES; - _libraryCollectionView.hidden = NO; - [_libraryCollectionView reloadData]; + _videoLibraryStackView.hidden = NO; + [_videoLibraryCollectionView reloadData]; + [_recentVideoLibraryCollectionView reloadData]; break; case 1: _libraryDataSource.libraryModel.libraryMode = VLCLibraryModeAudio; _mediaSourceScrollView.hidden = YES; - _libraryCollectionView.hidden = NO; - [_libraryCollectionView reloadData]; + _videoLibraryStackView.hidden = NO; + [_videoLibraryCollectionView reloadData]; + [_recentVideoLibraryCollectionView reloadData]; break; default: _mediaSourceScrollView.hidden = NO; - _libraryCollectionView.hidden = YES; + _videoLibraryStackView.hidden = YES; [_mediaSourceDataSource loadMediaSources]; [_mediaSourceCollectionView reloadData]; break; @@ -342,7 +349,8 @@ static const float f_playlist_row_height = 72.; #pragma mark - library representation and interaction - (void)updateLibraryRepresentation:(NSNotification *)aNotification { - [_libraryCollectionView reloadData]; + [_videoLibraryCollectionView reloadData]; + [_recentVideoLibraryCollectionView reloadData]; } #pragma mark - _______________________________________________ vlc-commits mailing list vlc-commits@videolan.org https://mailman.videolan.org/listinfo/vlc-commits