[vlc-commits] macosx/playlist: add chrome based on design

Felix Paul Kühne git at videolan.org
Mon Apr 29 19:27:10 CEST 2019


vlc | branch: master | Felix Paul Kühne <felix at feepk.net> | Sun Apr 28 17:20:21 2019 +0200| [2bd7b3e5210fedc6d5c4fec88b162af48d9caa04] | committer: Felix Paul Kühne

macosx/playlist: add chrome based on design

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=2bd7b3e5210fedc6d5c4fec88b162af48d9caa04
---

 .../package/macosx/VLC.xcodeproj/project.pbxproj   |  12 ++++
 modules/gui/macosx/Makefile.am                     |  10 +++
 .../macosx/Resources/librarywindow/repeatAll.png   | Bin 0 -> 1982 bytes
 .../Resources/librarywindow/repeatAll at 2x.png       | Bin 0 -> 3189 bytes
 .../macosx/Resources/librarywindow/repeatOff.png   | Bin 0 -> 318 bytes
 .../Resources/librarywindow/repeatOff at 2x.png       | Bin 0 -> 465 bytes
 .../macosx/Resources/librarywindow/repeatOne.png   | Bin 0 -> 407 bytes
 .../Resources/librarywindow/repeatOne at 2x.png       | Bin 0 -> 661 bytes
 .../macosx/Resources/librarywindow/shuffleOff.png  | Bin 0 -> 2085 bytes
 .../Resources/librarywindow/shuffleOff at 2x.png      | Bin 0 -> 3889 bytes
 .../macosx/Resources/librarywindow/shuffleOn.png   | Bin 0 -> 411 bytes
 .../Resources/librarywindow/shuffleOn at 2x.png       | Bin 0 -> 643 bytes
 modules/gui/macosx/UI/VLCLibraryWindow.xib         |  79 ++++++++++++++++++---
 .../gui/macosx/extensions/NSFont+VLCAdditions.h    |   1 +
 .../gui/macosx/extensions/NSFont+VLCAdditions.m    |   5 ++
 .../macosx/library/VLCLibraryCollectionViewItem.m  |   2 -
 modules/gui/macosx/library/VLCLibraryWindow.h      |   6 ++
 modules/gui/macosx/library/VLCLibraryWindow.m      |  47 ++++++++++++
 18 files changed, 149 insertions(+), 13 deletions(-)

diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index cd17eb87d8..0dec0a06b3 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -449,6 +449,12 @@
 		7D28E63E2275C8660098D30E /* ellipsis at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "ellipsis at 2x.png"; path = "librarywindow/ellipsis at 2x.png"; sourceTree = "<group>"; };
 		7D28E63F2275C9C70098D30E /* libraryPlay at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "libraryPlay at 2x.png"; path = "librarywindow/libraryPlay at 2x.png"; sourceTree = "<group>"; };
 		7D28E6402275C9C70098D30E /* libraryPlay.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = libraryPlay.png; path = librarywindow/libraryPlay.png; sourceTree = "<group>"; };
+		7D28E6442275F2840098D30E /* repeatOff at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "repeatOff at 2x.png"; path = "librarywindow/repeatOff at 2x.png"; sourceTree = "<group>"; };
+		7D28E6452275F2840098D30E /* shuffleOn at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "shuffleOn at 2x.png"; path = "librarywindow/shuffleOn at 2x.png"; sourceTree = "<group>"; };
+		7D28E6462275F2850098D30E /* repeatOff.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = repeatOff.png; path = librarywindow/repeatOff.png; sourceTree = "<group>"; };
+		7D28E6472275F2850098D30E /* repeatOne at 2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = "repeatOne at 2x.png"; path = "librarywindow/repeatOne at 2x.png"; sourceTree = "<group>"; };
+		7D28E6482275F2850098D30E /* repeatOne.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = repeatOne.png; path = librarywindow/repeatOne.png; sourceTree = "<group>"; };
+		7D28E6492275F2850098D30E /* shuffleOn.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; name = shuffleOn.png; path = librarywindow/shuffleOn.png; sourceTree = "<group>"; };
 		7D2E0ED920CD204D0033A221 /* VLCWindow.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCWindow.m; sourceTree = "<group>"; };
 		7D2E0EDA20CD204D0033A221 /* VLCWindow.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCWindow.h; sourceTree = "<group>"; };
 		7D2E0EDC20CD206F0033A221 /* VLCVideoWindowCommon.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCVideoWindowCommon.h; sourceTree = "<group>"; };
@@ -1300,6 +1306,12 @@
 				7D28E63E2275C8660098D30E /* ellipsis at 2x.png */,
 				7D28E6402275C9C70098D30E /* libraryPlay.png */,
 				7D28E63F2275C9C70098D30E /* libraryPlay at 2x.png */,
+				7D28E6462275F2850098D30E /* repeatOff.png */,
+				7D28E6442275F2840098D30E /* repeatOff at 2x.png */,
+				7D28E6482275F2850098D30E /* repeatOne.png */,
+				7D28E6472275F2850098D30E /* repeatOne at 2x.png */,
+				7D28E6492275F2850098D30E /* shuffleOn.png */,
+				7D28E6452275F2840098D30E /* shuffleOn at 2x.png */,
 			);
 			name = "Library Window";
 			sourceTree = "<group>";
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index fc804d9ffc..3216a04a88 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -301,6 +301,16 @@ libmacosx_plugin_la_RES = \
 	gui/macosx/Resources/librarywindow/ellipsis at 2x.png \
 	gui/macosx/Resources/librarywindow/libraryPlay.png \
 	gui/macosx/Resources/librarywindow/libraryPlay at 2x.png \
+	gui/macosx/Resources/librarywindow/repeatAll.png \
+	gui/macosx/Resources/librarywindow/repeatAll at 2x.png \
+	gui/macosx/Resources/librarywindow/repeatOff.png \
+	gui/macosx/Resources/librarywindow/repeatOff at 2x.png \
+	gui/macosx/Resources/librarywindow/repeatOne.png \
+	gui/macosx/Resources/librarywindow/repeatOne at 2x.png \
+	gui/macosx/Resources/librarywindow/shuffleOff.png \
+	gui/macosx/Resources/librarywindow/shuffleOff at 2x.png \
+	gui/macosx/Resources/librarywindow/shuffleOn.png \
+	gui/macosx/Resources/librarywindow/shuffleOn at 2x.png \
 	gui/macosx/Resources/mainwindow/backward-3btns-pressed.png \
 	gui/macosx/Resources/mainwindow/backward-3btns-pressed at 2x.png \
 	gui/macosx/Resources/mainwindow/backward-3btns.png \
diff --git a/modules/gui/macosx/Resources/librarywindow/repeatAll.png b/modules/gui/macosx/Resources/librarywindow/repeatAll.png
new file mode 100644
index 0000000000..403e2cef90
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/repeatAll.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/repeatAll at 2x.png b/modules/gui/macosx/Resources/librarywindow/repeatAll at 2x.png
new file mode 100644
index 0000000000..5d8f4999d7
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/repeatAll at 2x.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/repeatOff.png b/modules/gui/macosx/Resources/librarywindow/repeatOff.png
new file mode 100644
index 0000000000..5a4a763927
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/repeatOff.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/repeatOff at 2x.png b/modules/gui/macosx/Resources/librarywindow/repeatOff at 2x.png
new file mode 100644
index 0000000000..ec59a4c582
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/repeatOff at 2x.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/repeatOne.png b/modules/gui/macosx/Resources/librarywindow/repeatOne.png
new file mode 100644
index 0000000000..517d4c1d72
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/repeatOne.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/repeatOne at 2x.png b/modules/gui/macosx/Resources/librarywindow/repeatOne at 2x.png
new file mode 100644
index 0000000000..da3d02ee4b
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/repeatOne at 2x.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/shuffleOff.png b/modules/gui/macosx/Resources/librarywindow/shuffleOff.png
new file mode 100644
index 0000000000..80317eaf2f
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/shuffleOff.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/shuffleOff at 2x.png b/modules/gui/macosx/Resources/librarywindow/shuffleOff at 2x.png
new file mode 100644
index 0000000000..1b976693a7
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/shuffleOff at 2x.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/shuffleOn.png b/modules/gui/macosx/Resources/librarywindow/shuffleOn.png
new file mode 100644
index 0000000000..cab42fcc95
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/shuffleOn.png differ
diff --git a/modules/gui/macosx/Resources/librarywindow/shuffleOn at 2x.png b/modules/gui/macosx/Resources/librarywindow/shuffleOn at 2x.png
new file mode 100644
index 0000000000..04656d4962
Binary files /dev/null and b/modules/gui/macosx/Resources/librarywindow/shuffleOn at 2x.png differ
diff --git a/modules/gui/macosx/UI/VLCLibraryWindow.xib b/modules/gui/macosx/UI/VLCLibraryWindow.xib
index a5c5e0c1ad..00d19278ec 100644
--- a/modules/gui/macosx/UI/VLCLibraryWindow.xib
+++ b/modules/gui/macosx/UI/VLCLibraryWindow.xib
@@ -111,20 +111,31 @@
                                 <rect key="frame" x="243" y="0.0" width="237" height="291"/>
                                 <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"/>
+                                        <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"/>
+                                            <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                        </textFieldCell>
+                                    </textField>
+                                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="qmL-Ar-cj1">
+                                        <rect key="frame" x="20" y="247" 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="0.0" y="0.0" width="237" height="291"/>
+                                        <rect key="frame" x="20" y="63" width="217" height="178"/>
                                         <clipView key="contentView" drawsBackground="NO" copiesOnScroll="NO" id="Vdr-bg-tuS">
-                                            <rect key="frame" x="0.0" y="0.0" width="237" height="291"/>
+                                            <rect key="frame" x="0.0" y="0.0" width="217" height="178"/>
                                             <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                             <subviews>
-                                                <tableView verticalHuggingPriority="750" allowsExpansionToolTips="YES" columnAutoresizingStyle="lastColumnOnly" alternatingRowBackgroundColors="YES" autosaveColumns="NO" rowSizeStyle="automatic" viewBased="YES" id="Fr1-af-8gb" customClass="VLCPlaylistTableView">
-                                                    <rect key="frame" x="0.0" y="0.0" width="237" height="291"/>
+                                                <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"/>
                                                     <autoresizingMask key="autoresizingMask"/>
                                                     <size key="intercellSpacing" width="3" height="2"/>
-                                                    <color key="backgroundColor" name="controlBackgroundColor" catalog="System" colorSpace="catalog"/>
+                                                    <color key="backgroundColor" white="0.0" alpha="0.0" colorSpace="calibratedWhite"/>
                                                     <color key="gridColor" name="gridColor" catalog="System" colorSpace="catalog"/>
                                                     <tableColumns>
-                                                        <tableColumn width="234" minWidth="40" maxWidth="1000" id="gkH-E7-Nn4">
+                                                        <tableColumn width="214" minWidth="40" maxWidth="1000" id="gkH-E7-Nn4">
                                                             <tableHeaderCell key="headerCell" lineBreakMode="truncatingTail" borderStyle="border">
                                                                 <font key="font" metaFont="smallSystem"/>
                                                                 <color key="textColor" name="headerTextColor" catalog="System" colorSpace="catalog"/>
@@ -138,11 +149,11 @@
                                                             <tableColumnResizingMask key="resizingMask" resizeWithTable="YES" userResizable="YES"/>
                                                             <prototypeCellViews>
                                                                 <tableCellView id="3Pj-5C-4K4">
-                                                                    <rect key="frame" x="1" y="1" width="234" height="17"/>
+                                                                    <rect key="frame" x="1" y="1" width="214" height="17"/>
                                                                     <autoresizingMask key="autoresizingMask" widthSizable="YES" heightSizable="YES"/>
                                                                     <subviews>
                                                                         <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="dY4-Im-HRr">
-                                                                            <rect key="frame" x="0.0" y="0.0" width="234" height="17"/>
+                                                                            <rect key="frame" x="0.0" y="0.0" width="214" height="17"/>
                                                                             <autoresizingMask key="autoresizingMask" widthSizable="YES" flexibleMinY="YES"/>
                                                                             <textFieldCell key="cell" lineBreakMode="truncatingTail" sendsActionOnEndEditing="YES" title="Table View Cell" id="vlq-wz-y8v">
                                                                                 <font key="font" metaFont="system"/>
@@ -175,12 +186,50 @@
                                             <autoresizingMask key="autoresizingMask"/>
                                         </scroller>
                                     </scrollView>
+                                    <box verticalHuggingPriority="750" boxType="separator" translatesAutoresizingMaskIntoConstraints="NO" id="nAW-KH-ipk">
+                                        <rect key="frame" x="20" y="52" width="197" height="5"/>
+                                    </box>
+                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="jg5-33-vH0">
+                                        <rect key="frame" x="20" y="15" 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"/>
+                                        </buttonCell>
+                                    </button>
+                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="8zF-Wo-H79">
+                                        <rect key="frame" x="64" y="15" 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"/>
+                                        </buttonCell>
+                                    </button>
+                                    <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cih-xp-HmY">
+                                        <rect key="frame" x="133" y="15" width="84" height="17"/>
+                                        <buttonCell key="cell" type="square" title="Empty queue" bezelStyle="shadowlessSquare" alignment="center" imageScaling="proportionallyDown" inset="2" id="OjM-W9-IrQ">
+                                            <behavior key="behavior" pushIn="YES" lightByBackground="YES" lightByGray="YES"/>
+                                            <font key="font" metaFont="system"/>
+                                        </buttonCell>
+                                    </button>
                                 </subviews>
                                 <constraints>
-                                    <constraint firstItem="Z7y-D0-11Q" firstAttribute="leading" secondItem="dus-WQ-AmE" secondAttribute="leading" id="J3s-se-6bL"/>
-                                    <constraint firstAttribute="bottom" secondItem="Z7y-D0-11Q" secondAttribute="bottom" id="XsQ-oc-D77"/>
+                                    <constraint firstItem="Vry-OZ-ySI" firstAttribute="leading" secondItem="dus-WQ-AmE" secondAttribute="leading" constant="20" id="6iz-2G-xXO"/>
+                                    <constraint firstItem="qmL-Ar-cj1" firstAttribute="top" secondItem="Vry-OZ-ySI" secondAttribute="bottom" constant="24" id="De2-Wf-QsC"/>
+                                    <constraint firstItem="nAW-KH-ipk" firstAttribute="leading" secondItem="dus-WQ-AmE" secondAttribute="leading" constant="20" id="EUp-9J-Fid"/>
+                                    <constraint firstItem="Z7y-D0-11Q" firstAttribute="top" secondItem="qmL-Ar-cj1" secondAttribute="bottom" constant="8" id="GIh-g3-rqJ"/>
+                                    <constraint firstItem="Z7y-D0-11Q" firstAttribute="leading" secondItem="dus-WQ-AmE" secondAttribute="leading" constant="20" id="J3s-se-6bL"/>
+                                    <constraint firstItem="Vry-OZ-ySI" firstAttribute="top" secondItem="dus-WQ-AmE" secondAttribute="top" id="K80-Vw-FfD"/>
+                                    <constraint firstItem="8zF-Wo-H79" firstAttribute="centerY" secondItem="jg5-33-vH0" secondAttribute="centerY" id="Qdp-7K-RkD"/>
+                                    <constraint firstItem="Z7y-D0-11Q" firstAttribute="baseline" secondItem="nAW-KH-ipk" secondAttribute="firstBaseline" constant="-8" id="ZIg-X2-w2p"/>
+                                    <constraint firstAttribute="trailing" secondItem="cih-xp-HmY" secondAttribute="trailing" constant="20" id="ZmV-zc-4a0"/>
+                                    <constraint firstItem="8zF-Wo-H79" firstAttribute="leading" secondItem="jg5-33-vH0" secondAttribute="trailing" constant="20" id="aAn-lh-NcZ"/>
+                                    <constraint firstAttribute="trailing" secondItem="nAW-KH-ipk" secondAttribute="trailing" constant="20" id="d3t-R3-45M"/>
+                                    <constraint firstAttribute="trailing" secondItem="qmL-Ar-cj1" secondAttribute="trailing" constant="20" id="epP-za-NOo"/>
+                                    <constraint firstAttribute="bottom" secondItem="cih-xp-HmY" secondAttribute="bottom" constant="15" id="jRf-7P-2Vc"/>
+                                    <constraint firstItem="qmL-Ar-cj1" firstAttribute="leading" secondItem="dus-WQ-AmE" secondAttribute="leading" constant="20" id="st7-tK-qLh"/>
                                     <constraint firstAttribute="trailing" secondItem="Z7y-D0-11Q" secondAttribute="trailing" id="x0A-xI-BVt"/>
-                                    <constraint firstItem="Z7y-D0-11Q" firstAttribute="top" secondItem="dus-WQ-AmE" secondAttribute="top" id="zDU-QJ-fx4"/>
+                                    <constraint firstItem="jg5-33-vH0" firstAttribute="firstBaseline" secondItem="cih-xp-HmY" secondAttribute="firstBaseline" id="xwe-Nb-2Rz"/>
+                                    <constraint firstAttribute="bottom" secondItem="nAW-KH-ipk" secondAttribute="bottom" constant="54" id="z8O-Xk-fS8"/>
+                                    <constraint firstItem="jg5-33-vH0" firstAttribute="leading" secondItem="dus-WQ-AmE" secondAttribute="leading" constant="20" id="zEw-GJ-NfA"/>
                                 </constraints>
                             </customView>
                         </subviews>
@@ -325,11 +374,17 @@
                 </constraints>
             </view>
             <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="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="videoView" destination="12s-0J-Uvj" id="zTg-s0-qZ5"/>
             </connections>
             <point key="canvasLocation" x="139" y="204.5"/>
@@ -356,5 +411,7 @@
         <image name="fullscreen-one-button-pressed" width="29" height="23"/>
         <image name="play" width="27" height="23"/>
         <image name="play-pressed" width="27" height="23"/>
+        <image name="repeatOff" width="24" height="24"/>
+        <image name="shuffleOn" width="24" height="24"/>
     </resources>
 </document>
diff --git a/modules/gui/macosx/extensions/NSFont+VLCAdditions.h b/modules/gui/macosx/extensions/NSFont+VLCAdditions.h
index d7821528a6..df7058a7c1 100644
--- a/modules/gui/macosx/extensions/NSFont+VLCAdditions.h
+++ b/modules/gui/macosx/extensions/NSFont+VLCAdditions.h
@@ -33,6 +33,7 @@ NS_ASSUME_NONNULL_BEGIN
 + (instancetype)VLClibraryCellTitleFont;
 + (instancetype)VLClibraryCellSubtitleFont;
 + (instancetype)VLClibraryCellAnnotationFont;
++ (instancetype)VLClibraryButtonFont;
 
 @end
 
diff --git a/modules/gui/macosx/extensions/NSFont+VLCAdditions.m b/modules/gui/macosx/extensions/NSFont+VLCAdditions.m
index ad81f37ef7..74c227c075 100644
--- a/modules/gui/macosx/extensions/NSFont+VLCAdditions.m
+++ b/modules/gui/macosx/extensions/NSFont+VLCAdditions.m
@@ -59,4 +59,9 @@
     return [NSFont systemFontOfSize:15. weight:NSFontWeightBold];
 }
 
++ (instancetype)VLClibraryButtonFont
+{
+    return [NSFont systemFontOfSize:15. weight:NSFontWeightBold];
+}
+
 @end
diff --git a/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m b/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
index b907e5d8b0..2e6275ccca 100644
--- a/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
+++ b/modules/gui/macosx/library/VLCLibraryCollectionViewItem.m
@@ -68,8 +68,6 @@ NSString *VLCLibraryCellIdentifier = @"VLCLibraryCellIdentifier";
     self.annotationTextField.font = [NSFont VLClibraryCellAnnotationFont];
     self.annotationTextField.textColor = [NSColor VLClibraryAnnotationColor];
     self.annotationTextField.backgroundColor = [NSColor VLClibraryAnnotationBackgroundColor];
-    self.annotationTextField.bezeled = YES;
-    self.annotationTextField.bezelStyle = NSTextFieldRoundedBezel;
 
     if (@available(macOS 10_14, *)) {
         [[NSApplication sharedApplication] addObserver:self
diff --git a/modules/gui/macosx/library/VLCLibraryWindow.h b/modules/gui/macosx/library/VLCLibraryWindow.h
index 26e2766ec0..096ab4aeca 100644
--- a/modules/gui/macosx/library/VLCLibraryWindow.h
+++ b/modules/gui/macosx/library/VLCLibraryWindow.h
@@ -40,6 +40,12 @@ NS_ASSUME_NONNULL_BEGIN
 @property (readwrite, weak) IBOutlet NSCollectionView *mediaSourceCollectionView;
 @property (readwrite, weak) IBOutlet NSScrollView *mediaSourceScrollView;
 @property (readwrite, weak) IBOutlet NSTableView *playlistTableView;
+ at property (readwrite, weak) IBOutlet NSTextField *upNextLabel;
+ at property (readwrite, weak) IBOutlet NSBox *upNextSeparator;
+ at property (readwrite, weak) IBOutlet NSButton *clearPlaylistButton;
+ at property (readwrite, weak) IBOutlet NSBox *clearPlaylistSeparator;
+ at property (readwrite, weak) IBOutlet NSButton *repeatPlaylistButton;
+ at property (readwrite, weak) IBOutlet NSButton *shufflePlaylistButton;
 
 @property (readonly) BOOL nativeFullscreenMode;
 @property (readwrite) BOOL nonembedded;
diff --git a/modules/gui/macosx/library/VLCLibraryWindow.m b/modules/gui/macosx/library/VLCLibraryWindow.m
index a6c5b96ced..b160244c7b 100644
--- a/modules/gui/macosx/library/VLCLibraryWindow.m
+++ b/modules/gui/macosx/library/VLCLibraryWindow.m
@@ -22,6 +22,8 @@
 
 #import "VLCLibraryWindow.h"
 #import "extensions/NSString+Helpers.h"
+#import "extensions/NSFont+VLCAdditions.h"
+#import "extensions/NSColor+VLCAdditions.h"
 #import "main/VLCMain.h"
 
 #import "playlist/VLCPlaylistTableCellView.h"
@@ -74,6 +76,12 @@ static const float f_playlist_row_height = 72.;
                            selector:@selector(updateLibraryRepresentation:)
                                name:VLCLibraryModelVideoMediaListUpdated
                              object:nil];
+    if (@available(macOS 10_14, *)) {
+        [[NSApplication sharedApplication] addObserver:self
+                                            forKeyPath:@"effectiveAppearance"
+                                               options:0
+                                               context:nil];
+    }
 
     _fspanel = [[VLCFSPanelController alloc] init];
     [_fspanel showWindow:self];
@@ -111,12 +119,51 @@ static const float f_playlist_row_height = 72.;
     _mediaSourceCollectionView.delegate = _mediaSourceDataSource;
     [_mediaSourceCollectionView registerClass:[VLCMediaSourceCollectionViewItem class] forItemWithIdentifier:VLCMediaSourceCellIdentifier];
 
+    self.upNextLabel.font = [NSFont VLClibrarySectionHeaderFont];
+    self.upNextLabel.stringValue = _NS("Up next");
+    NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:_NS("Clear queue")
+                                                                          attributes:@{NSFontAttributeName : [NSFont VLClibraryButtonFont],
+                                                                                       NSForegroundColorAttributeName : [NSColor VLClibraryHighlightColor]}];
+    self.clearPlaylistButton.attributedTitle = attributedTitle;
+    [self updateColorsBasedOnAppearance];
+
     [self segmentedControlAction:nil];
 }
 
 - (void)dealloc
 {
     [[NSNotificationCenter defaultCenter] removeObserver:self];
+    if (@available(macOS 10_14, *)) {
+        [[NSApplication sharedApplication] removeObserver:self forKeyPath:@"effectiveAppearance"];
+    }
+}
+
+
+- (void)observeValueForKeyPath:(NSString *)keyPath
+                      ofObject:(id)object
+                        change:(NSDictionary<NSKeyValueChangeKey,id> *)change
+                       context:(void *)context
+{
+    [self updateColorsBasedOnAppearance];
+}
+
+- (void)updateColorsBasedOnAppearance
+{
+    if (@available(macOS 10_14, *)) {
+        if ([self.effectiveAppearance.name isEqualToString:NSAppearanceNameDarkAqua]) {
+            self.upNextLabel.textColor = [NSColor VLClibraryDarkTitleColor];
+            self.upNextSeparator.borderColor = [NSColor VLClibrarySeparatorDarkColor];
+            self.clearPlaylistSeparator.borderColor = [NSColor VLClibrarySeparatorDarkColor];
+        } else {
+            self.upNextLabel.textColor = [NSColor VLClibraryLightTitleColor];
+            self.upNextSeparator.borderColor = [NSColor VLClibrarySeparatorLightColor];
+            self.clearPlaylistSeparator.borderColor = [NSColor VLClibrarySeparatorLightColor];
+        }
+    } else {
+        self.upNextLabel.textColor = [NSColor VLClibraryLightTitleColor];
+        self.upNextSeparator.borderColor = [NSColor VLClibrarySeparatorLightColor];
+        self.clearPlaylistSeparator.borderColor = [NSColor VLClibrarySeparatorLightColor];
+    }
 }
 
 - (void)segmentedControlAction:(id)sender



More information about the vlc-commits mailing list