Skip to content

Instantly share code, notes, and snippets.

@orlodax
Created March 19, 2018 10:25
Show Gist options
  • Select an option

  • Save orlodax/6bbf5b7382766895448cddbc32f98b6f to your computer and use it in GitHub Desktop.

Select an option

Save orlodax/6bbf5b7382766895448cddbc32f98b6f to your computer and use it in GitHub Desktop.
solo la logica
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