Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.ComponentModel;
- using System.Data;
- using System.Drawing;
- using System.Linq;
- using System.Text;
- using System.Windows.Forms;
- namespace First_Medium
- {
- public partial class Form1 : Form
- {
- private DateTime currentDate;
- private string notes;
- private IList<CalendarEvent> calendarEvents;
- public Form1()
- {
- InitializeComponent();
- notes = string.Empty;
- monthCalendar1.MaxSelectionCount = 1;
- calendarEvents = new List<CalendarEvent>();
- Load();
- GetTodayMessage();
- todayTextBox.Text = GetTodayMessage();
- }
- protected override void OnClosing(CancelEventArgs e)
- {
- Save();
- base.OnClosing(e);
- }
- private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
- {
- notes = string.Empty;
- DateTime selectedDay = monthCalendar1.SelectionRange.Start;
- PrintToOutPut(GetAllEventsForDay(selectedDay), notes);
- currentDate = selectedDay;
- }
- private string GetAllEventsForDay(DateTime day)
- {
- IEnumerable<CalendarEvent> daysEvents = FindEventsOnDay(day);
- return FormatEventsToString(daysEvents);
- }
- private static string FormatEventsToString(IEnumerable<CalendarEvent> daysEvents)
- {
- StringBuilder retVal = new StringBuilder(800);
- foreach (CalendarEvent cEvent in daysEvents)
- {
- retVal.Append(
- string.Format("Day: {1}{0}Event: {2}{0}Description: {3}{0}{0}", Environment.NewLine, cEvent.Day.ToShortDateString(), cEvent.EventName, cEvent.EventDescription)
- );
- }
- return retVal.ToString();
- }
- private void PrintToOutPut(string events, string notes)
- {
- outputTextBox.Text = string.Empty;
- StringBuilder sb = new StringBuilder(events.Length + 100);
- if (!string.IsNullOrEmpty(notes))
- {
- sb.Append(notes);
- sb.Append(Environment.NewLine);
- sb.Append("-----------------------");
- sb.Append(Environment.NewLine);
- }
- sb.Append(events);
- outputTextBox.Text = sb.ToString();
- }
- private string GetTodayMessage()
- {
- int numberOfEvents = FindEventsOnDay(monthCalendar1.TodayDate).Count();
- string retVal = string.Format("Number of events today: {0}", numberOfEvents);
- return retVal;
- }
- private IEnumerable<CalendarEvent> FindEventsOnDay(DateTime day)
- {
- var retVal = from x in calendarEvents
- where (x.Day == day)
- select x;
- return retVal;
- }
- private void Save()
- {
- string dataFile = Environment.GetEnvironmentVariable("appdata");
- dataFile = System.IO.Path.Combine(dataFile, "redditProgramming");
- if (!System.IO.Directory.Exists(dataFile)) System.IO.Directory.CreateDirectory(dataFile);
- dataFile = System.IO.Path.Combine(dataFile, "first_medium.csv");
- StringBuilder textToFile = new StringBuilder(calendarEvents.Count * 90);
- foreach (CalendarEvent ce in calendarEvents)
- {
- string line = string.Format("{0};\"{1}\";\"{2}\"", ce.Day.ToString(), ce.EventName, ce.EventDescription);
- line = line.Replace(Environment.NewLine, "\\n");
- textToFile.AppendLine(line);
- }
- System.IO.File.WriteAllText(dataFile, textToFile.ToString());
- }
- private void Load()
- {
- string dataFile = Environment.GetEnvironmentVariable("appdata");
- dataFile = System.IO.Path.Combine(dataFile, "redditProgramming");
- dataFile = System.IO.Path.Combine(dataFile, "first_medium.csv");
- if (!System.IO.File.Exists(dataFile))
- {
- return;
- }
- string[] data = System.IO.File.ReadAllLines(dataFile);
- foreach (string line in data)
- {
- if (string.IsNullOrEmpty(line))
- {
- continue;
- }
- string[] values = line.Split(';');
- values[1] = values[1].TrimStart('"');
- values[2] = values[2].TrimStart('"');
- values[1] = values[1].TrimEnd('"');
- values[2] = values[2].TrimEnd('"');
- values[2] = values[2].Replace("\\n", Environment.NewLine);
- calendarEvents.Add(
- new CalendarEvent(DateTime.Parse(values[0]), values[1], values[2])
- );
- }
- }
- private void addButton_Click(object sender, EventArgs e)
- {
- EventSetter dlg = new EventSetter();
- dlg.ShowDialog();
- if (dlg.DialogResult == System.Windows.Forms.DialogResult.OK)
- {
- CalendarEvent calEvent = new CalendarEvent(
- dlg.Date,
- dlg.EventName,
- dlg.Description);
- calendarEvents.Add(calEvent);
- monthCalendar1.AddBoldedDate(dlg.Date);
- notes = "Event added.";
- GetAllEventsForDay(currentDate);
- PrintToOutPut(GetAllEventsForDay(currentDate), notes);
- }
- }
- private void editButton_Click(object sender, EventArgs e)
- {
- IEnumerable<CalendarEvent> events = FindEventsOnDay(currentDate);
- EventChooser eventChooser = new EventChooser(events);
- eventChooser.ShowDialog();
- int selected;
- if (eventChooser.DialogResult == System.Windows.Forms.DialogResult.OK)
- {
- selected = eventChooser.SelectedIndex;
- }
- else
- {
- return;
- }
- CalendarEvent[] eventsArray = events.ToArray();
- EventSetter eventSetter = new EventSetter()
- {
- Date = eventsArray[selected].Day,
- EventName = eventsArray[selected].EventName,
- Description = eventsArray[selected].EventDescription
- };
- eventSetter.ShowDialog();
- if (eventSetter.DialogResult == System.Windows.Forms.DialogResult.OK)
- {
- eventsArray[selected].Day = eventSetter.Date;
- eventsArray[selected].EventName = eventSetter.EventName;
- eventsArray[selected].EventDescription = eventSetter.Description;
- }
- notes = "Event updated.";
- GetAllEventsForDay(currentDate);
- PrintToOutPut(GetAllEventsForDay(currentDate), notes);
- }
- private void removeButton_Click(object sender, EventArgs e)
- {
- notes = "Event Removed.";
- IEnumerable<CalendarEvent> events = FindEventsOnDay(currentDate);
- EventChooser eventChooser = new EventChooser(events);
- eventChooser.ShowDialog();
- int selected;
- if (eventChooser.DialogResult == System.Windows.Forms.DialogResult.OK)
- {
- selected = eventChooser.SelectedIndex;
- }
- else
- {
- return;
- }
- CalendarEvent[] eventsArray = events.ToArray();
- calendarEvents.Remove(eventsArray[selected]);
- GetAllEventsForDay(currentDate);
- PrintToOutPut(GetAllEventsForDay(currentDate), notes);
- }
- private void showAllButton_Click(object sender, EventArgs e)
- {
- string all = FormatEventsToString(calendarEvents);
- notes = string.Empty;
- PrintToOutPut(all, notes);
- }
- }
- public class CalendarEvent
- {
- public DateTime Day
- {
- get;
- set;
- }
- public string EventName
- {
- get;
- set;
- }
- public string EventDescription
- {
- get;
- set;
- }
- public CalendarEvent(DateTime day, string eventName, string eventDescription) : this()
- {
- Day = day;
- EventName = eventName;
- EventDescription = eventDescription;
- }
- public CalendarEvent()
- {
- Day = DateTime.Now;
- EventName = string.Empty;
- EventDescription = string.Empty;
- }
- }
- public partial class EventSetter : Form
- {
- public string EventName
- {
- get
- {
- return nameTextBox.Text;
- }
- set
- {
- nameTextBox.Text = value;
- }
- }
- public string Description
- {
- get
- {
- return descriptionTextBox.Text;
- }
- set
- {
- descriptionTextBox.Text = value;
- }
- }
- public DateTime Date
- {
- get
- {
- return DateTime.Parse(dateTimePicker.Text);
- }
- set
- {
- dateTimePicker.Text = value.ToShortDateString();
- }
- }
- public EventSetter()
- {
- InitializeComponent();
- this.DialogResult = System.Windows.Forms.DialogResult.None;
- }
- private void okButton_Click(object sender, EventArgs e)
- {
- this.DialogResult = System.Windows.Forms.DialogResult.OK;
- this.Close();
- }
- }
- public partial class EventChooser : Form
- {
- public int SelectedIndex
- {
- get
- {
- return comboBox.SelectedIndex;
- }
- }
- public EventChooser(IEnumerable<CalendarEvent> events)
- {
- InitializeComponent();
- comboBox.Items.AddRange(
- (from e in events
- select e.EventName).ToArray()
- );
- DialogResult = System.Windows.Forms.DialogResult.None;
- comboBox.SelectedIndex = 0;
- }
- private void okButton_Click(object sender, EventArgs e)
- {
- DialogResult = System.Windows.Forms.DialogResult.OK;
- this.Close();
- }
- }
- static class Program
- {
- /// <summary>
- /// The main entry point for the application.
- /// </summary>
- [STAThread]
- static void Main()
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new Form1());
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement