Example #1
0
        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;
        }
Example #3
0
        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();
        }
Example #4
0
        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;
        }
Example #5
0
        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();
        }
Example #6
0
        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()); // ダウンロード先を開く
        }