AirScout/AirScout/CleanupDlg.cs

129 wiersze
4.2 KiB
C#

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading.Tasks;
using System.Windows.Forms;
using ScoutBase.Stations;
using ScoutBase.Elevation;
using ScoutBase.Propagation;
using AirScout.Aircrafts;
namespace AirScout
{
public partial class CleanupDlg : Form
{
MapDlg ParentDlg;
bool Success = false;
bool ButtonPressed = false;
public CleanupDlg(MapDlg parentDlg)
{
ParentDlg = parentDlg;
InitializeComponent();
cb_LogFiles.Text = cb_LogFiles.Text + " [" + ParentDlg.LogDirectory + "]";
cb_ElevationFiles.Text = cb_ElevationFiles.Text + " [" + ParentDlg.ElevationDirectory + "]";
cb_TmpFiles.Text = cb_TmpFiles.Text + " [" + ParentDlg.TmpDirectory + "]";
this.DialogResult = DialogResult.Abort;
}
private void CleanupDlg_FormClosing(object sender, FormClosingEventArgs e)
{
// chek if user pressed a button or closed the form other way
if (!ButtonPressed)
DialogResult = DialogResult.Abort;
}
private void Cleanup()
{
// do cleanup here
Success = true;
if (cb_UserSettings.Checked)
{
// reset all properties
Properties.Settings.Default.Reset();
AirScout.PlaneFeeds.Properties.Settings.Default.Reset();
AirScout.Aircrafts.Properties.Settings.Default.Reset();
ScoutBase.Elevation.Properties.Settings.Default.Reset();
ScoutBase.Stations.Properties.Settings.Default.Reset();
ScoutBase.CAT.Properties.Settings.Default.Reset();
AirScout.CAT.Properties.Settings.Default.Reset();
}
if (cb_AirScout_Database.Checked)
DeleteDirectory(Properties.Settings.Default.AircraftDatabase_Directory);
if (cb_ScoutBase_Database.Checked)
{
DeleteDirectory(Properties.Settings.Default.StationsDatabase_Directory);
DeleteDirectory(Properties.Settings.Default.ElevationDatabase_Directory);
DeleteDirectory(Properties.Settings.Default.PropagationDatabase_Directory);
}
if (cb_LogFiles.Checked)
DeleteDirectory(ParentDlg.LogDirectory);
if (cb_ElevationFiles.Checked)
DeleteDirectory(ParentDlg.ElevationDirectory);
if (cb_TmpFiles.Checked)
DeleteDirectory(ParentDlg.TmpDirectory);
if (cb_PluginFiles.Checked)
DeleteDirectory(ParentDlg.PluginDirectory);
}
private void DeleteDirectory(string target_dir)
{
// deletes directory and all its subdirectory recursively
try
{
if (!Directory.Exists(target_dir))
return;
string[] files = Directory.GetFiles(target_dir);
string[] dirs = Directory.GetDirectories(target_dir);
foreach (string file in files)
{
File.SetAttributes(file, FileAttributes.Normal);
File.Delete(file);
}
foreach (string dir in dirs)
{
DeleteDirectory(dir);
}
Directory.Delete(target_dir, true);
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, target_dir);
Success = false;
}
}
private void btn_OK_Click(object sender, EventArgs e)
{
Cleanup();
if (Success)
{
ButtonPressed = true;
this.DialogResult = DialogResult.OK;
this.Close();
}
else
{
btn_OK.Text = "Retry";
}
}
private void btn_Cancel_Click(object sender, EventArgs e)
{
ButtonPressed = true;
this.DialogResult = DialogResult.Cancel;
this.Close();
}
}
}