Exemple #1
0
        private void bt_Save_Click(object sender, RoutedEventArgs e)
        {
            try
            {
                XML_Drives daten = new XML_Drives();

                //Fügt die Seriennummern der angehakte Laufwerke dem XML Dokument hinzu
                foreach (object drive in Stack_SystemDrives.Children)
                {
                    if ((drive is CheckBox == true) && ((drive as CheckBox).IsChecked == true))
                    {
                        string serialnumber = Convert.ToString((drive as CheckBox).Content).Split('\t')[1];

                        daten.systemDrivesSerialnumbers.Add(serialnumber);
                    }
                }

                //Fügt die Seriennummern der Sicherungslaufwerke der XML Datei hinzu

                foreach (object drive in lb_backupDrives.Items)
                {
                    if ((drive is TextBlock == true))
                    {
                        try
                        {
                            string serialnumber = Convert.ToString((drive as TextBlock).Text).Split('\t')[1];

                            daten.backupDrives.Add(serialnumber);
                        }
                        catch (System.IndexOutOfRangeException)
                        {
                            daten.backupDrives.Add((drive as TextBlock).Text);
                        }
                    }
                }

                //Speichern der XML Datei
                SaveXMLData.SaveXML(daten, xmlUserdataDrives);

                //Erfolgsmeldung
                MessageBox.Show("Daten gespeichert");

                //Daten neu aus XML laden
                LoadPage();
            }
            catch (System.IO.IOException)
            {
                MessageBox.Show("Prozess kann nicht auf die userdata_drives.xml zugreifen. Bitte noch einmal auf 'Einstellungen speichern' klicken!", "Fehler beim Speichern der Laufwerksdaten", MessageBoxButton.OK, MessageBoxImage.Warning);
            }
            catch (Exception)
            {
                MessageBox.Show("Unbekannter Fehler", "Unbekannter Fehler", MessageBoxButton.OK, MessageBoxImage.Error);
            }
        }
Exemple #2
0
        private void LoadBackups()
        {
            if (File.Exists(xmlUserdataDrives))
            {
                XmlSerializer xs   = new XmlSerializer(typeof(XML_Drives));
                FileStream    read = new FileStream(xmlUserdataDrives, FileMode.Open, FileAccess.Read, FileShare.Read);

                XML_Drives daten = (XML_Drives)xs.Deserialize(read);

                //Einlesen der BackupDrives

                foreach (string serialnumber in daten.backupDrives)
                {
                    try
                    {
                        DriveInformation drive = new DriveInformation();

                        drive = drive.GetDriveInformation(serialnumber);

                        //MessageBox.Show(drive.ToString());
                        DirectoryInfo backupInfo = new DirectoryInfo(drive.DeviceID + backupFolder);

                        foreach (DirectoryInfo directoryInfo in backupInfo.GetDirectories())
                        {
                            DirectoryInfo windowsImageBackup = new DirectoryInfo(directoryInfo.FullName + windowsImageBackupFolder);


                            if (windowsImageBackup.Exists)
                            {
                                CheckBox backup = new CheckBox();
                                backup.Content = directoryInfo.Name;
                                backup.Margin  = new Thickness(0, 0, 5, 5);
                                backup.ToolTip = directoryInfo.FullName;

                                wp_Backups.Children.Add(backup);
                            }
                        }
                    }
                    catch (System.IO.DriveNotFoundException)
                    {
                        TextBlock driveNotFound = new TextBlock();
                        driveNotFound.Text       = $"Achtung: Das Laufwerk mit der Seriennummer {serialnumber} konnte nicht gefunden werden.\nBackups von diesem Laufwerk können nicht angezeigt werden.\n";
                        driveNotFound.Background = Brushes.Red;

                        sp_DrivesNotFound.Children.Add(driveNotFound);
                    }
                    catch (System.IO.DirectoryNotFoundException)
                    {
                    }
                }
            }
        }
Exemple #3
0
        /// <summary>
        /// Läd die Seite neu. und lädt die aktuelle User XML.
        /// </summary>
        private void LoadPage()
        {
            //Löschen der aktuellen Daten

            Stack_SystemDrives.Children.Clear();
            lb_availableBackupDrives.Items.Clear();
            lb_backupDrives.Items.Clear();

            //Hinzufügen Systemdrives
            foreach (DriveInformation drive in DriveInformation.GetAllDrives())
            {
                CheckBox checkDrive = new CheckBox();
                checkDrive.Content    = drive;
                checkDrive.Checked   += cb_updateAvailableBackupDrive_Checked;
                checkDrive.Unchecked += cb_updateAvailableBackupDrive_Unchecked;

                Stack_SystemDrives.Children.Add(checkDrive);
            }

            //Einlesen der XML Daten
            if (File.Exists(xmlUserdataDrives))
            {
                XmlSerializer xs   = new XmlSerializer(typeof(XML_Drives));
                FileStream    read = new FileStream(xmlUserdataDrives, FileMode.Open, FileAccess.Read, FileShare.Read);

                XML_Drives daten = (XML_Drives)xs.Deserialize(read);

                //Einlesen der BackupDrives

                foreach (string serialnumber in daten.backupDrives)
                {
                    DriveInformation drive = new DriveInformation();

                    //Neues Texblock Objekt für Listbox
                    TextBlock backupDrive = new TextBlock();

                    try
                    {
                        drive = drive.GetDriveInformation(serialnumber);

                        backupDrive.Text       = $"{drive}";
                        backupDrive.Background = Brushes.Green;
                        backupDrive.ToolTip    = "Sicherungsfestplatte ist angeschlossen :)";

                        foreach (object disk in Stack_SystemDrives.Children)
                        {
                            if (disk is CheckBox)
                            {
                                if ((disk as CheckBox).Content.ToString().Split('\t')[1] == drive.VolumeSerialNumber)
                                {
                                    Stack_SystemDrives.Children.Remove((disk as CheckBox));
                                    break;
                                }
                            }
                        }
                    }
                    catch (DriveNotFoundException)
                    {
                        backupDrive.Text       = serialnumber;
                        backupDrive.Background = Brushes.Red;
                        backupDrive.ToolTip    = "Sicherungsfestplatte ist nicht angeschlossen";
                    }

                    lb_backupDrives.Items.Add(backupDrive);
                }

                //Überprüfung ob eine Systemdrive schon als BackupDrive registriert

                //Einlesen der Systemdrives checks
                foreach (string serialnumber in daten.systemDrivesSerialnumbers)
                {
                    foreach (object systemdrive in Stack_SystemDrives.Children)
                    {
                        if ((systemdrive is CheckBox) == true && (systemdrive as CheckBox).Content.ToString().Contains(serialnumber))
                        {
                            (systemdrive as CheckBox).IsChecked = true;
                        }
                    }
                }

                //Falls die Systemfestplatte nicht zur sicherung angehakt ist und die Festplatte noch nicht als Sicherungsfestplatte vorhanden ist wird diese den Verfügbaren zugeordnet.
                foreach (object systemdrive  in Stack_SystemDrives.Children)
                {
                    //Überprüfe Seriennummer von BackupDrive und Systemdrive

                    //Nur wenn das Element in dem Stack der Systemdrives eine Checkbox ist
                    if (systemdrive is CheckBox)
                    {
                        //Nur wenn das Laufwerk nicht zur Sicherung angehakt ist.
                        if ((systemdrive as CheckBox).IsChecked == false)
                        {
                            //Überprüfung ob Laufwerk bereits bei den BackupDrives vorhanden ist
                            TextBlock drive = new TextBlock();
                            drive.Text = (systemdrive as CheckBox).Content.ToString();

                            //Überprüfung ob Laufwerk bereits als BackupDrive registriert ist

                            bool isAlreadyBackupDrive = false;
                            foreach (TextBlock backupDrive in lb_backupDrives.Items)
                            {
                                if (backupDrive.Text.ToString() == (systemdrive as CheckBox).Content.ToString())
                                {
                                    isAlreadyBackupDrive = true;
                                }
                            }

                            if (isAlreadyBackupDrive == false)
                            {
                                //Hinzufügen des Laufwerks zu den verfügbaren BackupDrives.

                                lb_availableBackupDrives.Items.Add(drive);
                            }
                        }
                    }
                }
            }
        }