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
  • abdsaber000/vlc
  • falbrechtskirchinger/vlc
  • b.sullender/vlc
  • hulxv/vlc
  • zyad-ayad/vlc
  • shocknovaa/vlc
  • gremlinflat/vlc
  • Pratham24D/vlc
  • hmaarrfk/vlc
412 results
Show changes
Commits on Source (7)
Showing
with 93 additions and 55 deletions
......@@ -331,6 +331,7 @@
532CBCFD2C8E025F00899413 /* VLCLibraryDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryDataSource.h; sourceTree = "<group>"; };
533B5D2A29CF94C6003DE887 /* VLCBookmarksTableViewDataSource.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCBookmarksTableViewDataSource.h; sourceTree = "<group>"; };
533B5D2B29CF94C6003DE887 /* VLCBookmarksTableViewDataSource.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCBookmarksTableViewDataSource.m; sourceTree = "<group>"; };
533D20432D549D2400AB146F /* VLCLibraryItemPresentingCapable.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryItemPresentingCapable.h; sourceTree = "<group>"; };
5341F1472C96E544003BDF0A /* VLCLibraryWindowChaptersView.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = VLCLibraryWindowChaptersView.xib; sourceTree = "<group>"; };
5341F1482C9757EF003BDF0A /* VLCLibraryWindowChaptersSidebarViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = VLCLibraryWindowChaptersSidebarViewController.h; sourceTree = "<group>"; };
5341F1492C9757EF003BDF0A /* VLCLibraryWindowChaptersSidebarViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = VLCLibraryWindowChaptersSidebarViewController.m; sourceTree = "<group>"; };
......@@ -1384,6 +1385,7 @@
7DFBDCAA2269E77F00B700A5 /* VLCLibraryModel.m */,
53D8ED982B583AAF00142EAD /* VLCLibraryModelChangeDelegate.h */,
53D8ED992B583AAF00142EAD /* VLCLibraryModelChangeDelegate.m */,
533D20432D549D2400AB146F /* VLCLibraryItemPresentingCapable.h */,
530771F22AEBB80C00656D3D /* VLCLibraryRepresentedItem.h */,
530771F32AEBBD5B00656D3D /* VLCLibraryRepresentedItem.m */,
531343E82A8E8965007AEDFA /* VLCLibrarySegment.h */,
......
......@@ -135,6 +135,7 @@ libmacosx_plugin_la_SOURCES = \
gui/macosx/library/VLCLibraryImageCache.m \
gui/macosx/library/VLCLibraryItemInternalMediaItemsDataSource.h \
gui/macosx/library/VLCLibraryItemInternalMediaItemsDataSource.m \
gui/macosx/library/VLCLibraryItemPresentingCapable.h \
gui/macosx/library/VLCLibraryMasterDetailViewTableViewDataSource.h \
gui/macosx/library/VLCLibraryMasterDetailViewTableViewDelegate.h \
gui/macosx/library/VLCLibraryMasterDetailViewTableViewDelegate.m \
......
/*****************************************************************************
* VLCLibraryItemPresentingCapable.h: MacOS X interface module
*****************************************************************************
* Copyright (C) 2025 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 <Foundation/Foundation.h>
NS_ASSUME_NONNULL_BEGIN
@protocol VLCMediaLibraryItemProtocol;
@protocol VLCLibraryItemPresentingCapable
- (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem;
@end
NS_ASSUME_NONNULL_END
......@@ -25,6 +25,7 @@
NS_ASSUME_NONNULL_BEGIN
@class VLCLibraryAbstractSegmentViewController;
@protocol VLCMediaLibraryItemProtocol;
extern NSString * const VLCLibraryBookmarkedLocationsKey;
extern NSString * const VLCLibraryBookmarkedLocationsChanged;
......@@ -63,6 +64,7 @@ typedef NS_ENUM(NSInteger, VLCLibrarySegmentType) {
@property (readonly) NSUInteger toolbarDisplayFlags;
+ (instancetype)segmentWithSegmentType:(VLCLibrarySegmentType)segmentType;
+ (instancetype)segmentForLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem;
- (nullable VLCLibraryAbstractSegmentViewController *)newLibraryViewController;
- (void)presentLibraryViewUsingController:(VLCLibraryAbstractSegmentViewController *)controller;
......
......@@ -26,6 +26,7 @@
#import "library/VLCInputItem.h"
#import "library/VLCLibraryController.h"
#import "library/VLCLibraryDataTypes.h"
#import "library/VLCLibraryModel.h"
#import "library/VLCLibrarySegmentBookmarkedLocation.h"
#import "library/VLCLibraryWindow.h"
......@@ -855,6 +856,33 @@ NSArray<NSString *> *defaultBookmarkedLocations()
}
}
+ (instancetype)segmentForLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem
{
if ([libraryItem isKindOfClass:VLCMediaLibraryAlbum.class]) {
return [VLCLibrarySegment segmentWithSegmentType:VLCLibraryAlbumsMusicSubSegmentType];
} else if ([libraryItem isKindOfClass:VLCMediaLibraryArtist.class]) {
return [VLCLibrarySegment segmentWithSegmentType:VLCLibraryArtistsMusicSubSegmentType];
} else if ([libraryItem isKindOfClass:VLCMediaLibraryGenre.class]) {
return [VLCLibrarySegment segmentWithSegmentType:VLCLibraryGenresMusicSubSegmentType];
} else if ([libraryItem isKindOfClass:VLCMediaLibraryGroup.class]) {
return [VLCLibrarySegment segmentWithSegmentType:VLCLibraryGroupsSegmentType];
}
VLCMediaLibraryMediaItem * const mediaItem = (VLCMediaLibraryMediaItem *)libraryItem;
const BOOL validMediaItem = mediaItem != nil;
if (validMediaItem && mediaItem.mediaType == VLC_ML_MEDIA_TYPE_AUDIO) {
return [VLCLibrarySegment segmentWithSegmentType:VLCLibraryMusicSegmentType];
} else if (validMediaItem && mediaItem.mediaType == VLC_ML_MEDIA_TYPE_VIDEO) {
if (mediaItem.mediaSubType == VLC_ML_MEDIA_SUBTYPE_SHOW_EPISODE) {
return [VLCLibrarySegment segmentWithSegmentType:VLCLibraryShowsVideoSubSegmentType];
}
return [VLCLibrarySegment segmentWithSegmentType:VLCLibraryVideoSegmentType];
}
NSLog(@"Unknown library item type provided, cannot find segment for it: %@", libraryItem.displayString);
return nil;
}
- (instancetype)initWithSegmentType:(VLCLibrarySegmentType)segmentType
{
return [VLCLibrarySegment treeNodeWithRepresentedObject:@(segmentType)];
......
......@@ -24,6 +24,8 @@
#import "views/VLCDragDropView.h"
#import "library/VLCLibraryItemPresentingCapable.h"
NS_ASSUME_NONNULL_BEGIN
@class VLCMainWindowControlsBar;
......@@ -50,7 +52,7 @@ typedef NS_ENUM(NSInteger, VLCLibraryViewModeSegment) {
VLCLibraryLargestSentinelViewModeSegment
};
@interface VLCLibraryWindow : VLCFullVideoViewWindow<NSUserInterfaceItemIdentification, VLCDragDropTarget>
@interface VLCLibraryWindow : VLCFullVideoViewWindow<NSUserInterfaceItemIdentification, VLCDragDropTarget, VLCLibraryItemPresentingCapable>
extern const CGFloat VLCLibraryWindowMinimalWidth;
extern const CGFloat VLCLibraryWindowMinimalHeight;
......@@ -137,7 +139,6 @@ extern const NSUserInterfaceItemIdentifier VLCLibraryWindowIdentifier;
usingConstraints:(NSArray<NSLayoutConstraint *> *)constraints
displayingMessage:(NSString *)message;
- (void)displayNoResultsMessage;
- (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem;
- (void)goToLocalFolderMrl:(NSString *)mrl;
- (IBAction)goToBrowseSection:(id)sender;
......
......@@ -232,7 +232,11 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
{
const VLCLibrarySegmentType segmentType = self.librarySegmentType;
VLCLibrarySegment * const segment = [VLCLibrarySegment segmentWithSegmentType:segmentType];
[self applySegmentView:segment];
}
- (void)applySegmentView:(VLCLibrarySegment *)segment
{
[self.toolbarDelegate applyVisiblityFlags:segment.toolbarDisplayFlags];
if (![self.librarySegmentViewController isKindOfClass:segment.libraryViewControllerClass]) {
_librarySegmentViewController = [segment newLibraryViewController];
......@@ -316,49 +320,13 @@ static void addShadow(NSImageView *__unsafe_unretained imageView)
]];
}
- (void)presentAudioLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem
{
self.librarySegmentType = VLCLibraryMusicSegmentType;
[(VLCLibraryAudioViewController *)self.librarySegmentViewController presentLibraryItem:libraryItem];
}
- (void)presentVideoLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem
{
self.librarySegmentType = VLCLibraryVideoSegmentType;
[(VLCLibraryVideoViewController *)self.librarySegmentViewController presentLibraryItem:libraryItem];
}
- (void)presentGroupLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem
{
self.librarySegmentType = VLCLibraryGroupsSegmentType;
[(VLCLibraryGroupsViewController *)self.librarySegmentViewController presentGroup:libraryItem];
}
- (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem
{
const BOOL isAudioGroup = [libraryItem isKindOfClass:VLCMediaLibraryAlbum.class] ||
[libraryItem isKindOfClass:VLCMediaLibraryArtist.class] ||
[libraryItem isKindOfClass:VLCMediaLibraryGenre.class];
if (isAudioGroup) {
[self presentAudioLibraryItem:libraryItem];
return;
} else if ([libraryItem isKindOfClass:VLCMediaLibraryGroup.class]) {
[self presentGroupLibraryItem:libraryItem];
return;
VLCLibrarySegment * const segment = [VLCLibrarySegment segmentForLibraryItem:libraryItem];
[self applySegmentView:segment];
if ([self.librarySegmentViewController conformsToProtocol:@protocol(VLCLibraryItemPresentingCapable)]) {
[(VLCLibraryAbstractSegmentViewController<VLCLibraryItemPresentingCapable> *)self.librarySegmentViewController presentLibraryItem:libraryItem];
}
VLCMediaLibraryMediaItem * const mediaItem = (VLCMediaLibraryMediaItem *)libraryItem;
const BOOL validMediaItem = mediaItem != nil;
if (validMediaItem && mediaItem.mediaType == VLC_ML_MEDIA_TYPE_AUDIO) {
[self presentAudioLibraryItem:libraryItem];
return;
} else if (validMediaItem && mediaItem.mediaType == VLC_ML_MEDIA_TYPE_VIDEO) {
[self presentVideoLibraryItem:libraryItem];
return;
}
NSLog(@"Unknown kind of library item provided, cannot present library view for it: %@", libraryItem.displayString);
}
- (void)goToLocalFolderMrl:(NSString *)mrl
......
......@@ -24,6 +24,7 @@
#import "library/VLCLibrarySegment.h"
#import "library/VLCLibraryAbstractMediaLibrarySegmentViewController.h"
#import "library/VLCLibraryItemPresentingCapable.h"
@class VLCLibraryAudioDataSource;
@class VLCLibraryAudioGroupDataSource;
......@@ -34,7 +35,7 @@
NS_ASSUME_NONNULL_BEGIN
@interface VLCLibraryAudioViewController : VLCLibraryAbstractMediaLibrarySegmentViewController
@interface VLCLibraryAudioViewController : VLCLibraryAbstractMediaLibrarySegmentViewController<VLCLibraryItemPresentingCapable>
@property (readonly, weak) NSView *audioLibraryView;
@property (readonly, weak) NSSplitView *audioLibrarySplitView;
......@@ -59,7 +60,6 @@ NS_ASSUME_NONNULL_BEGIN
- (void)presentAudioView;
- (void)reloadData;
- (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem;
@end
......
......@@ -23,6 +23,7 @@
#import <Cocoa/Cocoa.h>
#import "library/VLCLibraryAbstractMediaLibrarySegmentViewController.h"
#import "library/VLCLibraryItemPresentingCapable.h"
NS_ASSUME_NONNULL_BEGIN
......@@ -34,7 +35,7 @@ NS_ASSUME_NONNULL_BEGIN
@class VLCLibraryWindow;
@class VLCMediaLibraryGroup;
@interface VLCLibraryGroupsViewController : VLCLibraryAbstractMediaLibrarySegmentViewController<NSSplitViewDelegate>
@interface VLCLibraryGroupsViewController : VLCLibraryAbstractMediaLibrarySegmentViewController<NSSplitViewDelegate, VLCLibraryItemPresentingCapable>
@property (readonly) NSScrollView *collectionViewScrollView;
@property (readonly) VLCLibraryCollectionView *collectionView;
......@@ -51,7 +52,6 @@ NS_ASSUME_NONNULL_BEGIN
- (instancetype)initWithLibraryWindow:(VLCLibraryWindow *)libraryWindow;
- (void)presentGroupsView;
- (void)presentGroup:(VLCMediaLibraryGroup *)group;
@end
......
......@@ -254,19 +254,19 @@
}
}
- (void)presentGroup:(VLCMediaLibraryGroup *)group
- (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem
{
[self presentGroupsView];
const VLCLibraryViewModeSegment viewModeSegment =
VLCLibraryWindowPersistentPreferences.sharedInstance.groupsLibraryViewMode;
if (viewModeSegment == VLCLibraryGridViewModeSegment) {
NSIndexPath * const groupIndexPath = [self.dataSource indexPathForLibraryItem:group];
NSIndexPath * const groupIndexPath = [self.dataSource indexPathForLibraryItem:libraryItem];
NSSet<NSIndexPath *> * const groupIndexPathSet = [NSSet setWithObject:groupIndexPath];
[self.collectionView scrollToItemsAtIndexPaths:groupIndexPathSet
scrollPosition:NSCollectionViewScrollPositionTop];
} else {
const NSInteger groupRow = [self.dataSource rowForLibraryItem:group];
const NSInteger groupRow = [self.dataSource rowForLibraryItem:libraryItem];
[self.groupsTableView selectRowIndexes:[NSIndexSet indexSetWithIndex:groupRow]
byExtendingSelection:NO];
[self.groupsTableView scrollRowToVisible:groupRow];
......
......@@ -22,6 +22,8 @@
#import <Cocoa/Cocoa.h>
#import "library/VLCLibraryItemPresentingCapable.h"
NS_ASSUME_NONNULL_BEGIN
@class VLCLibraryHeroView;
......@@ -30,7 +32,7 @@ NS_ASSUME_NONNULL_BEGIN
@class VLCLibraryHomeViewVideoCarouselContainerView;
@protocol VLCMediaLibraryItemProtocol;
@interface VLCLibraryHomeViewStackViewController : NSObject
@interface VLCLibraryHomeViewStackViewController : NSObject<VLCLibraryItemPresentingCapable>
@property (readwrite, assign, nonatomic) NSSize collectionViewItemSize;
@property (readwrite, assign, nonatomic) CGFloat collectionViewMinimumLineSpacing;
......@@ -48,7 +50,6 @@ NS_ASSUME_NONNULL_BEGIN
- (void)reloadData;
- (void)connectContainers;
- (void)disconnectContainers;
- (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem;
@end
......
......@@ -22,6 +22,7 @@
#import <Cocoa/Cocoa.h>
#import "library/VLCLibraryItemPresentingCapable.h"
#import "library/home-library/VLCLibraryHomeViewContainerView.h"
#import "library/video-library/VLCLibraryVideoGroupDescriptor.h"
......@@ -29,14 +30,13 @@
NS_ASSUME_NONNULL_BEGIN
@protocol VLCLibraryHomeViewVideoContainerView <VLCLibraryHomeViewContainerView>
@protocol VLCLibraryHomeViewVideoContainerView <VLCLibraryHomeViewContainerView, VLCLibraryItemPresentingCapable>
@property (readonly) VLCLibraryVideoCollectionViewGroupDescriptor *groupDescriptor;
@property (readwrite, assign, nonatomic) VLCMediaLibraryParentGroupType videoGroup;
@property (readonly) VLCLibraryHomeViewVideoContainerViewDataSource *dataSource;
- (void)setVideoGroup:(VLCMediaLibraryParentGroupType)group;
- (void)presentLibraryItem:(id<VLCMediaLibraryItemProtocol>)libraryItem;
@end
......
......@@ -23,6 +23,7 @@
#import <Cocoa/Cocoa.h>
#import "library/VLCLibraryAbstractMediaLibrarySegmentViewController.h"
#import "library/VLCLibraryItemPresentingCapable.h"
@class VLCLibraryCollectionView;
@class VLCLibraryWindow;
......@@ -34,8 +35,7 @@
NS_ASSUME_NONNULL_BEGIN
// Controller for the video library views
@interface VLCLibraryVideoViewController : VLCLibraryAbstractMediaLibrarySegmentViewController
@interface VLCLibraryVideoViewController : VLCLibraryAbstractMediaLibrarySegmentViewController<VLCLibraryItemPresentingCapable>
@property (readonly, weak) NSView *videoLibraryView;
@property (readonly, weak) NSSplitView *videoLibrarySplitView;
......