iOS fixes

This commit is contained in:
Anuken
2020-02-19 10:21:35 -05:00
parent 4a55dde5ee
commit a866af40cb
2 changed files with 22 additions and 24 deletions

View File

@@ -41,12 +41,32 @@ public class IOSLauncher extends IOSApplication.Delegate{
@Override
public void showFileChooser(boolean open, String extension, Cons<Fi> cons){
if(!open){ //when exporting, just share it.
//ask for export name
Core.input.getTextInput(new TextInput(){{
title = Core.bundle.get("filename");
accepted = name -> {
try{
//write result
Fi result = tmpDirectory.child(name + "." + extension);
cons.get(result);
//import the document
shareFile(result);
}catch(Throwable t){
ui.showException(t);
}
};
}});
return;
}
UIDocumentBrowserViewController cont = new UIDocumentBrowserViewController((NSArray<NSString>)null);
NSArray<UIBarButtonItem> arr = new NSArray<>(new UIBarButtonItem(Core.bundle.get("cancel"), UIBarButtonItemStyle.Plain,
uiBarButtonItem -> cont.dismissViewController(true, () -> {})));
cont.setAllowsDocumentCreation(!open);
cont.setAllowsDocumentCreation(false);
cont.setAdditionalLeadingNavigationBarButtonItems(arr);
class ChooserDelegate extends NSObject implements UIDocumentBrowserViewControllerDelegate{
@@ -88,37 +108,15 @@ public class IOSLauncher extends IOSApplication.Delegate{
@Override
public void didRequestDocumentCreationWithHandler(UIDocumentBrowserViewController controller, VoidBlock2<NSURL, UIDocumentBrowserImportMode> importHandler){
Core.app.post(() -> {
//ask for name
Core.input.getTextInput(new TextInput(){{
title = Core.bundle.get("name");
accepted = name -> {
try{
//write result
Fi result = tmpDirectory.child(name + "." + extension);
cons.get(result);
//import the document
importHandler.invoke(new NSURL(result.absolutePath()), UIDocumentBrowserImportMode.Move);
}catch(Throwable t){
ui.showException(t);
}
};
}});
});
}
@Override
public void didImportDocument(UIDocumentBrowserViewController controller, NSURL sourceURL, NSURL destinationURL){
//hide it, done with export
cont.dismissViewController(true, () -> {});
}
@Override
public void failedToImportDocument(UIDocumentBrowserViewController controller, NSURL documentURL, NSError error){
//failed, still hide it but show error message
Core.app.post(() -> ui.showErrorMessage(error.getLocalizedDescription() + "\n" + error.getLocalizedFailureReason()));
cont.dismissViewController(true, () -> {});
}
@Override