Пример #1
0
        async Task TaskAction(ButtonRow arg)
        {
            var item = arg.Tag as Tuple <TodoList, TodoTask>;

            await TodoListPage.TaskAction(this, item.Item2, item.Item1);
        }
Пример #2
0
        void SetupRecentTasks()
        {
            {
                var tasks = new List <Tuple <TodoList, TodoTask> >();
                var ids   = new HashSet <long>();
                foreach (var serviceNode in ServiceNodeManager.Current.ServiceNodes)
                {
                    var todo = TodoApp.Current.GetTodo(serviceNode);
                    if (todo != null)
                    {
                        foreach (var todoList in todo.TodoLists)
                        {
                            var listTasks = todoList.GetTasks(TodoTaskStatusTypes.Open, TodoListSortMethod.Ignored);
                            foreach (var task in listTasks)
                            {
                                if (!ids.Contains(task.CurrentTaskStorage.TransactionId))
                                {
                                    tasks.Add(Tuple.Create(todoList, task));
                                    ids.Add(task.CurrentTaskStorage.TransactionId);
                                }
                            }
                        }
                    }
                }

                tasks.Sort((a, b) => b.Item2.CurrentTaskStorage.TransactionId.CompareTo(a.Item2.CurrentTaskStorage.TransactionId));

                if (tasks.Count > 0)
                {
                    var header = GetRow <HeaderRow>("RecentTasks");
                    if (header == null)
                    {
                        AddIndex       = GetRow("TodoLists");
                        AddIndexBefore = true;

                        header = AddHeaderRow("RecentTasks");
                        var b = AddButtonRow("NewTask", NewTask);
                        b.SetDetailViewIcon(Icons.Plus);
                        b.RowStyle = Theme.SubmitButton;
                        AddFooterRow();
                    }

                    var rows     = GetHeaderSectionRows(header);
                    var rowIndex = 0;

                    AddIndexBefore = false;
                    AddIndex       = header;

                    foreach (var task in tasks)
                    {
                        if (!(rowIndex < rows.Count && rows[rowIndex] is ButtonRow button && button.Tag is Tuple <TodoList, TodoTask>))
                        {
                            button = AddButtonRow(null, TaskAction);
                            button.SetDetailViewIcon(Icons.Circle);
                        }

                        if (button.Label.Text != task.Item2.Text)
                        {
                            button.Label.Text = task.Item2.Text;
                        }
                        button.Tag = task;
                        TodoListPage.UpdateTaskIcon(button, task.Item2);

                        AddIndex = button;
                        ++rowIndex;

                        if (rowIndex >= 4)
                        {
                            break;
                        }
                    }

                    for (var i = rowIndex; i < rows.Count; i++)
                    {
                        if (rows[i] is ButtonRow button && button.Tag is Tuple <TodoList, TodoTask> )
                        {
                            RemoveView(button);
                        }
                    }
                }
            }
        }