rendered paste body/* 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<Entry> entries;
public IList<Entry> Entries
{
get
{
return entries.AsReadOnly();
}
}
private Diary(XmlNode diaryNode)
{
entries = new List<Entry>();
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);
}
}
}