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
  • Thrillseekr/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
393 results
Show changes
Commits on Source (11)
......@@ -233,8 +233,6 @@ typedef NS_ENUM(NSUInteger, VLCMediaLibraryParentGroupType) {
@interface VLCMediaLibraryGroup : VLCAbstractMediaLibraryItem
- (instancetype)initWithGroup:(struct vlc_ml_group_t *)p_group;
@property (readonly) NSString *name;
@property (readonly) NSUInteger numberOfTotalItems;
@property (readonly) NSUInteger numberOfVideoItems;
......@@ -250,6 +248,9 @@ typedef NS_ENUM(NSUInteger, VLCMediaLibraryParentGroupType) {
@property (readonly) NSDate *creationDate;
@property (readonly) NSDate *lastModificationDate;
+ (nullable instancetype)groupWithID:(int64_t)libraryID;
- (instancetype)initWithGroup:(struct vlc_ml_group_t *)p_group;
@end
@interface VLCMediaLibraryPlaylist : VLCAbstractMediaLibraryItem<VLCMediaLibraryItemProtocol>
......
......@@ -779,6 +779,16 @@ static NSString *genreArrayDisplayString(NSArray<VLCMediaLibraryGenre *> * const
@synthesize primaryActionableDetailLibraryItem = _primaryActionableDetailLibraryItem;
@synthesize secondaryActionableDetailLibraryItem = _secondaryActionableDetailLibraryItem;
+ (nullable instancetype)groupWithID:(int64_t)libraryID
{
vlc_medialibrary_t * const p_mediaLibrary = getMediaLibrary();
if (!p_mediaLibrary) {
return nil;
}
vlc_ml_group_t * const p_group = vlc_ml_get_group(p_mediaLibrary, libraryID);
return p_group ? [[VLCMediaLibraryGroup alloc] initWithGroup:p_group] : nil;
}
- (instancetype)initWithGroup:(struct vlc_ml_group_t *)p_group
{
NSParameterAssert(p_group != NULL);
......
......@@ -48,6 +48,7 @@ extern NSString * const VLCLibraryModelRecentAudioMediaItemDeleted;
extern NSString * const VLCLibraryModelAlbumDeleted;
extern NSString * const VLCLibraryModelArtistDeleted;
extern NSString * const VLCLibraryModelGenreDeleted;
extern NSString * const VLCLibraryModelGroupDeleted;
extern NSString * const VLCLibraryModelPlaylistDeleted;
extern NSString * const VLCLibraryModelAudioMediaItemUpdated;
......@@ -57,6 +58,7 @@ extern NSString * const VLCLibraryModelRecentAudioMediaItemUpdated;
extern NSString * const VLCLibraryModelAlbumUpdated;
extern NSString * const VLCLibraryModelArtistUpdated;
extern NSString * const VLCLibraryModelGenreUpdated;
extern NSString * const VLCLibraryModelGroupUpdated;
extern NSString * const VLCLibraryModelPlaylistUpdated;
@interface VLCLibraryModel : NSObject
......
......@@ -48,6 +48,7 @@ NSString * const VLCLibraryModelRecentAudioMediaItemDeleted = @"VLCLibraryModelR
NSString * const VLCLibraryModelAlbumDeleted = @"VLCLibraryModelAlbumDeleted";
NSString * const VLCLibraryModelArtistDeleted = @"VLCLibraryModelArtistDeleted";
NSString * const VLCLibraryModelGenreDeleted = @"VLCLibraryModelGenreDeleted";
NSString * const VLCLibraryModelGroupDeleted = @"VLCLibraryModelGroupDeleted";
NSString * const VLCLibraryModelPlaylistDeleted = @"VLCLibraryModelPlaylistDeleted";
NSString * const VLCLibraryModelAudioMediaItemUpdated = @"VLCLibraryModelAudioMediaItemUpdated";
......@@ -57,6 +58,7 @@ NSString * const VLCLibraryModelRecentAudioMediaItemUpdated = @"VLCLibraryModelR
NSString * const VLCLibraryModelAlbumUpdated = @"VLCLibraryModelAlbumUpdated";
NSString * const VLCLibraryModelArtistUpdated = @"VLCLibraryModelArtistUpdated";
NSString * const VLCLibraryModelGenreUpdated = @"VLCLibraryModelGenreUpdated";
NSString * const VLCLibraryModelGroupUpdated = @"VLCLibraryModelGroupUpdated";
NSString * const VLCLibraryModelPlaylistUpdated = @"VLCLibraryModelPlaylistUpdated";
@interface VLCLibraryModel ()
......@@ -84,6 +86,7 @@ NSString * const VLCLibraryModelPlaylistUpdated = @"VLCLibraryModelPlaylistUpdat
dispatch_queue_t _albumCacheModificationQueue;
dispatch_queue_t _artistCacheModificationQueue;
dispatch_queue_t _genreCacheModificationQueue;
dispatch_queue_t _groupCacheModificationQueue;
dispatch_queue_t _playlistCacheModificationQueue;
}
......@@ -112,11 +115,13 @@ NSString * const VLCLibraryModelPlaylistUpdated = @"VLCLibraryModelPlaylistUpdat
- (void)handleAlbumDeletionEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleArtistDeletionEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleGenreDeletionEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleGroupDeletionEvent:(const vlc_ml_event_t * const)p_event;
- (void)handlePlaylistDeletionEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleMediaItemUpdateEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleAlbumUpdateEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleArtistUpdateEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleGenreUpdateEvent:(const vlc_ml_event_t * const)p_event;
- (void)handleGroupUpdateEvent:(const vlc_ml_event_t * const)p_event;
- (void)handlePlaylistUpdateEvent:(const vlc_ml_event_t * const)p_event;
@end
......@@ -181,9 +186,14 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
[libraryModel handleGenreDeletionEvent:p_event];
break;
case VLC_ML_EVENT_GROUP_ADDED:
[libraryModel resetCachedListOfGroups];
break;
case VLC_ML_EVENT_GROUP_UPDATED:
[libraryModel handleGroupUpdateEvent:p_event];
break;
case VLC_ML_EVENT_GROUP_DELETED:
[libraryModel resetCachedListOfGroups]; // TODO: Handle each event granularly
[libraryModel handleGroupDeletionEvent:p_event];
break;
case VLC_ML_EVENT_PLAYLIST_ADDED:
[libraryModel resetCachedListOfPlaylists];
break;
......@@ -235,6 +245,7 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
_albumCacheModificationQueue = dispatch_queue_create("albumCacheModificationQueue", 0);
_artistCacheModificationQueue = dispatch_queue_create("artistCacheModificationQueue", 0);
_genreCacheModificationQueue = dispatch_queue_create("genreCacheModificationQueue", 0);
_groupCacheModificationQueue = dispatch_queue_create("groupCacheModificationQueue", 0);
_playlistCacheModificationQueue = dispatch_queue_create("playlistCacheModificationQueue", 0);
_defaultNotificationCenter = NSNotificationCenter.defaultCenter;
......@@ -1161,6 +1172,70 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
withNotificationName:VLCLibraryModelGenreDeleted];
}
- (void)handleGroupDeletionEvent:(const vlc_ml_event_t *const)p_event
{
NSParameterAssert(p_event != NULL);
const int64_t itemId = p_event->modification.i_entity_id;
dispatch_async(_groupCacheModificationQueue, ^{
NSMutableArray * const mutableGroups = self.cachedListOfGroups.mutableCopy;
const NSUInteger groupIdx =
[mutableGroups indexOfObjectPassingTest:^BOOL(VLCMediaLibraryGroup * const group,
const NSUInteger idx,
BOOL * const stop) {
return group.libraryID == itemId;
}];
if (groupIdx == NSNotFound) {
NSLog(@"Could not handle deletion of groupI with id %lld in model", itemId);
return;
}
dispatch_sync(dispatch_get_main_queue(), ^{
VLCMediaLibraryGroup * const group = mutableGroups[groupIdx];
[mutableGroups removeObjectAtIndex:groupIdx];
self.cachedListOfGroups = mutableGroups.copy;
[self->_defaultNotificationCenter postNotificationName:VLCLibraryModelGroupDeleted
object:group];
});
});
}
- (void)handleGroupUpdateEvent:(const vlc_ml_event_t *const)p_event
{
NSParameterAssert(p_event != NULL);
const int64_t itemId = p_event->modification.i_entity_id;
VLCMediaLibraryGroup * const group = [VLCMediaLibraryGroup groupWithID:itemId];
if (group == nil) {
NSLog(@"Could not find a library group with this ID. Can't handle update.");
return;
}
dispatch_async(_groupCacheModificationQueue, ^{
const NSUInteger groupIdx =
[self.cachedListOfGroups indexOfObjectPassingTest:^BOOL(VLCMediaLibraryGroup * const group,
const NSUInteger idx,
BOOL * const stop) {
NSAssert(group != nil, @"Cache list should not contain nil groups");
return group.libraryID == itemId;
}];
if (groupIdx == NSNotFound) {
NSLog(@"Could not handle deletion of group with id %lld in model", itemId);
return;
}
dispatch_sync(dispatch_get_main_queue(), ^{
NSMutableArray * const mutableGroups = self.cachedListOfGroups.mutableCopy;
[mutableGroups replaceObjectAtIndex:groupIdx withObject:group];
self.cachedListOfGroups = mutableGroups.copy;
[self->_defaultNotificationCenter postNotificationName:VLCLibraryModelGroupUpdated object:group];
});
});
}
- (void)handlePlaylistUpdateEvent:(const vlc_ml_event_t * const)p_event
{
NSParameterAssert(p_event != NULL);
......@@ -1172,7 +1247,7 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
return;
}
dispatch_async(_mediaItemCacheModificationQueue, ^{
dispatch_async(_playlistCacheModificationQueue, ^{
NSMutableArray * const mutablePlaylists = self.cachedPlaylists.mutableCopy;
const NSUInteger playlistIdx = [mutablePlaylists indexOfObjectPassingTest:^BOOL(VLCMediaLibraryPlaylist * const playlist, const NSUInteger idx, BOOL * const stop) {
NSAssert(playlist != nil, @"Cache list should not contain nil playlists");
......@@ -1198,7 +1273,7 @@ static void libraryCallback(void *p_data, const vlc_ml_event_t *p_event)
const int64_t itemId = p_event->modification.i_entity_id;
dispatch_async(_mediaItemCacheModificationQueue, ^{
dispatch_async(_playlistCacheModificationQueue, ^{
NSMutableArray * const mutablePlaylists = self.cachedPlaylists.mutableCopy;
const NSUInteger playlistIdx = [mutablePlaylists indexOfObjectPassingTest:^BOOL(VLCMediaLibraryPlaylist * const playlist, const NSUInteger idx, BOOL * const stop) {
NSAssert(playlist != nil, @"Cache list should not contain nil playlists");
......
......@@ -82,6 +82,14 @@ static NSString * const VLCLibrarySegmentCellIdentifier = @"VLCLibrarySegmentCel
selector:@selector(internalNodesChanged:)
name:VLCLibraryModelListOfGroupsReset
object:nil];
[defaultCenter addObserver:self
selector:@selector(internalNodesChanged:)
name:VLCLibraryModelGroupUpdated
object:nil];
[defaultCenter addObserver:self
selector:@selector(internalNodesChanged:)
name:VLCLibraryModelGroupDeleted
object:nil];
}
- (void)internalNodesChanged:(NSNotification *)notification
......
......@@ -43,6 +43,14 @@
selector:@selector(libraryModelGroupsListReset:)
name:VLCLibraryModelListOfGroupsReset
object:nil];
[notificationCenter addObserver:self
selector:@selector(libraryModelGroupDeleted:)
name:VLCLibraryModelGroupDeleted
object:nil];
[notificationCenter addObserver:self
selector:@selector(libraryModelGroupUpdated:)
name:VLCLibraryModelGroupUpdated
object:nil];
[self reloadData];
}
......@@ -67,4 +75,47 @@
return VLCMediaLibraryParentGroupTypeGroup;
}
- (void)libraryModelGroupUpdated:(NSNotification *)notification
{
VLCMediaLibraryGroup * const group = notification.object;
NSIndexPath * const indexPath = [self indexPathForLibraryItem:group];
if (indexPath != nil) {
[self.collectionView reloadItemsAtIndexPaths:[NSSet setWithObject:indexPath]];
}
const NSInteger rowIndex = [self rowForLibraryItem:group];
if (rowIndex != NSNotFound) {
const NSInteger selectedMasterRow = self.masterTableView.selectedRow;
[self.masterTableView reloadDataForRowIndexes:[NSIndexSet indexSetWithIndex:rowIndex]
columnIndexes:[NSIndexSet indexSetWithIndex:0]];
// Check, if the selected row was for the group that has been reloaded, if the selection in
// the master table view has changed after reloading the target index. In this case, we want
// to reselect. If the selection has been maintained then we need to reload the detail table
// view.
if (rowIndex == selectedMasterRow && self.masterTableView.selectedRow != selectedMasterRow) {
[self.masterTableView selectRow:selectedMasterRow byExtendingSelection:NO];
} else {
[self.detailTableView reloadData];
}
}
}
- (void)libraryModelGroupDeleted:(NSNotification *)notification
{
VLCMediaLibraryGroup * const group = notification.object;
NSIndexPath * const indexPath = [self indexPathForLibraryItem:group];
if (indexPath != nil) {
[self.collectionView deleteItemsAtIndexPaths:[NSSet setWithObject:indexPath]];
}
const NSInteger rowIndex = [self rowForLibraryItem:group];
if (rowIndex != NSNotFound) {
[self.masterTableView removeRowsAtIndexes:[NSIndexSet indexSetWithIndex:rowIndex]
withAnimation:NSTableViewAnimationEffectFade];
}
}
@end