Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Example for dragging files from the desktop to any CPView in a Cappuccino app running in a browser.

branch: master
Octocat-spinner-32 Frameworks adding all files
Octocat-spinner-32 Resources adding all files
Octocat-spinner-32 AppController.j Added support for CPCollectionView by using the insertAsFirstSubview:…
Octocat-spinner-32 DCFileDropCollectionViewController.j Added support for CPCollectionView by using the insertAsFirstSubview:…
Octocat-spinner-32 DCFileDropCollectionViewItemView.j Added support for CPCollectionView by using the insertAsFirstSubview:…
Octocat-spinner-32 DCFileDropController.j Added support for NativeHost by using an iframe
Octocat-spinner-32 DCFileDropRowView.j removed more the rest of the "pointers" :)
Octocat-spinner-32 DCFileDropTableViewController.j Added support for CPCollectionView by using the insertAsFirstSubview:…
Octocat-spinner-32 DCFileUpload.j Remove useless stuff I added since that particular method doesn't exi…
Octocat-spinner-32 DCFileUploadManager.j Added better interaction with the upload manager delegate and individ…
Octocat-spinner-32 DCFileUploadsPanel.j removed more the rest of the "pointers" :)
Octocat-spinner-32 DCFileUploadsRowView.j adding all files
Octocat-spinner-32 DCProgressIndicator.j adding all files
Octocat-spinner-32 DragDropUpload.atlasproj Added support for NativeHost by using an iframe
Octocat-spinner-32 Info.plist adding all files
Octocat-spinner-32 Jakefile adding all files
Octocat-spinner-32 README.markdown Removed pointer asterisks in README.markdown
Octocat-spinner-32 index-debug.html adding all files
Octocat-spinner-32 index.html adding all files
Octocat-spinner-32 main.j adding all files
Octocat-spinner-32 upload.php adding all files
README.markdown

Deep Drop Upload

Example

These classes allow you to turn any CPView in a Cappuccino app into a file upload drop zone. It supports multiple files dropped at once. It works in Safari and Chrome. Firefox support is possible, but hasn't been added.

The most useful classes are:

  • DCFileDropController.j
  • DCFileUploadManager.j
  • DCFileUpload.j

Usage

Import these classes:

@import "DCFileDropController.j"
@import "DCFileUploadManager.j"

Apply a DCFileDropController to any CPView:

var fileDropUploadController = [[DCFileDropController alloc] 
    initWithView:anyView 
    dropDelegate:self 
    uploadURL:[CPURL URLWithString:@"upload.php"] 
    uploadManager:[DCFileUploadManager sharedManager]];

If you want to change visual state of the view, you can do that with this dropDelegate method:

- (void)fileDropUploadController:(DCFileDropController)theController setState:(BOOL)visible {
    if (visible) {
        [theController.view setBackgroundColor:[CPColor colorWithRed:0.0 green:0.0 blue:1.0 alpha:0.2]];
    } else {
        [theController.view setBackgroundColor:[CPColor clearColor]];
    }
}

If you want to display progress, you can set the DCFileUploadManager delegate:

[[DCFileUploadManager sharedManager] setDelegate:uploadsPanel];

And process it with this method:

- (void)fileUploadManagerDidChange:(DCFileUploadManager)theManager {
    var fileUploads = [theManager fileUploads];
}

Attribution

This technique is based on code from CSS Ninja.

License

MIT License

Something went wrong with that request. Please try again.