109 lines
3.8 KiB
C#
109 lines
3.8 KiB
C#
///
|
|
/// Copyright (c) 2020-2022 Sensus Slovensko a.s.
|
|
///
|
|
using System;
|
|
using System.Windows.Forms;
|
|
using Common;
|
|
using Common.Forms;
|
|
using TBF.Resources;
|
|
using TBF.UiBridge;
|
|
|
|
namespace TBF.UI.EventLogs
|
|
{
|
|
public partial class EventLogsTabPageCtrl : UserControl
|
|
{
|
|
/// <summary> eventsListView columns </summary>
|
|
enum Column
|
|
{
|
|
DateTime,
|
|
Source,
|
|
Class,
|
|
Severity,
|
|
Message,
|
|
Count
|
|
}
|
|
|
|
MySortOrder sortOrder = MySortOrder.Ascending;
|
|
int sortColumn = -1; /// 0-based index of column to be used for sorting
|
|
|
|
|
|
public EventLogsTabPageCtrl()
|
|
{
|
|
InitializeComponent();
|
|
|
|
int currentDpi = (int)this.CreateGraphics().DpiX;
|
|
eventsListView.Columns.Add(Strings.Date_time, 100 * currentDpi / Constants.Dpi100pct);
|
|
eventsListView.Columns.Add(Strings.Source, 100 * currentDpi / Constants.Dpi100pct);
|
|
eventsListView.Columns.Add(Strings.Class, 85 * currentDpi / Constants.Dpi100pct);
|
|
eventsListView.Columns.Add(Strings.Severity, 70 * currentDpi / Constants.Dpi100pct);
|
|
eventsListView.Columns.Add(Strings.Message, 500 * currentDpi / Constants.Dpi100pct);
|
|
|
|
if (SharedDatabase.EventsDB.RecentEvents != null)
|
|
{
|
|
foreach (var e in SharedDatabase.EventsDB.RecentEvents)
|
|
{
|
|
DrawOneEvent(e);
|
|
}
|
|
}
|
|
|
|
Bridge.EventHandler += delegate(object sender, EventEventArgs args)
|
|
{
|
|
if (InvokeRequired) { Invoke(new EventHandler<EventEventArgs>(OnEvent), sender, args); }
|
|
else { OnEvent(sender, args); }
|
|
};
|
|
}
|
|
|
|
void OnEvent(object sender, EventEventArgs args)
|
|
{
|
|
DrawOneEvent(args.Evnt);
|
|
}
|
|
|
|
void DrawOneEvent(SharedDatabase.Entities.Event evnt)
|
|
{
|
|
ListViewItem lvi = new ListViewItem(evnt.TimeStamp.ToString("dd.MM.yyyy HH:mm"));
|
|
lvi.Tag = evnt;
|
|
lvi.SubItems.Add(evnt.Source);
|
|
lvi.SubItems.Add(evnt.EventClass.ToString());
|
|
{
|
|
lvi.UseItemStyleForSubItems = false;
|
|
lvi.SubItems.Add(evnt.Severity.ToString());
|
|
lvi.SubItems[lvi.SubItems.Count - 1].BackColor = SharedDatabase.Utils.GetSeverityColor(evnt.Severity);
|
|
lvi.SubItems[lvi.SubItems.Count - 1].ForeColor = SharedDatabase.Utils.GetSeverityColor(evnt.Severity, true);
|
|
}
|
|
lvi.SubItems.Add(evnt.Message);
|
|
eventsListView.Items.Add(lvi);
|
|
}
|
|
|
|
private void eventsListView_ColumnClick(object sender, ColumnClickEventArgs e)
|
|
{
|
|
if (e.Column == sortColumn)
|
|
{
|
|
sortOrder = (sortOrder == MySortOrder.Ascending) ? MySortOrder.Descending : MySortOrder.Ascending;
|
|
}
|
|
else
|
|
{
|
|
/// Clicked on another column header => set sortOrder to SortOrder.Ascending
|
|
sortColumn = e.Column;
|
|
sortOrder = MySortOrder.Ascending;
|
|
}
|
|
|
|
switch ((Column)sortColumn)
|
|
{
|
|
default:
|
|
case Column.DateTime:
|
|
eventsListView.ListViewItemSorter = new LviDateTimeColumnComparer(sortColumn, sortOrder);
|
|
break;
|
|
case Column.Source:
|
|
case Column.Class:
|
|
case Column.Severity:
|
|
case Column.Message:
|
|
eventsListView.ListViewItemSorter = new LviTextColumnComparer(sortColumn, sortOrder);
|
|
break;
|
|
}
|
|
|
|
eventsListView.SetSortIcon(sortColumn, sortOrder);
|
|
eventsListView.Sort();
|
|
}
|
|
}
|
|
}
|