[vlc-commits] macosx: prepare drag & drop support for the Convert and Save panel
Felix Paul Kühne
git at videolan.org
Wed May 30 02:43:52 CEST 2012
vlc | branch: master | Felix Paul Kühne <fkuehne at videolan.org> | Wed May 30 00:05:52 2012 +0200| [22495438124c771cfed93a0d6335d32d331f93fe] | committer: Felix Paul Kühne
macosx: prepare drag & drop support for the Convert and Save panel
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=22495438124c771cfed93a0d6335d32d331f93fe
---
modules/gui/macosx/ConvertAndSave.h | 10 ++++++
modules/gui/macosx/ConvertAndSave.m | 63 +++++++++++++++++++++++++++++++++++
2 files changed, 73 insertions(+)
diff --git a/modules/gui/macosx/ConvertAndSave.h b/modules/gui/macosx/ConvertAndSave.h
index 6f26fd7..da07d0b 100644
--- a/modules/gui/macosx/ConvertAndSave.h
+++ b/modules/gui/macosx/ConvertAndSave.h
@@ -46,7 +46,11 @@
IBOutlet id o_dropin_view;
IBOutlet id o_dropin_icon_view;
IBOutlet id o_dropin_media_lbl;
+
+ NSString * MRL;
}
+ at property (readwrite, nonatomic, retain) NSString * MRL;
+
+ (VLCConvertAndSave *)sharedInstance;
- (IBAction)toggleWindow;
@@ -57,4 +61,10 @@
- (IBAction)customizeProfile:(id)sender;
- (IBAction)chooseDestination:(id)sender;
+- (void)updateDropView;
+
+ at end
+
+ at interface VLCDropEnabledBox : NSBox
+
@end
diff --git a/modules/gui/macosx/ConvertAndSave.m b/modules/gui/macosx/ConvertAndSave.m
index adc7102..857df2a 100644
--- a/modules/gui/macosx/ConvertAndSave.m
+++ b/modules/gui/macosx/ConvertAndSave.m
@@ -22,8 +22,13 @@
*****************************************************************************/
#import "ConvertAndSave.h"
+#import <vlc_common.h>
+#import <vlc_url.h>
@implementation VLCConvertAndSave
+
+ at synthesize MRL;
+
static VLCConvertAndSave *_o_sharedInstance = nil;
+ (VLCConvertAndSave *)sharedInstance
@@ -72,4 +77,62 @@ static VLCConvertAndSave *_o_sharedInstance = nil;
{
}
+- (void)updateDropView
+{
+
+}
+
@end
+
+
+ at implementation VLCDropEnabledBox
+
+- (void)awakeFromNib
+{
+ [self registerForDraggedTypes:[NSArray arrayWithObject: NSFilenamesPboardType]];
+}
+
+- (NSDragOperation)draggingEntered:(id <NSDraggingInfo>)sender
+{
+ if ((NSDragOperationGeneric & [sender draggingSourceOperationMask]) == NSDragOperationGeneric)
+ return NSDragOperationGeneric;
+
+ return NSDragOperationNone;
+}
+
+- (BOOL)prepareForDragOperation:(id <NSDraggingInfo>)sender
+{
+ return YES;
+}
+
+- (BOOL)performDragOperation:(id <NSDraggingInfo>)sender
+{
+ NSPasteboard *o_paste = [sender draggingPasteboard];
+ NSArray *o_types = [NSArray arrayWithObject: NSFilenamesPboardType];
+ NSString *o_desired_type = [o_paste availableTypeFromArray:o_types];
+ NSData *o_carried_data = [o_paste dataForType:o_desired_type];
+
+ if( o_carried_data )
+ {
+ if( [o_desired_type isEqualToString:NSFilenamesPboardType] )
+ {
+ NSArray *o_values = [[o_paste propertyListForType: NSFilenamesPboardType] sortedArrayUsingSelector:@selector(caseInsensitiveCompare:)];
+
+ if ([o_values count] > 0)
+ {
+ id VLCCAS = [VLCConvertAndSave sharedInstance];
+ [VLCCAS setMRL: [NSString stringWithUTF8String:make_URI([[o_values objectAtIndex:0] UTF8String], NULL)]];
+ [VLCCAS updateDropView];
+ return YES;
+ }
+ }
+ }
+ return NO;
+}
+
+- (void)concludeDragOperation:(id <NSDraggingInfo>)sender
+{
+ [self setNeedsDisplay:YES];
+}
+
+ at end
\ No newline at end of file
More information about the vlc-commits
mailing list