Add button to create new bookmark folders

This commit is contained in:
anthony 2021-01-19 20:04:20 +00:00
parent 72a8bf14d5
commit 32aa63c2fc
4 changed files with 53 additions and 3 deletions

View File

@ -155,7 +155,8 @@ lazy-loaded when requested.
[child setFilename: filename];
[child setParentFolder: self];
} else if ([child isKindOfClass: [BookmarkFolder class]]) {
ok = [[NSFileManager defaultManager] createDirectoryAtPath: path
NSString *dest = [path stringByAppendingPathComponent: [child name]];
ok = [[NSFileManager defaultManager] createDirectoryAtPath: dest
attributes: nil];
}
if (ok) {

View File

@ -4,8 +4,11 @@
#import "Website.h"
#import "AppDelegate.h"
static NSString * const NEW_FOLDER_NAME = @"New Folder";
@interface BookmarksWindowController (Private)
-(NSArray*)selectedItems;
-(NSString*)getNewFolderNameForParent: (BookmarkFolder*)aFolder;
@end
@implementation BookmarksWindowController
@ -121,7 +124,24 @@
}
-(void)newFolder: (id)sender {
NSLog(@"create new folder");
NSEnumerator *selected = [outlineView selectedRowEnumerator];
id row = [selected nextObject];
id item = nil;
if (row != nil) {
item = [outlineView itemAtRow: [row integerValue]];
if ([item isKindOfClass: [Website class]]) {
item = [item parentFolder];
}
}
if (item == nil) {
item = [BookmarkFolder rootBookmarkFolder];
}
NSString *folderName = [self getNewFolderNameForParent: item];
BookmarkFolder *folder = [[BookmarkFolder alloc] initWithName: folderName parent:
item];
[item addChild: folder];
[folder release];
[outlineView reloadData];
}
-(void)showWindow: (id)sender {
@ -238,4 +258,31 @@
return selectedItems;
}
-(NSString*)getNewFolderNameForParent: (BookmarkFolder*)aFolder {
NSEnumerator *existingFolders = [[aFolder childFolders] objectEnumerator];
BookmarkFolder *folder;
NSInteger highestNumber = 0;
NSInteger currentValue;
NSString *suffix;
BOOL hasExactName = NO;
while ((folder = [existingFolders nextObject]) != nil) {
if ([[folder name] hasPrefix: NEW_FOLDER_NAME]) {
suffix = [[folder name] substringFromIndex: [NEW_FOLDER_NAME
length]];
if ([suffix length] < 1) {
hasExactName = YES;
continue;
}
currentValue = [suffix integerValue];
highestNumber = MAX(currentValue, highestNumber);
}
}
if (!hasExactName) {
return NEW_FOLDER_NAME;
} else {
return [NSString stringWithFormat: @"%@%ld", NEW_FOLDER_NAME,
highestNumber + 1];
}
}
@end

View File

@ -3,7 +3,8 @@
BookmarksWindowController = {
Actions = (
"search:",
"clearSearch:"
"clearSearch:",
"newFolder:"
);
Outlets = (
outlineView,
@ -14,6 +15,7 @@
FirstResponder = {
Actions = (
"clearSearch:",
"newFolder:",
"search:"
);
Super = NSObject;