Пример #1
0
        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));
        }
Пример #2
0
 private void btnReadClipboard_Click(object sender, EventArgs e)
 {
     txtLog.Text += ClipboardHelper.GetClipbordInfo().ToString();
 }