示例#1
0
        public async void ExecuteArchiveCommand(object parameter)
        {
            try
            {
                using (var folderBrowserDialog = new WinForms.FolderBrowserDialog())
                {
                    if (folderBrowserDialog.ShowDialog() == WinForms.DialogResult.OK)
                    {
                        _archiveFolderPath = folderBrowserDialog.SelectedPath;
                    }
                }
                OnPropertyChanged("ArchiveFolderPath");

                WinForms.MessageBox.Show("Select where to save the file");

                IFolderReader folderReader = new FolderReader();

                string fileName = "";
                using (var fileDialog = new WinForms.SaveFileDialog())
                {
                    if (fileDialog.ShowDialog() == WinForms.DialogResult.OK)
                    {
                        fileName = string.Concat(fileDialog.FileName, ".dat");
                    }
                }

                Task <bool> t = Task <bool> .Run(() =>
                {
                    try
                    {
                        Folder folder = folderReader.GetFolders(_archiveFolderPath);

                        var fbs = new FolderBinarySerializer();

                        if (fbs.Serialize(folder, fileName))
                        {
                            WinForms.MessageBox.Show($"Folder : {_archiveFolderPath} was archivated successfully to file : {fileName}", "Archive info", WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Information);
                        }
                    }
                    catch (Exception ex)
                    {
                        throw ex;
                    }

                    return(true);
                });

                await Task.WhenAll(t);
            }
            catch (Exception ex)
            {
                WinForms.MessageBox.Show($"Error in {ex.TargetSite}. \nError message : {ex.Message}", "Error!", WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Error);
            }
        }
示例#2
0
        public async void ExecuteUnarchiveCommand(object parameter)
        {
            try
            {
                using (var fileDialog = new WinForms.OpenFileDialog())
                {
                    if (fileDialog.ShowDialog() == WinForms.DialogResult.OK)
                    {
                        _archiveFolderPath = fileDialog.FileName;
                    }
                }
                OnPropertyChanged("ArchiveFolderPath");

                WinForms.MessageBox.Show("Select where to unarchive the file");

                string folderName = "";
                using (var folderBrowserDialog = new WinForms.FolderBrowserDialog())
                {
                    if (folderBrowserDialog.ShowDialog() == WinForms.DialogResult.OK)
                    {
                        folderName = folderBrowserDialog.SelectedPath;
                    }
                }

                Task <bool> t = Task <bool> .Run(() =>
                {
                    var fbs = new FolderBinarySerializer();

                    Folder newFolder = (Folder)fbs.Deserialize(_archiveFolderPath);

                    var folderWriter = new FolderWriter();
                    if (folderWriter.WriteFolder(newFolder, folderName))
                    {
                        WinForms.MessageBox.Show($"Folder {newFolder.Name} was unarchivated from file {_archiveFolderPath}", "Unarchive info", WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Information);
                    }


                    return(true);
                });

                await Task.WhenAll(t);
            }
            catch (Exception ex)
            {
                WinForms.MessageBox.Show($"Error in {ex.TargetSite}. \nError message : {ex.Message}", "Error!", WinForms.MessageBoxButtons.OK, WinForms.MessageBoxIcon.Error);
            }
        }