Cutting, pasting, removing individual websites working
This commit is contained in:
parent
0157ab1322
commit
7c9d6cce8d
|
@ -73,9 +73,12 @@ lazy-loaded when requested.
|
|||
-(void)updateChild: (id)child {
|
||||
if ([child isKindOfClass: [Website class]]) {
|
||||
BOOL ok = NO;
|
||||
NSString * destPath = [path stringByAppendingPathComponent: [self
|
||||
pathNameForWebsite: child]];
|
||||
ok = [[child asDictionary] writeToFile: destPath atomically: YES];
|
||||
NSString *filename = [child filename];
|
||||
if (filename != nil) {
|
||||
NSString * destPath = [path stringByAppendingPathComponent:
|
||||
filename];
|
||||
ok = [[child asDictionary] writeToFile: destPath atomically: YES];
|
||||
}
|
||||
if (!ok) {
|
||||
NSLog(@"Failed to resave the child");
|
||||
}
|
||||
|
@ -105,11 +108,10 @@ lazy-loaded when requested.
|
|||
-(void)removeChild: (id)child {
|
||||
[self initChildrenIfNeeded];
|
||||
BOOL ok = NO;
|
||||
NSError *err;
|
||||
NSError *err = nil;
|
||||
NSString *destPath = nil;
|
||||
if ([child isKindOfClass: [Website class]]) {
|
||||
destPath = [path stringByAppendingPathComponent: [self pathNameForWebsite:
|
||||
child]];
|
||||
if ([child isKindOfClass: [Website class]] && [child filename] != nil) {
|
||||
destPath = [path stringByAppendingPathComponent: [child filename]];
|
||||
} else if ([child isKindOfClass: [BookmarkFolder class]]) {
|
||||
destPath = [child path];
|
||||
}
|
||||
|
@ -118,7 +120,7 @@ lazy-loaded when requested.
|
|||
return;
|
||||
}
|
||||
ok = [[NSFileManager defaultManager] removeItemAtPath: destPath error: &err];
|
||||
if (ok) {
|
||||
if (ok && err == nil) {
|
||||
[children removeObject: child];
|
||||
} else {
|
||||
NSLog(@"Failed to remove child");
|
||||
|
@ -188,13 +190,9 @@ lazy-loaded when requested.
|
|||
children = [someChildren retain];
|
||||
}
|
||||
-(NSString*)pathNameForWebsite: (Website*)aWebsite {
|
||||
if ([aWebsite filename] != nil) {
|
||||
return [aWebsite filename];
|
||||
} else {
|
||||
NSTimeInterval time = [[NSDate date] timeIntervalSinceReferenceDate];
|
||||
NSNumber *num = [NSNumber numberWithDouble: time];
|
||||
return [num stringValue];
|
||||
}
|
||||
NSTimeInterval time = [[NSDate date] timeIntervalSinceReferenceDate];
|
||||
NSNumber *num = [NSNumber numberWithDouble: time];
|
||||
return [num stringValue];
|
||||
|
||||
}
|
||||
-(void)initChildrenIfNeeded {
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
#import "AppDelegate.h"
|
||||
|
||||
@interface BookmarksWindowController (Private)
|
||||
-(void)copySelectedItems;
|
||||
-(NSArray*)selectedItems;
|
||||
@end
|
||||
|
||||
@implementation BookmarksWindowController
|
||||
|
@ -45,12 +45,14 @@
|
|||
|
||||
-(void)cut: (id)sender {
|
||||
isCutting = YES;
|
||||
[self copySelectedItems];
|
||||
[copiedItems release];
|
||||
copiedItems = [[self selectedItems] retain];
|
||||
}
|
||||
|
||||
-(void)copy: (id)sender {
|
||||
isCutting = NO;
|
||||
[self copySelectedItems];
|
||||
[copiedItems release];
|
||||
copiedItems = [[self selectedItems] retain];
|
||||
}
|
||||
|
||||
-(void)paste: (id)sender {
|
||||
|
@ -86,10 +88,18 @@
|
|||
[copiedItems release];
|
||||
copiedItems = nil;
|
||||
}
|
||||
[outlineView reloadData];
|
||||
}
|
||||
|
||||
-(void)remove: (id)sender {
|
||||
|
||||
NSArray *selectedItems = [self selectedItems];
|
||||
id item;
|
||||
for (NSUInteger i = 0; i < [selectedItems count]; i++) {
|
||||
item = [selectedItems objectAtIndex: i];
|
||||
NSLog(@"Removing item %@", item);
|
||||
[[item parentFolder] removeChild: item];
|
||||
}
|
||||
[outlineView reloadData];
|
||||
}
|
||||
|
||||
-(void)newFolder: (id)sender {
|
||||
|
@ -171,11 +181,10 @@
|
|||
[(BookmarkFolder*)item setName: object];
|
||||
}
|
||||
}
|
||||
|
||||
-(void)copySelectedItems {
|
||||
-(NSArray*)selectedItems {
|
||||
NSEnumerator *selected = [outlineView selectedRowEnumerator];
|
||||
NSMutableArray *copiedFolders = [NSMutableArray array];
|
||||
NSMutableArray *toCopy = [NSMutableArray array];
|
||||
NSMutableArray *selectedFolders = [NSMutableArray array];
|
||||
NSMutableArray *selectedItems = [NSMutableArray array];
|
||||
BOOL addedToPB = NO;
|
||||
id row, item;
|
||||
while ((row = [selected nextObject]) != NULL) {
|
||||
|
@ -186,15 +195,14 @@
|
|||
addedToPB = YES;
|
||||
}
|
||||
if ([item isKindOfClass: [BookmarkFolder class]]) {
|
||||
[copiedFolders addObject: item];
|
||||
[selectedFolders addObject: item];
|
||||
}
|
||||
if ([copiedFolders containsObject: [item parentFolder]]) {
|
||||
if ([selectedFolders containsObject: [item parentFolder]]) {
|
||||
break;
|
||||
}
|
||||
[toCopy addObject: item];
|
||||
[selectedItems addObject: item];
|
||||
}
|
||||
[copiedItems release];
|
||||
copiedItems = [toCopy retain];
|
||||
return selectedItems;
|
||||
}
|
||||
|
||||
@end
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
memcpy(data->data, [aName cString], nlen);
|
||||
memcpy(data->data + nlen, [aUrl cString], urlen);
|
||||
fileOffset = -1;
|
||||
filename = nil;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -26,6 +27,7 @@
|
|||
if (self = [super init]) {
|
||||
data = someData;
|
||||
fileOffset = aFileOffset;
|
||||
filename = nil;
|
||||
}
|
||||
return self;
|
||||
}
|
||||
|
@ -71,7 +73,7 @@
|
|||
return filename;
|
||||
}
|
||||
-(void)setFilename: (NSString*)aFilename {
|
||||
[filename release];
|
||||
[filename autorelease];
|
||||
filename = [aFilename retain];
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue