Cutting, pasting, removing individual websites working

This commit is contained in:
anthony 2021-01-14 20:01:55 +00:00
parent 0157ab1322
commit 7c9d6cce8d
3 changed files with 37 additions and 29 deletions

View File

@ -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 {

View File

@ -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

View File

@ -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];
}