Пример #1
0
        public TodoItemHistoryView(IRecordStorage storage) : base("TodoHistoryView")
        {
            if (storage.GetRecordType() == TodoRecordTypes.Task)
            {
                AddRow("Item", (storage as TodoRecordStorage <TodoTaskRecord>).Record.Text);
            }
            else if (storage.GetRecordType() == TodoRecordTypes.TaskStatus)
            {
                AddRow("Status", Tr.Get("ItemStatusTypes." + (storage as TodoRecordStorage <TodoTaskStatusRecord>).Record.Status));
            }

            AddLastRow("Timestamp", Time.DateTimeString(storage.Timestamp));
        }
Пример #2
0
        void Process(IRecordStorage storage)
        {
            LastProcessedTransactionId = Math.Max(storage.TransactionId, LastProcessedTransactionId);
            _historyTransactionIds.Add(storage.TransactionId);

            if (storage.GetRecordType() == TodoRecordTypes.ListName)
            {
                var nameRecord = storage as TodoRecordStorage <TodoListNameRecord>;
                if (CurrentListNameRecord != null)
                {
                    if (storage.TransactionId > CurrentListNameRecord.TransactionId)
                    {
                        CurrentListNameRecord = nameRecord;
                    }
                }
                else
                {
                    CurrentListNameRecord = nameRecord;
                }
            }
            else if (storage.GetRecordType() == TodoRecordTypes.Task)
            {
                var itemRecord = storage as TodoRecordStorage <TodoTaskRecord>;

                _items.TryGetValue(itemRecord.TargetedTransactionId, out var item);
                if (item == null)
                {
                    _items[itemRecord.TransactionId] = new TodoTask(itemRecord);
                }
                else
                {
                    item.Update(itemRecord);
                }
            }
            else if (storage.GetRecordType() == TodoRecordTypes.TaskStatus)
            {
                var statusRecord = storage as TodoRecordStorage <TodoTaskStatusRecord>;
                if (_items.TryGetValue(statusRecord.TargetedTransactionId, out var item))
                {
                    item.Update(statusRecord);
                }
            }
        }