Steve Lhomme pushed to branch master at VideoLAN / VLC
Commits:
34368e61 by Claudio Cambra at 2022-11-13T15:21:31+00:00
macosx: Add video library table view components in XIB
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
54ee283d by Claudio Cambra at 2022-11-13T15:21:31+00:00
macosx: Add video library table view to library
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
88998fd0 by Claudio Cambra at 2022-11-13T15:21:31+00:00
macosx: Give video library table views consistent insets
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
7 changed files:
- modules/gui/macosx/UI/VLCLibraryWindow.xib
- modules/gui/macosx/library/VLCLibraryTableCellView.h
- modules/gui/macosx/library/VLCLibraryTableCellView.m
- modules/gui/macosx/library/VLCLibraryVideoDataSource.h
- modules/gui/macosx/library/VLCLibraryVideoDataSource.m
- modules/gui/macosx/library/VLCLibraryWindow.h
- modules/gui/macosx/library/VLCLibraryWindow.m
Changes:
=====================================
modules/gui/macosx/UI/VLCLibraryWindow.xib
=====================================
@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0"
toolsVersion="20037" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"
useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0"
toolsVersion="21507" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none"
useAutolayout="YES">
<dependencies>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin"
version="20037"/>
+ <deployment identifier="macosx"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin"
version="21507"/>
<capability name="Search Toolbar Item" minToolsVersion="12.0"
minSystemVersion="11.0"/>
<capability name="System colors introduced in macOS 10.14"
minToolsVersion="10.0"/>
<capability name="documents saved in the Xcode 8 format"
minToolsVersion="8.0"/>
@@ -18,24 +19,24 @@
<windowStyleMask key="styleMask" titled="YES" closable="YES"
miniaturizable="YES" resizable="YES"/>
<windowPositionMask key="initialPositionMask" leftStrut="YES"
rightStrut="YES" topStrut="YES" bottomStrut="YES"/>
<rect key="contentRect" x="196" y="240" width="896" height="456"/>
- <rect key="screenRect" x="0.0" y="0.0" width="1920" height="1055"/>
+ <rect key="screenRect" x="0.0" y="0.0" width="2560" height="1055"/>
<visualEffectView key="contentView" wantsLayer="YES"
misplaced="YES" blendingMode="behindWindow" material="appearanceBased"
state="followsWindowActiveState" id="EiT-Mj-1SZ">
<rect key="frame" x="0.0" y="0.0" width="896" height="456"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES"
heightSizable="YES"/>
<subviews>
<splitView autosaveName="librarywindowsplitview"
dividerStyle="thin" vertical="YES"
translatesAutoresizingMaskIntoConstraints="NO" id="u8g-jy-S4e">
- <rect key="frame" x="0.0" y="81" width="896"
height="138"/>
+ <rect key="frame" x="0.0" y="81" width="896"
height="134"/>
<subviews>
<customView misplaced="YES" id="iSp-bV-w6B"
customClass="VLCBasicView">
- <rect key="frame" x="0.0" y="0.0" width="598"
height="138"/>
+ <rect key="frame" x="0.0" y="0.0" width="598"
height="134"/>
<autoresizingMask key="autoresizingMask"
flexibleMaxX="YES" flexibleMaxY="YES"/>
</customView>
<customView misplaced="YES" id="dus-WQ-AmE">
- <rect key="frame" x="599" y="0.0" width="297"
height="138"/>
+ <rect key="frame" x="599" y="0.0" width="297"
height="134"/>
<autoresizingMask key="autoresizingMask"
flexibleMaxX="YES" flexibleMaxY="YES"/>
<subviews>
<textField horizontalHuggingPriority="251"
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO"
id="TET-5r-zHx">
- <rect key="frame" x="18" y="97"
width="66" height="31"/>
+ <rect key="frame" x="18" y="92"
width="66" height="31"/>
<textFieldCell key="cell"
lineBreakMode="clipping" title="Label" id="fo5-R8-TeO">
<font key="font"
textStyle="largeTitle" name=".SFNS-Regular"/>
<color key="textColor"
name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -43,7 +44,7 @@
</textFieldCell>
</textField>
<textField horizontalHuggingPriority="251"
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO"
id="mbV-My-cm7" customClass="VLCRoundedCornerTextField">
- <rect key="frame" x="153" y="105"
width="37" height="16"/>
+ <rect key="frame" x="153" y="100"
width="37" height="16"/>
<textFieldCell key="cell"
lineBreakMode="clipping" title="Label" id="4hq-fU-NXW">
<font key="font"
metaFont="message"/>
<color key="textColor"
name="labelColor" catalog="System" colorSpace="catalog"/>
@@ -51,12 +52,12 @@
</textFieldCell>
</textField>
<box verticalHuggingPriority="750"
boxType="separator" translatesAutoresizingMaskIntoConstraints="NO"
id="qmL-Ar-cj1">
- <rect key="frame" x="20" y="87"
width="168" height="5"/>
+ <rect key="frame" x="20" y="82"
width="168" 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="0.0" y="63"
width="208" height="18"/>
+ <rect key="frame" x="0.0" y="62"
width="208" height="14"/>
<clipView key="contentView"
drawsBackground="NO" copiesOnScroll="NO" id="Vdr-bg-tuS">
- <rect key="frame" x="0.0" y="0.0"
width="208" height="18"/>
+ <rect key="frame" x="0.0" y="0.0"
width="208" height="14"/>
<autoresizingMask
key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<tableView
verticalHuggingPriority="750" allowsExpansionToolTips="YES"
columnAutoresizingStyle="lastColumnOnly" multipleSelection="NO"
autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="Fr1-af-8gb"
customClass="VLCPlaylistTableView">
@@ -121,10 +122,10 @@
</scroller>
</scrollView>
<box verticalHuggingPriority="750"
boxType="separator" translatesAutoresizingMaskIntoConstraints="NO"
id="nAW-KH-ipk">
- <rect key="frame" x="20" y="52"
width="168" height="5"/>
+ <rect key="frame" x="20" y="51"
width="168" height="5"/>
</box>
<button verticalHuggingPriority="750"
translatesAutoresizingMaskIntoConstraints="NO" id="jg5-33-vH0">
- <rect key="frame" x="20" y="15"
width="24" height="24"/>
+ <rect key="frame" x="20" y="14"
width="24" height="24"/>
<buttonCell key="cell" type="square"
bezelStyle="shadowlessSquare" image="shuffleOn" imagePosition="only"
alignment="center" imageScaling="proportionallyDown" inset="2" id="J31-h3-U4s">
<behavior key="behavior"
pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font"
metaFont="system"/>
@@ -134,7 +135,7 @@
</connections>
</button>
<button verticalHuggingPriority="750"
translatesAutoresizingMaskIntoConstraints="NO" id="8zF-Wo-H79">
- <rect key="frame" x="64" y="15"
width="24" height="24"/>
+ <rect key="frame" x="64" y="14"
width="24" height="24"/>
<buttonCell key="cell" type="square"
bezelStyle="shadowlessSquare" image="repeatOff" imagePosition="only"
alignment="center" imageScaling="proportionallyDown" inset="2" id="ol2-xi-TEm">
<behavior key="behavior"
pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font"
metaFont="system"/>
@@ -144,7 +145,7 @@
</connections>
</button>
<button verticalHuggingPriority="750"
translatesAutoresizingMaskIntoConstraints="NO" id="cih-xp-HmY">
- <rect key="frame" x="173" y="12"
width="15" height="17"/>
+ <rect key="frame" x="174" y="11"
width="14.5" height="17"/>
<buttonCell key="cell" type="square"
bezelStyle="shadowlessSquare" image="trash" catalog="system"
imagePosition="only" alignment="center" imageScaling="proportionallyDown"
inset="2" id="OjM-W9-IrQ">
<behavior key="behavior"
pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font"
metaFont="system"/>
@@ -154,10 +155,10 @@
</connections>
</button>
<customView hidden="YES"
translatesAutoresizingMaskIntoConstraints="NO" id="VFI-oW-dMZ"
customClass="VLCDragDropView">
- <rect key="frame" x="0.0" y="55"
width="208" height="34"/>
+ <rect key="frame" x="0.0" y="54"
width="208" height="30"/>
<subviews>
<box boxType="custom"
borderType="line" borderWidth="0.0" cornerRadius="10" titlePosition="noTitle"
translatesAutoresizingMaskIntoConstraints="NO" id="AXk-h7-dZ0">
- <rect key="frame" x="37"
y="-50" width="134" height="134"/>
+ <rect key="frame" x="37"
y="-52" width="134" height="134"/>
<view key="contentView"
id="NSp-cB-V4X">
<rect key="frame" x="0.0"
y="0.0" width="134" height="134"/>
<autoresizingMask
key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
@@ -165,7 +166,7 @@
<color key="borderColor"
name="separatorColor" catalog="System" colorSpace="catalog"/>
</box>
<imageView
translatesAutoresizingMaskIntoConstraints="NO" id="cTV-Wf-TfJ"
customClass="VLCDropDisabledImageView">
- <rect key="frame" x="48"
y="-39" width="112" height="112"/>
+ <rect key="frame" x="48"
y="-41" width="112" height="112"/>
<constraints>
<constraint
firstAttribute="width" constant="112" id="IvG-i0-rbs"/>
<constraint
firstAttribute="height" constant="112" id="dO8-Iv-pDk"/>
@@ -173,7 +174,7 @@
<imageCell key="cell"
refusesFirstResponder="YES" alignment="left" imageScaling="proportionallyDown"
image="dropzone" id="sHO-XQ-hCU"/>
</imageView>
<button wantsLayer="YES"
verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO"
id="SWh-4E-Qtf">
- <rect key="frame" x="44"
y="-76" width="120" height="32"/>
+ <rect key="frame" x="44"
y="-89" width="120" height="32"/>
<buttonCell key="cell"
type="push" title="Open media..." bezelStyle="rounded" alignment="center"
borderStyle="border" imageScaling="proportionallyDown" inset="2"
id="UUH-HF-Iqc">
<behavior key="behavior"
pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font"
metaFont="system"/>
@@ -195,7 +196,7 @@
</constraints>
</customView>
<button verticalHuggingPriority="750"
translatesAutoresizingMaskIntoConstraints="NO" id="244-FS-P3T">
- <rect key="frame" x="146" y="15"
width="17" height="10"/>
+ <rect key="frame" x="148" y="14"
width="16" height="10"/>
<buttonCell key="cell" type="square"
bezelStyle="shadowlessSquare" image="line.horizontal.3.decrease"
catalog="system" imagePosition="only" alignment="center"
imageScaling="proportionallyDown" inset="2" id="qDZ-84-3uy">
<behavior key="behavior"
pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
<font key="font"
metaFont="system"/>
@@ -725,7 +726,12 @@
<outlet property="upNextLabel" destination="TET-5r-zHx"
id="3oI-LK-NDP"/>
<outlet property="upNextSeparator" destination="qmL-Ar-cj1"
id="GRX-ZE-2UG"/>
<outlet property="videoLibraryCollectionView"
destination="B8x-e8-7zp" id="u1I-gn-IU1"/>
- <outlet property="videoLibraryScrollView"
destination="nXS-11-7iK" id="v1d-30-scr"/>
+ <outlet property="videoLibraryCollectionViewScrollView"
destination="nXS-11-7iK" id="v1d-30-scr"/>
+ <outlet property="videoLibraryGroupSelectionTableView"
destination="8M4-Y1-r6Z" id="5e1-v1-eW3"/>
+ <outlet
property="videoLibraryGroupSelectionTableViewScrollView"
destination="Z0p-XI-Rpc" id="s3l-Sc-Rv1"/>
+ <outlet property="videoLibraryGroupsTableView"
destination="ceR-Vd-9ss" id="gr0-Up-5v1"/>
+ <outlet property="videoLibraryGroupsTableViewScrollView"
destination="2qT-6I-UhL" id="scr-G1-5v1"/>
+ <outlet property="videoLibrarySplitView"
destination="Lfx-Wq-a7c" id="v1d-Sp-l1t"/>
<outlet property="videoLibraryView" destination="vak-Gp-ljo"
id="ulu-pc-ctF"/>
</connections>
<point key="canvasLocation" x="-609" y="325"/>
@@ -757,6 +763,132 @@
<rect key="frame" x="0.0" y="0.0" width="869" height="808"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES"
flexibleMinY="YES"/>
<subviews>
+ <splitView dividerStyle="thin" vertical="YES"
translatesAutoresizingMaskIntoConstraints="NO" id="Lfx-Wq-a7c">
+ <rect key="frame" x="0.0" y="0.0" width="869"
height="808"/>
+ <subviews>
+ <scrollView fixedFrame="YES" borderType="none"
autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10"
verticalLineScroll="19" verticalPageScroll="10"
usesPredominantAxisScrolling="NO" id="2qT-6I-UhL">
+ <rect key="frame" x="0.0" y="0.0" width="230"
height="808"/>
+ <autoresizingMask key="autoresizingMask"
flexibleMaxX="YES" flexibleMinY="YES"/>
+ <clipView key="contentView" id="OqR-YY-weT">
+ <rect key="frame" x="0.0" y="0.0" width="230"
height="808"/>
+ <autoresizingMask key="autoresizingMask"
widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <tableView verticalHuggingPriority="750"
allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly"
columnReordering="NO" columnSelection="YES" multipleSelection="NO"
autosaveColumns="NO" viewBased="YES" id="ceR-Vd-9ss"
customClass="VLCLibraryTableView">
+ <rect key="frame" x="0.0" y="0.0"
width="230" height="808"/>
+ <autoresizingMask
key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <size key="intercellSpacing" width="3"
height="2"/>
+ <color key="backgroundColor"
name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+ <color key="gridColor"
name="gridColor" catalog="System" colorSpace="catalog"/>
+ <tableColumns>
+ <tableColumn width="198"
minWidth="40" maxWidth="1000" id="h0x-OK-h6s">
+ <tableHeaderCell
key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
+ <color key="textColor"
name="headerTextColor" catalog="System" colorSpace="catalog"/>
+ <color
key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
+ </tableHeaderCell>
+ <textFieldCell key="dataCell"
lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text
Cell" id="LAT-WI-Xj8">
+ <font key="font"
metaFont="message"/>
+ <color key="textColor"
name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color
key="backgroundColor" name="controlBackgroundColor" catalog="System"
colorSpace="catalog"/>
+ </textFieldCell>
+ <tableColumnResizingMask
key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
+ <prototypeCellViews>
+ <tableCellView
id="yeD-Hr-oWG">
+ <rect key="frame"
x="11" y="1" width="207" height="17"/>
+ <autoresizingMask
key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField
verticalHuggingPriority="750" horizontalCompressionResistancePriority="250"
fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="slR-cz-G24">
+ <rect
key="frame" x="0.0" y="0.0" width="207" height="17"/>
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell
key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES"
title="Table View Cell" id="R8G-B2-6aL">
+ <font
key="font" metaFont="message"/>
+ <color
key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color
key="backgroundColor" name="controlColor" catalog="System"
colorSpace="catalog"/>
+
</textFieldCell>
+ </textField>
+ </subviews>
+ <connections>
+ <outlet
property="textField" destination="slR-cz-G24" id="JaF-DG-8S4"/>
+ </connections>
+ </tableCellView>
+ </prototypeCellViews>
+ </tableColumn>
+ </tableColumns>
+ </tableView>
+ </subviews>
+ </clipView>
+ <scroller key="horizontalScroller" hidden="YES"
wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="UhD-30-0Fo">
+ <rect key="frame" x="0.0" y="793" width="0.0"
height="15"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ <scroller key="verticalScroller" hidden="YES"
wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="kXc-KH-Gjr">
+ <rect key="frame" x="224" y="17" width="15"
height="102"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ </scrollView>
+ <scrollView fixedFrame="YES" borderType="none"
autohidesScrollers="YES" horizontalLineScroll="17" horizontalPageScroll="10"
verticalLineScroll="17" verticalPageScroll="10"
usesPredominantAxisScrolling="NO" id="Z0p-XI-Rpc">
+ <rect key="frame" x="231" y="0.0" width="638"
height="808"/>
+ <autoresizingMask key="autoresizingMask"
flexibleMaxX="YES" flexibleMinY="YES"/>
+ <clipView key="contentView" id="0td-vX-CFl">
+ <rect key="frame" x="0.0" y="0.0" width="638"
height="808"/>
+ <autoresizingMask key="autoresizingMask"
widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <tableView verticalHuggingPriority="750"
allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly"
tableStyle="fullWidth" columnReordering="NO" multipleSelection="NO"
autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="8M4-Y1-r6Z"
customClass="VLCLibraryTableView">
+ <rect key="frame" x="0.0" y="0.0"
width="638" height="808"/>
+ <autoresizingMask
key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <color key="backgroundColor"
name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+ <color key="gridColor"
name="gridColor" catalog="System" colorSpace="catalog"/>
+ <tableColumns>
+ <tableColumn width="626"
minWidth="40" maxWidth="1000000000" id="uqe-vB-Lop">
+ <tableHeaderCell
key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
+ <color key="textColor"
name="headerTextColor" catalog="System" colorSpace="catalog"/>
+ <color
key="backgroundColor" name="headerColor" catalog="System" colorSpace="catalog"/>
+ </tableHeaderCell>
+ <textFieldCell key="dataCell"
lineBreakMode="truncatingTail" selectable="YES" editable="YES" title="Text
Cell" id="3T6-qx-RD9">
+ <font key="font"
metaFont="message"/>
+ <color key="textColor"
name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color
key="backgroundColor" name="controlBackgroundColor" catalog="System"
colorSpace="catalog"/>
+ </textFieldCell>
+ <tableColumnResizingMask
key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
+ <prototypeCellViews>
+ <tableCellView
id="bnl-B4-g8K">
+ <rect key="frame"
x="0.0" y="0.0" width="638" height="17"/>
+ <autoresizingMask
key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
+ <subviews>
+ <textField
verticalHuggingPriority="750" horizontalCompressionResistancePriority="250"
fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="KJi-8r-ShG">
+ <rect
key="frame" x="0.0" y="0.0" width="638" height="17"/>
+
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
+ <textFieldCell
key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES"
title="Table View Cell" id="Nwj-mx-58a">
+ <font
key="font" metaFont="message"/>
+ <color
key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color
key="backgroundColor" name="controlColor" catalog="System"
colorSpace="catalog"/>
+
</textFieldCell>
+ </textField>
+ </subviews>
+ <connections>
+ <outlet
property="textField" destination="KJi-8r-ShG" id="tOo-5h-8le"/>
+ </connections>
+ </tableCellView>
+ </prototypeCellViews>
+ </tableColumn>
+ </tableColumns>
+ </tableView>
+ </subviews>
+ </clipView>
+ <scroller key="horizontalScroller" hidden="YES"
wantsLayer="YES" verticalHuggingPriority="750" horizontal="YES" id="qEj-rH-pwQ">
+ <rect key="frame" x="0.0" y="375" width="4"
height="15"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ <scroller key="verticalScroller" hidden="YES"
wantsLayer="YES" verticalHuggingPriority="750" horizontal="NO" id="qO5-pP-Mej">
+ <rect key="frame" x="224" y="17" width="15"
height="102"/>
+ <autoresizingMask key="autoresizingMask"/>
+ </scroller>
+ </scrollView>
+ </subviews>
+ <holdingPriorities>
+ <real value="250"/>
+ <real value="250"/>
+ </holdingPriorities>
+ </splitView>
<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="869"
height="808"/>
<clipView key="contentView" copiesOnScroll="NO"
id="OKa-dt-1yY">
@@ -788,7 +920,11 @@
<constraints>
<constraint firstItem="nXS-11-7iK" firstAttribute="top"
secondItem="vak-Gp-ljo" secondAttribute="top" id="KNa-C4-CIY"/>
<constraint firstItem="nXS-11-7iK" firstAttribute="leading"
secondItem="vak-Gp-ljo" secondAttribute="leading" id="LP8-Hf-WCx"/>
+ <constraint firstItem="Lfx-Wq-a7c" firstAttribute="top"
secondItem="vak-Gp-ljo" secondAttribute="top" id="SC1-l6-nTO"/>
+ <constraint firstItem="Lfx-Wq-a7c" firstAttribute="leading"
secondItem="vak-Gp-ljo" secondAttribute="leading" id="aaz-JM-Edt"/>
<constraint firstAttribute="trailing" secondItem="nXS-11-7iK"
secondAttribute="trailing" id="kmc-KU-iRY"/>
+ <constraint firstAttribute="bottom" secondItem="Lfx-Wq-a7c"
secondAttribute="bottom" id="n0b-r7-3FH"/>
+ <constraint firstAttribute="trailing" secondItem="Lfx-Wq-a7c"
secondAttribute="trailing" id="nCg-WG-I3Y"/>
<constraint firstAttribute="bottom" secondItem="nXS-11-7iK"
secondAttribute="bottom" id="tpH-Q7-TH4"/>
</constraints>
<point key="canvasLocation" x="748.5" y="10"/>
@@ -981,7 +1117,7 @@
<autoresizingMask key="autoresizingMask"/>
</scroller>
</scrollView>
- <scrollView fixedFrame="YES" borderType="none"
autohidesScrollers="YES" horizontalLineScroll="19" horizontalPageScroll="10"
verticalLineScroll="19" verticalPageScroll="10"
usesPredominantAxisScrolling="NO" id="Jmx-bp-HDp">
+ <scrollView fixedFrame="YES" borderType="none"
autohidesScrollers="YES" horizontalLineScroll="17" horizontalPageScroll="10"
verticalLineScroll="17" verticalPageScroll="10"
usesPredominantAxisScrolling="NO" id="Jmx-bp-HDp">
<rect key="frame" x="313" y="0.0" width="401"
height="390"/>
<autoresizingMask key="autoresizingMask"
flexibleMaxX="YES" flexibleMinY="YES"/>
<clipView key="contentView" id="xCC-h9-931">
@@ -1007,11 +1143,11 @@
<tableColumnResizingMask
key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
<prototypeCellViews>
<tableCellView
id="iSk-Qz-DTG">
- <rect key="frame"
x="11" y="1" width="378" height="17"/>
+ <rect key="frame"
x="0.0" y="0.0" width="401" height="17"/>
<autoresizingMask
key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
<subviews>
<textField
verticalHuggingPriority="750" horizontalCompressionResistancePriority="250"
fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="6ht-Tg-XJ9">
- <rect
key="frame" x="0.0" y="0.0" width="378" height="17"/>
+ <rect
key="frame" x="0.0" y="0.0" width="401" height="17"/>
<autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
<textFieldCell
key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES"
title="Table View Cell" id="dbf-tg-Ss3">
<font
key="font" metaFont="message"/>
@@ -1126,21 +1262,21 @@
</customView>
</objects>
<resources>
- <image name="NSHomeTemplate" width="20" height="16"/>
- <image name="NSIconViewTemplate" width="16" height="14"/>
- <image name="NSLeftFacingTriangleTemplate" width="10" height="14"/>
- <image name="NSListViewTemplate" width="17" height="12"/>
- <image name="NSRightFacingTriangleTemplate" width="10" height="14"/>
+ <image name="NSHomeTemplate" width="24" height="21"/>
+ <image name="NSIconViewTemplate" width="19" height="18"/>
+ <image name="NSLeftFacingTriangleTemplate" width="12" height="17"/>
+ <image name="NSListViewTemplate" width="21" height="15"/>
+ <image name="NSRightFacingTriangleTemplate" width="12" height="17"/>
<image name="VLC" width="512" height="512"/>
<image name="VLCBackwardTemplate" width="128" height="128"/>
<image name="VLCForwardTemplate" width="128" height="128"/>
- <image name="arrow.up.arrow.down" catalog="system" width="19"
height="15"/>
+ <image name="arrow.up.arrow.down" catalog="system" width="18"
height="15"/>
<image name="dropzone" width="112" height="112"/>
<image name="fullscreen-one-button" width="29" height="23"/>
<image name="fullscreen-one-button-pressed" width="29" height="23"/>
<image name="libraryPlay" width="64" height="64"/>
- <image name="line.horizontal.3.decrease" catalog="system" width="17"
height="10"/>
- <image name="music.note.list" catalog="system" width="17" height="15"/>
+ <image name="line.horizontal.3.decrease" catalog="system" width="16"
height="10"/>
+ <image name="music.note.list" catalog="system" width="16" height="15"/>
<image name="repeatOff" width="24" height="24"/>
<image name="shuffleOn" width="24" height="24"/>
<image name="stop" width="29" height="23"/>
=====================================
modules/gui/macosx/library/VLCLibraryTableCellView.h
=====================================
@@ -40,6 +40,7 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, strong, nonatomic) id<VLCMediaLibraryItemProtocol>
representedItem;
@property (readwrite, strong, nonatomic) VLCInputItem *representedInputItem;
+@property (readwrite, nonatomic) NSUInteger representedVideoLibrarySection;
@end
=====================================
modules/gui/macosx/library/VLCLibraryTableCellView.m
=====================================
@@ -21,13 +21,16 @@
*****************************************************************************/
#import "VLCLibraryTableCellView.h"
+
#import "extensions/NSFont+VLCAdditions.h"
+#import "extensions/NSString+Helpers.h"
#import "views/VLCImageView.h"
#import "views/VLCTrackingView.h"
#import "main/VLCMain.h"
#import "library/VLCLibraryController.h"
#import "library/VLCLibraryDataTypes.h"
#import "library/VLCInputItem.h"
+#import "library/VLCLibraryVideoDataSource.h"
#import "playlist/VLCPlaylistController.h"
@implementation VLCLibraryTableCellView
@@ -92,6 +95,26 @@
self.playInstantlyButton.target = self;
}
+- (void)setRepresentedVideoLibrarySection:(NSUInteger)section
+{
+ NSString *sectionString = @"";
+ switch(section) {
+ case VLCVideoLibraryRecentsSection:
+ sectionString = _NS("Recents");
+ break;
+ case VLCVideoLibraryLibrarySection:
+ sectionString = _NS("Library");
+ break;
+ default:
+ NSAssert(1, @"Reached unreachable case for video library section");
+ break;
+ }
+
+ self.singlePrimaryTitleTextField.hidden = NO;
+ self.singlePrimaryTitleTextField.stringValue = sectionString;
+ self.representedImageView.image = [NSImage imageNamed: @"noart.png"];
+}
+
- (NSImage *)imageForInputItem
{
NSImage *image;
=====================================
modules/gui/macosx/library/VLCLibraryVideoDataSource.h
=====================================
@@ -22,6 +22,8 @@
#import <Cocoa/Cocoa.h>
+#import "VLCLibraryTableView.h"
+
typedef NS_ENUM(NSUInteger, VLCVideoLibrarySection) {
VLCVideoLibraryRecentsSection = 0,
VLCVideoLibraryLibrarySection,
@@ -31,12 +33,14 @@ NS_ASSUME_NONNULL_BEGIN
@class VLCLibraryModel;
-@interface VLCLibraryVideoDataSource : NSObject <NSCollectionViewDataSource,
NSCollectionViewDelegate>
+@interface VLCLibraryVideoDataSource : NSObject <NSTableViewDataSource,
NSTableViewDelegate, NSCollectionViewDataSource, NSCollectionViewDelegate>
@property (readwrite, assign) VLCLibraryModel *libraryModel;
@property (readwrite, assign) NSCollectionView *libraryMediaCollectionView;
+@property (readwrite, assign) NSTableView *groupsTableView;
+@property (readwrite, assign) NSTableView *groupSelectionTableView;
-- (void)setupAppearance;
+- (void)setup;
- (void)reloadData;
@end
=====================================
modules/gui/macosx/library/VLCLibraryVideoDataSource.m
=====================================
@@ -28,11 +28,12 @@
#import "library/VLCLibraryCollectionViewSupplementaryElementView.h"
#import "library/VLCLibraryModel.h"
#import "library/VLCLibraryDataTypes.h"
+#import "library/VLCLibraryTableCellView.h"
#import "main/CompatibilityFixes.h"
#import "extensions/NSString+Helpers.h"
-@interface VLCLibraryVideoDataSource () <NSCollectionViewDelegate,
NSCollectionViewDataSource>
+@interface VLCLibraryVideoDataSource ()
{
NSArray *_recentsArray;
NSArray *_libraryArray;
@@ -77,10 +78,18 @@
_recentsArray = [_libraryModel listOfRecentMedia];
_libraryArray = [_libraryModel listOfVideoMedia];
[_libraryMediaCollectionView reloadData];
+ [_groupsTableView reloadData];
+ [_groupSelectionTableView reloadData];
});
}
-- (void)setupAppearance
+- (void)setup
+{
+ [self setupCollectionView];
+ [self setupTableViews];
+}
+
+- (void)setupCollectionView
{
_libraryMediaCollectionView.dataSource = self;
_libraryMediaCollectionView.delegate = self;
@@ -100,6 +109,19 @@
_libraryMediaCollectionView.collectionViewLayout =
_collectionViewFlowLayout;
}
+- (void)setupTableViews
+{
+ _groupsTableView.dataSource = self;
+ _groupsTableView.delegate = self;
+ _groupsTableView.target = self;
+
+ _groupSelectionTableView.dataSource = self;
+ _groupSelectionTableView.delegate = self;
+ _groupSelectionTableView.target = self;
+}
+
+#pragma mark - collection view data source and delegation
+
- (NSInteger)collectionView:(NSCollectionView *)collectionView
numberOfItemsInSection:(NSInteger)section
{
@@ -111,8 +133,10 @@
case VLCVideoLibraryRecentsSection:
return [_libraryModel numberOfRecentMedia];
case VLCVideoLibraryLibrarySection:
- default:
return [_libraryModel numberOfVideoMedia];
+ default:
+ NSAssert(1, @"Reached unreachable case for video library section");
+ break;
}
}
@@ -131,9 +155,11 @@
viewItem.representedItem = _recentsArray[indexPath.item];
break;
case VLCVideoLibraryLibrarySection:
- default:
viewItem.representedItem = _libraryArray[indexPath.item];
break;
+ default:
+ NSAssert(1, @"Reached unreachable case for video library section");
+ break;
}
return viewItem;
@@ -173,9 +199,11 @@
viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
sectionHeadingView.stringValue = _NS("Recent");
break;
case VLCVideoLibraryLibrarySection:
- default:
sectionHeadingView.stringValue = _NS("Library");
break;
+ default:
+ NSAssert(1, @"Reached unreachable case for video library
section");
+ break;
}
return sectionHeadingView;
@@ -188,9 +216,11 @@
viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
mediaItemSupplementaryDetailView.representedMediaItem =
_recentsArray[indexPath.item];
break;
case VLCVideoLibraryLibrarySection:
- default:
mediaItemSupplementaryDetailView.representedMediaItem =
_libraryArray[indexPath.item];
break;
+ default:
+ NSAssert(1, @"Reached unreachable case for video library
section");
+ break;
}
mediaItemSupplementaryDetailView.selectedItem = [collectionView
itemAtIndexPath:indexPath];
@@ -235,4 +265,73 @@ writeItemsAtIndexPaths:(NSSet<NSIndexPath *> *)indexPaths
return YES;
}
+#pragma mark - table view data source and delegation
+
+- (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView
+{
+ if (tableView == _groupsTableView) {
+ return 2;
+ } else if (tableView == _groupSelectionTableView &&
_groupsTableView.selectedRow > -1) {
+ switch(_groupsTableView.selectedRow) {
+ case VLCVideoLibraryRecentsSection:
+ return _recentsArray.count;
+ case VLCVideoLibraryLibrarySection:
+ return _libraryArray.count;
+ default:
+ NSAssert(1, @"Reached unreachable case for video library
section");
+ break;
+ }
+ }
+
+ return 0;
+}
+
+- (NSView *)tableView:(NSTableView *)tableView
viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row
+{
+ VLCLibraryTableCellView *cellView = [tableView
makeViewWithIdentifier:@"VLCVideoLibraryTableViewCellIdentifier" owner:self];
+
+ if (!cellView) {
+ /* the following code saves us an instance of NSViewController which
we don't need */
+ NSNib *nib = [[NSNib alloc]
initWithNibNamed:@"VLCLibraryTableCellView" bundle:nil];
+ NSArray *topLevelObjects;
+ if (![nib instantiateWithOwner:self topLevelObjects:&topLevelObjects])
{
+ NSAssert(1, @"Failed to load nib file to show audio library
items");
+ return nil;
+ }
+
+ for (id topLevelObject in topLevelObjects) {
+ if ([topLevelObject isKindOfClass:[VLCLibraryTableCellView
class]]) {
+ cellView = topLevelObject;
+ break;
+ }
+ }
+ cellView.identifier = @"VLCVideoLibraryTableViewCellIdentifier";
+ }
+
+ if (tableView == _groupsTableView) {
+ cellView.representedVideoLibrarySection = row;
+ } else if (tableView == _groupSelectionTableView &&
_groupsTableView.selectedRow > -1) {
+ switch(_groupsTableView.selectedRow) {
+ case VLCVideoLibraryRecentsSection:
+ cellView.representedItem = _recentsArray[row];
+ break;
+ case VLCVideoLibraryLibrarySection:
+ cellView.representedItem = _libraryArray[row];
+ break;
+ default:
+ NSAssert(1, @"Reached unreachable case for video library
section");
+ break;
+ }
+ }
+
+ return cellView;
+}
+
+- (void)tableViewSelectionDidChange:(NSNotification *)notification
+{
+ if(notification.object == _groupsTableView) {
+ [_groupSelectionTableView reloadData];
+ }
+}
+
@end
=====================================
modules/gui/macosx/library/VLCLibraryWindow.h
=====================================
@@ -61,10 +61,15 @@ typedef NS_ENUM(NSUInteger, VLCViewModeSegment) {
@property (readwrite, weak) IBOutlet NSToolbarItem
*segmentedTitleControlToolbarItem;
@property (readwrite, weak) IBOutlet NSSegmentedControl
*gridVsListSegmentedControl;
@property (readwrite, weak) IBOutlet NSSplitView *mainSplitView;
-@property (readwrite, weak) IBOutlet NSView *videoLibraryView;
-@property (readwrite, weak) IBOutlet NSScrollView *videoLibraryScrollView;
@property (readwrite, strong) IBOutlet NSView *playlistView;
+@property (readwrite, weak) IBOutlet NSView *videoLibraryView;
+@property (readwrite, weak) IBOutlet NSSplitView *videoLibrarySplitView;
+@property (readwrite, weak) IBOutlet NSScrollView
*videoLibraryCollectionViewScrollView;
@property (readwrite, weak) IBOutlet NSCollectionView
*videoLibraryCollectionView;
+@property (readwrite, weak) IBOutlet NSScrollView
*videoLibraryGroupSelectionTableViewScrollView;
+@property (readwrite, weak) IBOutlet NSTableView
*videoLibraryGroupSelectionTableView;
+@property (readwrite, weak) IBOutlet NSScrollView
*videoLibraryGroupsTableViewScrollView;
+@property (readwrite, weak) IBOutlet NSTableView *videoLibraryGroupsTableView;
@property (readwrite, weak) IBOutlet NSCollectionView
*mediaSourceCollectionView;
@property (readwrite, weak) IBOutlet NSView *audioLibraryView;
@property (readwrite, weak) IBOutlet NSSplitView *audioLibrarySplitView;
=====================================
modules/gui/macosx/library/VLCLibraryWindow.m
=====================================
@@ -285,7 +285,11 @@ static void addShadow(NSImageView *__unsafe_unretained
imageView)
_libraryVideoDataSource = [[VLCLibraryVideoDataSource alloc] init];
_libraryVideoDataSource.libraryModel =
mainInstance.libraryController.libraryModel;
_libraryVideoDataSource.libraryMediaCollectionView =
_videoLibraryCollectionView;
- [_libraryVideoDataSource setupAppearance];
+ _libraryVideoDataSource.groupsTableView = _videoLibraryGroupsTableView;
+ _libraryVideoDataSource.groupSelectionTableView =
_videoLibraryGroupSelectionTableView;
+ _videoLibraryGroupsTableView.rowHeight = VLCLibraryWindowLargeRowHeight;
+ _videoLibraryGroupSelectionTableView.rowHeight =
VLCLibraryWindowLargeRowHeight;
+ [_libraryVideoDataSource setup];
_libraryAudioDataSource = [[VLCLibraryAudioDataSource alloc] init];
_libraryAudioDataSource.libraryModel =
mainInstance.libraryController.libraryModel;
@@ -370,9 +374,16 @@ static void addShadow(NSImageView *__unsafe_unretained
imageView)
_audioGroupSelectionTableViewScrollView.contentInsets =
audioScrollViewInsets;
_audioGroupSelectionTableViewScrollView.scrollerInsets = scrollerInsets;
- _videoLibraryScrollView.automaticallyAdjustsContentInsets = NO;
- _videoLibraryScrollView.contentInsets = defaultInsets;
- _videoLibraryScrollView.scrollerInsets = scrollerInsets;
+ _videoLibraryCollectionViewScrollView.automaticallyAdjustsContentInsets =
NO;
+ _videoLibraryCollectionViewScrollView.contentInsets = defaultInsets;
+ _videoLibraryCollectionViewScrollView.scrollerInsets = scrollerInsets;
+
+ _videoLibraryGroupsTableViewScrollView.automaticallyAdjustsContentInsets =
NO;
+ _videoLibraryGroupsTableViewScrollView.contentInsets = defaultInsets;
+ _videoLibraryGroupsTableViewScrollView.scrollerInsets = scrollerInsets;
+
_videoLibraryGroupSelectionTableViewScrollView.automaticallyAdjustsContentInsets
= NO;
+ _videoLibraryGroupSelectionTableViewScrollView.contentInsets =
defaultInsets;
+ _videoLibraryGroupSelectionTableViewScrollView.scrollerInsets =
scrollerInsets;
_mediaSourceCollectionViewScrollView.automaticallyAdjustsContentInsets =
NO;
_mediaSourceCollectionViewScrollView.contentInsets = defaultInsets;
@@ -584,14 +595,21 @@ static void addShadow(NSImageView *__unsafe_unretained
imageView)
_placeholderImageView.image = [NSImage
imageNamed:@"placeholder-video"];
_placeholderLabel.stringValue = _NS("Your favorite videos will appear
here.\nGo to the Browse section to add videos you love.");
- }
- else {
+ } else {
_videoLibraryView.translatesAutoresizingMaskIntoConstraints = NO;
[_libraryTargetView addSubview:_videoLibraryView];
NSDictionary *dict = NSDictionaryOfVariableBindings(_videoLibraryView);
[_libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|[_videoLibraryView(>=572.)]|" options:0
metrics:0 views:dict]];
[_libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|[_videoLibraryView(>=444.)]|" options:0
metrics:0 views:dict]];
+ if (self.gridVsListSegmentedControl.selectedSegment ==
VLCGridViewModeSegment) {
+ _videoLibrarySplitView.hidden = YES;
+ _videoLibraryCollectionViewScrollView.hidden = NO;
+ } else {
+ _videoLibrarySplitView.hidden = NO;
+ _videoLibraryCollectionViewScrollView.hidden = YES;
+ }
+
[_libraryVideoDataSource reloadData];
}
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/a6afe16031dca5f05ea829d607bba6037cf3a842...88998fd0e9d7b920e35c8b096c4ed6b1c915a058
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/a6afe16031dca5f05ea829d607bba6037cf3a842...88998fd0e9d7b920e35c8b096c4ed6b1c915a058
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits