private void TryDeleteFiles(IList <int> ids) { foreach (var id in ids) { var item = (FileTreeViewItem)GetRows()[id]; DriveAPI.DeleteFile(item.FileId); Debug.LogFormat("Delete: {0} ({1})", item.FileName, item.FileId); } EditorApplication.delayCall += () => { ReloadFilesAsync(); }; }
private async void UploadFileAsync() { m_IsUploading = true; m_FileId = ""; m_FileURL = ""; await Task.Run(() => { m_FileId = DriveAPI.UploadFile(m_MediaType, m_UploadName, m_FilePath); m_FileURL = DriveAPI.GetFileURL(m_FileId); }); Repaint(); m_IsUploading = false; }
protected override void ContextClickedItem(int id) { base.ContextClickedItem(id); GenericMenu menu = new GenericMenu(); menu.AddItem(new GUIContent("ファイルを開く"), false, () => { var item = (FileTreeViewItem)GetRows()[id]; var openURL = DriveAPI.GetFileURL(item.FileId); System.Diagnostics.Process.Start(openURL); }); menu.AddItem(new GUIContent("ファイルをダウンロード"), false, () => { DownloadFileAsync(id); }); menu.AddSeparator(""); menu.AddItem(new GUIContent("コピー/ID"), false, () => { var item = (FileTreeViewItem)GetRows()[id]; GUIUtility.systemCopyBuffer = item.FileId; }); menu.AddItem(new GUIContent("コピー/MimeType"), false, () => { var item = (FileTreeViewItem)GetRows()[id]; GUIUtility.systemCopyBuffer = item.MimeType; }); menu.AddSeparator(""); menu.AddItem(new GUIContent("ファイルを削除"), false, () => { var ids = GetSelection(); bool ok = EditorUtility.DisplayDialog( "ファイルの削除", GetDeleteDialogMessage(ids), "削除する", "やめる" ); if (!ok) { return; } DeleteAsync(ids); }); menu.ShowAsContext(); }
private async void UploadFileAsync() { m_IsUploading = true; m_FileId = ""; m_FileURL = ""; var filePath = AssetDatabase.GetAssetPath(m_UploadAsset); await Task.Run(() => { var mediaType = MediaSettings.GetMediaFromPath(filePath); m_FileId = DriveAPI.UploadFile(mediaType, m_UploadName, filePath); m_FileURL = DriveAPI.GetFileURL(m_FileId); }); Repaint(); m_IsUploading = false; }
public async void ReloadFilesInFolderAsync(string folderName) { IsGettingFile = true; await Task.Run(() => { var files = DriveAPI.GetFilesInFolder(folderName); if (files != null && files.Count > 0) { RegisterFiles(files); } }); IsGettingFile = false; SetSelection(new int[0]); // cancel selection Repaint(); }
private async void DownloadFileAsync(int id) { var item = (FileTreeViewItem)GetRows()[id]; var mediaType = MediaSettings.GetMediaFromRemoteMime(item.MimeType); var fileExt = MediaSettings.GetExtensionFromMedia(mediaType); var fileName = item.FileName; if (!string.Equals(System.IO.Path.GetExtension(fileName), fileExt)) { fileName += fileExt; } var savePath = System.IO.Path.Combine(DownloadSettings.GetDownloadFolderPath(), fileName); IsDownloadingFile = true; Debug.Log($"Download start: {fileName}"); switch (mediaType) { case EMediaType.EXCEL: // is document string localMime = MediaSettings.GetLocalMimeFromMedia(mediaType); await DriveAPI.DownloadDocumentAsync(item.FileId, savePath, localMime); break; default: // is not document await DriveAPI.DownloadFileAsync(item.FileId, savePath); break; } IsDownloadingFile = false; Debug.LogFormat("Download end: File saved to: {0}", savePath); AssetDatabase.Refresh(); System.Diagnostics.Process.Start(DownloadSettings.GetDownloadFolderPath()); // ダウンロード先を開く }