コード例 #1
0
        private void AddClick(object sender, RoutedEventArgs e)
        {
            string resultPath = string.Empty;

            using (var dialog = new FolderBrowserDialog())
            {
                DialogResult result = dialog.ShowDialog();

                if (result == System.Windows.Forms.DialogResult.OK)
                {
                    resultPath = dialog.SelectedPath;
                }
                else
                {
                    return;
                }
            }

            if (ListOfDirectories.FirstOrDefault(dir => dir.Path == resultPath) != null)
            {
                return;
            }

            int count = Directory.CreateDirectory(resultPath).GetFiles().Length;

            ListOfDirectories.Add(new DirectoryObject(Rules.FirstOrDefault(rule => rule.AccessID == 0), resultPath, count));
        }
コード例 #2
0
        private void CopyClick(object sender, RoutedEventArgs e)
        {
            if (MainDataGrid.SelectedIndex < 0)
            {
                System.Windows.MessageBox.Show("Выберите исходную папку");
                return;
            }

            DirectoryObject currentDir = MainDataGrid.SelectedItem as DirectoryObject;

            if (string.IsNullOrEmpty(CopyToIdTB.Text))
            {
                System.Windows.MessageBox.Show("Введите идентификатор целевой папки");
                return;
            }

            DirectoryObject toDir = ListOfDirectories.FirstOrDefault(dir => dir.Id == int.Parse(CopyToIdTB.Text));

            if (toDir == null || toDir.Id == currentDir.Id)
            {
                System.Windows.MessageBox.Show("Введите корректное значение идентификатора папки");
                return;
            }

            if (toDir.AccessRule.AccessID < currentDir.AccessRule.AccessID)
            {
                System.Windows.MessageBox.Show("Исходная папка имеет более высокий уровень секретности. Копирование невозможно");
                return;
            }

            OpenFileDialog openFileDialog = new OpenFileDialog();

            if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                string dirName = System.IO.Path.GetDirectoryName(openFileDialog.FileName);

                if (!dirName.Contains(currentDir.Path))
                {
                    System.Windows.MessageBox.Show("Вы выбрали файл, который находится за пределами исходной папки. Выберете другой файл");
                    return;
                }

                try
                {
                    string name = System.IO.Path.GetFileName(openFileDialog.FileName);

                    string newPath = System.IO.Path.Combine(toDir.Path, name);

                    File.WriteAllBytes(newPath, File.ReadAllBytes(openFileDialog.FileName));
                }
                catch (Exception)
                {
                    System.Windows.MessageBox.Show("Ошибка");
                    return;
                }

                System.Windows.MessageBox.Show("Файл был успешно скопирован");
            }
        }
コード例 #3
0
        private void DeleteClick(object sender, RoutedEventArgs e)
        {
            if (MainDataGrid.SelectedIndex < 0)
            {
                System.Windows.MessageBox.Show("Выберите папку, которую хотите удалить");
                return;
            }

            DirectoryObject currentDir = MainDataGrid.SelectedItem as DirectoryObject;

            currentDir.Dispose();

            ListOfDirectories.Remove(currentDir);
        }
コード例 #4
0
        public MainWindow()
        {
            InitializeComponent();

            Closed += MainWindow_Closed;

            string usersString = string.Empty;

            if (File.Exists(DirectoryHelper.CurrentUsersPath))
            {
                usersString = File.ReadAllText(DirectoryHelper.CurrentUsersPath);
            }

            Rules = new ObservableCollection <LabAccessRule>
            {
                new LabAccessRule(3, "Top secret"),
                new LabAccessRule(2, "Secret"),
                new LabAccessRule(1, "Non secret"),
                new LabAccessRule(0, "Default"),
            };

            List <DirectoryObject> dirs = JsonConvert.DeserializeObject <List <DirectoryObject> >(usersString);

            if (dirs != null && dirs.Any())
            {
                foreach (var item in dirs)
                {
                    item.AccessRule = Rules.FirstOrDefault(rule => rule.AccessID == item.AccessRule.AccessID);
                }

                ListOfDirectories = new ObservableCollection <DirectoryObject>(dirs);
            }
            else
            {
                ListOfDirectories = new ObservableCollection <DirectoryObject>();
            }

            Ids = new ObservableCollection <int>(ListOfDirectories.Select(item => item.Id));

            ToCB.ItemsSource         = Ids;
            FromCB.ItemsSource       = Ids;
            MainDataGrid.ItemsSource = ListOfDirectories;
            CBItem.ItemsSource       = Rules;
        }
コード例 #5
0
        private void MainWindow_Closed(object sender, EventArgs e)
        {
            var users = JsonConvert.SerializeObject(ListOfDirectories.ToList());

            File.WriteAllText(DirectoryHelper.CurrentUsersPath, users);
        }