/* FrostDiary License Agreement * * Please view the link for the license. * * http://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx * */ using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.IO; using System.Text; using System.Threading; using System.Windows.Forms; using System.Xml; using System.Net; namespace FrostDiary { public partial class Form1 : Form { public Form1() { InitializeComponent(); entryToolStripMenuItem.Enabled = false; } private void entryToolStripMenuItem_Click(object sender, EventArgs e) { ssProgressBar.Visible = true; ssProgressBar.Minimum = 1; ssProgressBar.Maximum = 2; ssProgressBar.Value = 1; ssProgressBar.Step = 1; txtEntryDate.Text = DateTime.Now.ToLongDateString(); txtEntryName.Text = string.Empty; txtEntryNumber.Text = txtEntryTime.Text.Length != 0 ? (Convert.ToInt32(txtEntryNumber.Text) + 1).ToString() : "0"; txtEntryTime.Text = DateTime.Now.ToLongTimeString(); ssProgressBar.PerformStep(); Thread.Sleep(1000); ssProgressBar.Visible = false; ssStatusLabel.Text = ""; } private void openDiaryToolStripMenuItem_Click(object sender, EventArgs e) { FileToOpen(); entryToolStripMenuItem.Enabled = true; } public void FileToOpen() { OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = "C:\\Program Files\\FrostDiary\\User\\"; ofd.Filter = "FrostDiary DiaryEntries (.fdd)|*.fdd"; ofd.FilterIndex = 2; ofd.RestoreDirectory = true; ssProgressBar.Visible = true; ssProgressBar.Minimum = 1; ssProgressBar.Maximum = 10; ssProgressBar.Value = 1; ssProgressBar.Step = 1; if (ofd.ShowDialog() == DialogResult.OK) { XmlTextReader xtr = new XmlTextReader(ofd.FileName); try { while (xtr.Read()) { ssProgressBar.PerformStep(); if (xtr.NodeType == XmlNodeType.Element) { if (xtr.LocalName.Equals("EntryNumber")) { txtEntryNumber.Text = xtr.ReadString(); } if (xtr.LocalName.Equals("Title")) { txtEntryName.Text = xtr.ReadString(); } if (xtr.LocalName.Equals("Date")) { txtEntryDate.Text = xtr.ReadString(); } if (xtr.LocalName.Equals("Time")) { txtEntryTime.Text = xtr.ReadString(); } if (xtr.LocalName.Equals("UserEntry")) { rtbEntry.Text = xtr.ReadString(); } } Diary.FromText(ofd.FileName); treeView1.Nodes.Clear(); treeView1.Nodes.Add("FrostDiary"); foreach (Entry diaryEntry in Diary.entries) { treeView1.Nodes.Add(diaryEntry.Date); } } Thread.Sleep(1000); ssProgressBar.Visible = false; ssStatusLabel.Text = "File successfully opened."; } catch (XmlException ex) { MessageBox.Show(ex.Message); } finally { xtr.Close(); } //try //{ //} //catch //{ //} //finally //{ //} } } private void diaryToolStripMenuItem_Click(object sender, EventArgs e) { DialogResult results = MessageBox.Show("Are you sure you want a new diary?\nThis will completely erase your" + " old diary?", "New Diary", MessageBoxButtons.OKCancel, MessageBoxIcon.Stop); switch (results) { case DialogResult.OK: txtEntryDate.Text = DateTime.Now.ToLongDateString(); txtEntryName.Text = ""; txtEntryNumber.Text = "1"; txtEntryTime.Text = DateTime.Now.ToLongTimeString(); rtbEntry.Text = ""; //tvEntries.Nodes.Clear(); break; case DialogResult.Cancel: break; default: break; } } } public class Entry { private readonly string entryNumber; private readonly string title; private readonly string date; private readonly string time; private readonly string userEntry; public string EntryNumber { get { return entryNumber; } } public string Title { get { return title; } } public string Date { get { return date; } } public string Time { get { return time; } } public string UserEntry { get { return userEntry; } } public Entry(XmlNode entryNode) { XmlNode selected; selected = entryNode.SelectSingleNode("EntryNumber"); if (selected != null) entryNumber = selected.InnerText; // Change to InnerXml to read the whole tag. selected = entryNode.SelectSingleNode("Title"); if (selected != null) title = selected.InnerText; // Change to InnerXml to read the whole tag. selected = entryNode.SelectSingleNode("Date"); if (selected != null) date = selected.InnerText; // Change to InnerXml to read the whole tag. selected = entryNode.SelectSingleNode("Time"); if (selected != null) time = selected.InnerText; // Change to InnerXml to read the whole tag. selected = entryNode.SelectSingleNode("UserEntry"); if (selected != null) userEntry = selected.InnerText; // Change to InnerXml to read the whole tag. } } public class Diary { public static List entries; public IList Entries { get { return entries.AsReadOnly(); } } private Diary(XmlNode diaryNode) { entries = new List(); XmlNodeList entryNodes = diaryNode.SelectNodes("Entry"); foreach (XmlNode entryNode in entryNodes) { entries.Add(new Entry(entryNode)); } } public static Diary FromUri(string uri) { XmlDocument xmlDoc; WebClient webClient = new WebClient(); using (Stream xmlStream = webClient.OpenRead(uri)) { TextReader textReader = new StreamReader(xmlStream); XmlTextReader reader = new XmlTextReader(textReader); xmlDoc = new XmlDocument(); xmlDoc.Load(reader); } return new Diary(xmlDoc); } public static Diary FromText(string xmlText) { XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(xmlText); return new Diary(xmlDoc); } } }