Created
March 19, 2018 10:25
-
-
Save orlodax/6bbf5b7382766895448cddbc32f98b6f to your computer and use it in GitHub Desktop.
solo la logica
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| using System; | |
| using System.Collections.Generic; | |
| using System.IO; | |
| using System.Timers; | |
| using System.Windows; | |
| using System.Xml; | |
| using System.Xml.Linq; | |
| namespace MiniBolg | |
| { | |
| /// <summary> | |
| /// Logica di interazione per MainWindow.xaml | |
| /// </summary> | |
| public partial class MainWindow : Window | |
| { | |
| List<string> folders = new List<string>(); | |
| string selectedTiming; | |
| public XmlDocument config = new XmlDocument(); | |
| //appdata folder location | |
| static string folderPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData); | |
| string appFolder = System.IO.Path.Combine(folderPath, "Mini_Bolg"); | |
| public MainWindow() | |
| { | |
| InitializeComponent(); | |
| //creates it if it does not exist | |
| if (!Directory.Exists(appFolder)) | |
| Directory.CreateDirectory(appFolder); | |
| //loads config data (if file exists) | |
| if (File.Exists(appFolder + @"\config.xml")) | |
| { | |
| config.Load(appFolder + @"\config.xml"); | |
| XmlNode root; | |
| XmlNode foldersN; | |
| XmlNode timeN; | |
| //level 0 - root | |
| if (config.HasChildNodes) | |
| { | |
| root = config.ChildNodes[1]; | |
| //level 1 - folders, time | |
| if (root.HasChildNodes) | |
| { | |
| foldersN = root.ChildNodes[0]; | |
| timeN = root.ChildNodes[1]; | |
| //level 2 (folders) - paths | |
| if (foldersN.HasChildNodes) | |
| { | |
| foreach (XmlNode node in foldersN.ChildNodes) | |
| { | |
| folders.Add(node.InnerText); | |
| } | |
| } | |
| //level (time) - hours, minutes | |
| if (timeN.HasChildNodes) | |
| { | |
| XmlNode hourN = timeN.ChildNodes[0]; | |
| XmlNode minutesN = timeN.ChildNodes[1]; | |
| hours.Text = hourN.InnerText; | |
| minutes.Text = minutesN.InnerText; | |
| } | |
| } | |
| } | |
| } | |
| //----------TIMER SECTION -> 60.000 ms means one minute | |
| Timer aTimer; | |
| // Create a timer and interval | |
| aTimer = new System.Timers.Timer(); | |
| aTimer.Interval = 60000; | |
| // Hook up the Elapsed event for the timer. | |
| aTimer.Elapsed += OnTimedEvent; | |
| // Have the timer fire repeated events (true is the default) | |
| aTimer.AutoReset = true; | |
| // Start the timer | |
| aTimer.Enabled = true; | |
| //----------END of timer section | |
| Folders.ItemsSource = folders; | |
| Folders.Items.Refresh(); | |
| } | |
| //WHAT TO DO WHEN TIMER TICKS---------------------------------------------- | |
| private void OnTimedEvent(object sender, System.Timers.ElapsedEventArgs e) | |
| { | |
| if (DateTime.Now.ToShortTimeString().Equals(selectedTiming)) | |
| Bolg(); | |
| } | |
| //------------------------------------------------------------------------ | |
| //BUTTON TO ADD A FOLDER TO BE EMPTIED TO THE LIST------------------------- | |
| private void addFolder_Click(object sender, RoutedEventArgs e) | |
| { | |
| //Pop up the dialog to choose folders | |
| using (var dialog = new System.Windows.Forms.FolderBrowserDialog()) | |
| { | |
| System.Windows.Forms.DialogResult result = dialog.ShowDialog(); | |
| folders.Add(dialog.SelectedPath); | |
| } | |
| //Folders with capital F is the listview, not the List<string> | |
| Folders.ItemsSource = folders; | |
| Folders.Items.Refresh(); | |
| } | |
| //------------------------------------------------------------------------- | |
| //BUTTON TO REMOVE FOLDER-------------------------------------------------- | |
| private void remFolder_Click(object sender, RoutedEventArgs e) | |
| { | |
| if (Folders.SelectedItem != null) { | |
| foreach (var dir in Folders.SelectedItems) | |
| { | |
| folders.Remove(dir.ToString()); | |
| } | |
| Folders.Items.Refresh(); | |
| } | |
| } | |
| //------------------------------------------------------------------------- | |
| //BUTTON TO CLEAN ON DEMAND------------------------------------------------ | |
| private void cleanNow_Click(object sender, RoutedEventArgs e) | |
| { | |
| Bolg(); | |
| } | |
| //------------------------------------------------------------------------- | |
| //BUTTON TO SAVE CONFIG AND MINIMIZE APP TO TRAY--------------------------- | |
| private void toTray_Click(object sender, RoutedEventArgs e) | |
| { | |
| selectedTiming = String.Format("{0}:{1}", hours.Text, minutes.Text); | |
| //creates config file with time but without list of folders | |
| XDocument config = new XDocument( | |
| new XElement("root", | |
| new XElement("folders", "" | |
| ), | |
| new XElement("time", | |
| new XElement("hour", hours.Text), | |
| new XElement("minute", minutes.Text) | |
| ) | |
| ) | |
| ); | |
| config.Save(appFolder + @"\config.xml"); | |
| //editing file just created adding all folders in list | |
| XmlDocument editConfig = new XmlDocument(); | |
| editConfig.Load(appFolder + @"\config.xml"); | |
| XmlNode root; | |
| XmlNode foldersN; | |
| //level 0 - root | |
| if (editConfig.HasChildNodes) | |
| { | |
| root = editConfig.ChildNodes[1]; | |
| //level 1 - folders, time | |
| if (root.HasChildNodes) | |
| { | |
| foldersN = root.ChildNodes[0]; | |
| //level 2 (folders) - paths | |
| for (int i = 0; i < folders.Count; i++) | |
| { | |
| XmlNode nodo = editConfig.CreateNode(XmlNodeType.Element, "folder", ""); | |
| nodo.InnerText = folders[i]; | |
| foldersN.AppendChild(nodo); | |
| } | |
| } | |
| editConfig.Save(appFolder + @"\config.xml"); | |
| } | |
| this.Close(); | |
| } | |
| //-------------------------------------------------------------------------- | |
| //THE BOLG DESTROYS--------------------------------------------------------- | |
| private void Bolg() | |
| { | |
| foreach (string dir in Folders.Items) | |
| { | |
| foreach (string f in Directory.EnumerateFiles(dir, "*.*")) | |
| { | |
| File.Delete(f); | |
| } | |
| } | |
| } | |
| //-------------------------------------------------------------------------- | |
| } | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment