private async Task PushStack(CloudFile cloudFolder) { try { MyLogger.Assert(cloudFolder.IsFolder); CloudFolderContentPanel cfcp = new CloudFolderContentPanel(cloudFolder, Stack.Count + 1); cfcp.FileClicked += delegate(CloudFileLabel label) { OnFileClicked(label); }; cfcp.FileClicked += async delegate(CloudFileLabel label) { var removeRequestTime = DateTime.Now; if (RemovingStacks) { MyLogger.Log("Waiting for stack removing completion..."); while (RemovingStacks) { await Task.Delay(100); } MyLogger.Log("Stack remove completed."); } if (removeRequestTime <= RemoveRequestTime) { return; } RemoveRequestTime = removeRequestTime; MyLogger.Assert(!RemovingStacks); RemovingStacks = true; foreach (var p in Stack.GetRange(cfcp.FolderDepth, Stack.Count - cfcp.FolderDepth)) { await p.StopRefreshing(); SPpanel.Children.Remove(p); } Stack.RemoveRange(cfcp.FolderDepth, Stack.Count - cfcp.FolderDepth); RemovingStacks = false; if (label.File.IsFolder) { await PushStack(label.File); } }; Stack.Add(cfcp); SPpanel.Children.Remove(LBpadding); SPpanel.Children.Add(cfcp); SPpanel.Children.Add(LBpadding); await cfcp.RefreshContent(); if (SPpanel.Children.Contains(cfcp)) { await SPpanel.ScrollToAsync(cfcp, ScrollToPosition.Center, true); } //await SPpanel.ScrollToAsync(cfcp, ScrollToPosition.Start, false); //await SPpanel.ScrollToAsync(double.MaxValue, 0, true); //await SPpanel.ScrollToAsync(double.MaxValue, 0, false); } catch (Exception error) { await MyLogger.Alert(error.ToString()); } this.IsEnabled = true; }
private async void CloudFileLabel_Clicked(object sender, EventArgs e) { if (lastClick == DateTime.MinValue || (DateTime.Now - lastClick).TotalMilliseconds > 500) { lastClick = DateTime.Now; OnFileClicked(this); } else { this.IsEnabled = false; await MyLogger.Alert($"Id: {File.Id}"); MyLogger.Log(await(new RestRequests.FileGetter(File.Id)).GetFileAsync()); this.IsEnabled = true; } }
private void Networker_MessageAppended(string msg) { if (messages == "") { BTNmessageEnabled = true; BTNmessageClicked = new Xamarin.Forms.Command(async() => { BTNmessageEnabled = false; await MyLogger.Alert(String.Join("\r\n", networker.messages)); BTNmessageEnabled = true; }); } messages += msg + "\r\n"; UpdateStatus(2, msg); OnPropertyChanged("BTNmessageEnabled"); }
public FileBrowsePage() : base("File Browse") { this.Appearing += (initializeThis = new EventHandler(delegate { this.Appearing -= initializeThis; MyLogger.AddTestMethod("Create file", new Func <Task>(async() => { var fileCreator = new RestRequests.FileCreator(fileSelected.Id, "Hi", false); fileCreator.MessageAppended += (log) => { MyLogger.Log(log); }; await fileCreator.Start(); await MyLogger.Alert(fileCreator.Result); })); InitializeControls(); RegisterEvents(); })); }
public NetworkingItemBarViewModel(CloudFile.Networker _networker) { networker = _networker; LBname = networker.ToString(); RegisterNetworker(); BTNcontrolClicked = new Xamarin.Forms.Command(async() => { BTNcontrolEnabled = false; switch (networker.Status) { case CloudFile.Networker.NetworkStatus.Networking: { await networker.PauseAsync(); } break; case CloudFile.Networker.NetworkStatus.ErrorNeedRestart: { await networker.ResetAsync(); await networker.StartAsync(); } break; case CloudFile.Networker.NetworkStatus.NotStarted: { await networker.StartAsync(); } break; case CloudFile.Networker.NetworkStatus.Paused: { await networker.StartAsync(); } break; case CloudFile.Networker.NetworkStatus.Completed: { await MyLogger.Alert("The task is already completed, no action to take"); } break; default: throw new Exception($"networker.Status: {networker.Status}"); } }); }
private async Task UploadFile(bool isFolder) { if (fileSelected == null) { await MyLogger.Alert("Please select a cloud folder first"); } else if (!fileSelected.IsFolder) { await MyLogger.Alert("Please select a \"Cloud Folder\" instead of a \"Cloud File\""); } else { switch (Device.RuntimePlatform) { case Device.Windows: if (isFolder) { var picker = new Windows.Storage.Pickers.FolderPicker() { ViewMode = Windows.Storage.Pickers.PickerViewMode.List, SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary }; picker.FileTypeFilter.Clear(); picker.FileTypeFilter.Add("*"); var folder = await picker.PickSingleFolderAsync(); if (folder != null) { var containingCloudFolder = fileSelected; MyLogger.Log($"Folder uploading...\r\nName: {folder.Name}\r\nIn: {containingCloudFolder.FullName}\r\nLocal: {folder.Path}"); var uploadedFolder = await containingCloudFolder.UploadFolderOnWindowsAsync(folder); if (uploadedFolder == null) { MyLogger.Log($"Folder upload failed!\r\nName: {folder.Name}\r\nIn: {containingCloudFolder.FullName}\r\nLocal: {folder.Path}"); } else { MyLogger.Log($"Folder upload succeeded!\r\nName: {uploadedFolder.Name}\r\nIn: {containingCloudFolder.FullName}\r\nID: {uploadedFolder.Id}\r\nLocal: {folder.Path}"); } } MyLogger.Log("All done!"); } else { var picker = new Windows.Storage.Pickers.FileOpenPicker() { ViewMode = Windows.Storage.Pickers.PickerViewMode.List, SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary }; picker.FileTypeFilter.Clear(); picker.FileTypeFilter.Add("*"); var fileList = await picker.PickMultipleFilesAsync(); if (fileList != null) { await Task.WhenAll(fileList.Select(async(file) => { var containingCloudFolder = fileSelected; MyLogger.Log($"File uploading...\r\nName: {file.Name}\r\nIn: {containingCloudFolder.FullName}\r\nLocal: {file.Path}"); var uploadedFile = await containingCloudFolder.UploadFileAsync(file); if (uploadedFile == null) { MyLogger.Log($"File upload canceled!\r\nName: {file.Name}\r\nIn: {containingCloudFolder.FullName}\r\nLocal: {file.Path}"); } else { MyLogger.Log($"File upload succeeded!\r\nName: {uploadedFile.Name}\r\nIn: {containingCloudFolder.FullName}\r\nID: {uploadedFile.Id}\r\nLocal: {file.Path}"); } })); } MyLogger.Log("All done!"); } break; default: await MyLogger.Alert($"File picker currently not supported on {Device.RuntimePlatform} devices."); break; } } }
private async Task VerifyFile() { if (fileSelected == null) { await MyLogger.Alert("Cloud File or Folder must be Selected First"); return; } switch (Device.RuntimePlatform) { case Device.Windows: if (fileSelected.IsFolder) { var picker = new Windows.Storage.Pickers.FolderPicker() { ViewMode = Windows.Storage.Pickers.PickerViewMode.List, SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary }; picker.FileTypeFilter.Clear(); picker.FileTypeFilter.Add("*"); var folder = await picker.PickSingleFolderAsync(); if (folder != null) { var folderToVerify = fileSelected; MyLogger.Log($"Folder Verifying...\r\nCloud: {folderToVerify.FullName}\r\nLocal: {folder.Path}"); var verifier = new CloudFile.Verifiers.FolderVerifier(folderToVerify, folder); await verifier.StartUntilCompletedAsync(); var msg = $"Folder Verify succeeded!\r\nCloud: {folderToVerify.FullName}\r\nLocal: {folder.Path}"; MyLogger.Log(msg); await MyLogger.Alert(msg); } MyLogger.Log("All done!"); } else { var picker = new Windows.Storage.Pickers.FileOpenPicker() { ViewMode = Windows.Storage.Pickers.PickerViewMode.List, SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary }; picker.FileTypeFilter.Clear(); picker.FileTypeFilter.Add("*"); var file = await picker.PickSingleFileAsync(); if (file != null) { var cloudFile = fileSelected; MyLogger.Log($"File Verifying...\r\nCloud: {cloudFile.FullName}\r\nLocal: {file.Path}"); var verifier = new CloudFile.Verifiers.FileVerifier(cloudFile, file); await verifier.StartUntilCompletedAsync(); var msg = $"File Verify succeeded!\r\nCloud: {cloudFile.FullName}\r\nLocal: {file.Path}"; MyLogger.Log(msg); await MyLogger.Alert(msg); } MyLogger.Log("All done!"); } break; default: await MyLogger.Alert($"File picker currently not supported on {Device.RuntimePlatform} devices."); break; } }
private async Task DownloadFile() { if (fileSelected == null) { await MyLogger.Alert("Please select a cloud folder first"); } else { switch (Device.RuntimePlatform) { case Device.Windows: if (fileSelected.IsFolder) { var picker = new Windows.Storage.Pickers.FolderPicker() { ViewMode = Windows.Storage.Pickers.PickerViewMode.List, SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary }; picker.FileTypeFilter.Clear(); picker.FileTypeFilter.Add("*"); var folder = await picker.PickSingleFolderAsync(); if (folder != null) { var folderToDownload = fileSelected; MyLogger.Log($"Folder downloading...\r\nCloud: {folderToDownload.FullName}\r\nLocal: {folder.Path}"); var downloadedFolder = await fileSelected.DownloadFolderOnWindowsAsync(folder); if (downloadedFolder == null) { MyLogger.Log($"Folder download canceled!\r\nCloud: {folderToDownload.FullName}\r\nLocal: {folder.Path}"); } else { MyLogger.Log($"Folder download succeeded!\r\nCloud: {folderToDownload.FullName}\r\nDownloaded: {downloadedFolder.Path}"); } } MyLogger.Log("All done!"); } else { var picker = new Windows.Storage.Pickers.FolderPicker() { ViewMode = Windows.Storage.Pickers.PickerViewMode.List, SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary }; picker.FileTypeFilter.Clear(); picker.FileTypeFilter.Add("*"); var folder = await picker.PickSingleFolderAsync(); if (folder != null) { var fileToDownload = fileSelected; { try { var existedFile = await folder.GetFileAsync(fileToDownload.Name); MyLogger.Assert(existedFile != null); if (await MyLogger.Ask($"\"{fileToDownload.Name}\" already existed in \"{folder.Path}\", overwrite anyway?")) { await existedFile.DeleteAsync(); } else { goto indexSkip; } } catch (FileNotFoundException) { MyLogger.Log("File not found exception, YA!"); } } var localFile = await folder.CreateFileAsync(fileToDownload.Name); MyLogger.Log($"File downloading...\r\nCloud: {fileToDownload.FullName}\r\nLocal: {localFile.Path}"); await fileSelected.DownloadFileOnWindowsAsync(localFile); indexSkip :; } MyLogger.Log("All done!"); } break; default: await MyLogger.Alert($"File picker currently not supported on {Device.RuntimePlatform} devices."); break; } } }