Skip to content

Commit 498425a

Browse files
committed
filtering
1 parent 7878178 commit 498425a

5 files changed

Lines changed: 113 additions & 19 deletions

File tree

SdrsDecoder.Plugin/PocsagControl.Designer.cs

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

SdrsDecoder.Plugin/PocsagControl.cs

Lines changed: 48 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ public PocsagControl(ISharpControl control)
8181

8282
this.modeSelector.SelectedIndex = this.modeSelector.FindStringExact(this.Settings.SelectedMode);
8383

84+
this.textBoxFilter.Text = this.Settings.Filter;
85+
8486
this.checkBoxDeDuplicate.Click +=
8587
(object sender, EventArgs e) =>
8688
{
@@ -126,6 +128,11 @@ public PocsagControl(ISharpControl control)
126128
this.processor.ChangeMode(value);
127129
};
128130

131+
this.textBoxFilter.TextChanged += (object sender, EventArgs e) =>
132+
{
133+
this.Settings.Filter = this.textBoxFilter.Text;
134+
};
135+
129136
this.UpdateMultilineMode();
130137
}
131138

@@ -150,7 +157,7 @@ private string CsvifyText(string source)
150157
return result;
151158
}
152159

153-
private void LogMessage(MessageBase message)
160+
private void LogMessage(MessageBase message, string fileNameSuffix = "")
154161
{
155162
var directory = "sdrs-log";
156163

@@ -159,7 +166,7 @@ private void LogMessage(MessageBase message)
159166
Directory.CreateDirectory(directory);
160167
}
161168

162-
var filename = DateTime.Now.ToString("yyyy-MM-dd") + ".csv";
169+
var filename = DateTime.Now.ToString("yyyy-MM-dd") + fileNameSuffix + ".csv";
163170

164171
var path = $"{directory}/{filename}";
165172

@@ -204,26 +211,57 @@ private void MessageReceived(MessageBase message)
204211
return;
205212
}
206213

214+
var filter = this.Settings.Filter;
215+
var filterOn = !string.IsNullOrWhiteSpace(filter);
216+
var filterMatched = false;
217+
218+
if (filterOn)
219+
{
220+
var filterElements = filter.Split(",");
221+
222+
foreach (var filterElement in filterElements)
223+
{
224+
if (message.Address.Contains(filterElement, StringComparison.InvariantCultureIgnoreCase) || message.Payload.Contains(filterElement, StringComparison.InvariantCultureIgnoreCase))
225+
{
226+
filterMatched = true;
227+
break;
228+
}
229+
}
230+
}
231+
232+
var messageValidForFilter = filterOn && filterMatched;
233+
207234
int firstDisplayed = this.dataGridView1.FirstDisplayedScrollingRowIndex;
208235
int displayed = this.dataGridView1.DisplayedRowCount(true);
209236
int lastVisible = (firstDisplayed + displayed) - 1;
210237
int lastIndex = this.dataGridView1.RowCount - 1;
211238

212-
this.bindingList.Add(message);
213-
214-
while (this.bindingList.Count > 1000)
239+
if (messageValidForFilter || !filterOn)
215240
{
216-
this.bindingList.RemoveAt(0);
217-
}
241+
this.bindingList.Add(message);
218242

219-
if (lastVisible == lastIndex)
220-
{
221-
this.dataGridView1.FirstDisplayedScrollingRowIndex = firstDisplayed + 1;
243+
while (this.bindingList.Count > 1000)
244+
{
245+
this.bindingList.RemoveAt(0);
246+
}
247+
248+
if (lastVisible == lastIndex)
249+
{
250+
this.dataGridView1.FirstDisplayedScrollingRowIndex = firstDisplayed + 1;
251+
}
222252
}
223253

254+
224255
if (this.Settings.Logging)
225256
{
257+
// log everything to main log
226258
this.LogMessage(message);
259+
260+
// log filtered stuff to filtered log
261+
if (messageValidForFilter)
262+
{
263+
this.LogMessage(message, "-filtered");
264+
}
227265
}
228266
}),
229267
new object[] { message });

SdrsDecoder.Plugin/PocsagControl.resx

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,6 +135,27 @@
135135
<metadata name="Payload.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
136136
<value>True</value>
137137
</metadata>
138+
<metadata name="Timestamp.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
139+
<value>True</value>
140+
</metadata>
141+
<metadata name="Protocol.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
142+
<value>True</value>
143+
</metadata>
144+
<metadata name="Address.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
145+
<value>True</value>
146+
</metadata>
147+
<metadata name="Errors.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
148+
<value>True</value>
149+
</metadata>
150+
<metadata name="Type.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
151+
<value>True</value>
152+
</metadata>
153+
<metadata name="Payload.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
154+
<value>True</value>
155+
</metadata>
156+
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
157+
<value>17, 17</value>
158+
</metadata>
138159
<metadata name="toolTip1.TrayLocation" type="System.Drawing.Point, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
139160
<value>17, 17</value>
140161
</metadata>

SdrsDecoder.Plugin/PocsagSettings.cs

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,6 @@
11
namespace SdrsDecoder.Plugin
22
{
33
using SDRSharp.Radio;
4-
using System;
5-
using System.Collections.Generic;
6-
using System.Linq;
7-
using System.Text;
8-
using System.Threading.Tasks;
94

105

116
public class PocsagSettings
@@ -69,5 +64,17 @@ public bool Logging
6964
Utils.SaveSetting("plugin.pocsag.Logging", value);
7065
}
7166
}
67+
68+
public string Filter
69+
{
70+
get
71+
{
72+
return Utils.GetStringSetting("plugin.pocsag.Filter", "");
73+
}
74+
set
75+
{
76+
Utils.SaveSetting("plugin.pocsag.Filter", value);
77+
}
78+
}
7279
}
7380
}

SdrsDecoder.Plugin/SdrsDecoder.Plugin.csproj.user

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,9 @@
66
<SubType>UserControl</SubType>
77
</Compile>
88
</ItemGroup>
9+
<ItemGroup>
10+
<EmbeddedResource Update="PocsagControl.resx">
11+
<SubType>Designer</SubType>
12+
</EmbeddedResource>
13+
</ItemGroup>
914
</Project>

0 commit comments

Comments
 (0)