diff --git a/Ample/DiskImagesWindowController.m b/Ample/DiskImagesWindowController.m index 0d212a1..c5f68e6 100644 --- a/Ample/DiskImagesWindowController.m +++ b/Ample/DiskImagesWindowController.m @@ -33,8 +33,11 @@ @(12345), @"size", nil] ]]; + [super windowDidLoad]; + [_tableView registerForDraggedTypes: @[NSPasteboardTypeURL]]; + // Implement this method to handle any initialization after your window controller's window has been loaded from its nib file. } @@ -76,5 +79,39 @@ return YES; } +-(NSDragOperation)tableView:(NSTableView *)tableView validateDrop:(id)info proposedRow:(NSInteger)row proposedDropOperation:(NSTableViewDropOperation)dropOperation { + + return NSDragOperationCopy; +} + +-(BOOL)tableView:(NSTableView *)tableView acceptDrop:(id)info row:(NSInteger)row dropOperation:(NSTableViewDropOperation)dropOperation { + + + NSPasteboard * pb = [info draggingPasteboard]; + NSURL *url = [NSURL URLFromPasteboard: pb]; + if (!url) return NO; + + NSFileManager *fm = [NSFileManager defaultManager]; + + NSString *path = [NSString stringWithCString: [url fileSystemRepresentation] encoding: NSUTF8StringEncoding]; + if (!path) return NO; + + NSError *error = nil; + NSDictionary *attr = [fm attributesOfItemAtPath: path error: &error]; + if (error) { + NSLog(@"%@ : %@", path, error); + return NO; + } + + NSNumber *size = [attr objectForKey: NSFileSize]; + + NSMutableDictionary *d = [NSMutableDictionary dictionaryWithObjectsAndKeys: + path, @"path", + size, @"size" + , nil]; + + [_arrayController addObject: d]; + return YES; +} @end