public static Tuple <StringBuilder, StringBuilder> CreateYear(int calendarYear) { var dateIncr = new DateTime(calendarYear - 1, 12, 31); var year = calendarYear; var lastMonth = 0; var week = 0; var sbHtml = new StringBuilder(); var sbText = new StringBuilder(); while (year == calendarYear) { // Increment date dateIncr = dateIncr.AddDays(1); year = dateIncr.Year; if (year != calendarYear) { break; } var month = dateIncr.Month; if (month != lastMonth) { lastMonth = month; // Do month header sbHtml.AppendLine($"{HtmlStartMonth}{dateIncr.ToString(MonthFormat)}{HtmlEndMonth}"); sbText.AppendLine($"{dateIncr.ToString(MonthFormat)}"); } // Week entry if (dateIncr.DayOfWeek.Equals(DayOfWeek.Monday)) { sbHtml.AppendLine($"{HtmlWeekStart}{++week}{HtmlWeekEnd}"); } // Do date entry sbHtml.AppendLine($"{HtmlStart}{dateIncr.ToString(DayFormat)} - ({dateIncr.DayOfYear:D3}){HtmlEnd}"); sbText.AppendLine($"{ dateIncr.ToString(DayFormat)} - ({ dateIncr.DayOfYear:D3})"); } sbHtml.AppendLine($"{HtmlStartMonth}End of {calendarYear}{HtmlEndMonth}"); sbText.AppendLine($"End of {calendarYear}"); ClipboardHelper.CopyToClipboard(sbHtml.ToString(), sbText.ToString()); return(new Tuple <StringBuilder, StringBuilder>(sbHtml, sbText)); }
private void btnWriteClipboard_Click(object sender, EventArgs e) { try { if (!int.TryParse(txtYear.Text, out var year)) { txtLog.Text += "Invalid year number\r\n"; return; } _calendarItems = YearList.GetList(year, txtGmail.Text, txtHolidayCalendar.Text, chkPersonal.Checked, chkHolidays.Checked); var everLog = GenEverLog.CreateYear(year, _calendarItems); ClipboardHelper.CopyToClipboard(everLog.Item1.ToString(), everLog.Item2.ToString()); txtLog.Text += "Added HTML to Clipboard\r\n"; } catch (Exception ex) { txtLog.Text += $"Error adding HTML: {ex}"; } }
public static Tuple <StringBuilder, StringBuilder> CreateYear(int calendarYear, List <CalendarItem> calendarItems) { var dateIncr = new DateTime(calendarYear - 1, 12, 31); var year = calendarYear; var lastMonth = 0; var week = 0; var curCulture = (System.Globalization.CultureInfo)System.Globalization.CultureInfo.CurrentCulture.Clone(); curCulture.DateTimeFormat.AMDesignator = "AM"; curCulture.DateTimeFormat.PMDesignator = "PM"; var sbHtml = new StringBuilder(); var sbText = new StringBuilder(); while (year == calendarYear) { // Increment date dateIncr = dateIncr.AddDays(1); year = dateIncr.Year; if (year != calendarYear) { break; } var month = dateIncr.Month; if (month != lastMonth) { lastMonth = month; // Do month header sbHtml.AppendLine($"{HtmlStartMonth}{dateIncr.ToString(MonthFormat)}{HtmlEndMonth}"); sbText.AppendLine($"{dateIncr.ToString(MonthFormat)}"); } // Week entry if (dateIncr.DayOfWeek.Equals(DayOfWeek.Monday)) { sbHtml.AppendLine($"{HtmlWeekStart}{++week}{HtmlWeekEnd}"); } // Do date entry sbHtml.AppendLine($"{HtmlStart}{dateIncr.ToString(DayFormat)} - ({dateIncr.DayOfYear:D3})"); sbText.AppendLine($"{ dateIncr.ToString(DayFormat)} - ({ dateIncr.DayOfYear:D3})"); // Get Holidays and calendar entries var holidayItems = from row in calendarItems where row.CalendarOrdinal == 0 && row.StartDateTime == dateIncr.Date orderby row.Summary select row; foreach (var holiday in holidayItems) { sbHtml.AppendLine( $"{HtmlHolidayStart}{holiday.Summary}"); sbText.AppendLine($"{holiday.Summary}"); } var eventItems = from row in calendarItems where row.CalendarOrdinal > 0 && row.StartDateTime.Date == dateIncr.Date orderby row.StartDateTime select row; foreach (var calEvent in eventItems) { if (calEvent.HasTime) { // Event entry with starting / ending time sbHtml.AppendLine( $"{HtmlEventStart}{calEvent.HtmlLink}{HtmlEventMiddle}{calEvent.Summary} - {calEvent.StartDateTime.ToString(TimeFormat, curCulture)}{HtmlEventEnd}"); sbText.AppendLine($"{calEvent.Summary} - {calEvent.StartDateTime.ToString(TimeFormat, curCulture)}"); } else // All day event entry { sbHtml.AppendLine( $"{HtmlEventStart}{calEvent.HtmlLink}{HtmlEventMiddle}{calEvent.Summary}{HtmlEventEnd}"); sbText.AppendLine($"{calEvent.Summary}"); } } // Add end of day entry with three blank lines sbHtml.AppendLine($"{HtmlEnd}"); } sbHtml.AppendLine($"{HtmlStartMonth}End of {calendarYear}{HtmlEndMonth}"); sbText.AppendLine($"End of {calendarYear}"); ClipboardHelper.CopyToClipboard(sbHtml.ToString(), sbText.ToString()); return(new Tuple <StringBuilder, StringBuilder>(sbHtml, sbText)); }