This commit introduces the AppDiagnostic project structure, including core components like `MainForm`, logging utilities (`LogAdapter`, `LogFilter`), and configuration files. It integrates with `log4net` for logging and uses `SharedComponents` for shared utilities.
92 lines
3.4 KiB
C#
92 lines
3.4 KiB
C#
using SharedComponents;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace AppDiagnostic
|
|
{
|
|
public class LogFilter
|
|
{
|
|
private ListView _listView;
|
|
private string _filterText = string.Empty; // Pre uloženie aktuálneho filtrovaného reťazca
|
|
|
|
// Konstruktor
|
|
public LogFilter(ListView listView)
|
|
{
|
|
_listView = listView;
|
|
}
|
|
|
|
// Metóda na aplikovanie filtra na ListView
|
|
public void ApplyFilter(string filterText)
|
|
{
|
|
_filterText = filterText.ToLower(); // Ukladáme text filtra bez ohľadu na veľkosť písmen
|
|
|
|
// Po aplikovaní filtra obnovíme zobrazenie
|
|
RefreshListView();
|
|
}
|
|
|
|
public void RefreshListView()
|
|
{
|
|
try
|
|
{
|
|
// Skontrolujeme, či sme na hlavnom vlákne a v prípade potreby použijeme Invoke
|
|
if (_listView.InvokeRequired)
|
|
{
|
|
// Použijeme Invoke, ak nie sme na hlavnom vlákne
|
|
_listView.Invoke(new Action(RefreshListView));
|
|
}
|
|
else
|
|
{
|
|
// Vymazanie existujúcich položiek
|
|
_listView.Items.Clear();
|
|
|
|
// Načítame všetky logy (ideálne z cache alebo databázy)
|
|
var logs = LiveLogCache.Instance.GetLogs(0, LiveLogCache.Instance.Logs.Count);
|
|
|
|
// Pridáme len tie logy, ktoré spĺňajú filter
|
|
foreach (var log in logs)
|
|
{
|
|
if (log.ToLower().Contains(_filterText)) // Kontrola, či log obsahuje filter text
|
|
{
|
|
var listViewItem = new ListViewItem(log);
|
|
|
|
// Striedanie farieb riadkov
|
|
if (_listView.Items.Count % 2 == 0) // Párny index => biela
|
|
{
|
|
listViewItem.BackColor = Color.White;
|
|
}
|
|
else // Nepárny index => svetlá sivá
|
|
{
|
|
listViewItem.BackColor = Color.FromArgb(240, 240, 240); // Veľmi svetlá sivá
|
|
}
|
|
|
|
// Pridanie efektu pre novú položku
|
|
ApplyNewItemEffect(listViewItem);
|
|
|
|
// Pridanie položky do ListView
|
|
_listView.Items.Add(listViewItem);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
// Zachytíme výnimku, ak sa niečo pokazí, a zobrazíme ju užívateľovi
|
|
MessageBox.Show($"An error occurred while refreshing the log view: {ex.Message}", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
// Môžete pridať ďalšie metódy na zobrazenie alebo efekt pre nové položky, ak je to potrebné
|
|
private void ApplyNewItemEffect(ListViewItem item)
|
|
{
|
|
// Prípadný efekt pre nový pridaný log
|
|
// Môžete pridať animáciu alebo zmenu farby atď.
|
|
item.ForeColor = Color.Green; // Napríklad zmeníme farbu písma na zelenú
|
|
}
|
|
}
|
|
}
|