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 Task SendHttpRequest() { string url = ETurl.Text; { bool isFirst = true; //await MyLogger.Alert(url); foreach (var field in AKVfield.BLPmain.Treap.ToList()) { //await MyLogger.Alert($"Field: {field.Key} = {field.Value}"); url += (isFirst ? "?" : "&"); isFirst = false; url += System.Net.WebUtility.UrlEncode(field.Key) + "=" + System.Net.WebUtility.UrlEncode(field.Value); } } var blankPoint = url.IndexOf(' '); MyLogger.Assert(blankPoint != -1); HttpWebRequest request = WebRequest.CreateHttp(url.Substring(blankPoint + 1)); foreach (var header in AKVheader.BLPmain.Treap.ToList()) { //await MyLogger.Alert($"Header: {header.Key} = {header.Value}"); request.Headers[header.Key] = header.Value; } request.Method = url.Remove(blankPoint); if (Array.IndexOf(request.Headers.AllKeys, "Content-Length") != -1) { using (var stream = await request.GetRequestStreamAsync()) { var bytes = Encoding.UTF8.GetBytes(BodyTextToSend()); //MyLogger.Log(Encoding.UTF8.GetString(bytes).Replace("\n", "\\n").Replace("\r", "\\r").Replace("\t", "\\t")); //換行為甚麼是\r啦 >_< await stream.WriteAsync(bytes, 0, bytes.Length); } } string result; try { using (var response = await RestRequests.GetHttpResponsePublicAsync(request)) { if (response == null) { result = "(Null Response)"; } else { result = await RestRequests.LogHttpWebResponsePublic(response, true); } } } catch (Exception error) { result = $"{error}"; } EDresponse.Text = result; }
public CloudFolderContentPanel(CloudFile _cloudFolder, int folderDepth) { MyLogger.Assert(_cloudFolder.IsFolder); cloudFolder = _cloudFolder; FolderDepth = folderDepth; FoldersGetter = cloudFolder.FoldersGetter(); FilesGetter = cloudFolder.FilesGetter(); InitializeViews(); RegisterEvents(); }
public List <DataType> ToList() { var list = new List <DataType>(); lock (root) { this.root?.AddToListRecursively(ref list); } MyLogger.Assert(list.Count >= 1); list.RemoveAt(list.Count - 1); return(list); }
private static double AnimationOffsetRatio(double timeRatio) { MyLogger.Assert(timeRatio >= 0); return(Math.Min(1.0, timeRatio)); }
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; } } }