1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-21 01:24:21 +00:00

Added support for uploading files in the OSX embedded web browser.

This commit is contained in:
jules 2014-04-02 19:40:38 +01:00
parent f4fa3a420b
commit b3e7f2b772

View file

@ -34,6 +34,7 @@ struct DownloadClickDetectorClass : public ObjCClass <NSObject>
decidePolicyForNavigationAction, "v@:@@@@@");
addMethod (@selector (webView:didFinishLoadForFrame:), didFinishLoadForFrame, "v@:@@");
addMethod (@selector (webView:willCloseFrame:), willCloseFrame, "v@:@@");
addMethod (@selector (webView:runOpenPanelForFileButtonWithResultListener:allowMultipleFiles:), runOpenPanel, "v@:@@", @encode (BOOL));
registerClass();
}
@ -66,6 +67,21 @@ private:
{
getOwner (self)->windowCloseRequest();
}
static void runOpenPanel (id, SEL, WebView*, id<WebOpenPanelResultListener> resultListener, BOOL allowMultipleFiles)
{
FileChooser chooser (TRANS("Select the file you want to upload..."),
File::getSpecialLocation (File::userHomeDirectory), "*");
if (allowMultipleFiles ? chooser.browseForMultipleFilesToOpen()
: chooser.browseForFileToOpen())
{
const Array<File>& files = chooser.getResults();
for (int i = 0; i < files.size(); ++i)
[resultListener chooseFilename: juceStringToNS (files.getReference(i).getFullPathName())];
}
}
};
#else
@ -146,6 +162,7 @@ public:
DownloadClickDetectorClass::setOwner (clickListener, owner);
[webView setPolicyDelegate: clickListener];
[webView setFrameLoadDelegate: clickListener];
[webView setUIDelegate: clickListener];
#else
webView = [[UIWebView alloc] initWithFrame: CGRectMake (0, 0, 1.0f, 1.0f)];
setView (webView);
@ -162,6 +179,7 @@ public:
#if JUCE_MAC
[webView setPolicyDelegate: nil];
[webView setFrameLoadDelegate: nil];
[webView setUIDelegate: nil];
[clickListener release];
#else
webView.delegate = nil;