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)); }
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); } } }