Ejemplo n.º 1
0
        private async Task SetMonth(int delta)
        {
            if (delta < 1000)
            {
                date = delta == 0
                                        ? DateTime.Now.StartOfMonth()
                                        : date.AddMonths(delta);
            }

            var endDate  = date.EndOfMonth();
            var settings = new SettingsProvider();

            pages = await new OneNoteProvider().GetPages(
                date.StartOfCalendarMonthView(),
                date.EndOfCalendarView(),
                await settings.GetNotebookIDs(),
                settings.Created, settings.Modified, settings.Deleted);

            if (monthButton.Checked)
            {
                monthView.SetRange(date, endDate, pages);
            }
            else
            {
                detailView.SetRange(date, endDate, pages);
            }

            dateLabel.Text = date.ToString("MMMM yyyy");

            nextButton.Enabled = todayButton.Enabled = !DateTime.Now.EqualsMonth(date);
        }
Ejemplo n.º 2
0
        public void SetRange(DateTime startDate, DateTime endDate, CalendarPages pages)
        {
            listbox.Items.Clear();

            var date = startDate;

            while (date <= endDate)
            {
                var settings = new SettingsProvider();

                var daypages = new CalendarPages();

                // filtering prioritizes modified over created and prevent pages from being
                // displayed twice in the month if both created and modified in the same month
                daypages.AddRange(pages.Where(p =>
                                              (settings.Modified && p.Modified.Date.Equals(date)) ||
                                              (!settings.Modified && p.Created.Date.Equals(date))
                                              ));

                if (daypages.Any() || settings.Empty)
                {
                    listbox.Items.Add(new DayItem
                    {
                        Date  = date,
                        Pages = daypages
                    });
                }

                date = date.AddDays(1);
            }

            Invalidate();
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Respond to the monthView Day header to show daily details
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private async void ShowDayView(object sender, CalendarDayEventArgs e)
        {
            contentPanel.Controls.Clear();

            if (detailView == null)
            {
                detailView = new DetailView
                {
                    Dock     = DockStyle.Fill,
                    Location = new System.Drawing.Point(0, 0),
                    Name     = "dayView",
                    TabIndex = 0
                };

                detailView.HoverPage   += ShowPageStatus;
                detailView.ClickedPage += NavigateToPage;
                detailView.SnappedPage += SnappedPage;
            }

            var endDate  = date.EndOfMonth();
            var settings = new SettingsProvider();

            pages = await new OneNoteProvider().GetPages(
                date.StartOfCalendarMonthView(),
                date.EndOfCalendarView(),
                await settings.GetNotebookIDs(),
                settings.Created, settings.Modified, settings.Deleted);

            detailView.SetRange(date, endDate, pages);
            contentPanel.Controls.Add(detailView);
        }
Ejemplo n.º 4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="startDate"></param>
        /// <param name="endDate"></param>
        /// <param name="notebookIDs"></param>
        /// <param name="created"></param>
        /// <param name="modified"></param>
        /// <param name="deleted"></param>
        /// <returns></returns>
        public async Task <CalendarPages> GetPages(
            DateTime startDate, DateTime endDate,
            IEnumerable <string> notebookIDs,
            bool created, bool modified, bool deleted)
        {
            using (one = new OneNote())
            {
                var notebooks = await GetNotebooks(notebookIDs);

                var ns = notebooks.GetNamespaceOfPrefix(OneNote.Prefix);

                // filter to selected month...

                var pages = new CalendarPages();

                pages.AddRange(notebooks.Descendants(ns + "Page")
                               .Where(e => deleted || e.Attribute("isInRecycleBin") == null)
                               // collect all pages
                               .Select(e => new
                {
                    Page      = e,
                    Created   = DateTime.Parse(e.Attribute("dateTime").Value),
                    Modified  = DateTime.Parse(e.Attribute("lastModifiedTime").Value),
                    IsDeleted = e.Attribute("isInRecycleBin") != null
                })
                               // filter by one or both filters
                               .Where(a =>
                                      (created && a.Created.InRange(startDate, endDate)) ||
                                      (modified && a.Modified.InRange(startDate, endDate)))
                               // prefer creation time
                               .OrderBy(a => created ? a.Created : a.Modified)
                               // pretty it up
                               .Select(a => new CalendarPage
                {
                    PageID = a.Page.Attribute("ID").Value,
                    Path   = a.Page.Ancestors()
                             .Where(n => n.Attribute("name") != null)
                             .Select(n => n.Attribute("name").Value)
                             .Aggregate((name1, name2) => $"{name2} > {name1}"),
                    Title     = a.Page.Attribute("name").Value,
                    Created   = a.Created,
                    Modified  = a.Modified,
                    IsDeleted = a.IsDeleted
                }));

                pages.ForEach(page =>
                {
                    var DeletedPages = "OneNote_RecycleBin > Deleted Pages";
                    if (page.Path.EndsWith(DeletedPages))
                    {
                        page.Path = page.Path.Substring(
                            0, page.Path.Length - DeletedPages.Length) + "Recycle Bin";
                    }
                });

                return(pages);
            }
        }
Ejemplo n.º 5
0
        private void MakeDayList(CalendarPages pages)
        {
            days = new CalendarDays();

            var settings = new SettingsProvider();

            var first = date.DayOfWeek;
            var last  = DateTime.DaysInMonth(date.Year, date.Month);

            var dow = firstDow == DayOfWeek.Sunday
                                ? (int)first
                                : first == DayOfWeek.Sunday ? 6 : (int)first - 1;

            var runner = date.Date;

            // previous month
            if (dow > 0)
            {
                runner = runner.AddDays(-dow);
                for (int i = 0; i < dow; i++)
                {
                    MakeDay(days, pages, runner, settings.Modified);
                    runner = runner.AddDays(1.0);
                }
            }

            // month
            for (int i = 1; i <= last; i++)
            {
                MakeDay(days, pages, runner, settings.Modified, true);
                runner = runner.AddDays(1.0);
            }

            // next month
            var rest = 7 - days.Count % 7;

            if (rest < 7)
            {
                for (int i = 0; i < rest; i++)
                {
                    MakeDay(days, pages, runner, settings.Modified);
                    runner = runner.AddDays(1.0);
                }
            }
        }
Ejemplo n.º 6
0
        public void SetRange(DateTime startDate, DateTime endDate, CalendarPages pages)
        {
            date = startDate.StartOfMonth();

            firstDow = Thread.CurrentThread.CurrentUICulture.DateTimeFormat.FirstDayOfWeek;
            MakeDayList(pages);

            for (int i = Controls.Count - 1; i >= 0; i--)
            {
                if (Controls[i] is MoreButton)
                {
                    var c = Controls[i];
                    Controls.RemoveAt(i);
                    c.Dispose();
                }
            }

            Invalidate();
        }
Ejemplo n.º 7
0
        private void MakeDay(
            CalendarDays days, CalendarPages pages,
            DateTime date, bool modified, bool inMonth = false)
        {
            var day = new CalendarDay {
                Date = date, InMonth = inMonth
            };

            // filtering prioritizes modified over created and prevent pages from being
            // displayed twice in the month if both created and modified in the same month
            var pags = pages.Where(p =>
                                   (modified && p.Modified.Date.Equals(date)) ||
                                   (!modified && p.Created.Date.Equals(date))
                                   );

            pags.ForEach(p => day.Pages.Add(p));

            days.Add(day);
        }