Felix Paul Kühne pushed to branch master at VideoLAN / VLC
Commits:
d5c1e55d by Claudio Cambra at 2024-10-08T06:42:42+00:00
macosx: Present a placeholder view in groups view controller when there are no
groups
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
6288393d by Claudio Cambra at 2024-10-08T06:42:42+00:00
macosx: Fix configuration of placeholder image view constraints in groups view
controller
Signed-off-by: Claudio Cambra <[email protected]>
- - - - -
1 changed file:
- modules/gui/macosx/library/groups-library/VLCLibraryGroupsViewController.m
Changes:
=====================================
modules/gui/macosx/library/groups-library/VLCLibraryGroupsViewController.m
=====================================
@@ -22,6 +22,8 @@
#import "VLCLibraryGroupsViewController.h"
+#import "extensions/NSString+Helpers.h"
+
#import "library/VLCLibraryCollectionViewDelegate.h"
#import "library/VLCLibraryCollectionViewFlowLayout.h"
#import "library/VLCLibraryCollectionViewItem.h"
@@ -40,6 +42,12 @@
#import "main/VLCMain.h"
+@interface VLCLibraryGroupsViewController ()
+{
+ NSArray<NSLayoutConstraint *>
*_internalPlaceholderImageViewSizeConstraints;
+}
+@end
+
@implementation VLCLibraryGroupsViewController
- (instancetype)initWithLibraryWindow:(VLCLibraryWindow *)libraryWindow
@@ -49,6 +57,7 @@
[self setupDataSource];
[self setupGridViewModeViews];
[self setupListViewModeViews];
+ [self setupPlaceholderView];
}
return self;
}
@@ -189,13 +198,65 @@
self.selectedGroupTableView.dataSource = self.dataSource;
}
+- (void)setupPlaceholderView
+{
+ _internalPlaceholderImageViewSizeConstraints = @[
+ [NSLayoutConstraint constraintWithItem:self.placeholderImageView
+ attribute:NSLayoutAttributeWidth
+ relatedBy:NSLayoutRelationEqual
+ toItem:nil
+ attribute:NSLayoutAttributeNotAnAttribute
+ multiplier:0.f
+ constant:182.f],
+ [NSLayoutConstraint constraintWithItem:self.placeholderImageView
+ attribute:NSLayoutAttributeHeight
+ relatedBy:NSLayoutRelationEqual
+ toItem:nil
+ attribute:NSLayoutAttributeNotAnAttribute
+ multiplier:0.f
+ constant:114.f],
+ ];
+}
+
- (id<VLCLibraryDataSource>)currentDataSource
{
return self.dataSource;
}
+- (NSArray<NSLayoutConstraint *> *)placeholderImageViewSizeConstraints
+{
+ return _internalPlaceholderImageViewSizeConstraints;
+}
+
+- (void)presentPlaceholderGroupsView
+{
+ NSArray<NSLayoutConstraint *> * const oldViewPlaceholderConstraints =
+
self.libraryWindow.librarySegmentViewController.placeholderImageViewSizeConstraints;
+ for (NSLayoutConstraint * const constraint in
oldViewPlaceholderConstraints) {
+ constraint.active = NO;
+ }
+ for (NSLayoutConstraint *constraint in
self.placeholderImageViewSizeConstraints) {
+ constraint.active = YES;
+ }
+
+ self.emptyLibraryView.translatesAutoresizingMaskIntoConstraints = NO;
+ self.libraryTargetView.subviews = @[self.emptyLibraryView];
+ NSView * const emptyLibraryView = self.emptyLibraryView;
+ NSDictionary * const dict =
NSDictionaryOfVariableBindings(emptyLibraryView);
+ [self.libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"H:|[emptyLibraryView(>=572.)]|" options:0
metrics:0 views:dict]];
+ [self.libraryTargetView addConstraints:[NSLayoutConstraint
constraintsWithVisualFormat:@"V:|[emptyLibraryView(>=444.)]|" options:0
metrics:0 views:dict]];
+
+ self.placeholderImageView.image = [NSImage
imageNamed:@"placeholder-video"];
+ self.placeholderLabel.stringValue = _NS("Your favorite groups will appear
here.");
+}
+
- (void)presentGroupsView
{
+ if (self.dataSource.libraryModel.numberOfGroups == 0) {
+ [self presentPlaceholderGroupsView];
+ return;
+ }
+
const VLCLibraryViewModeSegment viewModeSegment =
VLCLibraryWindowPersistentPreferences.sharedInstance.groupsLibraryViewMode;
NSView *viewToPresent = nil;
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/0dd67938c02ed9a6cfe3f17fe314bc3c99998fae...6288393dce77e3e9b838c9f8da668c40a95f3def
--
View it on GitLab:
https://code.videolan.org/videolan/vlc/-/compare/0dd67938c02ed9a6cfe3f17fe314bc3c99998fae...6288393dce77e3e9b838c9f8da668c40a95f3def
You're receiving this email because of your account on code.videolan.org.
VideoLAN code repository instance_______________________________________________
vlc-commits mailing list
[email protected]
https://mailman.videolan.org/listinfo/vlc-commits