Advertisement
Guest User

Reddit project 1m

a guest
Feb 11th, 2012
893
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.01 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9.  
  10. namespace First_Medium
  11. {
  12.     public partial class Form1 : Form
  13.     {
  14.         private DateTime currentDate;
  15.         private string notes;
  16.         private IList<CalendarEvent> calendarEvents;
  17.        
  18.  
  19.         public Form1()
  20.         {
  21.             InitializeComponent();
  22.             notes = string.Empty;
  23.             monthCalendar1.MaxSelectionCount = 1;
  24.             calendarEvents = new List<CalendarEvent>();
  25.             Load();
  26.             GetTodayMessage();
  27.  
  28.             todayTextBox.Text = GetTodayMessage();
  29.         }
  30.  
  31.         protected override void OnClosing(CancelEventArgs e)
  32.         {
  33.             Save();
  34.             base.OnClosing(e);
  35.         }
  36.  
  37.         private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
  38.         {
  39.             notes = string.Empty;
  40.             DateTime selectedDay = monthCalendar1.SelectionRange.Start;
  41.             PrintToOutPut(GetAllEventsForDay(selectedDay), notes);
  42.             currentDate = selectedDay;
  43.         }
  44.  
  45.         private string GetAllEventsForDay(DateTime day)
  46.         {
  47.             IEnumerable<CalendarEvent> daysEvents = FindEventsOnDay(day);
  48.             return FormatEventsToString(daysEvents);
  49.         }
  50.  
  51.         private static string FormatEventsToString(IEnumerable<CalendarEvent> daysEvents)
  52.         {
  53.             StringBuilder retVal = new StringBuilder(800);
  54.             foreach (CalendarEvent cEvent in daysEvents)
  55.             {
  56.                 retVal.Append(
  57.                     string.Format("Day: {1}{0}Event: {2}{0}Description: {3}{0}{0}", Environment.NewLine, cEvent.Day.ToShortDateString(), cEvent.EventName, cEvent.EventDescription)
  58.                 );
  59.             }
  60.             return retVal.ToString();
  61.         }
  62.  
  63.         private void PrintToOutPut(string events, string notes)
  64.         {
  65.             outputTextBox.Text = string.Empty;
  66.  
  67.             StringBuilder sb = new StringBuilder(events.Length + 100);
  68.             if (!string.IsNullOrEmpty(notes))
  69.             {
  70.                 sb.Append(notes);
  71.                 sb.Append(Environment.NewLine);
  72.                 sb.Append("-----------------------");
  73.                 sb.Append(Environment.NewLine);
  74.             }
  75.             sb.Append(events);
  76.             outputTextBox.Text = sb.ToString();
  77.         }
  78.  
  79.         private string GetTodayMessage()
  80.         {
  81.             int numberOfEvents = FindEventsOnDay(monthCalendar1.TodayDate).Count();
  82.             string retVal = string.Format("Number of events today: {0}", numberOfEvents);
  83.             return retVal;
  84.         }
  85.  
  86.         private IEnumerable<CalendarEvent> FindEventsOnDay(DateTime day)
  87.         {
  88.             var retVal = from x in calendarEvents
  89.                          where (x.Day == day)
  90.                          select x;
  91.             return retVal;
  92.         }
  93.  
  94.         private void Save()
  95.         {
  96.             string dataFile = Environment.GetEnvironmentVariable("appdata");
  97.             dataFile = System.IO.Path.Combine(dataFile, "redditProgramming");
  98.             if (!System.IO.Directory.Exists(dataFile)) System.IO.Directory.CreateDirectory(dataFile);
  99.             dataFile = System.IO.Path.Combine(dataFile, "first_medium.csv");
  100.             StringBuilder textToFile = new StringBuilder(calendarEvents.Count * 90);
  101.             foreach (CalendarEvent ce in calendarEvents)
  102.             {
  103.                 string line = string.Format("{0};\"{1}\";\"{2}\"", ce.Day.ToString(), ce.EventName, ce.EventDescription);
  104.                 line = line.Replace(Environment.NewLine, "\\n");
  105.                 textToFile.AppendLine(line);
  106.             }
  107.             System.IO.File.WriteAllText(dataFile, textToFile.ToString());
  108.         }
  109.  
  110.         private void Load()
  111.         {
  112.             string dataFile = Environment.GetEnvironmentVariable("appdata");
  113.             dataFile = System.IO.Path.Combine(dataFile, "redditProgramming");
  114.             dataFile = System.IO.Path.Combine(dataFile, "first_medium.csv");
  115.             if (!System.IO.File.Exists(dataFile))
  116.             {
  117.                 return;
  118.             }
  119.             string[] data = System.IO.File.ReadAllLines(dataFile);
  120.             foreach (string line in data)
  121.             {
  122.                 if (string.IsNullOrEmpty(line))
  123.                 {
  124.                     continue;
  125.                 }
  126.                 string[] values = line.Split(';');
  127.                 values[1] = values[1].TrimStart('"');
  128.                 values[2] = values[2].TrimStart('"');
  129.                 values[1] = values[1].TrimEnd('"');
  130.                 values[2] = values[2].TrimEnd('"');
  131.                 values[2] = values[2].Replace("\\n", Environment.NewLine);
  132.  
  133.                 calendarEvents.Add(
  134.                     new CalendarEvent(DateTime.Parse(values[0]), values[1], values[2])
  135.                 );
  136.             }
  137.         }
  138.  
  139.         private void addButton_Click(object sender, EventArgs e)
  140.         {
  141.             EventSetter dlg = new EventSetter();
  142.             dlg.ShowDialog();
  143.             if (dlg.DialogResult == System.Windows.Forms.DialogResult.OK)
  144.             {
  145.                 CalendarEvent calEvent = new CalendarEvent(
  146.                     dlg.Date,
  147.                     dlg.EventName,
  148.                     dlg.Description);
  149.                 calendarEvents.Add(calEvent);
  150.                 monthCalendar1.AddBoldedDate(dlg.Date);
  151.                 notes = "Event added.";
  152.                 GetAllEventsForDay(currentDate);
  153.                 PrintToOutPut(GetAllEventsForDay(currentDate), notes);
  154.             }
  155.         }
  156.  
  157.         private void editButton_Click(object sender, EventArgs e)
  158.         {
  159.             IEnumerable<CalendarEvent> events = FindEventsOnDay(currentDate);
  160.             EventChooser eventChooser = new EventChooser(events);
  161.             eventChooser.ShowDialog();
  162.             int selected;
  163.             if (eventChooser.DialogResult == System.Windows.Forms.DialogResult.OK)
  164.             {
  165.                 selected = eventChooser.SelectedIndex;
  166.             }
  167.             else
  168.             {
  169.                 return;
  170.             }
  171.             CalendarEvent[] eventsArray = events.ToArray();
  172.             EventSetter eventSetter = new EventSetter()
  173.             {
  174.                 Date = eventsArray[selected].Day,
  175.                 EventName = eventsArray[selected].EventName,
  176.                 Description = eventsArray[selected].EventDescription
  177.             };
  178.             eventSetter.ShowDialog();
  179.             if (eventSetter.DialogResult == System.Windows.Forms.DialogResult.OK)
  180.             {
  181.                 eventsArray[selected].Day = eventSetter.Date;
  182.                 eventsArray[selected].EventName = eventSetter.EventName;
  183.                 eventsArray[selected].EventDescription = eventSetter.Description;
  184.             }
  185.             notes = "Event updated.";
  186.             GetAllEventsForDay(currentDate);
  187.             PrintToOutPut(GetAllEventsForDay(currentDate), notes);
  188.         }
  189.  
  190.         private void removeButton_Click(object sender, EventArgs e)
  191.         {
  192.             notes = "Event Removed.";
  193.             IEnumerable<CalendarEvent> events = FindEventsOnDay(currentDate);
  194.             EventChooser eventChooser = new EventChooser(events);
  195.             eventChooser.ShowDialog();
  196.             int selected;
  197.             if (eventChooser.DialogResult == System.Windows.Forms.DialogResult.OK)
  198.             {
  199.                 selected = eventChooser.SelectedIndex;
  200.             }
  201.             else
  202.             {
  203.                 return;
  204.             }
  205.             CalendarEvent[] eventsArray = events.ToArray();
  206.             calendarEvents.Remove(eventsArray[selected]);
  207.             GetAllEventsForDay(currentDate);
  208.             PrintToOutPut(GetAllEventsForDay(currentDate), notes);
  209.         }
  210.  
  211.         private void showAllButton_Click(object sender, EventArgs e)
  212.         {
  213.             string all = FormatEventsToString(calendarEvents);
  214.             notes = string.Empty;
  215.             PrintToOutPut(all, notes);
  216.         }
  217.     }
  218.  
  219.     public class CalendarEvent
  220.     {
  221.         public DateTime Day
  222.         {
  223.             get;
  224.             set;
  225.         }
  226.         public string EventName
  227.         {
  228.             get;
  229.             set;
  230.         }
  231.         public string EventDescription
  232.         {
  233.             get;
  234.             set;
  235.         }
  236.  
  237.         public CalendarEvent(DateTime day, string eventName, string eventDescription) : this()
  238.         {
  239.             Day = day;
  240.             EventName = eventName;
  241.             EventDescription = eventDescription;
  242.         }
  243.  
  244.         public CalendarEvent()
  245.         {
  246.             Day = DateTime.Now;
  247.             EventName = string.Empty;
  248.             EventDescription = string.Empty;
  249.         }
  250.     }
  251.  
  252.     public partial class EventSetter : Form
  253.     {
  254.         public string EventName
  255.         {
  256.             get
  257.             {
  258.                 return nameTextBox.Text;
  259.             }
  260.             set
  261.             {
  262.                 nameTextBox.Text = value;
  263.             }
  264.         }
  265.  
  266.         public string Description
  267.         {
  268.             get
  269.             {
  270.                 return descriptionTextBox.Text;
  271.             }
  272.             set
  273.             {
  274.                 descriptionTextBox.Text = value;
  275.             }
  276.         }
  277.  
  278.         public DateTime Date
  279.         {
  280.             get
  281.             {
  282.                 return DateTime.Parse(dateTimePicker.Text);
  283.             }
  284.             set
  285.             {
  286.                 dateTimePicker.Text = value.ToShortDateString();
  287.             }
  288.         }
  289.  
  290.         public EventSetter()
  291.         {
  292.             InitializeComponent();
  293.             this.DialogResult = System.Windows.Forms.DialogResult.None;
  294.         }
  295.  
  296.         private void okButton_Click(object sender, EventArgs e)
  297.         {
  298.             this.DialogResult = System.Windows.Forms.DialogResult.OK;
  299.             this.Close();
  300.         }
  301.     }
  302.  
  303.     public partial class EventChooser : Form
  304.     {
  305.         public int SelectedIndex
  306.         {
  307.             get
  308.             {
  309.                 return comboBox.SelectedIndex;
  310.             }
  311.         }
  312.  
  313.         public EventChooser(IEnumerable<CalendarEvent> events)
  314.         {
  315.             InitializeComponent();
  316.             comboBox.Items.AddRange(
  317.                 (from e in events
  318.                 select e.EventName).ToArray()
  319.                 );
  320.             DialogResult = System.Windows.Forms.DialogResult.None;
  321.             comboBox.SelectedIndex = 0;
  322.         }
  323.  
  324.         private void okButton_Click(object sender, EventArgs e)
  325.         {
  326.             DialogResult = System.Windows.Forms.DialogResult.OK;
  327.             this.Close();
  328.         }
  329.     }
  330.  
  331.     static class Program
  332.     {
  333.         /// <summary>
  334.         /// The main entry point for the application.
  335.         /// </summary>
  336.         [STAThread]
  337.         static void Main()
  338.         {
  339.             Application.EnableVisualStyles();
  340.             Application.SetCompatibleTextRenderingDefault(false);
  341.             Application.Run(new Form1());
  342.         }
  343.     }
  344. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement