[vlc-commits] macOS: Add image button classes

Cameron Mozie git at videolan.org
Tue Feb 28 22:10:49 CET 2017


vlc | branch: master | Cameron Mozie <camsw0rld14 at gmail.com> | Sun Feb 26 14:54:59 2017 +0100| [6b11e86356e1c5d75fffba6680a7e2b11556eac5] | committer: Marvin Scholz

macOS: Add image button classes

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

 .../package/macosx/VLC.xcodeproj/project.pbxproj   | 16 +++++++--
 modules/gui/macosx/Makefile.am                     |  4 ++-
 modules/gui/macosx/UI/VLCFullScreenPanel.xib       | 18 +++++-----
 modules/gui/macosx/VLCFSPanelController.m          |  4 ---
 modules/gui/macosx/VLCHUDImageButton.h             | 28 ++++++++++++++++
 modules/gui/macosx/VLCHUDImageButton.m             | 38 ++++++++++++++++++++++
 modules/gui/macosx/VLCHUDToggleButton.h            | 28 ++++++++++++++++
 modules/gui/macosx/VLCHUDToggleButton.m            | 38 ++++++++++++++++++++++
 8 files changed, 158 insertions(+), 16 deletions(-)

diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index 6384f73..9250957 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -165,6 +165,8 @@
 		1C3114281E508D1B00D4DD76 /* VLCFullScreenPanel.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224181E4D2A9000833BE1 /* VLCFullScreenPanel.xib */; };
 		1C3114291E508D1B00D4DD76 /* VLCRendererDialog.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B8224191E4D2A9000833BE1 /* VLCRendererDialog.xib */; };
 		1C31142A1E508D1B00D4DD76 /* VLCStatusBarIconMainMenu.xib in Sources */ = {isa = PBXBuildFile; fileRef = 6B82241A1E4D2A9000833BE1 /* VLCStatusBarIconMainMenu.xib */; };
+		6B3BE42C1E6217CB008D098A /* VLCHUDImageButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3BE42B1E6217CB008D098A /* VLCHUDImageButton.m */; };
+		6B3BE4321E621F24008D098A /* VLCHUDToggleButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B3BE4311E621F24008D098A /* VLCHUDToggleButton.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
@@ -195,6 +197,10 @@
 		633121CB1B51122700E636DA /* VLCResumeDialogController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCResumeDialogController.m; sourceTree = "<group>"; };
 		6B13E2A61BC67678001AD24A /* VLCScrollingClipView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCScrollingClipView.h; sourceTree = "<group>"; };
 		6B13E2A71BC67678001AD24A /* VLCScrollingClipView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCScrollingClipView.m; sourceTree = "<group>"; };
+		6B3BE42A1E6217CB008D098A /* VLCHUDImageButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCHUDImageButton.h; sourceTree = "<group>"; };
+		6B3BE42B1E6217CB008D098A /* VLCHUDImageButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCHUDImageButton.m; sourceTree = "<group>"; };
+		6B3BE4301E621F24008D098A /* VLCHUDToggleButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCHUDToggleButton.h; sourceTree = "<group>"; };
+		6B3BE4311E621F24008D098A /* VLCHUDToggleButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCHUDToggleButton.m; sourceTree = "<group>"; };
 		6B6A499A1DFD9B23009128AC /* VLCDefaultValueSlider.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCDefaultValueSlider.h; sourceTree = "<group>"; };
 		6B6A499B1DFD9B23009128AC /* VLCDefaultValueSlider.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCDefaultValueSlider.m; sourceTree = "<group>"; };
 		6B6A499C1DFD9B23009128AC /* VLCDefaultValueSliderCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCDefaultValueSliderCell.h; sourceTree = "<group>"; };
@@ -922,6 +928,10 @@
 		08FB77AFFE84173DC02AAC07 /* Classes */ = {
 			isa = PBXGroup;
 			children = (
+				6B3BE42A1E6217CB008D098A /* VLCHUDImageButton.h */,
+				6B3BE42B1E6217CB008D098A /* VLCHUDImageButton.m */,
+				6B3BE4301E621F24008D098A /* VLCHUDToggleButton.h */,
+				6B3BE4311E621F24008D098A /* VLCHUDToggleButton.m */,
 				1C67C8A61D58C0A40079E1C1 /* VLCAboutWindowController.h */,
 				1C67C8A71D58C0A40079E1C1 /* VLCAboutWindowController.m */,
 				1C67C8A31D58C0980079E1C1 /* VLCHelpWindowController.h */,
@@ -1879,7 +1889,7 @@
 					};
 				};
 			};
-			buildConfigurationList = C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "vlc" */;
+			buildConfigurationList = C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "VLC" */;
 			compatibilityVersion = "Xcode 3.2";
 			developmentRegion = English;
 			hasScannedForEncodings = 1;
@@ -1905,6 +1915,7 @@
 			buildActionMask = 2147483647;
 			files = (
 				1C31140E1E508D1B00D4DD76 /* About.xib in Sources */,
+				6B3BE42C1E6217CB008D098A /* VLCHUDImageButton.m in Sources */,
 				1C31140F1E508D1B00D4DD76 /* AddonManager.xib in Sources */,
 				1C3114101E508D1B00D4DD76 /* AudioEffects.xib in Sources */,
 				1C3114111E508D1B00D4DD76 /* Bookmarks.xib in Sources */,
@@ -1954,6 +1965,7 @@
 				1C3113F01E508C7600D4DD76 /* VLCRendererItem.h in Sources */,
 				1C3113F11E508C7600D4DD76 /* VLCRendererItem.m in Sources */,
 				1C3113F21E508C7600D4DD76 /* VLCRendererDialog.h in Sources */,
+				6B3BE4321E621F24008D098A /* VLCHUDToggleButton.m in Sources */,
 				1C3113F31E508C7600D4DD76 /* VLCRendererDialog.m in Sources */,
 				1C3113F41E508C7600D4DD76 /* VLCHUDTextFieldCell.h in Sources */,
 				1C3113F51E508C7600D4DD76 /* VLCHUDTextFieldCell.m in Sources */,
@@ -2218,7 +2230,7 @@
 			defaultConfigurationIsVisible = 0;
 			defaultConfigurationName = Default;
 		};
-		C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "vlc" */ = {
+		C2F2A6EA09588F1B00018C74 /* Build configuration list for PBXProject "VLC" */ = {
 			isa = XCConfigurationList;
 			buildConfigurations = (
 				C2F2A6EB09588F1B00018C74 /* Development */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index 809034a..15569bb 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -92,7 +92,9 @@ libmacosx_plugin_la_SOURCES = \
 	VLCFSPanelController.h VLCFSPanelController.m \
 	VLCFSPanelDraggableView.h VLCFSPanelDraggableView.m \
 	VLCDefaultValueSlider.h VLCDefaultValueSlider.m \
-	VLCDefaultValueSliderCell.h VLCDefaultValueSliderCell.m
+	VLCDefaultValueSliderCell.h VLCDefaultValueSliderCell.m \
+	VLCHUDImageButton.h VLCHUDImageButton.m \
+	VLCHUDToggleButton.h VLCHUDToggleButton.m
 
 nobase_libmacosx_plugin_la_DATA = \
 	UI/About.nib \
diff --git a/modules/gui/macosx/UI/VLCFullScreenPanel.xib b/modules/gui/macosx/UI/VLCFullScreenPanel.xib
index 6f7c9a4..3152cfc 100644
--- a/modules/gui/macosx/UI/VLCFullScreenPanel.xib
+++ b/modules/gui/macosx/UI/VLCFullScreenPanel.xib
@@ -1,9 +1,9 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="11542" systemVersion="15G1217" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
+<?xml version="1.0" encoding="UTF-8"?>
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="12100" systemVersion="16D32" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES" customObjectInstantitationMethod="direct">
     <dependencies>
         <deployment identifier="macosx"/>
         <development version="7000" identifier="xcode"/>
-        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="11542"/>
+        <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="12100"/>
         <capability name="Aspect ratio constraints" minToolsVersion="5.1"/>
         <capability name="system font weights other than Regular or Bold" minToolsVersion="7.0"/>
     </dependencies>
@@ -42,7 +42,7 @@
                     <customView translatesAutoresizingMaskIntoConstraints="NO" id="VLH-qy-cwr">
                         <rect key="frame" x="0.0" y="0.0" width="480" height="42"/>
                         <subviews>
-                            <button translatesAutoresizingMaskIntoConstraints="NO" id="YSL-bH-k6U">
+                            <button translatesAutoresizingMaskIntoConstraints="NO" id="YSL-bH-k6U" customClass="VLCHUDToggleButton">
                                 <rect key="frame" x="226" y="7" width="35" height="29"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="YSL-bH-k6U" secondAttribute="height" multiplier="1:1" constant="6" id="2if-S8-t0u"/>
@@ -55,7 +55,7 @@
                                     <action selector="togglePlayPause:" target="-2" id="9os-DP-jAN"/>
                                 </connections>
                             </button>
-                            <button translatesAutoresizingMaskIntoConstraints="NO" id="jSN-hV-r5D">
+                            <button translatesAutoresizingMaskIntoConstraints="NO" id="jSN-hV-r5D" customClass="VLCHUDImageButton">
                                 <rect key="frame" x="263" y="7" width="34" height="29"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="jSN-hV-r5D" secondAttribute="height" multiplier="19:16" id="m1w-9i-bkp"/>
@@ -68,7 +68,7 @@
                                     <action selector="jumpForward:" target="-2" id="bjn-qc-BJ7"/>
                                 </connections>
                             </button>
-                            <button translatesAutoresizingMaskIntoConstraints="NO" id="7QH-jb-QdM">
+                            <button translatesAutoresizingMaskIntoConstraints="NO" id="7QH-jb-QdM" customClass="VLCHUDImageButton">
                                 <rect key="frame" x="189" y="7" width="35" height="29"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="7QH-jb-QdM" secondAttribute="height" multiplier="19:16" id="isk-o2-kZY"/>
@@ -93,7 +93,7 @@
                                     <action selector="volumeSliderUpdate:" target="-2" id="doI-qM-Pde"/>
                                 </connections>
                             </slider>
-                            <button translatesAutoresizingMaskIntoConstraints="NO" id="2ai-dB-Wpq">
+                            <button translatesAutoresizingMaskIntoConstraints="NO" id="2ai-dB-Wpq" customClass="VLCHUDImageButton">
                                 <rect key="frame" x="299" y="7" width="34" height="29"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="2ai-dB-Wpq" secondAttribute="height" multiplier="19:16" id="Itj-7f-YDa"/>
@@ -106,7 +106,7 @@
                                     <action selector="gotoNext:" target="-2" id="flJ-52-Pcb"/>
                                 </connections>
                             </button>
-                            <button translatesAutoresizingMaskIntoConstraints="NO" id="TVM-DT-2yo">
+                            <button translatesAutoresizingMaskIntoConstraints="NO" id="TVM-DT-2yo" customClass="VLCHUDImageButton">
                                 <rect key="frame" x="153" y="7" width="34" height="29"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="TVM-DT-2yo" secondAttribute="height" multiplier="19:16" id="oKb-iw-6S1"/>
@@ -130,7 +130,7 @@
                                     <font key="font" metaFont="system"/>
                                 </buttonCell>
                             </button>
-                            <button translatesAutoresizingMaskIntoConstraints="NO" id="C5K-aX-3aJ">
+                            <button translatesAutoresizingMaskIntoConstraints="NO" id="C5K-aX-3aJ" customClass="VLCHUDImageButton">
                                 <rect key="frame" x="438" y="10" width="22" height="22"/>
                                 <constraints>
                                     <constraint firstAttribute="width" secondItem="C5K-aX-3aJ" secondAttribute="height" multiplier="1:1" id="VWl-0x-p1I"/>
diff --git a/modules/gui/macosx/VLCFSPanelController.m b/modules/gui/macosx/VLCFSPanelController.m
index 0b4f499..e3ed64f 100644
--- a/modules/gui/macosx/VLCFSPanelController.m
+++ b/modules/gui/macosx/VLCFSPanelController.m
@@ -92,10 +92,6 @@ static NSString *kAssociatedFullscreenRect = @"VLCFullscreenAssociatedWindowRect
     [self injectBackgroundView];
 #endif
 
-    /* TODO: Write custom Image-only button subclass to behave properly */
-    [(NSButtonCell*)[_playPauseButton cell] setHighlightsBy:NSPushInCellMask];
-    [(NSButtonCell*)[_playPauseButton cell] setShowsStateBy:NSContentsCellMask];
-
     [self setupControls];
 }
 
diff --git a/modules/gui/macosx/VLCHUDImageButton.h b/modules/gui/macosx/VLCHUDImageButton.h
new file mode 100644
index 0000000..93a53c3
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDImageButton.h
@@ -0,0 +1,28 @@
+/*****************************************************************************
+ * VLCHUDImageButton.h
+ *****************************************************************************
+ * Copyright (C) 2017 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Cameron Mozie <camsw0rld14 at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import <Cocoa/Cocoa.h>
+
+ at interface VLCHUDImageButton : NSButton
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDImageButton.m b/modules/gui/macosx/VLCHUDImageButton.m
new file mode 100644
index 0000000..49ea850
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDImageButton.m
@@ -0,0 +1,38 @@
+/*****************************************************************************
+ * VLCHUDImageButton.m
+ *****************************************************************************
+ * Copyright (C) 2017 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Cameron Mozie <camsw0rld14 at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHUDImageButton.h"
+
+ at implementation VLCHUDImageButton
+
+- (instancetype)initWithCoder:(NSCoder *)coder
+{
+    self =  [super initWithCoder:coder];
+    if (self) {
+        [(NSButtonCell*)[self cell] setHighlightsBy:NSPushInCellMask];
+        [(NSButtonCell*)[self cell] setShowsStateBy:NSNoCellMask];
+    }
+    return self;
+}
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDToggleButton.h b/modules/gui/macosx/VLCHUDToggleButton.h
new file mode 100644
index 0000000..449eccb
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDToggleButton.h
@@ -0,0 +1,28 @@
+/*****************************************************************************
+ * VLCHUDToggleButton.h
+ *****************************************************************************
+ * Copyright (C) 2017 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Cameron Mozie <camsw0rld14 at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHUDImageButton.h"
+
+ at interface VLCHUDToggleButton : VLCHUDImageButton
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDToggleButton.m b/modules/gui/macosx/VLCHUDToggleButton.m
new file mode 100644
index 0000000..bc26fa6
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDToggleButton.m
@@ -0,0 +1,38 @@
+/*****************************************************************************
+ * VLCHUDToggleButton.h
+ *****************************************************************************
+ * Copyright (C) 2017 VLC authors and VideoLAN
+ * $Id$
+ *
+ * Authors: Cameron Mozie <camsw0rld14 at gmail.com>
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
+ *****************************************************************************/
+
+#import "VLCHUDToggleButton.h"
+
+ at implementation VLCHUDToggleButton
+
+- (instancetype)initWithCoder:(NSCoder *)coder
+{
+    self =  [super initWithCoder:coder];
+    if (self) {
+        [(NSButtonCell*)[self cell] setHighlightsBy:NSPushInCellMask];
+        [(NSButtonCell*)[self cell] setShowsStateBy:NSContentsCellMask];
+    }
+    return self;
+}
+
+ at end



More information about the vlc-commits mailing list