Skip to content

Commit 22f11ee

Browse files
committed
macosx: add double-click-to-play to the audio library
This is for the list representation only so far
1 parent d68b5b2 commit 22f11ee

File tree

2 files changed

+50
-0
lines changed

2 files changed

+50
-0
lines changed

modules/gui/macosx/library/VLCLibraryAlbumTableCellView.m

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ - (void)awakeFromNib
7878
_tracksDataSource = [[VLCLibraryTracksDataSource alloc] init];
7979
_tracksTableView.dataSource = _tracksDataSource;
8080
_tracksTableView.delegate = _tracksDataSource;
81+
_tracksTableView.doubleAction = @selector(tracksTableViewDoubleClickAction:);
82+
_tracksTableView.target = self;
8183
[self addSubview:_tracksTableView];
8284
NSDictionary *dict = NSDictionaryOfVariableBindings(_tracksTableView, _representedImageView);
8385
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[_tracksTableView]-20-|" options:0 metrics:0 views:dict]];
@@ -139,6 +141,20 @@ - (void)setRepresentedAlbum:(VLCMediaLibraryAlbum *)representedAlbum
139141
[_tracksTableView reloadData];
140142
}
141143

144+
- (void)tracksTableViewDoubleClickAction:(id)sender
145+
{
146+
if (!_libraryController) {
147+
_libraryController = [[VLCMain sharedInstance] libraryController];
148+
}
149+
150+
NSArray *tracks = [_representedAlbum tracksAsMediaItems];
151+
NSUInteger trackCount = tracks.count;
152+
NSInteger clickedRow = _tracksTableView.clickedRow;
153+
if (clickedRow < trackCount) {
154+
[_libraryController appendItemToPlaylist:tracks[_tracksTableView.clickedRow] playImmediately:YES];
155+
}
156+
}
157+
142158
@end
143159

144160
@interface VLCLibraryTracksDataSource ()

modules/gui/macosx/library/VLCLibraryAudioDataSource.m

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222

2323
#import "VLCLibraryAudioDataSource.h"
2424

25+
#import "main/VLCMain.h"
26+
2527
#import "library/VLCLibraryModel.h"
28+
#import "library/VLCLibraryController.h"
2629
#import "library/VLCLibraryDataTypes.h"
2730
#import "library/VLCLibraryTableCellView.h"
2831
#import "library/VLCLibraryAlbumTableCellView.h"
@@ -66,6 +69,9 @@ - (void)setupAppearance
6669
flowLayout.minimumLineSpacing = 20.;
6770
flowLayout.minimumInteritemSpacing = 20.;
6871

72+
_groupSelectionTableView.target = self;
73+
_groupSelectionTableView.doubleAction = @selector(groubSelectionDoubleClickAction:);
74+
6975
[self reloadAppearance];
7076
}
7177

@@ -273,6 +279,34 @@ - (void)tableViewSelectionDidChange:(NSNotification *)notification
273279
[self.groupSelectionTableView reloadData];
274280
}
275281

282+
#pragma mark - table view double click actions
283+
284+
- (void)groubSelectionDoubleClickAction:(id)sender
285+
{
286+
NSArray *listOfAlbums = _groupDataSource.representedListOfAlbums;
287+
NSUInteger albumCount = listOfAlbums.count;
288+
if (!listOfAlbums || albumCount == 0) {
289+
return;
290+
}
291+
292+
NSInteger clickedRow = _groupSelectionTableView.clickedRow;
293+
if (clickedRow > albumCount) {
294+
return;
295+
}
296+
297+
VLCLibraryController *libraryController = [[VLCMain sharedInstance] libraryController];
298+
299+
NSArray *tracks = [listOfAlbums[clickedRow] tracksAsMediaItems];
300+
NSUInteger trackCount = tracks.count;
301+
BOOL playImmediately = YES;
302+
for (NSUInteger x = 0; x < trackCount; x++) {
303+
[libraryController appendItemToPlaylist:tracks[x] playImmediately:playImmediately];
304+
if (playImmediately) {
305+
playImmediately = NO;
306+
}
307+
}
308+
}
309+
276310
#pragma mark - collection view data source and delegation
277311

278312
- (NSInteger)collectionView:(NSCollectionView *)collectionView

0 commit comments

Comments
 (0)