-
Notifications
You must be signed in to change notification settings - Fork 1
/
ModifyPlaylistViewController.m
65 lines (54 loc) · 2.15 KB
/
ModifyPlaylistViewController.m
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
//
// ModifyPlaylistViewController.m
// LoopMusic
//
// Created by Cheng Hann Gan on 12/26/15.
// Copyright © 2015 Cheng Hann Gan. All rights reserved.
//
#import "ModifyPlaylistViewController.h"
#import "SettingsStore.h"
@interface ModifyPlaylistViewController ()
@end
@implementation ModifyPlaylistViewController
- (void)viewDidLoad
{
items = [self getTotalSongList];
selectedItems = [self getSongList];
[super viewDidLoad];
}
-(NSString *)formStringTuple:(NSArray *)array
{
// Assumes array is not empty
return [NSString stringWithFormat:@"(\"%@\")", [array componentsJoinedByString:@"\", \""]];
}
-(NSString *)formIntTuple:(NSArray *)array
{
return [NSString stringWithFormat:@"(%@)", [array componentsJoinedByString:@", "]];
}
-(NSString *)formIntTupleList:(NSInteger)first :(NSArray *)secondsArray
{
// Forms (first, second[0]), (first, second[1]), ...
// Assumes secondsArray is not empty
return [NSString stringWithFormat:@"(%ld, %@)", (long)first, [secondsArray componentsJoinedByString:[NSString stringWithFormat:@"), (%ld, ", (long)first]]];
}
- (IBAction)confirmButton:(id)sender
{
[self dismissViewControllerAnimated:true completion:nil];
[self openDB];
// Remove stuff
NSArray *trackIndices;
if (recentlyUnselectedItems.count > 0)
{
trackIndices = [self getMultiIntegerDB:[NSString stringWithFormat:@"SELECT id FROM Tracks WHERE name in %@ AND id != 0", [self formStringTuple:recentlyUnselectedItems]]];
[self updateDB:[NSString stringWithFormat:@"DELETE FROM Playlists WHERE id = %ld AND track in %@", (long)SettingsStore.instance.playlistIndex, [self formIntTuple:trackIndices]]];
}
// Add stuff
if (recentlySelectedItems.count > 0)
{
trackIndices = [self getMultiIntegerDB:[NSString stringWithFormat:@"SELECT id FROM Tracks WHERE name in %@ AND id != 0", [self formStringTuple:recentlySelectedItems]]];
[self updateDB:[NSString stringWithFormat:@"INSERT INTO Playlists (id, track) VALUES %@", [self formIntTupleList:SettingsStore.instance.playlistIndex :trackIndices]]];
}
sqlite3_close(trackData);
[presenter updatePlaylistSongs];
}
@end