// callback MUST dispose the stream when done! public static void ImportAudioStream(System.Action <Stream> callback) { // TODO: get this to work with Android eventually // right now it can't open files unless they are in a .nomedia folder (doesn't have read permission) // and the files it can open have names obscured. //#if UNITY_ANDROID && !UNITY_EDITOR #if false CheckPermission(NativeGallery.GetAudioFromGallery((path) => { if (path == null) { callback(null); return; } try { callback(File.Open(path, FileMode.Open)); } catch (System.Exception e) { DialogGUI.ShowMessageDialog(GUIManager.guiGameObject, "Error importing audio file"); Debug.LogError(e); } })); #else ShareMap.OpenFileManager(); #endif }
public override void WindowGUI() { if (loadingWorld) { GUILayout.FlexibleSpace(); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); GUILayout.Label("Loading world..."); GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.FlexibleSpace(); } else if (!worldSelected) { scroll = GUILayout.BeginScrollView(scroll); GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (GUILayout.Button("Choose a file to open in N-Space", GUIStyleSet.instance.buttonLarge)) { ShareMap.OpenFileManager(); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); GUILayout.Label("Or import from a world..."); for (int i = 0; i < worldPaths.Count; i++) { string path = worldPaths[i]; string name = worldNames[i]; if (GUILayout.Button(name, GUIStyleSet.instance.buttonLarge)) { worldSelected = true; StartCoroutine(LoadWorldCoroutine(path)); scroll = Vector2.zero; scrollVelocity = Vector2.zero; } } GUILayout.EndScrollView(); } else // world is selected { if (GUIUtils.HighlightedButton("Back to world list", GUIStyleSet.instance.buttonLarge)) { worldSelected = false; dataList = null; scroll = Vector2.zero; scrollVelocity = Vector2.zero; StopPlayer(); } if (dataList != null && dataList.Count > 0) { foreach (EmbeddedData data in dataList) { GUILayout.BeginHorizontal(); if (GUILayout.Button(data.name, GUIStyleSet.instance.buttonLarge)) { dataAction(data); Destroy(this); } if (playerFactory != null && GUIUtils.HighlightedButton( GUIIconSet.instance.playAudio, GUIStyleSet.instance.buttonLarge, playingData == data, GUILayout.ExpandWidth(false))) { if (StopPlayer() != data) { playingAudio = playerFactory(data.bytes); playingData = data; } } GUILayout.EndHorizontal(); } } else { GUILayout.BeginHorizontal(); GUILayout.FlexibleSpace(); if (errorMessage != null) { ActionBarGUI.ActionBarLabel(errorMessage); } else { ActionBarGUI.ActionBarLabel("World contains no " + type.ToString() + " files."); } GUILayout.FlexibleSpace(); GUILayout.EndHorizontal(); } } }