Skip to content

Commit c34e9f2

Browse files
committed
* Added context menu to listview
* Added functions * Added cancel image * Code cleanup * Design changes
1 parent dee9a67 commit c34e9f2

9 files changed

Lines changed: 76 additions & 18 deletions

File tree

Advanced PortChecker/Advanced PortChecker.csproj

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@
156156
<ItemGroup>
157157
<Resource Include="Resources\Images\copy.png" />
158158
</ItemGroup>
159+
<ItemGroup>
160+
<Resource Include="Resources\Images\cancel.png" />
161+
</ItemGroup>
159162
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
160163
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
161164
Other similar extension points exist, see Microsoft.Common.targets.

Advanced PortChecker/Classes/OperationInformation.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,6 @@ internal class OperationInformation
1111

1212
public IProgress<int> Progress { get; set; }
1313

14-
public IProgress<LvCheck> Preview { get; set; }
14+
public IProgress<LvCheck> ItemProgress { get; set; }
1515
}
1616
}

Advanced PortChecker/Classes/PortChecker.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ await Task.Run(() =>
6969
{
7070
oi.Progress.Report(i);
7171
}
72-
oi.Preview.Report(check);
72+
oi.ItemProgress.Report(check);
7373
}
7474
});
7575
return lv;
@@ -106,7 +106,7 @@ await Task.Run(() =>
106106
{
107107
oi.Progress.Report(i);
108108
}
109-
oi.Preview.Report(check);
109+
oi.ItemProgress.Report(check);
110110
}
111111
});
112112
return lv;

Advanced PortChecker/Classes/Update.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ namespace Advanced_PortChecker.Classes
88
public class Update
99
{
1010
#region XML_Update
11-
1211
// ReSharper disable once UnassignedField.Global
1312
// ReSharper disable once MemberCanBePrivate.Global
1413
public int MajorVersion;
@@ -23,7 +22,6 @@ public class Update
2322
public int RevisionVersion;
2423
// ReSharper disable once UnassignedField.Global
2524
public string UpdateUrl;
26-
2725
#endregion
2826

2927
#region Assigned_Variables

Advanced PortChecker/Properties/Resources.Designer.cs

Lines changed: 10 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Advanced PortChecker/Properties/Resources.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@
118118
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
119119
</resheader>
120120
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
121+
<data name="cancel" type="System.Resources.ResXFileRef, System.Windows.Forms">
122+
<value>..\Resources\Images\cancel.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123+
</data>
121124
<data name="copy" type="System.Resources.ResXFileRef, System.Windows.Forms">
122125
<value>..\Resources\Images\copy.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a</value>
123126
</data>
3.12 KB
Loading

Advanced PortChecker/Windows/MainWindow.xaml

Lines changed: 28 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@
4040
</MenuItem>
4141
</MenuItem>
4242
<MenuItem Header="Edit">
43-
<MenuItem Header="Copy">
43+
<MenuItem Header="Copy item" Click="BtnCopy_Click">
4444
<MenuItem.Icon>
4545
<Image Width="16" Height="16" Source="../Resources/Images/copy.png"/>
4646
</MenuItem.Icon>
4747
</MenuItem>
4848
<Separator></Separator>
49-
<MenuItem Header="Delete item">
49+
<MenuItem Header="Delete item(s)" Click="BtnDelete_Click">
5050
<MenuItem.Icon>
5151
<Image Width="16" Height="16" Source="../Resources/Images/delete.png"/>
5252
</MenuItem.Icon>
@@ -56,6 +56,12 @@
5656
<Image Width="16" Height="16" Source="../Resources/Images/exit.png"/>
5757
</MenuItem.Icon>
5858
</MenuItem>
59+
<Separator></Separator>
60+
<MenuItem Header="Cancel operation" Click="BtnCancel_Click">
61+
<MenuItem.Icon>
62+
<Image Width="16" Height="16" Source="../Resources/Images/cancel.png"/>
63+
</MenuItem.Icon>
64+
</MenuItem>
5965
</MenuItem>
6066
<MenuItem Header="Tools">
6167
<MenuItem Header="Settings" Click="Settings_Click">
@@ -147,6 +153,26 @@
147153
<Setter Property="HorizontalContentAlignment" Value="Left" />
148154
</Style>
149155
</ListView.Resources>
156+
<ListView.ContextMenu>
157+
<ContextMenu>
158+
<MenuItem Header="Copy item" Click="BtnCopy_Click">
159+
<MenuItem.Icon>
160+
<Image Width="16" Height="16" Source="../Resources/Images/copy.png" />
161+
</MenuItem.Icon>
162+
</MenuItem>
163+
<Separator></Separator>
164+
<MenuItem Header="Delete item(s)" Click="BtnDelete_Click">
165+
<MenuItem.Icon>
166+
<Image Width="16" Height="16" Source="../Resources/Images/delete.png" />
167+
</MenuItem.Icon>
168+
</MenuItem>
169+
<MenuItem Header = "Delete all items" Click="BtnDeleteAllItems_Click">
170+
<MenuItem.Icon>
171+
<Image Width="16" Height="16" Source="../Resources/Images/exit.png" />
172+
</MenuItem.Icon>
173+
</MenuItem>
174+
</ContextMenu>
175+
</ListView.ContextMenu>
150176
<ListView.View>
151177
<GridView>
152178
<GridViewColumn Header="Address" DisplayMemberBinding="{Binding Address}" />

Advanced PortChecker/Windows/MainWindow.xaml.cs

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using System;
22
using System.Collections.Generic;
33
using System.Windows;
4+
using System.Windows.Controls;
45
using System.Windows.Shell;
56
using Advanced_PortChecker.Classes;
67

@@ -93,15 +94,14 @@ private async void BtnScan_Click(object sender, RoutedEventArgs e)
9394
TaskbarItemInfo.ProgressState = TaskbarItemProgressState.Normal;
9495
TaskbarItemInfo.ProgressValue = 0;
9596

96-
List<LvCheck> lv = new List<LvCheck>();
9797
_oI = new OperationInformation
9898
{
9999
Progress = new Progress<int>(value =>
100100
{
101101
PgbStatus.Value = value;
102102
TaskbarItemInfo.ProgressValue = value/(PgbStatus.Maximum - PgbStatus.Minimum);
103103
}),
104-
Preview = new Progress<LvCheck>(value => { LvPorts.Items.Add(value); }),
104+
ItemProgress = new Progress<LvCheck>(value => { LvPorts.Items.Add(value); }),
105105
IsCancelled = false
106106
};
107107

@@ -114,23 +114,17 @@ private async void BtnScan_Click(object sender, RoutedEventArgs e)
114114
switch (CbaMethod.Text)
115115
{
116116
case "TCP":
117-
lv = await PortChecker.CheckTCP(TxtAddress.Text, (int) IntStart.Value, (int) IntStop.Value, _oI, true);
117+
await PortChecker.CheckTCP(TxtAddress.Text, (int) IntStart.Value, (int) IntStop.Value, _oI, true);
118118
break;
119119
case "UDP":
120-
lv = await PortChecker.CheckUDP(TxtAddress.Text, (int) IntStart.Value, (int) IntStop.Value, _oI, true);
120+
await PortChecker.CheckUDP(TxtAddress.Text, (int) IntStart.Value, (int) IntStop.Value, _oI, true);
121121
break;
122122
case "Both":
123-
lv = await PortChecker.CheckTCPUDP(TxtAddress.Text, (int) IntStart.Value, (int) IntStop.Value, _oI);
123+
await PortChecker.CheckTCPUDP(TxtAddress.Text, (int) IntStart.Value, (int) IntStop.Value, _oI);
124124
break;
125125
}
126126
}
127127
}
128-
LvPorts.Items.Clear();
129-
foreach (LvCheck l in lv)
130-
{
131-
LvPorts.Items.Add(l);
132-
}
133-
134128
ControlsEnabled(true);
135129

136130
TaskbarItemInfo.ProgressState = TaskbarItemProgressState.None;
@@ -144,6 +138,8 @@ private void Exit_Click(object sender, RoutedEventArgs e)
144138

145139
private void BtnCancel_Click(object sender, RoutedEventArgs e)
146140
{
141+
if (_oI == null) return;
142+
147143
_oI.IsCancelled = true;
148144
ControlsEnabled(true);
149145

@@ -191,5 +187,27 @@ private void BtnDeleteAllItems_Click(object sender, RoutedEventArgs e)
191187
{
192188
LvPorts.Items.Clear();
193189
}
190+
191+
private void BtnDelete_Click(object sender, RoutedEventArgs e)
192+
{
193+
List<LvCheck> delete = new List<LvCheck>();
194+
foreach (LvCheck l in LvPorts.SelectedItems)
195+
{
196+
delete.Add(l);
197+
}
198+
199+
foreach (LvCheck lv in delete)
200+
{
201+
LvPorts.Items.Remove(lv);
202+
}
203+
}
204+
205+
private void BtnCopy_Click(object sender, RoutedEventArgs e)
206+
{
207+
if (LvPorts.SelectedItems.Count == 0) return;
208+
209+
LvCheck selected = (LvCheck)LvPorts.SelectedItems[0];
210+
Clipboard.SetText(selected.Address + " " + selected.Port + " " + selected.Type + " " + selected.Description);
211+
}
194212
}
195213
}

0 commit comments

Comments
 (0)