Exemplo n.º 1
0
        private async Task NavigateToReminder(string args)
        {
            var parts    = args.Split(';');
            var pageId   = parts[0];
            var objectId = parts[1];

            using (var one = new OneNote())
            {
                Native.SetForegroundWindow(one.WindowHandle);
                await one.NavigateTo(pageId, objectId);

                page = one.GetPage(pageId);
                ns   = page.Namespace;

                var paragraph = page.Root.Descendants(ns + "OE")
                                .FirstOrDefault(e => e.Attribute("objectID").Value == objectId);

                var reminder = GetReminder(paragraph);
                if (reminder == null)
                {
                    // TODO: message?
                    return;
                }

                using (var dialog = new RemindDialog(reminder, true))
                {
                    if (dialog.ShowDialog(owner) == DialogResult.OK)
                    {
                        if (SetReminder(paragraph, dialog.Reminder))
                        {
                            await one.Update(page);
                        }
                    }
                }

                if (reminder.Silent || reminder.Snooze != SnoozeRange.None)
                {
                    RemindScheduler.CancelOverride(reminder);
                }
                else
                {
                    var started = (
                        reminder.Status == ReminderStatus.InProgress ||
                        reminder.Status == ReminderStatus.Waiting) &&
                                  DateTime.UtcNow.CompareTo(reminder.Started) > 0;

                    RemindScheduler.ScheduleNotification(reminder, started);
                }
            }
        }
Exemplo n.º 2
0
        private async Task Test(Reminder reminder, string pageID, OneNote one)
        {
            // is it not started but after the planned start date?
            if (reminder.Status == ReminderStatus.NotStarted ||
                reminder.Status == ReminderStatus.Waiting)
            {
                if (DateTime.UtcNow.CompareTo(reminder.Start) > 0 &&
                    await ReminderIsValid(reminder, pageID, one))
                {
                    Send(
                        string.Format(
                            Resx.Reminder_PastStart,
                            reminder.Due.ToShortFriendlyString(),
                            reminder.Subject
                            ),
                        $"{pageID};{reminder.ObjectId}"
                        );

                    RemindScheduler.ScheduleNotification(reminder, false);
                }
            }
            // is it not completed but after the planned due date?
            else if (reminder.Status == ReminderStatus.InProgress)
            {
                if (DateTime.UtcNow.CompareTo(reminder.Due) > 0 &&
                    await ReminderIsValid(reminder, pageID, one))
                {
                    Send(
                        string.Format(
                            Resx.Reminder_PastDue,
                            reminder.Due.ToShortFriendlyString(),
                            reminder.Subject
                            ),
                        $"{pageID};{reminder.ObjectId}"
                        );

                    RemindScheduler.ScheduleNotification(reminder, true);
                }
            }
        }