This is TSShelfItem.m in view mode; [Download] [Up]
/* TSShelfItem.m created by tsengel on Fri 15-Aug-1997 */
#import "TSShelfItem.h"
@implementation TSShelfItem
- (id)init
{
return [self initWithContentsOfFile:nil];
}
- (id)initWithContentsOfFile:(NSString *)aString
{
id defaultTitle;
self = [super init];
if( !self) return nil;
// IF we don't have a path then we have just been created...which means there is something to save
// Otherwie each shelf has to decied on its own if changes have been made..
if( !aString )
{
[self setTitle:@"Untitled"];
unsavedChanges = YES;
}
else
{
// Set a default title according to the files name
defaultTitle = [[aString lastPathComponent] stringByDeletingPathExtension];
[self setTitle:defaultTitle];
unsavedChanges = NO;
}
path = [aString copy];
return self;
}
- (void)dealloc
{
[path release];
[super dealloc];
}
- (void)ok:(id)sender
{
// Ensure that swapping out saves the changes... this minimized the risk of lost changes
// if the app crashes.
// <<HACK>> Should be smarter and only save if changes have been made !!
[super ok:sender];
if( [self contentDidChange] ) [self save];
}
- (void)setTitle:(NSString *)aString
{
id aPath;
id defaultTitle;
[title autorelease];
title = [aString copy];
// If we are a private shelf then we will just set a different title...but not change the name.
// But if we are not shared then we should also try to rename our storage file if the name did change.
/*
if( !sharedShelf )
{
aPath = [self path];
defaultTitle = [[aPath lastPathComponent] stringByDeletingPathExtension];
if( ![aString isEqual:defaultTitle] )
{
if( ![[NSFileManager defaultManager] fileExistsAtPath:]
}
}
*/
}
- (NSString *)title
{
if( !title )
return @"";
else
return [[title copy] autorelease];
}
- (NSString *)path
{
int count = 0;
id pathBasename;
if( !path )
{
path = [[NSUserDefaults standardUserDefaults] stringForKey:@"DefaultShelfLibraryPath"];
path = [path stringByStandardizingPath];
// If our global "TheShelf folder does not exist yet...lets create it
if( ![[NSFileManager defaultManager] fileExistsAtPath:path] )
[[NSFileManager defaultManager] createDirectoryAtPath:path attributes:nil];
pathBasename = [path stringByAppendingPathComponent:[self title]];
path = [pathBasename stringByAppendingPathExtension:@"aShelf"];
// Now check if the path is really unique.
while( [[NSFileManager defaultManager] fileExistsAtPath:path] )
{
count++;
path = [pathBasename stringByAppendingFormat:@"-%i", count];
path = [path stringByAppendingPathExtension:@"aShelf"];
path = [path stringByStandardizingPath];
}
[[NSFileManager defaultManager] createDirectoryAtPath:path attributes:nil];
[path retain];
}
return path;
}
- (void)setSharedShelf:(BOOL)flag
{
sharedShelf = flag;
}
- (BOOL)isSharedShelf
{
return sharedShelf;
}
- (void)setContentDidChange:(BOOL)flag
{
unsavedChanges = flag;
}
- (BOOL)contentDidChange
{
return unsavedChanges;
}
- (void)save
{
// Lets note that we did save our changes..so there is no need to save them again...
unsavedChanges = NO;
// If the path that we should save ourself to does not exist yet...create that folder first.
NSLog( @"Saving %@", [self path]);
if( ![[NSFileManager defaultManager] fileExistsAtPath:[self path]] )
[[NSFileManager defaultManager] createDirectoryAtPath:[self path] attributes:nil];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.