public static Task <AdditionalDataTasks> UpdateTaskAsync(DataItemTask task) { return(Execute(delegate { return UpdateTaskHelper(task); })); }
public static void HandleOnTaskUpdated(DataItemTask task) { // First remove from schedule RemoveScheduledTaskToast(task.Id); // If it's complete, also remove the displayed, no need to reschedule or anything else if (task.IsComplete) { RemoveDisplayedTaskToast(task.Id); } // If we need to update the existing displayed toast else if (task.StartTime < DateTimeOffset.Now.AddSeconds(1)) { ToastNotification notif = new ToastNotification(GenerateToastContent(task)) { Tag = GenerateToastTag(task.Id), // Suppress the popup, since we're just silently updating SuppressPopup = true }; ToastNotificationManager.CreateToastNotifier().Show(notif); } // Otherwise we need to remove currently displayed and then re-schedule else { RemoveDisplayedTaskToast(task.Id); ScheduleToast(task); } }
private void DataStore_OnTaskAdded(object sender, DataItemTask task) { if (_getCurrentTasksTask.IsCompleted) { var dontWait = ExecuteOnUI(delegate { AddTask(task); }); } }
public static void HandleOnTaskAdded(DataItemTask task) { // If task is incomplete or alredy past the start time (we add padding to the Now time since scheduling a toast to appear exactly now doesn't work, it has to be in the future) if (task.IsComplete || task.StartTime < DateTimeOffset.Now.AddSeconds(1)) { return; } ScheduleToast(task); }
private static void ScheduleToast(DataItemTask task) { var toastId = GenerateToastTag(task.Id); ScheduledToastNotification notif = new ScheduledToastNotification(GenerateToastContent(task), task.StartTime) { Tag = toastId }; ToastNotificationManager.CreateToastNotifier().AddToSchedule(notif); }
private void SetCompletionStatus(DataItemTask task, bool isComplete) { if (task.IsComplete == isComplete) { return; } task = task.CreateDeepCopy(); task.IsComplete = isComplete; DataStore.UpdateTaskAsync(task); }
/// <summary> /// Assumes already on UI thread /// </summary> /// <param name="task"></param> private void AddTask(DataItemTask task) { if (!_getCurrentTasksTask.IsCompleted) { return; } // Insert sorted int indexToInsertAt = IEnumerableExtensions.FindIndexForSortedInsert(_getCurrentTasksTask.Result, task, _currentTaskComparer); _getCurrentTasksTask.Result.Insert(indexToInsertAt, task); }
private void ListViewSchedules_ItemClick(object sender, ItemClickEventArgs e) { DataItemTask item = e.ClickedItem as DataItemTask; if (item.IsComplete) { ViewModel.CoreViewModel.MarkIncomplete(item); } else { ViewModel.CoreViewModel.MarkComplete(item); } }
public static Task <AdditionalDataTasks> SetTaskCompletionStatusAsync(int taskId, bool isComplete) { return(Execute(delegate { DataItemTask task = _conn.Find <DataItemTask>(taskId); if (task == null || task.IsComplete == isComplete) { return new AdditionalDataTasks(); } task.IsComplete = isComplete; return UpdateTaskHelper(task); })); }
private void DataStore_OnTaskUpdated(object sender, DataItemTask updatedTask) { if (_getCurrentTasksTask.IsCompleted) { var dontWait = ExecuteOnUI(delegate { var existing = _getCurrentTasksTask.Result.FirstOrDefault(i => i.Id == updatedTask.Id); if (existing != null) { existing.CopyFrom(updatedTask); RemoveAllTasksThatAreNoLongerCurrent(); } }); } }
/// <summary> /// Caller must have already established lock and is on background thread /// </summary> /// <param name="task"></param> private static AdditionalDataTasks UpdateTaskHelper(DataItemTask task) { _conn.InsertOrReplace(task); if (OnTaskUpdated != null) { OnTaskUpdated(null, task); } ToastHelper.HandleOnTaskUpdated(task); var additional = new AdditionalDataTasks(); additional.ResetPrimaryTileTask = ResetPrimaryTileWorker.Instance.Start(); return(additional); }
public static Task <AdditionalDataTasks> AddTaskAsync(DataItemTask task) { return(Execute(delegate { _conn.Insert(task); if (OnTaskAdded != null) { OnTaskAdded(null, task); } var additional = new AdditionalDataTasks(); ToastHelper.HandleOnTaskAdded(task); additional.ResetPrimaryTileTask = ResetPrimaryTileWorker.Instance.Start(); return additional; })); }
private static XmlDocument GenerateToastContent(DataItemTask task) { ToastContent content = new ToastContent() { Scenario = ToastScenario.Reminder, Visual = new ToastVisual() { BindingGeneric = new ToastBindingGeneric() { Children = { new AdaptiveText() { Text = task.Title }, new AdaptiveText() { Text = "Due " + task.StartTime.LocalDateTime.ToString() } } } }, Actions = new ToastActionsCustom() { Inputs = { new ToastSelectionBox(SELECTION_BOX_SNOOZE_TIME_ID) { DefaultSelectionBoxItemId = "1", Items = { new ToastSelectionBoxItem("1", "1 minute"), new ToastSelectionBoxItem("2", "2 minutes"), new ToastSelectionBoxItem("5", "5 minutes") } } }, Buttons = { new ToastButtonSnooze() { SelectionBoxId = SELECTION_BOX_SNOOZE_TIME_ID }, new ToastButton("Mark Complete", new MarkCompleteArguments() { TaskId = task.Id }.ToString()) { ActivationType = ToastActivationType.Background } } } }; return(content.GetXml()); }
public void MarkIncomplete(DataItemTask task) { SetCompletionStatus(task, false); }
public void MarkComplete(DataItemTask task) { SetCompletionStatus(task, true); }