Пример #1
0
            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;
            }
Пример #2
0
            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;
                }
            }
Пример #3
0
 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");
 }
Пример #4
0
 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();
     }));
 }
Пример #5
0
        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}");
                }
            });
        }
Пример #6
0
        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;
                }
            }
        }
Пример #7
0
        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;
            }
        }
Пример #8
0
        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;
                }
            }
        }