Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • videolan/vlc
  • chouquette/vlc
  • bakiewicz.marek122/vlc
  • devnexen/vlc
  • rohanrajpal/vlc
  • blurrrb/vlc
  • gsoc/gsoc2019/darkapex/vlc
  • b1ue/vlc
  • fkuehne/vlc
  • magsoft/vlc
  • chub/vlc
  • cramiro9/vlc
  • robUx4/vlc
  • rom1v/vlc
  • akshayaky/vlc
  • tmk907/vlc
  • akymaster/vlc
  • govind.sharma/vlc
  • psilokos/vlc
  • xjbeta/vlc
  • jahan/vlc
  • 1480c1/vlc
  • amanchande/vlc
  • aaqib/vlc
  • rist/vlc
  • apol/vlc
  • mindfreeze/vlc
  • alexandre-janniaux/vlc
  • sandsmark/vlc
  • jagannatharjun/vlc
  • gsoc/gsoc2020/matiaslgonzalez/vlc
  • gsoc/gsoc2020/jagannatharjun/vlc
  • mstorsjo/vlc
  • gsoc/gsoc2020/vedenta/vlc
  • gsoc/gsoc2020/arnav-ishaan/vlc
  • gsoc/gsoc2020/andreduong/vlc
  • fuzun/vlc
  • gsoc/gsoc2020/vatsin/vlc
  • gsoc/gsoc2020/sagid/vlc
  • yaron/vlc
  • Phoenix/vlc
  • Garf/vlc
  • ePiratWorkarounds/vlc
  • tguillem/vlc
  • jnqnfe/vlc
  • mdc/vlc
  • Vedaa/vlc
  • rasa/vlc
  • quink/vlc
  • yealo/vlc
  • aleksey_ak/vlc
  • ePirat/vlc
  • ilya.yanok/vlc
  • asenat/vlc
  • m/vlc
  • bunjee/vlc
  • BLumia/vlc
  • sagudev/vlc
  • hamedmonji30/vlc
  • nullgemm/vlc
  • DivyamAhuja/vlc
  • thesamesam/vlc
  • dag7/vlc
  • snehil101/vlc
  • haasn/vlc
  • jbk/vlc
  • ValZapod/vlc
  • mfkl/vlc
  • WangChuan/vlc
  • core1024/vlc
  • GhostVaibhav/vlc
  • dfuhrmann/vlc
  • davide.prade/vlc
  • tmatth/vlc
  • Courmisch/vlc
  • zouya/vlc
  • hpi/vlc
  • EwoutH/vlc
  • aleung27/vlc
  • hengwu0/vlc
  • saladin/vlc
  • ashuio/vlc
  • richselwood/vlc
  • verma16Ayush/vlc
  • chemicalflash/vlc
  • PoignardAzur/vlc
  • huangjieNT/vlc
  • Blake-Haydon/vlc
  • AnuthaDev/vlc
  • gsoc/gsoc2021/mpd/vlc
  • nicolas_lequec/vlc
  • sambassaly/vlc
  • thresh/vlc
  • bonniegong/vlc
  • myaashish/vlc
  • stavros.vagionitis/vlc
  • ileoo/vlc
  • louis-santucci/vlc
  • cchristiansen/vlc
  • sabyasachi07/vlc
  • AbduAmeen/vlc
  • ashishb0410/vlc
  • urbanhusky/vlc
  • davidepietrasanta/vlc
  • riksleutelstad/vlc
  • jeremyVignelles/vlc
  • komh/vlc
  • iamjithinjohn/vlc
  • JohannesKauffmann/vlc2
  • kunglao/vlc
  • natzberg/vlc
  • jill/vlc
  • cwendling/vlc
  • adufou/vlc
  • ErwanAirone/vlc
  • HasinduDilshan10/vlc
  • vagrantc/vlc
  • rafiv/macos-bigsur-icon
  • Aymeriic/vlc
  • saranshg20/vlc
  • metzlove24/vlc
  • linkfanel/vlc
  • Ds886/vlc
  • metehan-arslan/vlc
  • Skantes/vlc
  • kgsandundananjaya96/vlc
  • mitchcapper/vlc
  • advaitgupta/vlc
  • StefanBruens/vlc
  • ratajs/vlc
  • T.M.F.B.3761/vlc
  • m222059/vlc
  • casemerrick/vlc
  • joshuaword2alt/vlc
  • sjwaddy/vlc
  • dima/vlc
  • Ybalrid/vlc
  • umxprime/vlc
  • eschmidt/vlc
  • vannieuwenhuysenmichelle/vlc
  • badcf00d/vlc
  • wesinator/vlc
  • louis/vlc
  • xqq/vlc
  • EmperorYP7/vlc
  • NicoLiam/vlc
  • loveleen/vlc
  • rofferom/vlc
  • rbultje/vlc
  • TheUnamed/vlc
  • pratiksharma341/vlc
  • Saurab17/vlc
  • purist.coder/vlc
  • Shuicheng/vlc
  • mdrrubel292/vlc
  • silverbleu00/vlc
  • metif12/vlc
  • asher-m/vlc
  • jeffk/vlc
  • Brandonbr1/vlc
  • beautyyuyanli/vlc
  • rego21/vlc
  • muyangren907/vlc
  • collectionbylawrencejason/vlc
  • evelez/vlc
  • GSMgeeth/vlc
  • Oneric/vlc
  • TJ5/vlc
  • XuanTung95/vlc
  • darrenjenny21/vlc
  • Trenly/vlc
  • RockyTDR/vlc
  • mjakubowski/vlc
  • caprica/vlc
  • ForteFrankie/vlc
  • seannamiller19/vlc
  • junlon2006/vlc
  • kiwiren6666/vlc
  • iuseiphonexs/vlc
  • fenngtun/vlc
  • Rajdutt999/vlc
  • typx/vlc
  • leon.vitanos/vlc
  • robertogarci0938/vlc
  • gsoc/gsoc2022/luc65r/vlc-mpd
  • skeller/vlc
  • MCJack123/vlc
  • luc65r/vlc-mpd
  • popov895/vlc
  • claucambra/vlc
  • brad/vlc
  • matthewmurua88/vlc
  • Tomas8874/vlc
  • philenotfound/vlc
  • makita-do3/vlc
  • LZXCorp/vlc
  • mar0x/vlc
  • senojetkennedy0102/vlc
  • shaneb243/vlc
  • ahmadbader/vlc
  • rajduttcse26/vlc-audio-filters
  • Juniorzito8415/vlc
  • achernyakov/vlc
  • lucasjetgroup/vlc
  • pupdoggy666/vlc
  • gmde9363/vlc
  • alexnwayne/vlc
  • bahareebrahimi781/vlc
  • hamad633666/vlc
  • umghof3112/vlc
  • joe0199771874/vlc
  • Octocats66666666/vlc
  • jjm_223/vlc
  • btech10110.19/vlc
  • sunnykfc028/vlc-audio-filters
  • loic/vlc
  • nguyenminhducmx1/vlc
  • JanekKrueger/vlc
  • bstubbington2/vlc
  • rcombs/vlc
  • Ordissimo/vlc
  • king7532/vlc
  • noobsauce101/vlc
  • schong0525/vlc
  • myQwil/vlc
  • apisbg91/vlc
  • geeboy0101017/vlc
  • kim.faughey/vlc
  • nurupo/vlc
  • yyusea/vlc
  • 0711235879.khco/vlc
  • ialo/vlc
  • iloveyeye2/vlc
  • gdtdftdqtd/vlc
  • leandroconsiglio/vlc
  • AndyHTML2012/vlc
  • ncz/vlc
  • lucenticus/vlc
  • knr1931/vlc
  • kjoonlee/vlc
  • chandrakant100/vlc-qt
  • johge42/vlc
  • polter/vlc
  • hexchain/vlc
  • Tushwrld/vlc
  • mztea928/vlc
  • jbelloncastro/vlc
  • alvinhochun/vlc
  • ghostpiratecrow/vlc
  • ujjwaltwitx/vlc
  • alexsonarin06/vlc
  • adrianbon76/vlc
  • altsod/vlc
  • damien.lucas44/vlc
  • dmytrivtaisa/vlc
  • utk202/vlc
  • aaxhrj/vlc
  • thomas.hermes/vlc
  • structurenewworldorder/vlc
  • slomo/vlc
  • wantlamy/vlc
  • musc.o3cminc/vlc
  • thebarshablog/vlc
  • kerrick/vlc
  • kratos142518/vlc
  • leogps/vlc
  • vacantron/vlc
  • luna_koly/vlc
  • Ratio2/vlc
  • anuoshemohammad/vlc
  • apsun/vlc
  • aaa1115910/vlc
  • alimotmoyo/vlc
  • Ambossmann/vlc
  • Sam-LearnsToCode/vlc
  • Chilledheart/vlc
  • Labnann/vlc
  • ktcoooot1/vlc
  • mohit-marathe/vlc
  • johnddx/vlc
  • manstabuk/vlc
  • Omar-ahmed314/vlc
  • vineethkm/vlc
  • 9Enemi86/vlc
  • radoslav.m.panteleev/vlc
  • ashishami2002/vlc
  • Corbax/vlc
  • firnasahmed/vlc
  • pelayarmalam4/vlc
  • c0ff330k/vlc
  • shikhindahikar/vlc
  • l342723951/vlc
  • christianschwandner/vlc
  • douniwan5788/vlc
  • 7damian7/vlc
  • ferdnyc/vlc
  • f.ales1/vlc
  • pandagby/vlc
  • BaaBaa/vlc
  • jewe37/vlc
  • w00drow/vlc
  • russelltg/vlc
  • ironicallygod/vlc
  • soumyaDghosh/vlc
  • linzihao1999/vlc
  • deyayush6/vlc
  • mibi88/vlc
  • newabdallah10/vlc
  • jhorbincolombia/vlc
  • rimvihaqueshupto/vlc
  • andrewkhon98/vlc
  • fab78/vlc
  • lapaz17/vlc
  • amanna13/vlc
  • mdakram28/vlc
  • 07jw1980/vlc
  • sohamgupta/vlc
  • Eson-Jia1/vlc
  • Sumou/vlc
  • vikram-kangotra/vlc
  • chalice191/vlc
  • olivercalder/vlc
  • aaasg4001/vlc
  • zipdox/vlc
  • kwizart/vlc
  • Dragon-S/vlc
  • jdemeule/vlc
  • gabriel_lt/vlc
  • locutusofborg/vlc
  • sammirata/vlc-librist
  • another/vlc
  • Benjamin_Loison/vlc
  • ahmedmoselhi/vlc
  • petergaal/vlc
  • huynhsontung/vlc
  • dariusmihut/vlc
  • tvermaashutosh/vlc
  • buti/vlc
  • Niram7777/vlc
  • rohan-here/vlc
  • balaji-sivasakthi/vlc
  • rlindner81/vlc
  • Kakadus/vlc
  • djain/vlc
  • ABBurmeister/vlc
  • craighuggins/vlc
  • orbea/vlc
  • maxos/vlc
  • aakarshmj/vlc
  • kblaschke/vlc
  • ankitm/vlc
  • advait-0/vlc
  • mohak2003/vlc
  • yselkowitz/vlc
  • AZM999/vlc-azm
  • andrey.turkin/vlc
  • Disha-Baghel/vlc
  • nowrep/vlc
  • Apeng/vlc
  • Choucroute_melba/vlc
  • autra/vlc
  • eclipseo/vlc
  • fhuber/vlc
  • olafhering/vlc
  • sdasda7777/vlc
  • 1div0/vlc
  • skosnits/vlc-extended-playlist-support
  • dnicolson/vlc
  • Timshel/vlc
  • octopols/vlc
  • MangalK/vlc
  • nima64/vlc
  • misawai/vlc
  • Alexander-Wilms/vlc
  • Maxime2/vlc-fork-for-visualizer
  • ww/vlc
  • jeske/vlc
  • sgross-emlix/vlc
  • morenonatural/vlc
  • freakingLovesVLC/vlc
  • borisgolovnev/vlc
  • mpromonet/vlc
  • diogo.simao-marques/vlc
  • masstock/vlc
  • pratikpatel8982/vlc
  • hugok79/vlc
  • longervision/vlc
  • abhiudaysurya/vlc
  • rishabhgarg/vlc
  • tumic/vlc
  • cart/vlc
  • shubham442/vlc
  • Aditya692005/vlc
  • sammirata/vlc4
  • syrykh/vlc
  • Vvorcun/macos-new-icon
  • AyaanshC/vlc
  • nasso/vlc
  • Quark/vlc
  • sebastinas/vlc
  • rhstone/vlc
  • talregev/vlc
  • Managor/vlc
403 results
Show changes
Commits on Source (13)
Showing
with 224 additions and 59 deletions
......@@ -92,6 +92,7 @@
536283F9291146BC00640C15 /* VLCLibraryCollectionViewFlowLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 536283EE291146BC00640C15 /* VLCLibraryCollectionViewFlowLayout.m */; };
53628402291147C500640C15 /* VLCBasicView.m in Sources */ = {isa = PBXBuildFile; fileRef = 536283FF291147C500640C15 /* VLCBasicView.m */; };
53628403291147C500640C15 /* VLCSubScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53628400291147C500640C15 /* VLCSubScrollView.m */; };
536EFBF5295BCB8300F4CB13 /* VLCLibraryUIUnits.m in Sources */ = {isa = PBXBuildFile; fileRef = 536EFBF4295BCB8300F4CB13 /* VLCLibraryUIUnits.m */; };
53B447CA2939823E00857588 /* VLCLibrarySongsTableViewSongPlayingTableCellView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53B447C92939823E00857588 /* VLCLibrarySongsTableViewSongPlayingTableCellView.m */; };
53B447F6293BB47B00857588 /* VLCLibraryVideoCollectionViewContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 53B447EC293BB47A00857588 /* VLCLibraryVideoCollectionViewContainerView.m */; };
53B447F7293BB47B00857588 /* VLCLibraryVideoCollectionViewContainerViewDataSource.m in Sources */ = {isa = PBXBuildFile; fileRef = 53B447ED293BB47A00857588 /* VLCLibraryVideoCollectionViewContainerViewDataSource.m */; };
......@@ -271,6 +272,8 @@
536283FF291147C500640C15 /* VLCBasicView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCBasicView.m; sourceTree = "<group>"; };
53628400291147C500640C15 /* VLCSubScrollView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCSubScrollView.m; sourceTree = "<group>"; };
53628401291147C500640C15 /* VLCSubScrollView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = VLCSubScrollView.h; sourceTree = "<group>"; };
536EFBF3295BCB8300F4CB13 /* VLCLibraryUIUnits.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryUIUnits.h; sourceTree = "<group>"; };
536EFBF4295BCB8300F4CB13 /* VLCLibraryUIUnits.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryUIUnits.m; sourceTree = "<group>"; };
53B447C82939823E00857588 /* VLCLibrarySongsTableViewSongPlayingTableCellView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibrarySongsTableViewSongPlayingTableCellView.h; sourceTree = "<group>"; };
53B447C92939823E00857588 /* VLCLibrarySongsTableViewSongPlayingTableCellView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibrarySongsTableViewSongPlayingTableCellView.m; sourceTree = "<group>"; };
53B447EC293BB47A00857588 /* VLCLibraryVideoCollectionViewContainerView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryVideoCollectionViewContainerView.m; sourceTree = "<group>"; };
......@@ -1153,6 +1156,8 @@
5317FE02294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.h */,
5317FE03294E3DD3001702F0 /* VLCLibraryCollectionViewDelegate.m */,
5317FE05294E8D1A001702F0 /* VLCLibraryCollectionViewDataSource.h */,
536EFBF3295BCB8300F4CB13 /* VLCLibraryUIUnits.h */,
536EFBF4295BCB8300F4CB13 /* VLCLibraryUIUnits.m */,
);
path = library;
sourceTree = "<group>";
......@@ -1848,6 +1853,7 @@
536283F6291146BC00640C15 /* VLCLibraryCollectionViewAudioGroupSupplementaryDetailView.m in Sources */,
1CCC89022078A3D500E5626F /* ResumeDialog.xib in Sources */,
7DE7232E22A51F8D00D72616 /* VLCPositionFormatter.m in Sources */,
536EFBF5295BCB8300F4CB13 /* VLCLibraryUIUnits.m in Sources */,
1CCC89032078A3D500E5626F /* SimplePreferences.xib in Sources */,
7DE82E7922843781002D341A /* VLCLibraryAlbumTableCellView.m in Sources */,
7D67318622C8F4060000AD40 /* VLCMediaSourceCollectionViewItem.m in Sources */,
......
......@@ -93,6 +93,8 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/library/VLCLibraryTableView.m \
gui/macosx/library/VLCLibraryTableCellView.h \
gui/macosx/library/VLCLibraryTableCellView.m \
gui/macosx/library/VLCLibraryUIUnits.h \
gui/macosx/library/VLCLibraryUIUnits.m \
gui/macosx/library/VLCLibraryWindow.h \
gui/macosx/library/VLCLibraryWindow.m \
gui/macosx/library/VLCLibraryWindowController.h \
......
......@@ -24,7 +24,9 @@
#import "VLCLibraryCollectionViewDataSource.h"
#import "VLCLibraryCollectionViewFlowLayout.h"
#import "VLCLibraryCollectionViewItem.h"
#import "VLCLibraryDataTypes.h"
#import "VLCLibraryUIUnits.h"
@implementation VLCLibraryCollectionViewDelegate
......@@ -33,7 +35,7 @@
self = [super init];
if (self) {
_dynamicItemSizing = YES;
_staticItemSize = NSMakeSize(214, 260);
_staticItemSize = [VLCLibraryCollectionViewItem defaultSize];
}
return self;
}
......@@ -85,22 +87,19 @@
- (NSSize)adjustedItemSizeForCollectionView:(NSCollectionView *)collectionView
withLayout:(VLCLibraryCollectionViewFlowLayout *)collectionViewLayout
{
static const CGFloat maxItemWidth = 280;
static const CGFloat minItemWidth = 180;
static uint numItemsInRow = 5;
NSSize itemSize = [self itemSizeForCollectionView:collectionView
withLayout:collectionViewLayout
withNumberOfItemsInRow:numItemsInRow];
while (itemSize.width > maxItemWidth) {
while (itemSize.width > [VLCLibraryUIUnits dynamicCollectionViewItemMaximumSize]) {
++numItemsInRow;
itemSize = [self itemSizeForCollectionView:collectionView
withLayout:collectionViewLayout
withNumberOfItemsInRow:numItemsInRow];
}
while (itemSize.width < minItemWidth) {
while (itemSize.width < [VLCLibraryUIUnits dynamicCollectionViewItemMinimumSize]) {
--numItemsInRow;
itemSize = [self itemSizeForCollectionView:collectionView
withLayout:collectionViewLayout
......@@ -128,7 +127,7 @@
1);
const CGFloat itemWidth = rowOfItemsWidth / numItemsInRow;
return NSMakeSize(itemWidth, itemWidth + 46); // Text fields height needed
return NSMakeSize(itemWidth, itemWidth + [VLCLibraryCollectionViewItem bottomTextViewsHeight]);
}
- (BOOL)collectionView:(NSCollectionView *)collectionView
......
......@@ -23,6 +23,7 @@
#import "VLCLibraryCollectionViewFlowLayout.h"
#import "library/VLCLibraryCollectionViewMediaItemSupplementaryDetailView.h"
#import "library/VLCLibraryUIUnits.h"
#import "library/audio-library/VLCLibraryAudioDataSource.h"
#import "library/audio-library/VLCLibraryCollectionViewAlbumSupplementaryDetailView.h"
......@@ -34,10 +35,7 @@
static const NSUInteger kAnimationSteps = 32;
static const NSUInteger kWrapAroundValue = (NSUInteger)-1;
static const CGFloat kDetailViewMargin = 8.;
static const CGFloat kDetailViewCollapsedHeight = 0.;
static const CGFloat kDetailViewDefaultExpandedHeight = 300.;
static const CGFloat kDetailViewLargeExpandedHeight = 500.;
typedef NS_ENUM(NSUInteger, VLCDetailViewAnimationType)
{
......@@ -85,8 +83,8 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
{
self = [super init];
if (self) {
_defaultHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewHeight:kDetailViewDefaultExpandedHeight]];
_largeHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewHeight:kDetailViewLargeExpandedHeight]];
_defaultHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewHeight:[VLCLibraryUIUnits mediumDetailSupplementaryViewCollectionViewHeight]]];
_largeHeightAnimationSteps = [NSArray arrayWithArray:[self generateAnimationStepsForExpandedViewHeight:[VLCLibraryUIUnits largeDetailSupplementaryViewCollectionViewHeight]]];
_animationType = VLCExpandAnimationTypeDefault;
_prevProvidedAnimationStep = 0;
......@@ -274,9 +272,9 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
elementKind);
float selectedItemFrameMaxY = _selectedIndexPath == nil ? 0 : NSMaxY([[self layoutAttributesForItemAtIndexPath:_selectedIndexPath] frame]);
detailViewAttributes.frame = NSMakeRect(NSMinX(self.collectionView.frame),
selectedItemFrameMaxY + kDetailViewMargin,
self.collectionViewContentSize.width - 20.0,
detailViewAttributes.frame = NSMakeRect(NSMinX(self.collectionView.frame) + self.minimumInteritemSpacing,
selectedItemFrameMaxY + [VLCLibraryUIUnits mediumSpacing],
self.collectionViewContentSize.width - (self.minimumInteritemSpacing * 2),
[self currentAnimationStep]);
return detailViewAttributes;
......@@ -319,7 +317,7 @@ static CVReturn detailViewAnimationCallback(CVDisplayLinkRef displayLink,
NSRect selectedItemFrame = selectedItemLayoutAttributes.frame;
if (NSMinY(attributesFrame) > (NSMaxY(selectedItemFrame))) {
attributesFrame.origin.y += [self currentAnimationStep] + kDetailViewMargin;
attributesFrame.origin.y += [self currentAnimationStep] + [VLCLibraryUIUnits mediumSpacing];
}
}
......
......@@ -32,6 +32,10 @@ extern NSString *VLCLibraryCellIdentifier;
@interface VLCLibraryCollectionViewItem : NSCollectionViewItem
// NOTE: These will need to be changed after changed to XIB
+ (NSSize)defaultSize;
+ (CGFloat)bottomTextViewsHeight;
@property (readwrite, assign) IBOutlet NSTextField *mediaTitleTextField;
@property (readwrite, assign) IBOutlet NSTextField *annotationTextField;
@property (readwrite, assign) IBOutlet NSTextField *unplayedIndicatorTextField;
......
......@@ -23,13 +23,17 @@
#import "VLCLibraryCollectionViewItem.h"
#import "main/VLCMain.h"
#import "library/VLCLibraryController.h"
#import "library/VLCLibraryDataTypes.h"
#import "library/VLCLibraryModel.h"
#import "library/VLCLibraryMenuController.h"
#import "library/VLCLibraryUIUnits.h"
#import "views/VLCImageView.h"
#import "views/VLCLinearProgressIndicator.h"
#import "views/VLCTrackingView.h"
#import "extensions/NSString+Helpers.h"
#import "extensions/NSFont+VLCAdditions.h"
#import "extensions/NSColor+VLCAdditions.h"
......@@ -48,6 +52,21 @@ const CGFloat VLCLibraryCollectionViewItemMaximumDisplayedProgress = 0.95;
@implementation VLCLibraryCollectionViewItem
+ (NSSize)defaultSize
{
CGFloat width = 214;
return CGSizeMake(width, width + [self bottomTextViewsHeight]);
}
+ (CGFloat)bottomTextViewsHeight
{
return [VLCLibraryUIUnits smallSpacing] +
16 +
[VLCLibraryUIUnits smallSpacing] +
16 +
[VLCLibraryUIUnits smallSpacing];
}
- (instancetype)initWithNibName:(NSNibName)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
......
/*****************************************************************************
* VLCLibraryAudioViewController.h: MacOS X interface module
*****************************************************************************
* Copyright (C) 2022 VLC authors and VideoLAN
*
* Authors: Claudio Cambra <developer@claudiocambra.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import <Cocoa/Cocoa.h>
NS_ASSUME_NONNULL_BEGIN
@interface VLCLibraryUIUnits : NSObject
// Note that these values are not necessarily linked to the layout defined in the .xib files.
// If the spacing in the layout is changed you will want to change these values too.
+ (const CGFloat)largeSpacing;
+ (const CGFloat)mediumSpacing;
+ (const CGFloat)smallSpacing;
+ (const CGFloat)scrollBarSmallSideSize;
+ (const CGFloat)largeTableViewRowHeight;
+ (const CGFloat)mediumTableViewRowHeight;
+ (const CGFloat)smallTableViewRowHeight;
+ (const CGFloat)mediumDetailSupplementaryViewCollectionViewHeight;
+ (const CGFloat)largeDetailSupplementaryViewCollectionViewHeight;
+ (const CGFloat)dynamicCollectionViewItemMinimumSize;
+ (const CGFloat)dynamicCollectionViewItemMaximumSize;
@end
NS_ASSUME_NONNULL_END
/*****************************************************************************
* VLCLibraryAudioViewController.m: MacOS X interface module
*****************************************************************************
* Copyright (C) 2022 VLC authors and VideoLAN
*
* Authors: Claudio Cambra <developer@claudiocambra.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston MA 02110-1301, USA.
*****************************************************************************/
#import "VLCLibraryUIUnits.h"
@implementation VLCLibraryUIUnits
+ (const CGFloat)largeSpacing
{
return 20;
}
+ (const CGFloat)mediumSpacing
{
return 10;
}
+ (const CGFloat)smallSpacing
{
return 5;
}
+ (const CGFloat)scrollBarSmallSideSize
{
return 16;
}
+ (const CGFloat)largeTableViewRowHeight
{
return 100;
}
+ (const CGFloat)mediumTableViewRowHeight
{
return 50;
}
+ (const CGFloat)smallTableViewRowHeight
{
return 25;
}
+ (const CGFloat)mediumDetailSupplementaryViewCollectionViewHeight
{
return 300;
}
+ (const CGFloat)largeDetailSupplementaryViewCollectionViewHeight
{
return 500;
}
+ (const CGFloat)dynamicCollectionViewItemMinimumSize
{
return 180;
}
+ (const CGFloat)dynamicCollectionViewItemMaximumSize
{
return 280;
}
@end
......@@ -39,6 +39,7 @@
#import "library/VLCLibraryCollectionViewSupplementaryElementView.h"
#import "library/VLCLibrarySortingMenuController.h"
#import "library/VLCLibraryNavigationStack.h"
#import "library/VLCLibraryUIUnits.h"
#import "library/video-library/VLCLibraryVideoCollectionViewsStackViewController.h"
#import "library/video-library/VLCLibraryVideoTableViewDataSource.h"
......@@ -64,10 +65,6 @@
const CGFloat VLCLibraryWindowMinimalWidth = 604.;
const CGFloat VLCLibraryWindowMinimalHeight = 307.;
const CGFloat VLCLibraryWindowLargePlaylistRowHeight = 60.;
const CGFloat VLCLibraryWindowSmallPlaylistRowHeight = 45.;
const CGFloat VLCLibraryWindowSmallRowHeight = 24.;
const CGFloat VLCLibraryWindowLargeRowHeight = 50.;
const CGFloat VLCLibraryWindowDefaultPlaylistWidth = 340.;
const CGFloat VLCLibraryWindowMinimalPlaylistWidth = 170.;
const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier = @"VLCLibraryWindow";
......@@ -250,8 +247,8 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
_libraryVideoTableViewDataSource.libraryModel = mainInstance.libraryController.libraryModel;
_libraryVideoTableViewDataSource.groupsTableView = _videoLibraryGroupsTableView;
_libraryVideoTableViewDataSource.groupSelectionTableView = _videoLibraryGroupSelectionTableView;
_videoLibraryGroupsTableView.rowHeight = VLCLibraryWindowLargeRowHeight;
_videoLibraryGroupSelectionTableView.rowHeight = VLCLibraryWindowLargeRowHeight;
_videoLibraryGroupsTableView.rowHeight = [VLCLibraryUIUnits mediumTableViewRowHeight];
_videoLibraryGroupSelectionTableView.rowHeight = [VLCLibraryUIUnits mediumTableViewRowHeight];
[_libraryVideoTableViewDataSource setup];
_libraryVideoCollectionViewsStackViewController = [[VLCLibraryVideoCollectionViewsStackViewController alloc] init];
......@@ -259,7 +256,7 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
_libraryVideoCollectionViewsStackViewController.collectionsStackView = _videoLibraryCollectionViewsStackView;
_libraryAudioViewController = [[VLCLibraryAudioViewController alloc] initWithLibraryWindow:self];
_audioCollectionSelectionTableView.rowHeight = VLCLibraryWindowLargeRowHeight;
_audioCollectionSelectionTableView.rowHeight = [VLCLibraryUIUnits mediumTableViewRowHeight];
_audioGroupSelectionTableView.rowHeight = [VLCLibraryAlbumTableCellView defaultHeight];
_mediaSourceDataSource = [[VLCMediaSourceBaseDataSource alloc] init];
......@@ -268,7 +265,7 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
_mediaSourceDataSource.homeButton = _mediaSourceHomeButton;
_mediaSourceDataSource.pathControl = _mediaSourcePathControl;
_mediaSourceDataSource.gridVsListSegmentedControl = _gridVsListSegmentedControl;
_mediaSourceTableView.rowHeight = VLCLibraryWindowLargeRowHeight;
_mediaSourceTableView.rowHeight = [VLCLibraryUIUnits mediumTableViewRowHeight];
_mediaSourceDataSource.tableView = _mediaSourceTableView;
[_mediaSourceDataSource setupViews];
......@@ -284,14 +281,17 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
[self setViewForSelectedSegment];
[self repeatStateUpdated:nil];
[self shuffleStateUpdated:nil];
const CGFloat scrollViewTopInset = 16.;
// We want all the insets to look even, and since the scrollbar is transparent,
// we have to compensate for this on the sides where there isn't a scrollbar to
// match up the perceived whitespace on all sides
const CGFloat scrollViewTopInset = [VLCLibraryUIUnits scrollBarSmallSideSize];
const CGFloat scrollViewRightInset = 0.;
const CGFloat scrollViewBottomInset = 16.;
const CGFloat scrollViewLeftInset = 16.;
const CGFloat scrollViewBottomInset = [VLCLibraryUIUnits scrollBarSmallSideSize];
const CGFloat scrollViewLeftInset = [VLCLibraryUIUnits scrollBarSmallSideSize];
// Need to account for the audio collection switcher at the top
const CGFloat audioScrollViewTopInset = scrollViewTopInset + 32.;
const CGFloat audioScrollViewTopInset = scrollViewTopInset + _optionBarView.frame.size.height;
const NSEdgeInsets defaultInsets = NSEdgeInsetsMake(scrollViewTopInset,
scrollViewLeftInset,
......@@ -338,21 +338,24 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
_mediaSourceTableViewScrollView.contentInsets = defaultInsets;
_mediaSourceTableViewScrollView.scrollerInsets = scrollerInsets;
const CGFloat collectionItemSpacing = 20.;
const NSEdgeInsets collectionViewSectionInset = NSEdgeInsetsMake(20., 20., 20., 20.);
const CGFloat collectionItemSpacing = [VLCLibraryUIUnits largeSpacing];
const NSEdgeInsets collectionViewSectionInset = NSEdgeInsetsMake(collectionItemSpacing,
collectionItemSpacing,
collectionItemSpacing,
collectionItemSpacing);
NSCollectionViewFlowLayout *audioLibraryCollectionViewLayout = _audioLibraryCollectionView.collectionViewLayout;
audioLibraryCollectionViewLayout.minimumLineSpacing = collectionItemSpacing;
audioLibraryCollectionViewLayout.minimumInteritemSpacing = collectionItemSpacing;
audioLibraryCollectionViewLayout.sectionInset = collectionViewSectionInset;
_libraryVideoCollectionViewsStackViewController.collectionViewItemSize = CGSizeMake(214., 260.);
_libraryVideoCollectionViewsStackViewController.collectionViewItemSize = [VLCLibraryCollectionViewItem defaultSize];
_libraryVideoCollectionViewsStackViewController.collectionViewMinimumLineSpacing = collectionItemSpacing;
_libraryVideoCollectionViewsStackViewController.collectionViewMinimumInteritemSpacing = collectionItemSpacing;
_libraryVideoCollectionViewsStackViewController.collectionViewSectionInset = collectionViewSectionInset;
NSCollectionViewFlowLayout *mediaSourceCollectionViewLayout = _mediaSourceCollectionView.collectionViewLayout;
mediaSourceCollectionViewLayout.itemSize = CGSizeMake(214., 246.);
mediaSourceCollectionViewLayout.itemSize = [VLCLibraryCollectionViewItem defaultSize];
mediaSourceCollectionViewLayout.minimumLineSpacing = collectionItemSpacing;
mediaSourceCollectionViewLayout.minimumInteritemSpacing = collectionItemSpacing;
mediaSourceCollectionViewLayout.sectionInset = collectionViewSectionInset;
......@@ -421,7 +424,9 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
- (void)updateViewCellDimensionsBasedOnSetting:(NSNotification *)aNotification
{
_playlistTableView.rowHeight = config_GetInt("macosx-large-text") ? VLCLibraryWindowLargePlaylistRowHeight : VLCLibraryWindowSmallPlaylistRowHeight;
_playlistTableView.rowHeight = config_GetInt("macosx-large-text") ?
[VLCLibraryUIUnits largeTableViewRowHeight] :
[VLCLibraryUIUnits mediumTableViewRowHeight];
}
#pragma mark - playmode state display and interaction
......
......@@ -26,25 +26,24 @@
#import "extensions/NSFont+VLCAdditions.h"
#import "extensions/NSString+Helpers.h"
#import "extensions/NSView+VLCAdditions.h"
#import "views/VLCImageView.h"
#import "views/VLCTrackingView.h"
#import "main/VLCMain.h"
#import "library/VLCLibraryController.h"
#import "library/VLCLibraryDataTypes.h"
#import "library/VLCLibraryTableCellView.h"
#import "library/VLCLibraryTableView.h"
#import "library/VLCLibraryUIUnits.h"
#import "library/audio-library/VLCLibraryAlbumTracksDataSource.h"
NSString *VLCAudioLibraryCellIdentifier = @"VLCAudioLibraryCellIdentifier";
NSString *VLCLibraryAlbumTableCellTableViewColumnIdentifier = @"VLCLibraryAlbumTableCellTableViewColumnIdentifier";
const CGFloat VLCLibraryAlbumTableCellViewDefaultHeight = 168.;
// Note that these values are not necessarily linked to the layout defined in the .xib files.
// If the spacing in the layout is changed you will want to change these values too.
const CGFloat VLCLibraryAlbumTableCellViewLargeSpacing = 20;
const CGFloat VLCLibraryAlbumTableCellViewMediumSpacing = 10;
const CGFloat VLCLibraryAlbumTableCellViewSmallSpacing = 5;
@interface VLCLibraryAlbumTableCellView ()
{
VLCLibraryController *_libraryController;
......@@ -74,25 +73,25 @@ const CGFloat VLCLibraryAlbumTableCellViewSmallSpacing = 5;
return -1;
}
const CGFloat artworkAndSecondaryLabelsHeight = VLCLibraryAlbumTableCellViewLargeSpacing +
const CGFloat artworkAndSecondaryLabelsHeight = [VLCLibraryUIUnits largeSpacing] +
_representedImageView.frame.size.height +
VLCLibraryAlbumTableCellViewMediumSpacing +
[VLCLibraryUIUnits mediumSpacing] +
_summaryTextField.frame.size.height +
VLCLibraryAlbumTableCellViewSmallSpacing +
[VLCLibraryUIUnits smallSpacing] +
_yearTextField.frame.size.height +
VLCLibraryAlbumTableCellViewLargeSpacing;
[VLCLibraryUIUnits largeSpacing];
if(_tracksTableView == nil) {
return artworkAndSecondaryLabelsHeight;
}
const CGFloat titleAndTableViewHeight = VLCLibraryAlbumTableCellViewLargeSpacing +
const CGFloat titleAndTableViewHeight = [VLCLibraryUIUnits largeSpacing] +
_albumNameTextField.frame.size.height +
VLCLibraryAlbumTableCellViewSmallSpacing +
[VLCLibraryUIUnits smallSpacing] +
_artistNameTextField.frame.size.height +
VLCLibraryAlbumTableCellViewSmallSpacing +
[VLCLibraryUIUnits smallSpacing] +
[self expectedTableViewHeight] +
VLCLibraryAlbumTableCellViewLargeSpacing;
[VLCLibraryUIUnits largeSpacing];
return titleAndTableViewHeight > artworkAndSecondaryLabelsHeight ? titleAndTableViewHeight : artworkAndSecondaryLabelsHeight;
}
......@@ -103,14 +102,14 @@ const CGFloat VLCLibraryAlbumTableCellViewSmallSpacing = 5;
// to take into account the album's left spacing, right spacing, and the table view's
// right spacing. In this case we are using large spacing for all of these. We also
// throw in a little bit extra spacing to compensate for some mysterious internal spacing.
return self.frame.size.width - _representedImageView.frame.size.width - VLCLibraryAlbumTableCellViewLargeSpacing * 3.75;
return self.frame.size.width - _representedImageView.frame.size.width - [VLCLibraryUIUnits largeSpacing] * 3.75;
}
- (CGFloat)expectedTableViewHeight
{
const NSUInteger numberOfTracks = _representedAlbum.numberOfTracks;
const CGFloat intercellSpacing = numberOfTracks > 1 ? (numberOfTracks - 1) * _tracksTableView.intercellSpacing.height : 0;
return numberOfTracks * VLCLibraryTracksRowHeight + intercellSpacing + VLCLibraryAlbumTableCellViewMediumSpacing;
return numberOfTracks * VLCLibraryTracksRowHeight + intercellSpacing + [VLCLibraryUIUnits mediumSpacing];
}
- (void)awakeFromNib
......@@ -150,14 +149,14 @@ const CGFloat VLCLibraryAlbumTableCellViewSmallSpacing = 5;
_tracksTableView.translatesAutoresizingMaskIntoConstraints = NO;
[self addSubview:_tracksTableView];
NSString *horizontalVisualConstraints = [NSString stringWithFormat:@"H:|-%f-[_representedImageView]-%f-[_tracksTableView]-%f-|",
VLCLibraryAlbumTableCellViewLargeSpacing,
VLCLibraryAlbumTableCellViewLargeSpacing,
VLCLibraryAlbumTableCellViewLargeSpacing];
[VLCLibraryUIUnits largeSpacing],
[VLCLibraryUIUnits largeSpacing],
[VLCLibraryUIUnits largeSpacing]];
NSString *verticalVisualContraints = [NSString stringWithFormat:@"V:|-%f-[_albumNameTextField]-%f-[_artistNameTextField]-%f-[_tracksTableView]->=%f-|",
VLCLibraryAlbumTableCellViewLargeSpacing,
VLCLibraryAlbumTableCellViewSmallSpacing,
VLCLibraryAlbumTableCellViewMediumSpacing,
VLCLibraryAlbumTableCellViewLargeSpacing];
[VLCLibraryUIUnits largeSpacing],
[VLCLibraryUIUnits smallSpacing],
[VLCLibraryUIUnits mediumSpacing],
[VLCLibraryUIUnits largeSpacing]];
NSDictionary *dict = NSDictionaryOfVariableBindings(_tracksTableView, _representedImageView, _albumNameTextField, _artistNameTextField);
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:horizontalVisualConstraints options:0 metrics:0 views:dict]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:verticalVisualContraints options:0 metrics:0 views:dict]];
......
......@@ -25,6 +25,7 @@
#import "library/VLCLibraryCollectionViewDelegate.h"
#import "library/VLCLibraryCollectionViewFlowLayout.h"
#import "library/VLCLibraryCollectionViewSupplementaryElementView.h"
#import "library/VLCLibraryUIUnits.h"
#import "library/video-library/VLCLibraryVideoCollectionViewContainerViewDataSource.h"
#import "library/video-library/VLCLibraryVideoGroupDescriptor.h"
......@@ -200,7 +201,7 @@
}
if (_groupDescriptor.isHorizontalBarCollectionView) {
const CGFloat viewHeight = itemHeight + insetsHeight + 15; // Account for horizontal scrollbar
const CGFloat viewHeight = itemHeight + insetsHeight + [VLCLibraryUIUnits scrollBarSmallSideSize];
return NSMakeSize(width, viewHeight);
}
......
......@@ -26,6 +26,7 @@
#import "library/VLCLibraryCollectionViewFlowLayout.h"
#import "library/VLCLibraryCollectionViewSupplementaryElementView.h"
#import "library/VLCLibraryModel.h"
#import "library/VLCLibraryUIUnits.h"
#import "library/video-library/VLCLibraryVideoCollectionViewContainerView.h"
#import "library/video-library/VLCLibraryVideoCollectionViewContainerViewDataSource.h"
......@@ -90,7 +91,7 @@
}
_collectionsStackView = collectionsStackView;
_collectionsStackView.spacing = 20.;
_collectionsStackView.spacing = [VLCLibraryUIUnits largeSpacing];
_collectionsStackView.orientation = NSUserInterfaceLayoutOrientationVertical;
_collectionsStackView.alignment = NSLayoutAttributeLeading;
_collectionsStackView.distribution = NSStackViewDistributionFill;
......