[vlc-commits] [Git][videolan/vlc][master] 13 commits: macosx: Add horizontal expand type
Felix Paul Kühne (@fkuehne)
gitlab at videolan.org
Tue Mar 12 19:31:39 UTC 2024
Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
fa174bff by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Add horizontal expand type
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
0e4fc730 by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Remove unused _lastHeightIndex in VLCLibraryCollectionViewFlowLayout
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
44dac986 by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Display supplementary detail views in VLCLibraryCollectionViewFlowLayout horizontally when the layout is horizontal
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
8d46aebd by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Make VLCLibraryCollectionViewSupplementaryView keep track of collection view layout scroll direction
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
5fc5adf7 by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Extract VLCLibraryCollectionViewSupplementaryDetailView background drawing into separate methods
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
19d520c2 by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Draw supplementary detail view arrow on left in horizontal layouts
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
c6e79297 by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Make VLCLibraryCollectionViewSupplementaryDetailView keep track of content constraints, change according to collection view layout
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
83a33c10 by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: only do constraint setting in VLCLibraryCollectionViewSupplementaryDetailView if constraints are valid
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
59771e1a by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Set constraint outlets in VLCLibrraryCollectionViewMediaItemSupplementaryDetailView.xib
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
845e2a96 by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Set constraint outlets in VLCLibrraryCollectionViewAlbumSupplementaryDetailView.xib
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
5e6bd45f by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Set constraint outlets in VLCLibrraryCollectionViewAudioGroupSupplementaryDetailView.xib
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
4f4d26db by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Fix trailing line at bottom-left of horizontal detail supplementary view
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
b40275da by Claudio Cambra at 2024-03-12T19:01:54+00:00
macosx: Adjust horizontal supplementary detail view sizing, add large size
Signed-off-by: Claudio Cambra <developer at claudiocambra.com>
- - - - -
10 changed files:
- modules/gui/macosx/UI/VLCLibraryCollectionViewAlbumSupplementaryDetailView.xib
- modules/gui/macosx/UI/VLCLibraryCollectionViewAudioGroupSupplementaryDetailView.xib
- modules/gui/macosx/UI/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.xib
- modules/gui/macosx/library/VLCLibraryCollectionViewFlowLayout.m
- modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.h
- modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.m
- modules/gui/macosx/library/VLCLibraryUIUnits.h
- modules/gui/macosx/library/VLCLibraryUIUnits.m
- modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
- modules/gui/macosx/library/home-library/VLCLibraryHomeViewVideoContainerViewDataSource.m
Changes:
=====================================
modules/gui/macosx/UI/VLCLibraryCollectionViewAlbumSupplementaryDetailView.xib
=====================================
@@ -232,6 +232,10 @@
<outlet property="albumTitleTextField" destination="nCe-dY-YMM" id="h3l-p0-w3e"/>
<outlet property="albumTracksTableView" destination="eEJ-WA-0aM" id="l8k-M9-a8e"/>
<outlet property="albumYearAndDurationTextField" destination="QuO-3G-BMT" id="y34-rD-uR"/>
+ <outlet property="contentViewBottomConstraint" destination="bUH-jE-TQQ" id="T0p-C1-8jm"/>
+ <outlet property="contentViewLeftConstraint" destination="D62-3E-aDO" id="T0p-C1-a8j"/>
+ <outlet property="contentViewRightConstraint" destination="cPm-6m-umY" id="T0p-C1-a7l"/>
+ <outlet property="contentViewTopConstraint" destination="Mr1-w0-CQK" id="T0p-C1-1nv"/>
<outlet property="internalScrollView" destination="9ZS-oy-iP9" id="afa-6P-b12"/>
<outlet property="playAlbumButton" destination="ntd-VT-2KS" id="ah5-as-eqw"/>
</connections>
=====================================
modules/gui/macosx/UI/VLCLibraryCollectionViewAudioGroupSupplementaryDetailView.xib
=====================================
@@ -84,6 +84,10 @@
<connections>
<outlet property="audioGroupAlbumsTableView" destination="eEJ-WA-0aM" id="l8k-M9-a8e"/>
<outlet property="audioGroupNameTextField" destination="nCe-dY-YMM" id="h3l-p0-w3e"/>
+ <outlet property="contentViewBottomConstraint" destination="eS3-iK-oGV" id="T0p-C1-8jm"/>
+ <outlet property="contentViewLeftConstraint" destination="L0r-A5-7Xq" id="T0p-C1-a8j"/>
+ <outlet property="contentViewRightConstraint" destination="8QK-wS-vnX" id="T0p-C1-a7l"/>
+ <outlet property="contentViewTopConstraint" destination="oWk-8b-f1e" id="T0p-C1-1nv"/>
<outlet property="internalScrollView" destination="9ZS-oy-iP9" id="afa-6P-b12"/>
<outlet property="tableClipView" destination="3V4-tX-owM" id="t4b-1e-Cl1"/>
<outlet property="tableScrollView" destination="9ZS-oy-iP9" id="tab-L3-Scr"/>
=====================================
modules/gui/macosx/UI/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.xib
=====================================
@@ -236,6 +236,10 @@
<constraint firstAttribute="trailing" secondItem="FWp-yd-2Pm" secondAttribute="trailing" constant="10" id="cPm-6m-umY"/>
</constraints>
<connections>
+ <outlet property="contentViewBottomConstraint" destination="bUH-jE-TQQ" id="T0p-C1-8jm"/>
+ <outlet property="contentViewLeftConstraint" destination="D62-3E-aDO" id="T0p-C1-a8j"/>
+ <outlet property="contentViewRightConstraint" destination="cPm-6m-umY" id="T0p-C1-a7l"/>
+ <outlet property="contentViewTopConstraint" destination="Mr1-w0-CQK" id="T0p-C1-1nv"/>
<outlet property="mediaItemArtworkImageView" destination="xZd-Hk-h2M" id="J8l-V9-P06"/>
<outlet property="mediaItemFileNameTextField" destination="VxL-BW-3eh" id="fiL-3N-m3P"/>
<outlet property="mediaItemPathTextField" destination="7gY-3s-Kay" id="P4t-h1-m3P"/>
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewFlowLayout.m
=====================================
@@ -47,8 +47,10 @@ typedef NS_ENUM(NSUInteger, VLCDetailViewAnimationType)
};
typedef NS_ENUM(NSUInteger, VLCExpandAnimationType) {
- VLCExpandAnimationTypeDefault = 0,
- VLCExpandAnimationTypeLarge,
+ VLCExpandAnimationTypeVerticalMedium = 0,
+ VLCExpandAnimationTypeVerticalLarge,
+ VLCExpandAnimationTypeHorizontalMedium,
+ VLCExpandAnimationTypeHorizontalLarge,
};
static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
@@ -61,12 +63,13 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
#pragma mark - VLCLibraryCollectionViewFlowLayout
@interface VLCLibraryCollectionViewFlowLayout ()
{
- NSUInteger _lastHeightIndex;
CVDisplayLinkRef _displayLinkRef;
- NSArray *_defaultHeightAnimationSteps;
+ NSArray *_mediumHeightAnimationSteps;
NSArray *_largeHeightAnimationSteps;
-
+ NSArray *_mediumWidthAnimationSteps;
+ NSArray *_largeWidthAnimationSteps;
+
VLCExpandAnimationType _animationType;
CGFloat _prevProvidedAnimationStep;
@@ -86,10 +89,12 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
{
self = [super init];
if (self) {
- _defaultHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewHeight:VLCLibraryUIUnits.mediumDetailSupplementaryViewCollectionViewHeight]];
- _largeHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewHeight:VLCLibraryUIUnits.largeDetailSupplementaryViewCollectionViewHeight]];
-
- _animationType = VLCExpandAnimationTypeDefault;
+ _mediumHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewDimension:VLCLibraryUIUnits.mediumDetailSupplementaryViewCollectionViewHeight]];
+ _largeHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewDimension:VLCLibraryUIUnits.largeDetailSupplementaryViewCollectionViewHeight]];
+ _mediumWidthAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewDimension:VLCLibraryUIUnits.mediumDetailSupplementaryViewCollectionViewWidth]];
+ _largeWidthAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewDimension:VLCLibraryUIUnits.largeDetailSupplementaryViewCollectionViewWidth]];
+
+ _animationType = VLCExpandAnimationTypeVerticalMedium;
_prevProvidedAnimationStep = 0;
_invalidateAll = NO;
@@ -100,7 +105,7 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
return self;
}
-- (NSArray *)generateAnimationStepsForExpandedViewHeight:(NSInteger)height
+- (NSArray *)generateAnimationStepsForExpandedViewDimension:(NSInteger)dimension
{
NSMutableArray *generatedAnimationSteps = [NSMutableArray arrayWithCapacity:kAnimationSteps];
@@ -108,7 +113,7 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
for(int i = 0; i < kAnimationSteps; ++i) {
CGFloat progress = (CGFloat)i / (CGFloat)kAnimationSteps;
progress -= 1;
- generatedAnimationSteps[i] = @(height * (progress * progress * progress + 1) + kDetailViewCollapsedHeight);
+ generatedAnimationSteps[i] = @(dimension * (progress * progress * progress + 1) + kDetailViewCollapsedHeight);
}
return [generatedAnimationSteps copy];
@@ -121,12 +126,18 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
}
switch(_animationType) {
- case VLCExpandAnimationTypeLarge:
+ case VLCExpandAnimationTypeHorizontalMedium:
+ _prevProvidedAnimationStep = [_mediumWidthAnimationSteps[_animationIndex] floatValue];
+ break;
+ case VLCExpandAnimationTypeHorizontalLarge:
+ _prevProvidedAnimationStep = [_largeWidthAnimationSteps[_animationIndex] floatValue];
+ break;
+ case VLCExpandAnimationTypeVerticalLarge:
_prevProvidedAnimationStep = [_largeHeightAnimationSteps[_animationIndex] floatValue];
break;
- case VLCExpandAnimationTypeDefault:
+ case VLCExpandAnimationTypeVerticalMedium:
default:
- _prevProvidedAnimationStep = [_defaultHeightAnimationSteps[_animationIndex] floatValue];
+ _prevProvidedAnimationStep = [_mediumHeightAnimationSteps[_animationIndex] floatValue];
break;
}
@@ -187,7 +198,11 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
return contentSize;
}
- contentSize.height += [self currentAnimationStep];
+ if (self.scrollDirection == NSCollectionViewScrollDirectionVertical) {
+ contentSize.height += [self currentAnimationStep];
+ } else if (self.scrollDirection == NSCollectionViewScrollDirectionHorizontal) {
+ contentSize.width += [self currentAnimationStep];
+ }
return contentSize;
}
@@ -283,13 +298,13 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
if ([elementKind isEqualToString:VLCLibraryCollectionViewAudioGroupSupplementaryDetailViewKind]) {
isLibrarySupplementaryView = YES;
- _animationType = VLCExpandAnimationTypeLarge;
+ _animationType = self.scrollDirection == NSCollectionViewScrollDirectionVertical ? VLCExpandAnimationTypeVerticalLarge : VLCExpandAnimationTypeHorizontalLarge;
} else if ([elementKind isEqualToString:VLCLibraryCollectionViewAlbumSupplementaryDetailViewKind] ||
[elementKind isEqualToString:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewKind]) {
isLibrarySupplementaryView = YES;
- _animationType = VLCExpandAnimationTypeDefault;
+ _animationType = self.scrollDirection == NSCollectionViewScrollDirectionVertical ? VLCExpandAnimationTypeVerticalMedium : VLCExpandAnimationTypeHorizontalMedium;
}
if(isLibrarySupplementaryView) {
@@ -299,11 +314,24 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
@"Failed to create NSCollectionViewLayoutAttributes for view of kind %@.",
elementKind);
- float selectedItemFrameMaxY = _selectedIndexPath == nil ? 0 : NSMaxY([[self layoutAttributesForItemAtIndexPath:_selectedIndexPath] frame]);
- detailViewAttributes.frame = NSMakeRect(NSMinX(self.collectionView.frame) + self.minimumInteritemSpacing,
- selectedItemFrameMaxY + VLCLibraryUIUnits.mediumSpacing,
- self.collectionViewContentSize.width - (self.minimumInteritemSpacing * 2),
- [self currentAnimationStep]);
+ const NSRect selectedItemFrame = [[self layoutAttributesForItemAtIndexPath:_selectedIndexPath] frame];
+
+ if (self.scrollDirection == NSCollectionViewScrollDirectionVertical) {
+ const float selectedItemFrameMaxY = _selectedIndexPath == nil ? 0 : NSMaxY(selectedItemFrame);
+ detailViewAttributes.frame = NSMakeRect(NSMinX(self.collectionView.frame) + self.minimumInteritemSpacing,
+ selectedItemFrameMaxY + VLCLibraryUIUnits.mediumSpacing,
+ self.collectionViewContentSize.width - (self.minimumInteritemSpacing * 2),
+ [self currentAnimationStep]);
+
+ } else if (self.scrollDirection == NSCollectionViewScrollDirectionHorizontal) {
+ const float selectedItemFrameMinY = _selectedIndexPath == nil ? 0 : NSMinY(selectedItemFrame);
+ const float selectedItemFrameMaxX = _selectedIndexPath == nil ? 0 : NSMaxX(selectedItemFrame);
+ const float selectedItemFrameHeight = _selectedIndexPath == nil ? 0 : selectedItemFrame.size.height;
+ detailViewAttributes.frame = NSMakeRect(selectedItemFrameMaxX + self.minimumInteritemSpacing,
+ selectedItemFrameMinY,
+ [self currentAnimationStep],
+ selectedItemFrameHeight);
+ }
return detailViewAttributes;
}
@@ -345,8 +373,16 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
NSRect selectedItemFrame = selectedItemLayoutAttributes.frame;
- if (NSMinY(attributesFrame) > (NSMaxY(selectedItemFrame))) {
+ if (self.scrollDirection == NSCollectionViewScrollDirectionVertical &&
+ NSMinY(attributesFrame) > (NSMaxY(selectedItemFrame))) {
+
+ attributesFrame.origin.y += [self currentAnimationStep] + VLCLibraryUIUnits.mediumSpacing;
+
+ } else if (self.scrollDirection == NSCollectionViewScrollDirectionHorizontal &&
+ NSMinX(attributesFrame) > (NSMaxX(selectedItemFrame))) {
+
attributesFrame.origin.y += [self currentAnimationStep] + VLCLibraryUIUnits.mediumSpacing;
+ attributesFrame.origin.x += [self currentAnimationStep] + VLCLibraryUIUnits.mediumSpacing;
}
}
@@ -359,11 +395,9 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
if (type == VLCDetailViewAnimationTypeExpand) {
_animationIsCollapse = NO;
_animationIndex = kWrapAroundValue;
- _lastHeightIndex = kAnimationSteps - 1;
} else {
_animationIsCollapse = YES;
_animationIndex = kAnimationSteps;
- _lastHeightIndex = 0;
}
_detailViewIsAnimating = YES;
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.h
=====================================
@@ -38,6 +38,12 @@ NS_ASSUME_NONNULL_BEGIN
@property (readwrite, assign) NSScrollView *parentScrollView;
@property (readwrite, assign) VLCSubScrollView *internalScrollView;
+ at property (readwrite, assign, nonatomic) NSCollectionViewScrollDirection layoutScrollDirection;
+ at property (readwrite, weak) IBOutlet NSLayoutConstraint *contentViewTopConstraint;
+ at property (readwrite, weak) IBOutlet NSLayoutConstraint *contentViewBottomConstraint;
+ at property (readwrite, weak) IBOutlet NSLayoutConstraint *contentViewLeftConstraint;
+ at property (readwrite, weak) IBOutlet NSLayoutConstraint *contentViewRightConstraint;
+
- (void)updateRepresentation;
@end
=====================================
modules/gui/macosx/library/VLCLibraryCollectionViewSupplementaryDetailView.m
=====================================
@@ -21,6 +21,8 @@
*****************************************************************************/
#import "VLCLibraryCollectionViewSupplementaryDetailView.h"
+
+#import "library/VLCLibraryUIUnits.h"
#import "views/VLCSubScrollView.h"
static const CGFloat kArrowHeight = 20.;
@@ -47,12 +49,21 @@ static const CGFloat kBackgroundCornerRadius = 10.;
_arrowSize = NSMakeSize(kArrowWidth, kArrowHeight);
}
- const NSRect selectedItemFrame = _selectedItem.view.frame;
+ if (_layoutScrollDirection == NSCollectionViewScrollDirectionVertical) {
+ [self drawBackgroundWithTopArrow];
+ } else if (_layoutScrollDirection == NSCollectionViewScrollDirectionHorizontal) {
+ [self drawBackgroundWithLeftArrow];
+ }
+}
+- (void)drawBackgroundWithTopArrow
+{
+ const NSRect selectedItemFrame = _selectedItem.view.frame;
const NSPoint itemCenterPoint = NSMakePoint(NSMinX(selectedItemFrame) + NSWidth(selectedItemFrame) / 2,
NSMinY(selectedItemFrame) + NSHeight(selectedItemFrame) / 2);
const NSRect backgroundRect = NSMakeRect(NSMinX(self.bounds),
- NSMinY(self.bounds), NSWidth(self.bounds) + 2,
+ NSMinY(self.bounds),
+ NSWidth(self.bounds) + 2,
NSHeight(self.bounds) - _arrowSize.height);
const CGFloat backgroundTop = NSMaxY(backgroundRect);
const CGFloat backgroundLeft = NSMinX(backgroundRect);
@@ -76,7 +87,45 @@ static const CGFloat kBackgroundCornerRadius = 10.;
controlPoint2:NSMakePoint(itemCenterPoint.x + _arrowSize.width / 6, backgroundTop)];
[backgroundPath closePath];
+ [self colorBackground:backgroundPath];
+}
+
+- (void)drawBackgroundWithLeftArrow
+{
+ const NSRect selectedItemFrame = _selectedItem.view.frame;
+ const NSPoint itemCenterPoint = NSMakePoint(NSMinX(selectedItemFrame) + NSWidth(selectedItemFrame) / 2,
+ NSMinY(selectedItemFrame) + NSHeight(selectedItemFrame) / 2);
+ const NSRect backgroundRect = NSMakeRect(NSMinX(self.bounds) + _arrowSize.height,
+ NSMinY(self.bounds),
+ NSWidth(self.bounds) - _arrowSize.height,
+ NSHeight(self.bounds));
+ const CGFloat backgroundBottom = NSMinY(backgroundRect);
+ const CGFloat backgroundLeft = NSMinX(backgroundRect);
+
+ const NSPoint arrowBottomPoint = NSMakePoint(backgroundLeft, itemCenterPoint.y + _arrowSize.width / 2);
+ const NSPoint arrowLeftMostPoint = NSMakePoint(backgroundLeft - kArrowHeight + 1, itemCenterPoint.y);
+ const NSPoint arrowTopPoint = NSMakePoint(backgroundLeft, itemCenterPoint.y - _arrowSize.width / 2);
+
+ const NSPoint bottomLeftCorner = NSMakePoint(backgroundLeft, backgroundBottom);
+ const NSPoint bottomLeftCornerAfterCurve = NSMakePoint(backgroundLeft, backgroundBottom + kBackgroundCornerRadius);
+
+ const NSBezierPath *backgroundPath = [NSBezierPath bezierPathWithRoundedRect:backgroundRect xRadius:kBackgroundCornerRadius yRadius:kBackgroundCornerRadius];
+
+ [backgroundPath moveToPoint:bottomLeftCornerAfterCurve];
+ [backgroundPath lineToPoint:arrowBottomPoint];
+ [backgroundPath curveToPoint:arrowLeftMostPoint
+ controlPoint1:NSMakePoint(backgroundLeft, itemCenterPoint.y + _arrowSize.width / 6)
+ controlPoint2:NSMakePoint(backgroundLeft - _arrowSize.height, itemCenterPoint.y + kArrowTipRadius)];
+ [backgroundPath curveToPoint:arrowTopPoint
+ controlPoint1:NSMakePoint(backgroundLeft - _arrowSize.height, itemCenterPoint.y - kArrowTipRadius)
+ controlPoint2:NSMakePoint(backgroundLeft, itemCenterPoint.y - _arrowSize.width / 6)];
+ [backgroundPath closePath];
+ [self colorBackground:backgroundPath];
+}
+
+- (void)colorBackground:(const NSBezierPath*)backgroundPath
+{
//[[NSColor.gridColor colorWithAlphaComponent:self.container.alphaValue] setFill];
[NSColor.gridColor setFill];
[backgroundPath fill];
@@ -105,10 +154,31 @@ static const CGFloat kBackgroundCornerRadius = 10.;
_internalScrollView.parentScrollView = parentScrollView;
}
-- (void)setRepresentedItem:(VLCLibraryRepresentedItem *)representedItem
+- (BOOL)validConstraintProps
{
- _representedItem = representedItem;
- [self updateRepresentation];
+ return _contentViewTopConstraint != nil &&
+ _contentViewLeftConstraint != nil &&
+ _contentViewRightConstraint != nil &&
+ _contentViewBottomConstraint != nil;
+}
+
+- (void)setLayoutScrollDirection:(NSCollectionViewScrollDirection)layoutScrollDirection
+{
+ _layoutScrollDirection = layoutScrollDirection;
+
+ if (_layoutScrollDirection == NSCollectionViewScrollDirectionVertical && [self validConstraintProps]) {
+ _contentViewTopConstraint.constant = kArrowHeight + [VLCLibraryUIUnits mediumSpacing];
+ _contentViewBottomConstraint.constant = [VLCLibraryUIUnits mediumSpacing];
+ _contentViewLeftConstraint.constant = [VLCLibraryUIUnits mediumSpacing];
+ _contentViewRightConstraint.constant = [VLCLibraryUIUnits mediumSpacing];
+ } else if (_layoutScrollDirection == NSCollectionViewScrollDirectionHorizontal && [self validConstraintProps]) {
+ _contentViewTopConstraint.constant = [VLCLibraryUIUnits mediumSpacing];
+ _contentViewBottomConstraint.constant = [VLCLibraryUIUnits mediumSpacing];
+ _contentViewLeftConstraint.constant = kArrowHeight + [VLCLibraryUIUnits mediumSpacing];
+ _contentViewRightConstraint.constant = [VLCLibraryUIUnits mediumSpacing];
+ }
+
+ self.needsDisplay = YES;
}
- (void)updateRepresentation
@@ -117,4 +187,10 @@ static const CGFloat kBackgroundCornerRadius = 10.;
return;
}
+- (void)setRepresentedItem:(VLCLibraryRepresentedItem *)representedItem
+{
+ _representedItem = representedItem;
+ [self updateRepresentation];
+}
+
@end
=====================================
modules/gui/macosx/library/VLCLibraryUIUnits.h
=====================================
@@ -45,7 +45,9 @@ NS_ASSUME_NONNULL_BEGIN
@property (class, readonly) const CGFloat mediumTableViewRowHeight;
@property (class, readonly) const CGFloat smallTableViewRowHeight;
+ at property (class, readonly) const CGFloat mediumDetailSupplementaryViewCollectionViewWidth;
@property (class, readonly) const CGFloat mediumDetailSupplementaryViewCollectionViewHeight;
+ at property (class, readonly) const CGFloat largeDetailSupplementaryViewCollectionViewWidth;
@property (class, readonly) const CGFloat largeDetailSupplementaryViewCollectionViewHeight;
@property (class, readonly) const CGFloat dynamicCollectionViewItemMinimumWidth;
=====================================
modules/gui/macosx/library/VLCLibraryUIUnits.m
=====================================
@@ -71,11 +71,21 @@
return 25;
}
++ (const CGFloat)mediumDetailSupplementaryViewCollectionViewWidth
+{
+ return 600;
+}
+
+ (const CGFloat)mediumDetailSupplementaryViewCollectionViewHeight
{
return 300;
}
++ (const CGFloat)largeDetailSupplementaryViewCollectionViewWidth
+{
+ return 800;
+}
+
+ (const CGFloat)largeDetailSupplementaryViewCollectionViewHeight
{
return 500;
=====================================
modules/gui/macosx/library/audio-library/VLCLibraryAudioDataSource.m
=====================================
@@ -811,6 +811,11 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
albumSupplementaryDetailView.parentScrollView = VLCMain.sharedInstance.libraryWindow.audioCollectionViewScrollView;
albumSupplementaryDetailView.internalScrollView.scrollParentY = YES;
+ VLCLibraryCollectionViewFlowLayout *flowLayout = (VLCLibraryCollectionViewFlowLayout*)collectionView.collectionViewLayout;
+ if (flowLayout != nil) {
+ albumSupplementaryDetailView.layoutScrollDirection = flowLayout.scrollDirection;
+ }
+
return albumSupplementaryDetailView;
} else if ([kind isEqualToString:VLCLibraryCollectionViewAudioGroupSupplementaryDetailViewKind]) {
@@ -825,6 +830,11 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
audioGroupSupplementaryDetailView.parentScrollView = VLCMain.sharedInstance.libraryWindow.audioCollectionViewScrollView;
audioGroupSupplementaryDetailView.internalScrollView.scrollParentY = YES;
+ VLCLibraryCollectionViewFlowLayout *flowLayout = (VLCLibraryCollectionViewFlowLayout*)collectionView.collectionViewLayout;
+ if (flowLayout != nil) {
+ audioGroupSupplementaryDetailView.layoutScrollDirection = flowLayout.scrollDirection;
+ }
+
return audioGroupSupplementaryDetailView;
} else if ([kind isEqualToString:VLCLibraryCollectionViewMediaItemSupplementaryDetailViewKind]) {
@@ -836,6 +846,11 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
mediaItemSupplementaryDetailView.representedItem = representedItem;
mediaItemSupplementaryDetailView.selectedItem = [collectionView itemAtIndex:indexPath.item];
+ VLCLibraryCollectionViewFlowLayout *flowLayout = (VLCLibraryCollectionViewFlowLayout*)collectionView.collectionViewLayout;
+ if (flowLayout != nil) {
+ mediaItemSupplementaryDetailView.layoutScrollDirection = flowLayout.scrollDirection;
+ }
+
return mediaItemSupplementaryDetailView;
}
=====================================
modules/gui/macosx/library/home-library/VLCLibraryHomeViewVideoContainerViewDataSource.m
=====================================
@@ -326,6 +326,12 @@ viewForSupplementaryElementOfKind:(NSCollectionViewSupplementaryElementKind)kind
mediaItemSupplementaryDetailView.representedItem = representedItem;
mediaItemSupplementaryDetailView.selectedItem = [collectionView itemAtIndexPath:indexPath];
+
+ VLCLibraryCollectionViewFlowLayout *flowLayout = (VLCLibraryCollectionViewFlowLayout*)collectionView.collectionViewLayout;
+ if (flowLayout != nil) {
+ mediaItemSupplementaryDetailView.layoutScrollDirection = flowLayout.scrollDirection;
+ }
+
return mediaItemSupplementaryDetailView;
}
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/ee6ccb11962653f7aab525a18b10be6b80cf5d17...b40275da9c70f228f3742d8e5b07e613121dcea6
--
View it on GitLab: https://code.videolan.org/videolan/vlc/-/compare/ee6ccb11962653f7aab525a18b10be6b80cf5d17...b40275da9c70f228f3742d8e5b07e613121dcea6
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