コード例 #1
0
        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();
        }
コード例 #2
0
        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;
        }
コード例 #3
0
ファイル: TodoApp.cs プロジェクト: HeleusCore/Heleus.Todo
 public QueryTodoListEvent(QueryTodoResult result, TodoList todoList)
 {
     Result   = result;
     TodoList = todoList;
 }
コード例 #4
0
ファイル: TodoApp.cs プロジェクト: HeleusCore/Heleus.Todo
 public static string GetTodoListName(TodoList list)
 {
     return(list?.Name ?? Tr.Get("Common.MyTodoList"));
 }
コード例 #5
0
ファイル: TodoApp.cs プロジェクト: HeleusCore/Heleus.Todo
 public TodoListSubmitAccount(ServiceNode serviceNode, TodoList todoList, short keyIndex) : base(serviceNode, todoList.ListId, keyIndex, todoList.Index, true)
 {
     _todoList = todoList;
 }
コード例 #6
0
        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);
        }
コード例 #7
0
        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();
        }