macosx: Add ability to hide knob to VLCSlider
authorMarvin Scholz <epirat07@gmail.com>
Sun, 23 Jul 2017 12:15:01 +0000 (14:15 +0200)
committerMarvin Scholz <epirat07@gmail.com>
Sun, 23 Jul 2017 12:17:30 +0000 (14:17 +0200)
When nothing is playing, the knob and progress should not be shown,
this adds an option for this to the VLCSlider

modules/gui/macosx/VLCSlider.h
modules/gui/macosx/VLCSlider.m
modules/gui/macosx/VLCSliderCell.h
modules/gui/macosx/VLCSliderCell.m

index d5ab0c8..ba95b63 100644 (file)
@@ -26,6 +26,7 @@
 @interface VLCSlider : NSSlider
 
 @property (nonatomic, getter=getIndefinite,setter=setIndefinite:) BOOL indefinite;
+@property (nonatomic, getter=getKnobHidden,setter=setKnobHidden:) BOOL isKnobHidden;
 
 - (void)setSliderStyleLight;
 - (void)setSliderStyleDark;
index f5cc5ff..e7eba8a 100644 (file)
     [(VLCSliderCell*)[self cell] setIndefinite:indefinite];
 }
 
+- (BOOL)getKnobHidden
+{
+    return [(VLCSliderCell*)[self cell] isKnobHidden];
+}
+
+- (void)setKnobHidden:(BOOL)isKnobHidden
+{
+    [(VLCSliderCell*)[self cell] setKnobHidden:isKnobHidden];
+}
+
 - (BOOL)isFlipped
 {
     return NO;
index eca0b17..d5508a0 100644 (file)
@@ -48,6 +48,7 @@
 @property NSInteger animationWidth;
 
 @property (nonatomic, setter=setIndefinite:) BOOL indefinite;
+@property (nonatomic, setter=setKnobHidden:) BOOL isKnobHidden;
 
 - (void)setSliderStyleLight;
 - (void)setSliderStyleDark;
index 4c005f9..51cee0e 100644 (file)
@@ -184,6 +184,9 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
 
 - (void)drawKnob:(NSRect)knobRect
 {
+    if (_isKnobHidden)
+        return;
+
     // Draw knob
     NSBezierPath* knobPath = [NSBezierPath bezierPathWithOvalInRect:NSInsetRect(knobRect, 2.0, 2.0)];
     if (self.isHighlighted) {
@@ -218,6 +221,13 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
     NSBezierPath* emptyTrackPath = [NSBezierPath bezierPathWithRoundedRect:rect xRadius:3 yRadius:3];
     [_trackGradient drawInBezierPath:emptyTrackPath angle:-90];
 
+    if (_isKnobHidden) {
+        [_trackStrokeColor setStroke];
+        emptyTrackPath.lineWidth = 1;
+        [emptyTrackPath stroke];
+        return;
+    }
+
     // Calculate filled track
     NSRect filledTrackRect = rect;
     NSRect knobRect = [self knobRectFlipped:NO];
@@ -324,5 +334,11 @@ static CVReturn DisplayLinkCallback(CVDisplayLinkRef displayLink, const CVTimeSt
     _indefinite = indefinite;
 }
 
+- (void)setKnobHidden:(BOOL)isKnobHidden
+{
+    _isKnobHidden = isKnobHidden;
+    [self.controlView setNeedsDisplay:YES];
+}
+
 
 @end