[vlc-commits] [Git][videolan/vlc][master] 11 commits: macosx: Constify things in updateTimeSlider for VLCControlsBarCommon
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Sun Dec 15 15:02:25 UTC 2024
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
04d13875 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Constify things in updateTimeSlider for VLCControlsBarCommon
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
c3c53038 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Simplify time progress slider enablement and indefinite state update
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
27c1226f by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Define timeSlider and timeField states in one line in updateTimeSlider
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
ee602287 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Clean up volume slider update
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
01de827d by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Clean up updateCurrentItemDisplayControls
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
d1cdf755 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Condense else ... if into one else if in fwd and bwd of controls bar common
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
8e535b51 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Clean up updatePlaybackControls
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
cf916467 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Clean up timeSliderAction
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
4f370e14 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Safeguard against crash when calling floatValue on a sender that cannot comply
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
b02d8093 by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Clarify function (and clean up) setPause and setPlay in controls bar common
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
6b4ce43e by Claudio Cambra at 2024-12-15T14:47:19+00:00
macosx: Clean up init of controls bar common
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
1 changed file:
- modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
Changes:
=====================================
modules/gui/macosx/windows/controlsbar/VLCControlsBarCommon.m
=====================================
@@ -110,16 +110,16 @@
_nativeFullscreenMode = var_InheritBool(getIntf(), "macosx-nativefullscreenmode");
- [self.dropView setDrawBorder: NO];
+ self.dropView.drawBorder = NO;
- [self.playButton setToolTip: _NS("Play")];
+ self.playButton.toolTip = _NS("Play");
self.playButton.accessibilityLabel = self.playButton.toolTip;
- [self.backwardButton setToolTip: _NS("Backward")];
+ self.backwardButton.toolTip = _NS("Backward");
self.backwardButton.accessibilityLabel = _NS("Seek backward");
self.backwardButton.accessibilityTitle = self.backwardButton.toolTip;
- [self.forwardButton setToolTip: _NS("Forward")];
+ self.forwardButton.toolTip = _NS("Forward");
self.forwardButton.accessibilityLabel = _NS("Seek forward");
self.forwardButton.accessibilityTitle = self.forwardButton.toolTip;
@@ -131,11 +131,11 @@
self.jumpForwardButton.accessibilityLabel = _NS("Jump forwards in current item");
self.jumpForwardButton.accessibilityTitle = self.jumpForwardButton.toolTip;
- [self.timeSlider setToolTip: _NS("Position")];
+ self.timeSlider.toolTip = _NS("Position");
self.timeSlider.accessibilityLabel = _NS("Playback position");
self.timeSlider.accessibilityTitle = self.timeSlider.toolTip;
- [self.fullscreenButton setToolTip: _NS("Enter fullscreen")];
+ self.fullscreenButton.toolTip = _NS("Enter fullscreen");
self.fullscreenButton.accessibilityLabel = self.fullscreenButton.toolTip;
if (@available(macOS 11.0, *)) {
@@ -194,35 +194,34 @@
_unmutedVolumeImage = imageFromRes(@"VLCVolumeOnTemplate");
}
- [self.backwardButton setImage: _backwardImage];
- [self.backwardButton setAlternateImage: _backwardImage];
- [self.forwardButton setImage: _forwardImage];
- [self.forwardButton setAlternateImage: _forwardImage];
+ self.backwardButton.image = _backwardImage;
+ self.backwardButton.alternateImage = _backwardImage;
+ self.forwardButton.image = _forwardImage;
+ self.forwardButton.alternateImage = _forwardImage;
- [self.fullscreenButton setImage: _fullscreenImage];
- [self.fullscreenButton setAlternateImage: _fullscreenImage];
- [self.playButton setImage: _playImage];
- [self.playButton setAlternateImage: _pressedPlayImage];
+ self.fullscreenButton.image = _fullscreenImage;
+ self.fullscreenButton.alternateImage = _fullscreenImage;
+ self.playButton.image = _playImage;
+ self.playButton.alternateImage = _pressedPlayImage;
- [self.timeSlider setHidden:NO];
+ self.timeSlider.hidden = NO;
- NSString *volumeTooltip = [NSString stringWithFormat:_NS("Volume: %i %%"), 100];
- [self.volumeSlider setToolTip: volumeTooltip];
+ self.volumeSlider.toolTip = [NSString stringWithFormat:_NS("Volume: %i %%"), 100];
self.volumeSlider.accessibilityLabel = _NS("Volume");
- [self.volumeSlider setMaxValue: VLCVolumeMaximum];
- [self.volumeSlider setDefaultValue: VLCVolumeDefault];
+ self.volumeSlider.maxValue = VLCVolumeMaximum;
+ self.volumeSlider.defaultValue = VLCVolumeDefault;
- [self.muteVolumeButton setToolTip: _NS("Mute")];
+ self.muteVolumeButton.toolTip = _NS("Mute");
self.muteVolumeButton.accessibilityLabel = self.muteVolumeButton.toolTip;
- [self.timeField setNeedsDisplay:YES];
+ self.timeField.needsDisplay = YES;
[self.timeField setRemainingIdentifier:VLCTimeFieldDisplayTimeAsElapsed];
self.trailingTimeField.isTimeRemaining = NO;
self.timeField.accessibilityLabel = _NS("Playback time");
self.trailingTimeField.isTimeRemaining = !self.timeField.isTimeRemaining;
- [self.trailingTimeField setNeedsDisplay:YES];
+ self.trailingTimeField.needsDisplay = YES;
[self.trailingTimeField setRemainingIdentifier:VLCTimeFieldDisplayTimeAsRemaining];
self.trailingTimeField.isTimeRemaining = YES;
self.trailingTimeField.accessibilityLabel = _NS("Playback time");
@@ -244,10 +243,10 @@
[self playerStateUpdated:nil];
- [_artworkImageView setCropsImagesToRoundedCorners:YES];
- [_artworkImageView setImage:[NSImage imageNamed:@"noart"]];
- [_artworkImageView setContentGravity:VLCImageViewContentGravityResize];
-
+ self.artworkImageView.cropsImagesToRoundedCorners = YES;
+ self.artworkImageView.image = [NSImage imageNamed:@"noart"];
+ self.artworkImageView.contentGravity = VLCImageViewContentGravityResize;
+
if (!NSClassFromString(@"PIPViewController")) {
self.pipButtonWidthConstraint.constant = 0;
self.pipButton.hidden = YES;
@@ -264,7 +263,7 @@
- (CGFloat)height
{
- return [self.bottomBarView frame].size.height;
+ return self.bottomBarView.frame.size.height;
}
#pragma mark -
@@ -298,15 +297,13 @@
[self performSelector:@selector(resetPreviousButton)
withObject: NULL
afterDelay:0.40];
- } else {
- if (([NSDate timeIntervalSinceReferenceDate] - last_fwd_event) > 0.16) {
- // we just skipped 4 "continuous" events, otherwise we are too fast
- [_playerController jumpBackwardExtraShort];
- last_bwd_event = [NSDate timeIntervalSinceReferenceDate];
- [self performSelector:@selector(resetBackwardSkip)
- withObject: NULL
- afterDelay:0.40];
- }
+ } else if (([NSDate timeIntervalSinceReferenceDate] - last_fwd_event) > 0.16) {
+ // we just skipped 4 "continuous" events, otherwise we are too fast
+ [_playerController jumpBackwardExtraShort];
+ last_bwd_event = [NSDate timeIntervalSinceReferenceDate];
+ [self performSelector:@selector(resetBackwardSkip)
+ withObject: NULL
+ afterDelay:0.40];
}
}
@@ -333,15 +330,13 @@
[self performSelector:@selector(resetNextButton)
withObject: NULL
afterDelay:0.40];
- } else {
- if (([NSDate timeIntervalSinceReferenceDate] - last_fwd_event) > 0.16) {
- // we just skipped 4 "continuous" events, otherwise we are too fast
- [_playerController jumpForwardExtraShort];
- last_fwd_event = [NSDate timeIntervalSinceReferenceDate];
- [self performSelector:@selector(resetForwardSkip)
- withObject: NULL
- afterDelay:0.40];
- }
+ } else if (([NSDate timeIntervalSinceReferenceDate] - last_fwd_event) > 0.16) {
+ // we just skipped 4 "continuous" events, otherwise we are too fast
+ [_playerController jumpForwardExtraShort];
+ last_fwd_event = [NSDate timeIntervalSinceReferenceDate];
+ [self performSelector:@selector(resetForwardSkip)
+ withObject: NULL
+ afterDelay:0.40];
}
}
@@ -357,12 +352,12 @@
- (IBAction)timeSliderAction:(id)sender
{
- float newPosition;
- NSEvent *theEvent = [NSApp currentEvent];
- NSEventType theEventType = [theEvent type];
+ if (![sender respondsToSelector:@selector(floatValue)]) {
+ return;
+ }
- switch (theEventType) {
- case NSLeftMouseUp:
+ switch (NSApp.currentEvent.type) {
+ case NSEventTypeLeftMouseUp:
/* Ignore mouse up, as this is a continuous slider and
* when the user does a single click to a position on the slider,
* the action is called twice, once for the mouse down and once
@@ -371,20 +366,18 @@
* audio quirks.
*/
return;
- case NSLeftMouseDown:
- case NSLeftMouseDragged:
- newPosition = [sender floatValue];
- break;
- case NSScrollWheel:
- newPosition = [sender floatValue];
+ case NSEventTypeLeftMouseDown:
+ case NSEventTypeLeftMouseDragged:
+ case NSEventTypeScrollWheel:
+ {
+ const float newPosition = [sender floatValue];
+ [_playerController setPositionFast:newPosition];
+ self.timeSlider.floatValue = newPosition;
break;
-
+ }
default:
return;
}
-
- [_playerController setPositionFast:newPosition];
- [self.timeSlider setFloatValue:newPosition];
}
- (IBAction)volumeAction:(id)sender
@@ -420,60 +413,36 @@
- (void)updateTimeSlider:(NSNotification *)aNotification;
{
- VLCInputItem *inputItem = _playerController.currentMedia;
-
- if (!inputItem) {
- // Nothing playing
- [self.timeSlider setKnobHidden:YES];
- [self.timeSlider setFloatValue: 0.0];
- [self.timeField setStringValue: @"00:00"];
- [self.timeSlider setIndefinite:NO];
- [self.timeSlider setEnabled:NO];
- [self.timeSlider setHidden:YES];
- return;
- }
+ VLCInputItem * const inputItem = _playerController.currentMedia;
- [self.timeSlider setHidden:NO];
- [self.timeSlider setKnobHidden:NO];
- [self.timeSlider setFloatValue:_playerController.position];
-
- vlc_tick_t duration = inputItem.duration;
- bool buffering = _playerController.playerState == VLC_PLAYER_STATE_STARTED;
- if (duration == -1) {
- // No duration, disable slider
- [self.timeSlider setEnabled:NO];
- } else if (buffering) {
- [self.timeSlider setEnabled:NO];
- [self.timeSlider setIndefinite:buffering];
- } else {
- [self.timeSlider setEnabled:_playerController.seekable];
- }
+ const BOOL validInputItem = inputItem != nil;
+ const vlc_tick_t duration = validInputItem ? inputItem.duration : -1;
+ NSString * const timeString =
+ [NSString stringWithDuration:duration currentTime:_playerController.time negative:NO];
+ NSString * const remainingTime =
+ [NSString stringWithDuration:duration currentTime:_playerController.time negative:YES];
+ const BOOL buffering = _playerController.playerState == VLC_PLAYER_STATE_STARTED;
+
+ self.timeSlider.hidden = !validInputItem;
+ self.timeSlider.enabled = duration >= 0 && !buffering && _playerController.seekable;
+ self.timeSlider.indefinite = buffering;
+ self.timeSlider.floatValue = validInputItem ? _playerController.position : 0.;
- NSString *timeString = [NSString stringWithDuration:duration
- currentTime:_playerController.time
- negative:NO];
- NSString *remainingTime = [NSString stringWithDuration:duration
- currentTime:_playerController.time
- negative:YES];
[self.timeField setTime:timeString withRemainingTime:remainingTime];
- [self.timeField setNeedsDisplay:YES];
[self.trailingTimeField setTime:timeString withRemainingTime:remainingTime];
- [self.trailingTimeField setNeedsDisplay:YES];
+ self.timeField.needsDisplay = YES;
+ self.trailingTimeField.needsDisplay = YES;
}
- (void)updateVolumeSlider:(NSNotification *)aNotification
{
- float f_volume = _playerController.volume;
- BOOL b_muted = _playerController.mute;
-
- if (b_muted)
- f_volume = 0.f;
+ const BOOL muted = _playerController.mute;
+ const float volume = muted ? 0. : _playerController.volume;
- [self.volumeSlider setFloatValue: f_volume];
- NSString *volumeTooltip = [NSString stringWithFormat:_NS("Volume: %i %%"), (int)(f_volume * 100.0f)];
- [self.volumeSlider setToolTip:volumeTooltip];
-
- [self.volumeSlider setEnabled: !b_muted];
+ self.volumeSlider.enabled = !muted;
+ self.volumeSlider.floatValue = volume;
+ self.volumeSlider.toolTip =
+ [NSString stringWithFormat:_NS("Volume: %i %%"), (int)(volume * 100.)];
}
- (void)updateMuteVolumeButton:(NSNotification*)aNotification
@@ -483,73 +452,65 @@
- (void)updateMuteVolumeButtonImage
{
- _muteVolumeButton.image = _playerController.mute ?
- _mutedVolumeImage : _unmutedVolumeImage;
+ _muteVolumeButton.image = _playerController.mute ? _mutedVolumeImage : _unmutedVolumeImage;
}
- (void)playerStateUpdated:(NSNotification *)aNotification
{
if (_playerController.playerState == VLC_PLAYER_STATE_PLAYING) {
- [self setPause];
+ [self updatePlayButtonWithPauseState];
} else {
- [self setPlay];
+ [self updatePlayButtonWithPlayState];
}
}
-- (void)updatePlaybackControls:(NSNotification *)aNotification
+- (void)updatePlaybackControls:(NSNotification *)notification
{
- bool b_seekable = _playerController.seekable;
- bool b_chapters = [_playerController numberOfChaptersForCurrentTitle] > 0;
+ const BOOL seekable = _playerController.seekable;
+ const BOOL chapters = _playerController.numberOfChaptersForCurrentTitle > 0;
- [self.timeSlider setEnabled: b_seekable];
+ self.timeSlider.enabled = seekable;
+ self.forwardButton.enabled = seekable || _playQueueController.hasNextPlayQueueItem || chapters;
+ self.backwardButton.enabled = seekable || _playQueueController.hasPreviousPlayQueueItem || chapters;
- [self.forwardButton setEnabled: (b_seekable || _playQueueController.hasNextPlayQueueItem || b_chapters)];
- [self.backwardButton setEnabled: (b_seekable || _playQueueController.hasPreviousPlayQueueItem || b_chapters)];
- [self updateCurrentItemDisplayControls:aNotification];
+ [self updateCurrentItemDisplayControls:notification];
}
-- (void)updateCurrentItemDisplayControls:(NSNotification *)aNotification
+- (void)updateCurrentItemDisplayControls:(NSNotification *)notification
{
VLCInputItem * const inputItem = _playerController.currentMedia;
- if (!inputItem) {
- return;
- }
-
- _playingItemDisplayField.stringValue = inputItem.name;
-
VLCMediaLibraryMediaItem * const mediaItem =
[VLCMediaLibraryMediaItem mediaItemForURL:_playerController.URLOfCurrentMediaItem];
- if (!mediaItem) {
- self.detailLabel.hidden = YES;
- } else {
- _detailLabel.hidden =
- [mediaItem.primaryDetailString isEqualToString:@""] ||
- [mediaItem.primaryDetailString isEqualToString:mediaItem.durationString];
- _detailLabel.stringValue = mediaItem.primaryDetailString;
- }
- NSURL * const artworkURL = inputItem.artworkURL;
+ self.playingItemDisplayField.stringValue = inputItem ? inputItem.name : _NS("No current item");
+ self.detailLabel.hidden =
+ mediaItem == nil ||
+ [mediaItem.primaryDetailString isEqualToString:@""] ||
+ [mediaItem.primaryDetailString isEqualToString:mediaItem.durationString];
+ self.detailLabel.stringValue = mediaItem.primaryDetailString;
+ NSURL * const artworkURL = inputItem.artworkURL;
+ NSImage * const placeholderImage = [NSImage imageNamed:@"noart"];
if (artworkURL) {
- [_artworkImageView setImageURL:inputItem.artworkURL placeholderImage:[NSImage imageNamed:@"noart"]];
+ [self.artworkImageView setImageURL:inputItem.artworkURL placeholderImage:placeholderImage];
} else {
- _artworkImageView.image = [NSImage imageNamed:@"noart"];
+ self.artworkImageView.image = placeholderImage;
}
}
-- (void)setPause
+- (void)updatePlayButtonWithPauseState
{
- [self.playButton setImage: _pauseImage];
- [self.playButton setAlternateImage: _pressedPauseImage];
- [self.playButton setToolTip: _NS("Pause")];
+ self.playButton.image = _pauseImage;
+ self.playButton.alternateImage = _pressedPauseImage;
+ self.playButton.toolTip = _NS("Pause");
self.playButton.accessibilityLabel = self.playButton.toolTip;
}
-- (void)setPlay
+- (void)updatePlayButtonWithPlayState
{
- [self.playButton setImage: _playImage];
- [self.playButton setAlternateImage: _pressedPlayImage];
- [self.playButton setToolTip: _NS("Play")];
+ self.playButton.image = _playImage;
+ self.playButton.alternateImage = _pressedPlayImage;
+ self.playButton.toolTip = _NS("Play");
self.playButton.accessibilityLabel = self.playButton.toolTip;
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/d47e081ed4e752a99da82ee4f6883dc962fec277...6b4ce43e532d5ceeea7a4dec0b268b46e58634ef
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/d47e081ed4e752a99da82ee4f6883dc962fec277...6b4ce43e532d5ceeea7a4dec0b268b46e58634ef
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance
More information about the vlc-commits
mailing list