private int InsertEvents(EventRecord[] eventRecords, int prevEventsCount) { // конвертируем события в элементы списка var lviBuf = new ListViewItem[eventRecords.Length]; for (int i = 0; i < eventRecords.Length; i++) { lviBuf[i] = new ListViewItem(); lviBuf[i].Text = eventRecords[i].Timestamp.ToString("dd MMM yyyy HH:mm:ss"); lviBuf[i].ImageIndex = (int)eventRecords[i].EventType - 1; lviBuf[i].SubItems.Add(eventRecords[i].Source); lviBuf[i].SubItems.Add(EventTypeConvertor.ConvertFrom(eventRecords[i].EventType)); lviBuf[i].SubItems.Add(eventRecords[i].Text[0]); lviBuf[i].Tag = eventRecords[i]; } prevEventsCount += eventRecords.Length; _guiSyncContext.Send((state) => { _lv.Items.AddRange(lviBuf); if (_notifyOnReloadProgress) { _sourceConnector.ReloadProgress(prevEventsCount); } }, null); return(prevEventsCount); }
/// <summary> /// Преобразование комбинации флагов фильтра типов событий в список строк /// </summary> /// <param name="eventTypes">Список допустимых типов событий</param> private List <string> EventsToStrings(EventType[] eventTypes) { List <string> eventsToPass = new List <string>(); if (eventTypes != null) { foreach (EventType et in eventTypes) { eventsToPass.Add(EventTypeConvertor.ConvertFrom(et)); } } return(eventsToPass); }
/// <summary> /// Инициализация элементов управления данными записи /// </summary> /// <param name="eventRecord">Ссылка на интерфейс записи</param> private void InitializeControls(EventRecord eventRecord) { // проверяем валидность интерфейса if (eventRecord == null) { throw new ArgumentNullException("eventRecord"); } // дата и время lblDateTime.Text = string.Format("Дата и время: {0}", eventRecord.Timestamp.ToString("dd MMM yyyy HH:mm:ss")); // источник события lblSource.Text = string.Format("Приложение: {0}", eventRecord.Source); // тип события lblEventType.Text = string.Format("Тип: {0}", EventTypeConvertor.ConvertFrom(eventRecord.EventType)); // текст события tbText.Lines = eventRecord.Text.ToArray(); tbText.SelectionStart = 0; }
/// <summary> /// Запись данных события /// </summary> /// <param name="record">Запись кассового лога</param> /// <param name="textWriter">Объект для записи данных</param> internal static void Save(EventRecord record, TextWriter textWriter) { // каждую строку текста события записываем в отдельную позицию лога // многострочный текст определяется одним идентификатором foreach (var line in record.Text) { var logLine = new StringBuilder(); // идентификатор logLine.Append(record.Id.Replace(Dash, string.Empty)); // табуляция logLine.Append(Tab); // дата logLine.Append(record.Timestamp.ToString("dd.MM.yyyy")); // табуляция logLine.Append(Tab); // время logLine.Append(record.Timestamp.ToString("HH.mm.ss")); // табуляция logLine.Append(Tab); // источник события // выравниваем по левому краю до 15 символов logLine.Append(record.Source.PadRight(15)); // табуляция logLine.Append(Tab); // тип события logLine.Append(EventTypeConvertor.ConvertFrom(record.EventType).PadRight(15)); // табуляция logLine.Append(Tab); // строка текста события logLine.Append(line); // запись строки в лог textWriter.WriteLine(logLine.ToString()); } }