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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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 <develo...@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;
+@property (readwrite, assign, nonatomic) NSCollectionViewScrollDirection
layoutScrollDirection;
+@property (readwrite, weak) IBOutlet NSLayoutConstraint
*contentViewTopConstraint;
+@property (readwrite, weak) IBOutlet NSLayoutConstraint
*contentViewBottomConstraint;
+@property (readwrite, weak) IBOutlet NSLayoutConstraint
*contentViewLeftConstraint;
+@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;
+@property (class, readonly) const CGFloat
mediumDetailSupplementaryViewCollectionViewWidth;
@property (class, readonly) const CGFloat
mediumDetailSupplementaryViewCollectionViewHeight;
+@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
_______________________________________________
vlc-commits mailing list
vlc-commits@videolan.org
https://mailman.videolan.org/listinfo/vlc-commits