Skip to content

Commit

Permalink
Improved internal design, added Watchdog to aid in reloading librarie…
Browse files Browse the repository at this point in the history
…s on demand. Added new level in filesystem to allow for multiple databases being displayed simultaneously.
  • Loading branch information
znek committed May 23, 2007
1 parent 34e0c7d commit 506d2ba
Show file tree
Hide file tree
Showing 17 changed files with 688 additions and 72 deletions.
24 changes: 24 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
2007-05-23 Marcus Mueller <znek@mulle-kybernetik.com>

* v1.0.3

* ChangeLog: added

* Watchdog.[hm]: added kqueue observer capable of reloading libraries
in case their underlying database files changed.

* NSArray+Extensions.[hm]: added category for all things specific to
path handling, enhances code readability in most places.

* iTunesFileSystem.[hm]: Added new top level hierarchy, enabling
more than one library to be displayed beneath the root directory.
The intended purpose is to also allow traversal of mounted iPods
in the similar fashion as is with the iTunes library.

* iTunesLibrary.[hm]: Library exposes its name and associated icon now.
Also, the library uses the shared watchdog to watch its database
file and reload upon change.

* iTunesTrack.[hm], iTunesPlaylist.[hm]: added copyright notice.

* NSString+Extensions.m: removed debug log message.
8 changes: 4 additions & 4 deletions Info.plist
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.3dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
Expand All @@ -9,11 +9,11 @@
<key>CFBundleName</key>
<string>iTunesFS</string>
<key>CFBundleVersion</key>
<string>1.0.2</string>
<string>1.0.3</string>
<key>CFBundleShortVersionString</key>
<string>1.0.2</string>
<string>1.0.3</string>
<key>CFBundleGetInfoString</key>
<string>iTunesFS version 1.0.2, Copyright 2007 Mulle kybernetiK.</string>
<string>iTunesFS version 1.0.3, Copyright 2007 Mulle kybernetiK.</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright 2007 Mulle kybernetiK.</string>
<key>CFBundleIconFile</key>
Expand Down
52 changes: 52 additions & 0 deletions NSArray+Extensions.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
/*
Copyright (c) 2007, Marcus Müller <znek@mulle-kybernetik.com>.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of Mulle kybernetiK nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef __iTunesFS_NSArray_Extensions_H
#define __iTunesFS_NSArray_Extensions_H

#import <Foundation/Foundation.h>

@interface NSArray (iTunesFSPathExtensions)

- (NSString *)libraryName;
- (NSString *)playlistName;
- (NSString *)trackName;

- (BOOL)isRootDirectory;
- (BOOL)isLibraryDirectory;
- (BOOL)isPlaylistDirectory;
- (BOOL)isDirectoryPath;
- (BOOL)isFilePath;

@end /* NSArray (iTunesFSPathExtensions) */

#endif /* __iTunesFS_NSArray_Extensions_H */
64 changes: 64 additions & 0 deletions NSArray+Extensions.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
/*
Copyright (c) 2007, Marcus Müller <znek@mulle-kybernetik.com>.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of Mulle kybernetiK nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/

#import "common.h"
#import "NSArray+Extensions.h"

@implementation NSArray (iTunesFSPathExtensions)

- (NSString *)libraryName {
return [self objectAtIndex:1];
}
- (NSString *)playlistName {
return [self objectAtIndex:2];
}
- (NSString *)trackName {
return [self objectAtIndex:3];
}

- (BOOL)isRootDirectory {
return [self count] == 1;
}
- (BOOL)isLibraryDirectory {
return [self count] == 2;
}
- (BOOL)isPlaylistDirectory {
return [self count] == 3;
}
- (BOOL)isDirectoryPath {
return [self count] < 4;
}
- (BOOL)isFilePath {
return [self count] == 4;
}

@end /* NSArray (iTunesFSPathExtensions) */
4 changes: 2 additions & 2 deletions NSString+Extensions.m
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ - (BOOL)isValidTrackName {
unichar c;

c = [self characterAtIndex:i];
if (c < '0' || c > '9') {NSLog(@"%@ [%d]-> NO", self, i); return NO;}
if (c < '0' || c > '9') return NO;
}
return YES;
#else
Expand Down Expand Up @@ -82,4 +82,4 @@ - (NSString *)properlyEscapedFSRepresentation {
return [proper autorelease];
}

@end /* NSString+Extensions */
@end /* NSString (iTunesFSExtensions) */
2 changes: 1 addition & 1 deletion Version
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
MAJOR_VERSION=1
MINOR_VERSION=0
SUBMINOR_VERSION=2
SUBMINOR_VERSION=3
55 changes: 55 additions & 0 deletions Watchdog.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
/*
Copyright (c) 2007, Marcus Müller <znek@mulle-kybernetik.com>.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
- Neither the name of Mulle kybernetiK nor the names of its contributors
may be used to endorse or promote products derived from this software
without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
*/

#ifndef __iTunesFS_Watchdog__H
#define __iTunesFS_Watchdog__H

#import <Foundation/Foundation.h>

@class iTunesLibrary;

@interface Watchdog : NSObject
{
NSMutableArray *paths;
NSMutableArray *fds;
NSMutableArray *clients;
int kqueueHandle;
}

+ (id)sharedWatchdog;

- (void)watchLibrary:(iTunesLibrary *)_lib;
- (void)forgetLibrary:(iTunesLibrary *)_lib;

@end

#endif /* __iTunesFS_Watchdog__H */
Loading

0 comments on commit 506d2ba

Please sign in to comment.