public override async Task InitAsync() { if (!IsBusy) { return; } var name = TodoApp.GetTodoListName(null); var nameId = await Group.DownloadIndexLastTransactionInfo(_serviceNode.Client, Chain.ChainType.Data, _serviceNode.ChainId, TodoServiceInfo.TodoDataChainIndex, _invitation.ListId, TodoServiceInfo.TodoListNameIndex); if (nameId?.Item?.TransactionId != Operation.InvalidTransactionId) { var nameTransaction = (await _serviceNode.Client.DownloadDataTransactionItem(_serviceNode.ChainId, TodoServiceInfo.TodoDataChainIndex, nameId.Item.TransactionId)).Data?.Transaction; if (nameTransaction != null) { var encryptedRecord = TodoList.GetEncrytpedTodoRedord <TodoListNameRecord>(nameTransaction); var record = await encryptedRecord.GetRecord(_invitation.SecretKey); if (record != null) { name = record.Name; } } } IsBusy = false; AddViewRow(new InvitationView(name, _invitation.SenderAccountId)); AddButtonRow("Profile", Profile); AddSubmitRow("Submit", Submit); AddHeaderRow("Common.SubmitAccount"); _submitAccount = AddRow(new SubmitAccountButtonRow(this, () => _serviceNode.GetSubmitAccounts <SubmitAccount>(TodoServiceInfo.TodoSubmitIndex))); AddInfoRow("Common.SubmitAccountInfo"); AddFooterRow(); }
async Task BuildTransactionInfo() { AddIndex = _transactionInfo; var transactionData = await _todoList.ServiceNode.GetTransactionDownloadManager(TodoServiceInfo.TodoDataChainIndex).DownloadTransaction(_task.CurrentTaskStorage.TransactionId); if (transactionData.Ok && transactionData.Transactions.Count == 1) { var transaction = transactionData.Transactions[0].Transaction; AddIndex = AddViewRow(new DataTransactionView(transaction)); var encryptedRecord = TodoList.GetEncrytpedTodoRedord <TodoTaskRecord>(transaction); if (encryptedRecord != null) { AddIndex = AddFooterRow(); AddIndex = AddHeaderRow("SecretKeyInfo"); AddViewRow(new SecretKeyView(encryptedRecord.KeyInfo, true)); } } AddIndex = null; }
public QueryTodoListEvent(QueryTodoResult result, TodoList todoList) { Result = result; TodoList = todoList; }
public static string GetTodoListName(TodoList list) { return(list?.Name ?? Tr.Get("Common.MyTodoList")); }
public TodoListSubmitAccount(ServiceNode serviceNode, TodoList todoList, short keyIndex) : base(serviceNode, todoList.ListId, keyIndex, todoList.Index, true) { _todoList = todoList; }
public InvitationPage(ServiceNode serviceNode, long todoListId, long accountId = 0) : base("InvitationPage") { Subscribe <TodoListInvitationSentEvent>(InvitationResult); EnableStatus(); AddTitleRow("Title"); var todo = TodoApp.Current.GetTodo(serviceNode); if (todo.TodoLists.Count == 0) { AddInfoRow("NoLists"); return; } AddHeaderRow("List"); TodoList @default = null; var listSelection = new SelectionItemList <TodoList>(); foreach (var list in todo.TodoLists) { listSelection.Add(new SelectionItem <TodoList>(list, TodoApp.GetTodoListName(list))); if (list.ListId == todoListId) { @default = list; } } _listSelection = AddSelectionRows(listSelection, @default); _listSelection.SelectionChanged = SelectionChanged; Status.Add(T("ListStatus"), (sv) => { return(_listSelection.Selection != null); }); AddFooterRow(); AddHeaderRow("AccountId"); _accountId = AddEntryRow(accountId > 0 ? accountId.ToString() : null, "AccountId"); Status.Add(_accountId.Edit, T("AccountStatus"), (sv, edit, n, o) => { var valid = StatusValidators.PositiveNumberValidator(sv, edit, n, o); if (_profile != null) { _profile.IsEnabled = valid; if (valid) { _profile.AccountId = long.Parse(n); } else { _profile.AccountId = 0; } } return(valid); }); _profile = AddRow(new ProfileButtonRow(0, Profile)); _profile.IsEnabled = accountId > 0; Status.AddBusyView(_profile); AddFooterRow(); AddIndex = AddSubmitRow("Submit", Submit); AddIndexBefore = true; _password = AddPasswordRow("", "Password"); Status.Add(_password.Edit, T("PasswordStatus"), (sv, edit, newtext, oldtext) => true); AddIndex = null; AddIndexBefore = false; AddHeaderRow("Common.SubmitAccount"); _submitAccount = AddRow(new SubmitAccountButtonRow <GroupSubmitAccount>(null, this, SelectSubmitAccount)); AddInfoRow("Common.SubmitAccountInfo"); AddFooterRow(); Status.Add(T("SubmitAccountStatus"), (sv) => { return(_submitAccount.SubmitAccount != null); }); SelectionChanged(@default); }
public TodoTaskPage(TodoList todoList, TodoTask task) : base("TodoTaskPage") { Subscribe <NewTodoTaskEvent>(TodoItem); Subscribe <TodoTaskStatusEvent>(TodoItemStatus); _todoList = todoList; _task = task; AddTitleRow("Title"); AddHeaderRow("StatusHeader"); var statusItems = new SelectionItemList <TodoTaskStatusTypes> { new SelectionItem <TodoTaskStatusTypes>(TodoTaskStatusTypes.Open, Tr.Get("ItemStatusTypes.Open")), new SelectionItem <TodoTaskStatusTypes>(TodoTaskStatusTypes.Closed, Tr.Get("ItemStatusTypes.Closed")) }; _status = AddSelectionRows(statusItems, task.Status); _status.SelectionChanged = StatusChanged; _statusButton = AddSubmitButtonRow("SubmitStatus", StatusButton); _statusButton.RowStyle = Theme.SubmitButton; _statusButton.IsEnabled = false; _status.Buttons[0].SetDetailViewIcon(Icons.Circle); _status.Buttons[1].SetDetailViewIcon(Icons.CircleCheck); foreach (var b in _status.Buttons) { Status.AddBusyView(b); } Status.AddBusyView(_statusButton); AddFooterRow(); if (task.Status == TodoTaskStatusTypes.Open) { AddHeaderRow("ItemHeader"); _text = AddEditorRow(task.Text, "Text"); _text.SetDetailViewIcon(Icons.Pencil); _text.Edit.TextChanged += Edit_TextChanged; _textButton = AddSubmitButtonRow("SubmitText", Submit); _textButton.RowStyle = Theme.SubmitButton; _textButton.IsEnabled = false; Status.AddBusyView(_text.Edit); Status.AddBusyView(_textButton); AddFooterRow(); } _history = AddHeaderRow("HistoryHeader"); AddFooterRow(); _transactionInfo = AddHeaderRow("TransactionInfo"); AddFooterRow(); AddHeaderRow("Common.SubmitAccount"); _submitAccount = AddRow(new SubmitAccountButtonRow <GroupSubmitAccount>(this, () => todoList.ServiceNode.GetSubmitAccounts <GroupSubmitAccount>(todoList.Index), todoList.ListId.ToString())); AddInfoRow("Common.SubmitAccountInfo"); AddFooterRow(); AddHeaderRow("DeleteHeader"); var delete = AddButtonRow("SubmitDelete", Delete); delete.RowStyle = Theme.CancelButton; delete.SetDetailViewIcon(Icons.TrashAlt); Status.AddBusyView(delete); AddFooterRow(); _ = BuildHistory(); }