public static Task <AdditionalDataTasks> UpdateTaskAsync(DataItemTask task)
 {
     return(Execute(delegate
     {
         return UpdateTaskHelper(task);
     }));
 }
示例#2
0
        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);
            }
        }
示例#3
0
 private void DataStore_OnTaskAdded(object sender, DataItemTask task)
 {
     if (_getCurrentTasksTask.IsCompleted)
     {
         var dontWait = ExecuteOnUI(delegate
         {
             AddTask(task);
         });
     }
 }
示例#4
0
        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);
        }
示例#5
0
        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);
        }
示例#6
0
        private void SetCompletionStatus(DataItemTask task, bool isComplete)
        {
            if (task.IsComplete == isComplete)
            {
                return;
            }

            task            = task.CreateDeepCopy();
            task.IsComplete = isComplete;

            DataStore.UpdateTaskAsync(task);
        }
示例#7
0
        /// <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);
            }));
        }
示例#10
0
        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;
            }));
        }
示例#13
0
        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());
        }
示例#14
0
 public void MarkIncomplete(DataItemTask task)
 {
     SetCompletionStatus(task, false);
 }
示例#15
0
 public void MarkComplete(DataItemTask task)
 {
     SetCompletionStatus(task, true);
 }