Modified:
EyeTunes/trunk/DebugController.h
EyeTunes/trunk/DebugController.m
EyeTunes/trunk/ETEyeTunes.h
EyeTunes/trunk/ETEyeTunes.m
EyeTunes/trunk/ETPlaylistCache.h
EyeTunes/trunk/ETPlaylistCache.m
EyeTunes/trunk/MainMenu.nib/info.nib
EyeTunes/trunk/MainMenu.nib/keyedobjects.nib
Log:
Added user playlists only tree to the playlist cache. Updated demo/debug
app accordingly.
Modified: EyeTunes/trunk/DebugController.h
==============================================================================
--- EyeTunes/trunk/DebugController.h (original)
+++ EyeTunes/trunk/DebugController.h Fri Nov 14 08:47:42 2008
@@ -23,6 +23,7 @@
IBOutlet NSTextField *trackName;
IBOutlet NSOutlineView *outlineView;
+ BOOL doShowOnlyUser;
}
- (IBAction) prev:(id)sender;
@@ -34,5 +35,8 @@
- (IBAction) addTrack:(id)sender;
- (IBAction) goButtonPressed:(id)sender;
+
+- (BOOL) doShowOnlyUser;
+- (void) setDoShowOnlyUser:(BOOL)inDoShowOnlyUser;
@end
Modified: EyeTunes/trunk/DebugController.m
==============================================================================
--- EyeTunes/trunk/DebugController.m (original)
+++ EyeTunes/trunk/DebugController.m Fri Nov 14 08:47:42 2008
@@ -23,6 +23,7 @@
- (void) awakeFromNib
{
+ [self setDoShowOnlyUser:YES];
[self _append:@"Version: "];
[self _append:[[EyeTunes sharedInstance] versionString]];
[self _append:@"\n"];
@@ -223,17 +224,35 @@
}
+- (BOOL) doShowOnlyUser;
+{
+ return doShowOnlyUser;
+}
+- (void) setDoShowOnlyUser:(BOOL)inDoShowOnlyUser;
+{
+ doShowOnlyUser = inDoShowOnlyUser;
+ [[ETPlaylistCache sharedInstance] reload];
+ [outlineView reloadData];
+}
+
- (id)outlineView:(NSOutlineView *)outlineView child:(int)index
ofItem:(id)item
{
ETPlaylist * playlist = (ETPlaylist*)item;
if (!playlist)
- playlist = [[EyeTunes sharedInstance] rootPlaylist];
-
+ {
+ if (doShowOnlyUser)
+ playlist = [[EyeTunes sharedInstance] rootUserPlaylist];
+ else
+ playlist = [[EyeTunes sharedInstance] rootPlaylist];
+ }
if (![playlist isKindOfClass:[ETPlaylist class]])
return nil;
NSNumber * playlistId = [[playlist childPlaylistIds] objectAtIndex:index];
- return [[ETPlaylistCache sharedInstance]
playlistForPersistentId:[playlistId longLongValue]];
+ if (doShowOnlyUser)
+ return [[ETPlaylistCache sharedInstance]
userPlaylistForPersistentId:[playlistId longLongValue]];
+ else
+ return [[ETPlaylistCache sharedInstance]
playlistForPersistentId:[playlistId longLongValue]];
}
- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item
@@ -248,7 +267,12 @@
{
if (!item)
{
- ETPlaylist * rootPlaylist = [[EyeTunes sharedInstance] rootPlaylist];
+ ETPlaylist * rootPlaylist = nil;
+ if (doShowOnlyUser)
+ rootPlaylist = [[EyeTunes sharedInstance] rootUserPlaylist];
+ else
+ rootPlaylist = [[EyeTunes sharedInstance] rootPlaylist];
+
return [[rootPlaylist childPlaylistIds] count];
}
Modified: EyeTunes/trunk/ETEyeTunes.h
==============================================================================
--- EyeTunes/trunk/ETEyeTunes.h (original)
+++ EyeTunes/trunk/ETEyeTunes.h Fri Nov 14 08:47:42 2008
@@ -52,6 +52,7 @@
// get root playlist
- (ETPlaylist*) rootPlaylist;
+- (ETPlaylist*) rootUserPlaylist;
// get all playlists
- (int)playlistCount;
Modified: EyeTunes/trunk/ETEyeTunes.m
==============================================================================
--- EyeTunes/trunk/ETEyeTunes.m (original)
+++ EyeTunes/trunk/ETEyeTunes.m Fri Nov 14 08:47:42 2008
@@ -623,6 +623,12 @@
}
+- (ETPlaylist*) rootUserPlaylist;
+{
+ // this call returns the root user playlist. this playlist is a pseudo
playlist and contains the tree of user playlists
+ return [[ETPlaylistCache sharedInstance] userPlaylistForPersistentId:0];
+}
+
- (int) playlistCount
{
return [self getCountOfElementsOfClass:ET_CLASS_PLAYLIST];
Modified: EyeTunes/trunk/ETPlaylistCache.h
==============================================================================
--- EyeTunes/trunk/ETPlaylistCache.h (original)
+++ EyeTunes/trunk/ETPlaylistCache.h Fri Nov 14 08:47:42 2008
@@ -13,11 +13,12 @@
@interface ETPlaylistCache : NSObject
{
NSMutableDictionary * playlists;
+ NSMutableDictionary * userPlaylists;
}
+ (id) sharedInstance;
- (void) reload;
- (ETPlaylist*) playlistForPersistentId:(long long int)persistentId;
-- (ETPlaylist*) rootUserPlaylist;
+- (ETPlaylist*) userPlaylistForPersistentId:(long long int)persistentId;
@end
Modified: EyeTunes/trunk/ETPlaylistCache.m
==============================================================================
--- EyeTunes/trunk/ETPlaylistCache.m (original)
+++ EyeTunes/trunk/ETPlaylistCache.m Fri Nov 14 08:47:42 2008
@@ -33,16 +33,22 @@
return nil;
playlists = [[NSMutableDictionary alloc] init];
+ userPlaylists = [[NSMutableDictionary alloc] init];
return self;
}
+- (void) addChildrenToEnumeratedPlaylists:(NSEnumerator*)en
+{
+}
+
+
- (void) reload;
{
[playlists removeAllObjects];
+ [userPlaylists removeAllObjects];
- ETPlaylistEnumerator * en = [[[ETPlaylistEnumerator alloc] init]
autorelease];
ETPlaylist * rootPlaylist = [[[ETPlaylist alloc] init] autorelease];
[rootPlaylist setPersistentId:kETSpecialPlaylistRoot];
@@ -65,34 +71,21 @@
[playlists setObject:playlistsCategory forKey:[NSNumber
numberWithLongLong:kETSpecialPlaylistCategoryPlaylists]];
// add all playlists
+ ETPlaylistEnumerator * en = [[[ETPlaylistEnumerator alloc] init]
autorelease];
ETPlaylist * playlist = nil;
while ((playlist = [en nextObject]))
{
[playlists setObject:playlist forKey:[NSNumber
numberWithLongLong:[playlist persistentId]]];
}
- // find special playlists
+ // set parents
NSEnumerator * en2 = [playlists objectEnumerator];
- unsigned int count = 0;
while ((playlist = [en2 nextObject]))
{
- count++;
if ([playlist persistentId] >= 0 && [playlist persistentId] <= 3) //
root or categories
continue;
-
- /*
- if ([playlist persistentId] == 6554597091219814194ll) // not sure that
this is a good idea...
- {
- mediathek = playlist;
- continue;
- }
- if ([playlist persistentId] == 6114773995509758539ll) // not sure that
this is a good idea...
- {
- genius = playlist;
- continue;
- }
-*/
- NSLog (@"playlist: %@ (%@)", [playlist name], [playlist
stringForOSType:[playlist specialKind]]);
+
+ if (NO) NSLog (@"playlist: %@ (%@)", [playlist name], [playlist
stringForOSType:[playlist specialKind]]);
switch ([playlist specialKind])
{
@@ -141,20 +134,72 @@
long long parentPersistentId = [playlist parentPlaylistId];
- ETPlaylist * parentPlaylist = (parentPersistentId != 0) ? [self
playlistForPersistentId:parentPersistentId] : rootPlaylist;
- NSLog (@"playlist: %@ (%@) [%qi] -- parent: %@", playlistName, [playlist
stringForOSType:[playlist specialKind]], [playlist persistentId],
[parentPlaylist name]);
+ ETPlaylist * parentPlaylist = [self
playlistForPersistentId:parentPersistentId];
+ if (NO) NSLog (@"playlist: %@ (%@) [%qi] -- parent: %@", playlistName,
[playlist stringForOSType:[playlist specialKind]], [playlist persistentId],
[parentPlaylist name]);
+ [parentPlaylist addChildPlaylistId:[playlist persistentIdNumber]];
+ }
+
+ // ==== user playlist tree
+ //
+
+ ETPlaylist * rootUserPlaylist = [[[ETPlaylist alloc] init] autorelease];
+ [rootUserPlaylist setPersistentId:kETSpecialPlaylistRoot];
+ [userPlaylists setObject:rootUserPlaylist forKey:[NSNumber
numberWithLongLong:kETSpecialPlaylistRoot]];
+
+ en = [[[ETPlaylistEnumerator alloc] init] autorelease];
+ while ((playlist = [en nextObject]))
+ {
+ if ([playlist specialKind] == kETSpecialPlaylistNone || [playlist
specialKind] == kETSpecialPlaylistFolder)
+ {
+ [userPlaylists setObject:playlist forKey:[NSNumber
numberWithLongLong:[playlist persistentId]]];
+ }
+ }
+
+ // set parents
+ en2 = [userPlaylists objectEnumerator];
+ while ((playlist = [en2 nextObject]))
+ {
+ if ([playlist persistentId] >= 0 && [playlist persistentId] <= 3) //
root or categories
+ continue;
+
+ if ([playlist specialKind] == kETSpecialPlaylistNone || [playlist
specialKind] == kETSpecialPlaylistFolder)
+ {
+ ETPlaylist * parentPlaylist = [playlist parentPlaylist];
+ long long parentPersistentId = [parentPlaylist persistentId];
+ if (!parentPersistentId)
+ [playlist setParentPlaylistId:kETSpecialPlaylistRoot];
+ else
+ [playlist setParentPlaylistId:parentPersistentId];
+ }
+ }
+
+ en2 = [userPlaylists objectEnumerator];
+ while ((playlist = [en2 nextObject]))
+ {
+ unsigned long long playlistPersistentID = [playlist persistentId];
+ NSString * playlistName = [playlist name];
+ if (playlistPersistentID == 0) // root
+ continue;
+
+ long long parentPersistentId = [playlist parentPlaylistId];
+
+ ETPlaylist * parentPlaylist = [self
userPlaylistForPersistentId:parentPersistentId];
+ if (NO) NSLog (@"playlist: %@ (%@) [%qi] -- parent: %@", playlistName,
[playlist stringForOSType:[playlist specialKind]], [playlist persistentId],
[parentPlaylist name]);
[parentPlaylist addChildPlaylistId:[playlist persistentIdNumber]];
}
}
+
- (ETPlaylist*) playlistForPersistentId:(long long int)persistentId;
{
return [playlists objectForKey:[NSNumber
numberWithLongLong:persistentId]];
}
-- (ETPlaylist*) rootUserPlaylist;
+- (ETPlaylist*) userPlaylistForPersistentId:(long long int)persistentId;
{
- return nil;
+ return [userPlaylists objectForKey:[NSNumber
numberWithLongLong:persistentId]];
}
+
+
@end
Modified: EyeTunes/trunk/MainMenu.nib/info.nib
==============================================================================
--- EyeTunes/trunk/MainMenu.nib/info.nib (original)
+++ EyeTunes/trunk/MainMenu.nib/info.nib Fri Nov 14 08:47:42 2008
@@ -10,8 +10,8 @@
<integer>5</integer>
<key>IBOpenObjects</key>
<array>
- <integer>21</integer>
<integer>29</integer>
+ <integer>2</integer>
</array>
<key>IBSystem Version</key>
<string>9F33</string>
Modified: EyeTunes/trunk/MainMenu.nib/keyedobjects.nib
==============================================================================
Binary files. No diff available.