[vlc-commits] macOS: Add VLCHUDTableView

Marvin Scholz git at videolan.org
Sat Jun 24 11:51:38 CEST 2017


vlc | branch: master | Marvin Scholz <epirat07 at gmail.com> | Sat Jun 24 11:47:21 2017 +0200| [1896c9d0a1f5015b50b2e387bc5274b436660745] | committer: Marvin Scholz

macOS: Add VLCHUDTableView

This is basically identical to the OutlineView, but still another
class, so we need to duplicate that code, for now.

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

 .../package/macosx/VLC.xcodeproj/project.pbxproj   |   6 ++
 modules/gui/macosx/Makefile.am                     |   1 +
 modules/gui/macosx/VLCHUDTableView.h               |  50 ++++++++++
 modules/gui/macosx/VLCHUDTableView.m               | 105 +++++++++++++++++++++
 4 files changed, 162 insertions(+)

diff --git a/extras/package/macosx/VLC.xcodeproj/project.pbxproj b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
index d56bd2823a..02acaf621c 100644
--- a/extras/package/macosx/VLC.xcodeproj/project.pbxproj
+++ b/extras/package/macosx/VLC.xcodeproj/project.pbxproj
@@ -87,6 +87,7 @@
 		6BBB05E31EF08181003A1019 /* VLCHUDSegmentedCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BBB05E21EF08181003A1019 /* VLCHUDSegmentedCell.m */; };
 		6BF093F91EE0182B0049D8B0 /* VLCTimeField.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BF093F81EE0182B0049D8B0 /* VLCTimeField.m */; };
 		6BF5C5011EFE03CF008A9C12 /* VLCHUDStepperCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BF5C5001EFE03CF008A9C12 /* VLCHUDStepperCell.m */; };
+		6BF5C5041EFE66EF008A9C12 /* VLCHUDTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BF5C5031EFE66EF008A9C12 /* VLCHUDTableView.m */; };
 /* End PBXBuildFile section */
 
 /* Begin PBXFileReference section */
@@ -709,6 +710,8 @@
 		6BF557CF1E4E0E2500C03C9D /* VLCPauseTemplate.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = VLCPauseTemplate.pdf; path = "Button-Icons/VLCPauseTemplate.pdf"; sourceTree = "<group>"; };
 		6BF5C4FF1EFE03CF008A9C12 /* VLCHUDStepperCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCHUDStepperCell.h; sourceTree = "<group>"; };
 		6BF5C5001EFE03CF008A9C12 /* VLCHUDStepperCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCHUDStepperCell.m; sourceTree = "<group>"; };
+		6BF5C5021EFE66EF008A9C12 /* VLCHUDTableView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCHUDTableView.h; sourceTree = "<group>"; };
+		6BF5C5031EFE66EF008A9C12 /* VLCHUDTableView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCHUDTableView.m; sourceTree = "<group>"; };
 		7D5678EB1D5BA1DC002698F3 /* VLCApplication.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCApplication.h; sourceTree = "<group>"; };
 		7D5678EC1D5BA1DC002698F3 /* VLCApplication.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCApplication.m; sourceTree = "<group>"; };
 		7D5678EE1D5BA397002698F3 /* VLCMainWindowControlsBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCMainWindowControlsBar.h; sourceTree = "<group>"; };
@@ -1616,6 +1619,8 @@
 				6B846FE31CF5D88C00112E54 /* VLCHUDSliderCell.m */,
 				6B9FD0371EEB5D8A0085151F /* VLCHUDScroller.h */,
 				6B9FD0381EEB5D8A0085151F /* VLCHUDScroller.m */,
+				6BF5C5021EFE66EF008A9C12 /* VLCHUDTableView.h */,
+				6BF5C5031EFE66EF008A9C12 /* VLCHUDTableView.m */,
 				6BBB05D81EEFEA29003A1019 /* VLCHUDOutlineView.h */,
 				6BBB05D91EEFEA29003A1019 /* VLCHUDOutlineView.m */,
 				6BBB05DE1EEFF165003A1019 /* VLCHUDTableCornerView.h */,
@@ -1895,6 +1900,7 @@
 				1C3113961E508C6900D4DD76 /* applescript.m in Sources */,
 				1C3113981E508C6900D4DD76 /* VLCAudioEffectsWindowController.m in Sources */,
 				1C31139A1E508C6900D4DD76 /* VLCBookmarksWindowController.m in Sources */,
+				6BF5C5041EFE66EF008A9C12 /* VLCHUDTableView.m in Sources */,
 				6BBB05E01EEFF165003A1019 /* VLCHUDTableCornerView.m in Sources */,
 				1C31139D1E508C6900D4DD76 /* VLCControlsBarCommon.m in Sources */,
 				1C31139F1E508C6900D4DD76 /* VLCMainWindowControlsBar.m in Sources */,
diff --git a/modules/gui/macosx/Makefile.am b/modules/gui/macosx/Makefile.am
index faaf4125c1..aa063a03ef 100644
--- a/modules/gui/macosx/Makefile.am
+++ b/modules/gui/macosx/Makefile.am
@@ -78,6 +78,7 @@ libmacosx_plugin_la_SOURCES = \
 	gui/macosx/VLCHUDTextFieldCell.h gui/macosx/VLCHUDTextFieldCell.m \
 	gui/macosx/VLCHUDScroller.h gui/macosx/VLCHUDScroller.m \
 	gui/macosx/VLCHUDOutlineView.h gui/macosx/VLCHUDOutlineView.m \
+	gui/macosx/VLCHUDTableView.h gui/macosx/VLCHUDTableView.m \
 	gui/macosx/VLCHUDTableCornerView.h gui/macosx/VLCHUDTableCornerView.m \
 	gui/macosx/VLCHUDTableHeaderCell.h gui/macosx/VLCHUDTableHeaderCell.m \
 	gui/macosx/VLCHUDSegmentedCell.h gui/macosx/VLCHUDSegmentedCell.m \
diff --git a/modules/gui/macosx/VLCHUDTableView.h b/modules/gui/macosx/VLCHUDTableView.h
new file mode 100644
index 0000000000..8db28fc951
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDTableView.h
@@ -0,0 +1,50 @@
+//
+//  VLCHUDTableView.h
+//  BGHUDAppKit
+//
+//  Created by BinaryGod on 6/17/08.
+//
+//  Copyright (c) 2008, Tim Davis (BinaryMethod.com, binary.god at gmail.com)
+//  All rights reserved.
+//
+//  Redistribution and use in source and binary forms, with or without modification,
+//  are permitted provided that the following conditions are met:
+//
+//		Redistributions of source code must retain the above copyright notice, this
+//	list of conditions and the following disclaimer.
+//
+//		Redistributions in binary form must reproduce the above copyright notice,
+//	this list of conditions and the following disclaimer in the documentation and/or
+//	other materials provided with the distribution.
+//
+//		Neither the name of the BinaryMethod.com nor the names of its contributors
+//	may be used to endorse or promote products derived from this software without
+//	specific prior written permission.
+//
+//	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND
+//	ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+//	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+//	IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+//	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+//	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+//	OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+//	WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+//	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+//	POSSIBILITY OF SUCH DAMAGE.
+
+#import <Cocoa/Cocoa.h>
+
+ at interface VLCHUDTableView : NSTableView
+
+ at property (strong) NSColor *tableBackgroundColor;
+ at property (strong) NSArray *cellAlternatingRowColors;
+ at property (strong) NSColor *cellHighlightColor;
+ at property (strong) NSColor *cellEditingFillColor;
+ at property (strong) NSColor *cellTextColor;
+ at property (strong) NSColor *cellSelectedTextColor;
+ at property (strong) NSColor *strokeColor;
+
+ at property (strong) NSGradient *highlightGradient;
+ at property (strong) NSGradient *normalGradient;
+
+ at end
diff --git a/modules/gui/macosx/VLCHUDTableView.m b/modules/gui/macosx/VLCHUDTableView.m
new file mode 100644
index 0000000000..840e8c4045
--- /dev/null
+++ b/modules/gui/macosx/VLCHUDTableView.m
@@ -0,0 +1,105 @@
+//
+//  VLCHUDTableView.m
+//  BGHUDAppKit
+//
+//  Created by BinaryGod on 6/17/08.
+//
+//  Copyright (c) 2008, Tim Davis (BinaryMethod.com, binary.god at gmail.com)
+//  All rights reserved.
+//
+//  Redistribution and use in source and binary forms, with or without modification,
+//  are permitted provided that the following conditions are met:
+//
+//		Redistributions of source code must retain the above copyright notice, this
+//	list of conditions and the following disclaimer.
+//
+//		Redistributions in binary form must reproduce the above copyright notice,
+//	this list of conditions and the following disclaimer in the documentation and/or
+//	other materials provided with the distribution.
+//
+//		Neither the name of the BinaryMethod.com nor the names of its contributors
+//	may be used to endorse or promote products derived from this software without
+//	specific prior written permission.
+//
+//	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS AS IS AND
+//	ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+//	WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+//	IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
+//	INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
+//	BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
+//	OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
+//	WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+//	ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
+//	POSSIBILITY OF SUCH DAMAGE.
+
+#import "VLCHUDTableView.h"
+#import "VLCHUDTableCornerView.h"
+
+ at interface NSTableView (private)
+- (void)_sendDelegateWillDisplayCell:(id)cell forColumn:(id)column row:(NSInteger)row;
+ at end
+
+ at implementation VLCHUDTableView
+
+#pragma mark Drawing Functions
+
+- (instancetype)initWithCoder:(NSCoder *)decoder
+{
+
+    self = [super initWithCoder: decoder];
+
+    if (self) {
+        _tableBackgroundColor = [NSColor colorWithCalibratedRed:0 green:0 blue:0 alpha:0];
+        _cellHighlightColor = [NSColor colorWithDeviceRed:0.549f green:0.561f blue:0.588f alpha:1];
+        _cellEditingFillColor = [NSColor colorWithDeviceRed:0.141f green:0.141f blue:0.141f alpha:0.5f];
+        _cellAlternatingRowColors = @[[NSColor colorWithCalibratedWhite:0.16f alpha:0.86f],
+                                      [NSColor colorWithCalibratedWhite:0.15f alpha:0.8f]];
+        _cellTextColor = [NSColor whiteColor];
+        _cellSelectedTextColor = [NSColor blackColor];
+        _strokeColor = [NSColor colorWithDeviceRed:0.749f green:0.761f blue:0.788f alpha:1.0f];
+        _highlightGradient = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.451f green:0.451f blue:0.455f alpha:0.5f]
+                                                           endingColor:[NSColor colorWithDeviceRed:0.318f green:0.318f blue:0.318f alpha:0.5f]];
+        _normalGradient = [[NSGradient alloc] initWithStartingColor:[NSColor colorWithDeviceRed:0.251f green:0.251f blue:0.255f alpha:0.5f]
+                                                        endingColor:[NSColor colorWithDeviceRed:0.118f green:0.118f blue:0.118f alpha:0.5f]];
+
+
+        [self setBackgroundColor:_tableBackgroundColor];
+        [self setFocusRingType:NSFocusRingTypeNone];
+    }
+
+    return self;
+}
+
+- (id)_alternatingRowBackgroundColors {
+    return _cellAlternatingRowColors;
+}
+
+- (id)_highlightColorForCell:(id)cell {
+    return _cellHighlightColor;
+}
+
+- (void)_sendDelegateWillDisplayCell:(id)cell forColumn:(id)column row:(NSInteger)row {
+
+    [super _sendDelegateWillDisplayCell:cell forColumn:column row:row];
+
+    [[self currentEditor] setBackgroundColor:_cellEditingFillColor];
+    [[self currentEditor] setTextColor:_cellTextColor];
+
+    if([[self selectedRowIndexes] containsIndex: row]) {
+
+        if([cell respondsToSelector: @selector(setTextColor:)]) {
+            [cell setTextColor:_cellSelectedTextColor];
+        }
+    } else {
+
+        if ([cell respondsToSelector:@selector(setTextColor:)]) {
+            [cell setTextColor:_cellTextColor];
+        }
+    }
+}
+
+- (void)awakeFromNib {
+    [self setCornerView: [[VLCHUDTableCornerView alloc] init]];
+}
+
+ at end



More information about the vlc-commits mailing list