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); } } }
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); } } }