From 7c9d6cce8de9c392fd0df4cae363a4f25253f2b9 Mon Sep 17 00:00:00 2001 From: anthony Date: Thu, 14 Jan 2021 20:01:55 +0000 Subject: [PATCH] Cutting, pasting, removing individual websites working --- frontends/gnustep/BookmarkFolder.m | 28 +++++++-------- frontends/gnustep/BookmarksWindowController.m | 34 ++++++++++++------- frontends/gnustep/Website.m | 4 ++- 3 files changed, 37 insertions(+), 29 deletions(-) diff --git a/frontends/gnustep/BookmarkFolder.m b/frontends/gnustep/BookmarkFolder.m index 13d4ea600..96139fdde 100644 --- a/frontends/gnustep/BookmarkFolder.m +++ b/frontends/gnustep/BookmarkFolder.m @@ -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 { diff --git a/frontends/gnustep/BookmarksWindowController.m b/frontends/gnustep/BookmarksWindowController.m index 3233a9ebe..a683e186d 100644 --- a/frontends/gnustep/BookmarksWindowController.m +++ b/frontends/gnustep/BookmarksWindowController.m @@ -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 diff --git a/frontends/gnustep/Website.m b/frontends/gnustep/Website.m index eb4865205..c135918ce 100644 --- a/frontends/gnustep/Website.m +++ b/frontends/gnustep/Website.m @@ -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]; }