Skip to content

Commit 3e79760

Browse files
committed
* Added some more GUI component functions
* Added ability to remove logs depending on their type * Added button to clear application logs in Log window
1 parent 831f1d0 commit 3e79760

File tree

5 files changed

+55
-5
lines changed

5 files changed

+55
-5
lines changed

MemPlus/Classes/LOG/LogController.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,12 @@ public class LogController
99
internal delegate void LogAdded(Log l);
1010
internal delegate void LogDeleted(Log l);
1111
internal delegate void LogCleared();
12+
internal delegate void LogTypeCleared(List<Log> clearedList);
1213

1314
internal LogAdded LogAddedEvent;
1415
internal LogDeleted LogDeletedEvent;
1516
internal LogCleared LogClearedEvent;
17+
internal LogTypeCleared LogTypeClearedEvent;
1618

1719
internal LogController()
1820
{
@@ -38,6 +40,20 @@ internal void RemoveLog(Log l)
3840
}
3941
}
4042

43+
internal void ClearLogs(LogType logType)
44+
{
45+
List<Log> deleted = new List<Log>();
46+
47+
for (int i = _logList.Count - 1; i >= 0; i--)
48+
{
49+
if (_logList[i].LogType != logType) continue;
50+
deleted.Add(_logList[i]);
51+
_logList.RemoveAt(i);
52+
}
53+
54+
LogTypeClearedEvent?.Invoke(deleted);
55+
}
56+
4157
internal void ClearLogs()
4258
{
4359
_logList.Clear();

MemPlus/Windows/ApplicationLogWindow.xaml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,13 +4,12 @@
44
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
55
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
66
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
7-
xmlns:local="clr-namespace:MemPlus.Windows"
87
xmlns:syncfusion="http://schemas.syncfusion.com/wpf"
98
mc:Ignorable="d"
109
UseLayoutRounding="True"
1110
WindowStartupLocation="CenterScreen"
1211
TitleTextAlignment="Center"
13-
Title="MemPlus - Application Logs" Height="300" Width="300" Icon="/MemPlus;component/Resources/ram.png">
12+
Title="MemPlus - Application Logs" Height="300" Width="450" Icon="/MemPlus;component/Resources/ram.png">
1413
<Grid>
1514
<Grid.RowDefinitions>
1615
<RowDefinition></RowDefinition>
@@ -24,5 +23,7 @@
2423
</GridView>
2524
</ListView.View>
2625
</ListView>
26+
27+
<Button Grid.Row="1" MinHeight="25" Margin="5" Content="Clear logs" Click="BtnClear_OnClick" />
2728
</Grid>
2829
</syncfusion:ChromelessWindow>

MemPlus/Windows/ApplicationLogWindow.xaml.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
2+
using System.Collections.Generic;
23
using System.Linq;
4+
using System.Windows;
35
using System.Windows.Controls;
46
using System.Windows.Controls.Primitives;
57
using MemPlus.Classes;
@@ -33,10 +35,19 @@ public ApplicationLogWindow(LogController logController)
3335
_logController.LogAddedEvent += LogAddedEvent;
3436
_logController.LogClearedEvent += LogClearedEvent;
3537
_logController.LogDeletedEvent += LogDeletedEvent;
38+
_logController.LogTypeClearedEvent += LogTypeClearedEvent;
3639

3740
_autoScroll = true;
3841
}
3942

43+
private void LogTypeClearedEvent(List<Log> clearedList)
44+
{
45+
foreach (Log l in clearedList)
46+
{
47+
LsvLogs.Items.Remove(l);
48+
}
49+
}
50+
4051
private void FillLogView()
4152
{
4253
foreach (Log l in _logController.GetLogs().Where(l => l.LogType == LogType.Application))
@@ -84,5 +95,10 @@ private void LsvLogs_OnScroll(object sender, ScrollEventArgs e)
8495
return;
8596
_autoScroll = Math.Abs(sb.Value - sb.Maximum) < 1;
8697
}
98+
99+
private void BtnClear_OnClick(object sender, RoutedEventArgs e)
100+
{
101+
_logController.ClearLogs(LogType.Application);
102+
}
87103
}
88104
}

MemPlus/Windows/MainWindow.xaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
</MenuItem>
3838
<Separator />
3939
<MenuItem Header="GUI">
40-
<MenuItem Header="Always on top" IsCheckable="True" />
40+
<MenuItem x:Name="MniOnTop" Header="Always on top" IsCheckable="True" Checked="OnTopMenuItem_OnCheckedChanged" Unchecked="OnTopMenuItem_OnCheckedChanged" />
4141
</MenuItem>
4242
<MenuItem Header="Settings" />
4343
</MenuItem>
@@ -47,7 +47,7 @@
4747
<Separator />
4848
<MenuItem Header="Check for updates" />
4949
<Separator />
50-
<MenuItem Header="Homepage" />
50+
<MenuItem Header="Homepage" Click="HomePageMenuItem_OnClick" />
5151
<MenuItem Header="License" />
5252
<Separator />
5353
<MenuItem Header="Donate" />

MemPlus/Windows/MainWindow.xaml.cs

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,24 @@ private void ExitMenuItem_OnClick(object sender, RoutedEventArgs e)
9999

100100
private void ApplicationLogsMenuItem_OnClick(object sender, RoutedEventArgs e)
101101
{
102-
new ApplicationLogWindow(_logController).ShowDialog();
102+
new ApplicationLogWindow(_logController).Show();
103+
}
104+
105+
private void OnTopMenuItem_OnCheckedChanged(object sender, RoutedEventArgs e)
106+
{
107+
Topmost = MniOnTop.IsChecked;
108+
}
109+
110+
private void HomePageMenuItem_OnClick(object sender, RoutedEventArgs e)
111+
{
112+
try
113+
{
114+
System.Diagnostics.Process.Start("https://codedead.com/");
115+
}
116+
catch (Exception ex)
117+
{
118+
MessageBox.Show(ex.Message, "MemPlus", MessageBoxButton.OK, MessageBoxImage.Error);
119+
}
103120
}
104121
}
105122
}

0 commit comments

Comments
 (0)