Fix rbnmonitor filter

Sometimes, some bands, it happens (here up in north Latitudes)
    	that source filtering EU is too wide area. What middle and south
    	EU can hear is not heard here.

    	- That's why added source callsign filter criteria.

    	You can define skimmers by countries using prefix, by callsign
    	area using prefix and number or by specific skimmer callsign
    	to get more narrower view what can be heard.

    	- Fixed filter criteria window object anchoring
    	- Fixed help (image)
This commit is contained in:
OH1KH 2023-01-26 08:37:41 +02:00
parent 98a8ba5d0d
commit 35e0fa64bf
5 changed files with 576 additions and 296 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 48 KiB

After

Width:  |  Height:  |  Size: 62 KiB

View File

@ -1,32 +1,50 @@
object frmRbnFilter: TfrmRbnFilter object frmRbnFilter: TfrmRbnFilter
Left = 364 Left = 433
Height = 608 Height = 641
Top = 74 Top = 48
Width = 684 Width = 684
BorderStyle = bsDialog BorderStyle = bsDialog
Caption = 'RBN filter criteria' Caption = 'RBN filter criteria'
ClientHeight = 608 ClientHeight = 641
ClientWidth = 684 ClientWidth = 684
OnShow = FormShow OnShow = FormShow
Position = poOwnerFormCenter Position = poOwnerFormCenter
LCLVersion = '2.0.4.0' LCLVersion = '2.2.4.0'
object GroupBox3: TGroupBox object grpDXStation: TGroupBox
Left = 8 AnchorSideLeft.Control = Owner
Height = 520 AnchorSideTop.Control = Owner
Top = 80 AnchorSideRight.Control = Owner
Width = 664 AnchorSideRight.Side = asrBottom
AnchorSideBottom.Control = Owner
AnchorSideBottom.Side = asrBottom
Left = 3
Height = 635
Top = 3
Width = 678
Anchors = [akTop, akLeft, akRight, akBottom]
BorderSpacing.Left = 3
BorderSpacing.Top = 3
BorderSpacing.Right = 3
BorderSpacing.Bottom = 3
Caption = 'DX station ' Caption = 'DX station '
ClientHeight = 502 ClientHeight = 617
ClientWidth = 662 ClientWidth = 676
TabOrder = 1 TabOrder = 0
object GroupBox5: TGroupBox object grpCallisgn: TGroupBox
Left = 8 AnchorSideLeft.Control = grpSource
AnchorSideTop.Control = edtDate
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = grpCallsignFrom
AnchorSideRight.Side = asrBottom
Left = 6
Height = 137 Height = 137
Top = 96 Top = 191
Width = 638 Width = 667
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Top = 6
Caption = ' Callsign ' Caption = ' Callsign '
ClientHeight = 119 ClientHeight = 119
ClientWidth = 636 ClientWidth = 665
TabOrder = 5 TabOrder = 5
object rbAllDx: TRadioButton object rbAllDx: TRadioButton
Left = 16 Left = 16
@ -89,316 +107,536 @@ object frmRbnFilter: TfrmRbnFilter
ParentColor = False ParentColor = False
end end
end end
object Label4: TLabel
Left = 8
Height = 17
Top = 252
Width = 67
Caption = 'Continent:'
ParentColor = False
end
object edtDXCont: TEdit
Left = 96
Height = 34
Top = 248
Width = 280
CharCase = ecUppercase
TabOrder = 6
Text = 'EDTDXCONT'
end
object edtDXBand: TEdit
Left = 96
Height = 34
Top = 280
Width = 368
CharCase = ecUppercase
TabOrder = 7
Text = 'EDTDXBAND'
end
object Label5: TLabel
Left = 8
Height = 17
Top = 285
Width = 44
Caption = 'Bands:'
ParentColor = False
end
object Label6: TLabel
Left = 520
Height = 17
Top = 285
Width = 100
Caption = '160M, 80M etc.'
ParentColor = False
end
object Label7: TLabel
Left = 8
Height = 17
Top = 317
Width = 47
Caption = 'Modes:'
ParentColor = False
end
object edtDXMode: TEdit
Left = 96
Height = 34
Top = 312
Width = 344
CharCase = ecUppercase
TabOrder = 8
Text = 'EDTDXMODE'
end
object Label8: TLabel
Left = 496
Height = 17
Top = 317
Width = 94
Caption = 'CW, RTTY etc.'
ParentColor = False
end
object rbIgnWkdHour: TRadioButton object rbIgnWkdHour: TRadioButton
Left = 8 AnchorSideLeft.Control = grpSource
AnchorSideTop.Control = edtLastHours
AnchorSideTop.Side = asrCenter
Left = 6
Height = 23 Height = 23
Top = 17 Top = 117
Width = 167 Width = 166
BorderSpacing.Top = 3
Caption = 'Ignore worked in last ' Caption = 'Ignore worked in last '
Checked = True Checked = True
TabOrder = 0 TabOrder = 0
TabStop = True TabStop = True
end end
object Bevel1: TBevel
Left = 8
Height = 2
Top = 456
Width = 638
end
object edtLastHours: TEdit object edtLastHours: TEdit
Left = 192 AnchorSideLeft.Control = edtDate
AnchorSideTop.Control = grpSource
AnchorSideTop.Side = asrBottom
Left = 169
Height = 34 Height = 34
Top = 16 Top = 111
Width = 41 Width = 41
BorderSpacing.Top = 3
TabOrder = 1 TabOrder = 1
Text = '48' Text = '48'
end end
object Label1: TLabel object lblIgnoreHours: TLabel
Left = 244 AnchorSideLeft.Control = edtLastHours
AnchorSideTop.Control = edtLastHours
AnchorSideTop.Side = asrCenter
Left = 175
Height = 17 Height = 17
Top = 21 Top = 120
Width = 226 Width = 226
BorderSpacing.Left = 6
Caption = 'hours on the same band and mode' Caption = 'hours on the same band and mode'
ParentColor = False ParentColor = False
end end
object rbIgnWkdDate: TRadioButton object rbIgnWkdDate: TRadioButton
Left = 8 AnchorSideLeft.Control = grpSource
AnchorSideTop.Control = edtDate
AnchorSideTop.Side = asrCenter
Left = 6
Height = 23 Height = 23
Top = 52 Top = 157
Width = 158 Width = 157
BorderSpacing.Top = 3
Caption = 'Ignore worked after ' Caption = 'Ignore worked after '
TabOrder = 2 TabOrder = 2
end end
object edtDate: TEdit object edtDate: TEdit
Left = 192 AnchorSideLeft.Control = rbIgnWkdDate
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtLastHours
AnchorSideTop.Side = asrBottom
Left = 169
Height = 34 Height = 34
Top = 51 Top = 151
Width = 96 Width = 119
BorderSpacing.Left = 6
BorderSpacing.Top = 6
TabOrder = 3 TabOrder = 3
Text = '2000-10-10' Text = '2000-10-10'
end end
object edtTime: TEdit object edtTime: TEdit
Left = 300 AnchorSideLeft.Control = edtDate
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDate
Left = 294
Height = 34 Height = 34
Top = 51 Top = 151
Width = 48 Width = 66
BorderSpacing.Left = 6
TabOrder = 4 TabOrder = 4
Text = '12:12' Text = '12:12'
end end
object Label2: TLabel object lblDateTimeFormat: TLabel
Left = 384 AnchorSideLeft.Control = edtTime
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtTime
AnchorSideTop.Side = asrCenter
Left = 369
Height = 17 Height = 17
Top = 56 Top = 160
Width = 150 Width = 150
BorderSpacing.Left = 9
Caption = '(YYYY-MM-DD, HH:MM)' Caption = '(YYYY-MM-DD, HH:MM)'
ParentColor = False ParentColor = False
end end
object Bevel2: TBevel
Left = 8
Height = 2
Top = 380
Width = 638
end
object chkOnlyeQSL: TCheckBox object chkOnlyeQSL: TCheckBox
Left = 8 AnchorSideLeft.Control = grpCallsignFrom
AnchorSideTop.Control = chkOnlyLoTW
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23 Height = 23
Top = 424 Top = 545
Width = 169 Width = 169
Caption = 'Show only eQSL users' Caption = 'Show only eQSL users'
TabOrder = 14 TabOrder = 7
end end
object chkOnlyLoTW: TCheckBox object chkOnlyLoTW: TCheckBox
Left = 8 AnchorSideLeft.Control = grpCallsignFrom
AnchorSideTop.Control = grpCallsignFrom
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23 Height = 23
Top = 392 Top = 522
Width = 172 Width = 172
BorderSpacing.Top = 6
Caption = 'Show only LoTW users' Caption = 'Show only LoTW users'
TabOrder = 13 TabOrder = 6
end end
object chkNewDXConly: TCheckBox object chkNewDXConly: TCheckBox
Left = 8 AnchorSideLeft.Control = grpCallsignFrom
AnchorSideTop.Control = Bevel1
AnchorSideTop.Side = asrBottom
Left = 6
Height = 23 Height = 23
Top = 465 Top = 585
Width = 431 Width = 431
BorderSpacing.Top = 6
Caption = 'Show only spots that are "New one"/"New band"/"New mode" ' Caption = 'Show only spots that are "New one"/"New band"/"New mode" '
TabOrder = 15 TabOrder = 8
end end
object edtDXCnty: TEdit object grpSource: TGroupBox
Left = 96 AnchorSideLeft.Control = grpDXStation
Height = 34 AnchorSideTop.Control = grpDXStation
Top = 344 Left = 6
Width = 184 Height = 105
CharCase = ecUppercase Top = 3
Width = 576
BorderSpacing.Left = 6
BorderSpacing.Top = 3
Caption = ' Source data from '
ClientHeight = 87
ClientWidth = 574
TabOrder = 9 TabOrder = 9
Text = 'EDTDXCNTY' object lblContent: TLabel
AnchorSideLeft.Control = grpSource
AnchorSideTop.Control = edtSrcCont
AnchorSideTop.Side = asrCenter
Left = 6
Height = 17
Top = 12
Width = 67
BorderSpacing.Left = 6
Caption = 'Continent:'
ParentColor = False
end
object edtSrcCont: TEdit
AnchorSideLeft.Control = lblContent
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpSource
Left = 79
Height = 34
Top = 3
Width = 280
BorderSpacing.Left = 6
BorderSpacing.Top = 3
CharCase = ecUppercase
TabOrder = 0
Text = 'EDTSRCCONT'
end
object lblContExample: TLabel
AnchorSideLeft.Control = btnSrcContAll
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblContent
AnchorSideTop.Side = asrCenter
Left = 415
Height = 17
Top = 12
Width = 93
BorderSpacing.Left = 6
Caption = 'AF, AN, AS etc'
ParentColor = False
end
object btnSrcContAll: TButton
AnchorSideLeft.Control = edtSrcCont
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtSrcCont
AnchorSideTop.Side = asrCenter
Left = 365
Height = 27
Top = 7
Width = 44
BorderSpacing.Left = 6
Caption = 'All'
OnClick = btnSrcContAllClick
TabOrder = 1
end
object lblSrcCall: TLabel
AnchorSideLeft.Control = lblContent
AnchorSideTop.Control = edtSrcCall
AnchorSideTop.Side = asrCenter
Left = 6
Height = 17
Top = 46
Width = 56
Caption = 'Callsign:'
ParentColor = False
end
object edtSrcCall: TEdit
AnchorSideLeft.Control = edtSrcCont
AnchorSideTop.Control = edtSrcCont
AnchorSideTop.Side = asrBottom
Left = 79
Height = 34
Hint = 'Start of callsign(s), or full callsign(s),c omma separated'
Top = 37
Width = 280
CharCase = ecUppercase
ParentShowHint = False
ShowHint = True
TabOrder = 2
Text = 'EDTSRCCALL'
end
object btnSrcCallAll: TButton
AnchorSideLeft.Control = edtSrcCont
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtSrcCall
AnchorSideTop.Side = asrCenter
Left = 365
Height = 27
Top = 41
Width = 44
BorderSpacing.Left = 6
Caption = 'All'
OnClick = btnSrcCallAllClick
TabOrder = 3
end
object lblCallExample: TLabel
AnchorSideLeft.Control = btnSrcContAll
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtSrcCall
AnchorSideTop.Side = asrCenter
Left = 415
Height = 17
Top = 46
Width = 136
BorderSpacing.Left = 6
Caption = 'OK, OH1, AB1CD, etc'
ParentColor = False
end
end end
object Label11: TLabel object grpCallsignFrom: TGroupBox
Left = 8 AnchorSideLeft.Control = grpCallisgn
Height = 17 AnchorSideTop.Control = grpCallisgn
Top = 349 AnchorSideTop.Side = asrBottom
Width = 66 AnchorSideRight.Control = grpDXStation
Caption = 'Countries:' AnchorSideRight.Side = asrBottom
ParentColor = False Left = 6
end Height = 185
object Label12: TLabel Top = 331
Left = 320 Width = 667
Height = 17 Anchors = [akTop, akLeft, akRight]
Top = 349 BorderSpacing.Top = 3
Width = 49 BorderSpacing.Right = 3
Caption = 'or NOT ' Caption = 'Callsign From'
ParentColor = False ClientHeight = 167
end ClientWidth = 665
object edtDXCNotCnty: TEdit
Left = 392
Height = 34
Top = 344
Width = 175
CharCase = ecUppercase
TabOrder = 11
Text = 'EDTDXCNOTCNTY'
end
object btnDXCCnty: TButton
Left = 280
Height = 25
Top = 345
Width = 30
Caption = '...'
OnClick = btnDXCCntyClick
TabOrder = 10 TabOrder = 10
object lblContinentFrom: TLabel
AnchorSideLeft.Control = grpCallsignFrom
AnchorSideTop.Control = edtDXCont
AnchorSideTop.Side = asrCenter
Left = 3
Height = 17
Top = 12
Width = 67
BorderSpacing.Left = 3
BorderSpacing.Top = 3
Caption = 'Continent:'
ParentColor = False
end
object edtDXCont: TEdit
AnchorSideLeft.Control = lblContinentFrom
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = grpCallsignFrom
Left = 94
Height = 34
Top = 3
Width = 280
BorderSpacing.Left = 24
BorderSpacing.Top = 3
CharCase = ecUppercase
TabOrder = 0
Text = 'EDTDXCONT'
end
object lblContExFrom: TLabel
AnchorSideLeft.Control = lblBandExFrom
AnchorSideTop.Control = edtDXCont
AnchorSideTop.Side = asrCenter
Left = 518
Height = 17
Top = 12
Width = 93
Caption = 'AF, AN, AS etc'
ParentColor = False
end
object lblBandFrom: TLabel
AnchorSideLeft.Control = lblContinentFrom
AnchorSideTop.Control = edtDXBand
AnchorSideTop.Side = asrCenter
Left = 3
Height = 17
Top = 46
Width = 44
Caption = 'Bands:'
ParentColor = False
end
object edtDXBand: TEdit
AnchorSideLeft.Control = edtDXCont
AnchorSideTop.Control = edtDXCont
AnchorSideTop.Side = asrBottom
Left = 94
Height = 34
Top = 37
Width = 368
CharCase = ecUppercase
TabOrder = 1
Text = 'EDTDXBAND'
end
object lblBandExFrom: TLabel
AnchorSideLeft.Control = btnDxBandsAll
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDXBand
AnchorSideTop.Side = asrCenter
Left = 518
Height = 17
Top = 46
Width = 100
BorderSpacing.Left = 12
Caption = '160M, 80M etc.'
ParentColor = False
end
object edtDXMode: TEdit
AnchorSideLeft.Control = edtDXBand
AnchorSideTop.Control = edtDXBand
AnchorSideTop.Side = asrBottom
Left = 94
Height = 34
Top = 71
Width = 344
CharCase = ecUppercase
TabOrder = 2
Text = 'EDTDXMODE'
end
object lblModeFrom: TLabel
AnchorSideLeft.Control = lblContinentFrom
AnchorSideTop.Control = edtDXMode
AnchorSideTop.Side = asrCenter
Left = 3
Height = 17
Top = 80
Width = 47
Caption = 'Modes:'
ParentColor = False
end
object Label8: TLabel
AnchorSideLeft.Control = lblBandExFrom
AnchorSideTop.Control = edtDXMode
AnchorSideTop.Side = asrCenter
Left = 518
Height = 17
Top = 80
Width = 95
Caption = 'CW, RTTY etc.'
ParentColor = False
end
object edtDXCnty: TEdit
AnchorSideLeft.Control = edtDXMode
AnchorSideTop.Control = edtDXMode
AnchorSideTop.Side = asrBottom
Left = 94
Height = 34
Top = 105
Width = 184
CharCase = ecUppercase
TabOrder = 3
Text = 'EDTDXCNTY'
end
object lblCountryFrom: TLabel
AnchorSideLeft.Control = lblContinentFrom
AnchorSideTop.Control = edtDXCnty
AnchorSideTop.Side = asrCenter
Left = 3
Height = 17
Top = 114
Width = 66
Caption = 'Countries:'
ParentColor = False
end
object btnDxContAll: TButton
AnchorSideLeft.Control = edtDXCont
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDXCont
AnchorSideTop.Side = asrCenter
Left = 374
Height = 27
Top = 7
Width = 44
Caption = 'All'
OnClick = btnDxContAllClick
TabOrder = 4
end
object btnDxBandsAll: TButton
AnchorSideLeft.Control = edtDXBand
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDXBand
AnchorSideTop.Side = asrCenter
Left = 462
Height = 28
Top = 40
Width = 44
Caption = 'All'
OnClick = btnDxBandsAllClick
TabOrder = 5
end
object btnDxModeAll: TButton
AnchorSideLeft.Control = edtDXMode
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDXMode
AnchorSideTop.Side = asrCenter
Left = 438
Height = 27
Top = 75
Width = 44
Caption = 'All'
OnClick = btnDxModeAllClick
TabOrder = 6
end
object btnDXCCnty: TButton
AnchorSideLeft.Control = edtDXCnty
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDXCnty
AnchorSideTop.Side = asrCenter
Left = 278
Height = 25
Top = 110
Width = 30
Caption = '...'
OnClick = btnDXCCntyClick
TabOrder = 7
end
object lblNotCountry: TLabel
AnchorSideLeft.Control = btnDXCCnty
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = btnDXCCnty
AnchorSideTop.Side = asrCenter
Left = 311
Height = 17
Top = 114
Width = 49
BorderSpacing.Left = 3
Caption = 'or NOT '
ParentColor = False
end
object edtDXCNotCnty: TEdit
AnchorSideLeft.Control = lblNotCountry
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = lblNotCountry
AnchorSideTop.Side = asrCenter
Left = 363
Height = 34
Top = 105
Width = 175
BorderSpacing.Left = 3
CharCase = ecUppercase
TabOrder = 8
Text = 'EDTDXCNOTCNTY'
end
object btnDXCNotCnty: TButton
AnchorSideLeft.Control = edtDXCNotCnty
AnchorSideLeft.Side = asrBottom
AnchorSideTop.Control = edtDXCNotCnty
AnchorSideTop.Side = asrCenter
Left = 541
Height = 25
Top = 110
Width = 30
BorderSpacing.Left = 3
Caption = '...'
OnClick = btnDXCNotCntyClick
TabOrder = 9
end
end end
object btnDXCNotCnty: TButton object Bevel1: TBevel
Left = 567 AnchorSideLeft.Control = grpCallsignFrom
AnchorSideTop.Control = chkOnlyeQSL
AnchorSideTop.Side = asrBottom
AnchorSideRight.Control = grpCallsignFrom
AnchorSideRight.Side = asrBottom
Left = 12
Height = 5
Top = 574
Width = 655
Anchors = [akTop, akLeft, akRight]
BorderSpacing.Left = 6
BorderSpacing.Top = 6
BorderSpacing.Right = 6
end
object btnOK: TButton
AnchorSideTop.Control = grpSource
AnchorSideRight.Control = grpDXStation
AnchorSideRight.Side = asrBottom
Left = 592
Height = 25 Height = 25
Top = 345 Top = 15
Width = 30 Width = 75
Caption = '...' Anchors = [akTop, akRight]
OnClick = btnDXCNotCntyClick BorderSpacing.Top = 12
BorderSpacing.Right = 9
Caption = 'OK'
OnClick = btnOKClick
TabOrder = 11
end
object btnCancel: TButton
AnchorSideLeft.Control = btnOK
AnchorSideTop.Control = btnOK
AnchorSideTop.Side = asrBottom
Left = 592
Height = 25
Top = 46
Width = 75
BorderSpacing.Top = 6
BorderSpacing.Right = 9
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 12 TabOrder = 12
end end
object Label14: TLabel
Left = 432
Height = 17
Top = 252
Width = 93
Caption = 'AF, AN, AS etc'
ParentColor = False
end
object btnDxModeAll: TButton
Left = 438
Height = 27
Top = 312
Width = 44
Caption = 'All'
OnClick = btnDxModeAllClick
TabOrder = 16
end
end
object GroupBox4: TGroupBox
Left = 8
Height = 65
Top = 8
Width = 576
Caption = ' Source data from '
ClientHeight = 47
ClientWidth = 574
TabOrder = 0
object Label3: TLabel
Left = 8
Height = 17
Top = 12
Width = 67
Caption = 'Continent:'
ParentColor = False
end
object edtSrcCont: TEdit
Left = 96
Height = 34
Top = 8
Width = 280
CharCase = ecUppercase
TabOrder = 0
Text = 'EDTSRCCONT'
end
object Label13: TLabel
Left = 432
Height = 17
Top = 12
Width = 93
Caption = 'AF, AN, AS etc'
ParentColor = False
end
object btnSrcContAll: TButton
Left = 374
Height = 27
Top = 8
Width = 44
Caption = 'All'
OnClick = btnSrcContAllClick
TabOrder = 1
end
end
object btnOK: TButton
Left = 597
Height = 25
Top = 8
Width = 75
Caption = 'OK'
OnClick = btnOKClick
TabOrder = 2
end
object btnCancel: TButton
Left = 597
Height = 25
Top = 40
Width = 75
Cancel = True
Caption = 'Cancel'
ModalResult = 2
TabOrder = 3
end
object btnDxContAll: TButton
Left = 384
Height = 27
Top = 345
Width = 44
Caption = 'All'
OnClick = btnDxContAllClick
TabOrder = 4
end
object btnDxBandsAll: TButton
Left = 472
Height = 28
Top = 376
Width = 44
Caption = 'All'
OnClick = btnDxBandsAllClick
TabOrder = 5
end end
end end

View File

@ -14,46 +14,50 @@ type
TfrmRbnFilter = class(TForm) TfrmRbnFilter = class(TForm)
Bevel1: TBevel; Bevel1: TBevel;
Bevel2: TBevel;
btnOK: TButton;
btnCancel: TButton; btnCancel: TButton;
btnDxBandsAll: TButton;
btnDXCCnty: TButton; btnDXCCnty: TButton;
btnDXCNotCnty: TButton; btnDXCNotCnty: TButton;
btnDxContAll: TButton; btnDxContAll: TButton;
btnSrcContAll: TButton;
btnDxBandsAll: TButton;
btnDxModeAll: TButton; btnDxModeAll: TButton;
btnOK: TButton;
btnSrcContAll: TButton;
btnSrcCallAll: TButton;
chkNewDXConly: TCheckBox; chkNewDXConly: TCheckBox;
chkOnlyeQSL: TCheckBox; chkOnlyeQSL: TCheckBox;
chkOnlyLoTW: TCheckBox; chkOnlyLoTW: TCheckBox;
edtDXCnty: TEdit; edtSrcCall: TEdit;
edtDXCNotCnty: TEdit;
edtDate: TEdit; edtDate: TEdit;
edtDXBand: TEdit;
edtDXCNotCnty: TEdit;
edtDXCnty: TEdit;
edtDXCont: TEdit;
edtDXMode: TEdit;
edtDXOnlyCall: TEdit; edtDXOnlyCall: TEdit;
edtDXOnlyExpres: TEdit; edtDXOnlyExpres: TEdit;
edtDXBand: TEdit;
edtDXMode: TEdit;
edtDXCont: TEdit;
edtLastHours: TEdit; edtLastHours: TEdit;
edtSrcCont: TEdit; edtSrcCont: TEdit;
edtTime: TEdit; edtTime: TEdit;
GroupBox3: TGroupBox; grpCallsignFrom: TGroupBox;
GroupBox4: TGroupBox; grpDXStation: TGroupBox;
GroupBox5: TGroupBox; grpCallisgn: TGroupBox;
Label1: TLabel; grpSource: TGroupBox;
lblIgnoreHours: TLabel;
Label10: TLabel; Label10: TLabel;
Label11: TLabel; lblCallExample: TLabel;
Label12: TLabel; lblSrcCall: TLabel;
Label13: TLabel;
Label14: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel; Label8: TLabel;
lblBandExFrom: TLabel;
lblBandFrom: TLabel;
lblContExample: TLabel;
lblContExFrom: TLabel;
lblContinentFrom: TLabel;
lblCountryFrom: TLabel;
lblDateTimeFormat: TLabel;
lblContent: TLabel;
Label9: TLabel; Label9: TLabel;
lblModeFrom: TLabel;
lblNotCountry: TLabel;
rbAllDx: TRadioButton; rbAllDx: TRadioButton;
rbOnlyCall: TRadioButton; rbOnlyCall: TRadioButton;
rbOnlyCallReg: TRadioButton; rbOnlyCallReg: TRadioButton;
@ -65,6 +69,7 @@ type
procedure btnDxContAllClick(Sender: TObject); procedure btnDxContAllClick(Sender: TObject);
procedure btnDxModeAllClick(Sender: TObject); procedure btnDxModeAllClick(Sender: TObject);
procedure btnOKClick(Sender: TObject); procedure btnOKClick(Sender: TObject);
procedure btnSrcCallAllClick(Sender: TObject);
procedure btnSrcContAllClick(Sender: TObject); procedure btnSrcContAllClick(Sender: TObject);
procedure FormShow(Sender: TObject); procedure FormShow(Sender: TObject);
private private
@ -89,7 +94,7 @@ begin
dmUtils.LoadFontSettings(self); dmUtils.LoadFontSettings(self);
edtSrcCont.Text := cqrini.ReadString('RBNFilter','SrcCont',C_RBN_CONT); edtSrcCont.Text := cqrini.ReadString('RBNFilter','SrcCont',C_RBN_CONT);
edtSrcCall.Text := cqrini.ReadString('RBNFilter','SrcCall','');
rbIgnWkdHour.Checked := cqrini.ReadBool('RBNFilter','IgnHour',True); rbIgnWkdHour.Checked := cqrini.ReadBool('RBNFilter','IgnHour',True);
edtLastHours.Text := IntToStr(cqrini.ReadInteger('RBNFilter','IgnHourValue',48)); edtLastHours.Text := IntToStr(cqrini.ReadInteger('RBNFilter','IgnHourValue',48));
rbIgnWkdDate.Checked := cqrini.ReadBool('RBNFilter','IgnDate',False); rbIgnWkdDate.Checked := cqrini.ReadBool('RBNFilter','IgnDate',False);
@ -169,6 +174,7 @@ begin
edtDXMode.Text := C_RBN_MODES; edtDXMode.Text := C_RBN_MODES;
cqrini.WriteString('RBNFilter','SrcCont',RmSp(edtSrcCont.Text)); cqrini.WriteString('RBNFilter','SrcCont',RmSp(edtSrcCont.Text));
cqrini.WriteString('RBNFilter','SrcCall',RmSp(edtSrcCall.Text));
cqrini.WriteBool('RBNFilter','IgnHour',rbIgnWkdHour.Checked); cqrini.WriteBool('RBNFilter','IgnHour',rbIgnWkdHour.Checked);
cqrini.WriteInteger('RBNFilter','IgnHourValue',StrToint(edtLastHours.Text)); cqrini.WriteInteger('RBNFilter','IgnHourValue',StrToint(edtLastHours.Text));
@ -196,6 +202,11 @@ begin
ModalResult := mrOK ModalResult := mrOK
end; end;
procedure TfrmRbnFilter.btnSrcCallAllClick(Sender: TObject);
begin
edtSrcCall.Text:='';
end;
procedure TfrmRbnFilter.btnSrcContAllClick(Sender: TObject); procedure TfrmRbnFilter.btnSrcContAllClick(Sender: TObject);
begin begin
edtSrcCont.Text := C_RBN_CONT edtSrcCont.Text := C_RBN_CONT

View File

@ -42,6 +42,7 @@ type
public public
DxccWithLoTW : Boolean; DxccWithLoTW : Boolean;
fil_SrcCont : String; fil_SrcCont : String;
fil_SrcCalls : TStringList;
fil_IgnWkdHour : Boolean; fil_IgnWkdHour : Boolean;
fil_IgnHourValue : Integer; fil_IgnHourValue : Integer;
fil_IgnDate : Boolean; fil_IgnDate : Boolean;
@ -125,6 +126,8 @@ type
RbnMonThread : TRbnThread; RbnMonThread : TRbnThread;
lTelnet : TLTelnetClientComponent; lTelnet : TLTelnetClientComponent;
aRbnArchive : Array of TRbnSpot; aRbnArchive : Array of TRbnSpot;
SrcCalls : TStringlist;
function GetModeFromFreq(freq: string): string; function GetModeFromFreq(freq: string): string;
@ -172,11 +175,31 @@ var
adif : Word; adif : Word;
index : Integer; index : Integer;
f : Double; f : Double;
i : integer;
SpotterOk: Boolean;
begin begin
Result := False; Result := False;
dmDXCluster.id_country(spotter,now,pfx,Country,waz,itu,SrcCont); if (fil_SrcCalls.Count>0) then
Begin
SpotterOK:=false;
for i:=0 to fil_SrcCalls.Count-1 do
Begin
if (pos(fil_SrcCalls.Strings[i], spotter)=1) then //begins with definition
begin
SpotterOk := True;
Break;
end;
end;
if Not SpotterOK then
Begin
if dmData.DebugLevel>=2 then
Writeln('RBNMonitor: ','Wrong source callsign - ',Spotter);
Exit
end;
end;
dmDXCluster.id_country(spotter,now,pfx,Country,waz,itu,SrcCont);
if (Pos(SrcCont+',',fil_SrcCont+',') = 0) and (fil_SrcCont<>'') then if (Pos(SrcCont+',',fil_SrcCont+',') = 0) and (fil_SrcCont<>'') then
begin begin
if dmData.DebugLevel>=2 then Writeln('RBNMonitor: ','Wrong source continent - ',SrcCont); if dmData.DebugLevel>=2 then Writeln('RBNMonitor: ','Wrong source continent - ',SrcCont);
@ -576,7 +599,7 @@ begin
for i:=0 to sgRbn.ColCount-1 do for i:=0 to sgRbn.ColCount-1 do
cqrini.WriteInteger('WindowSize','RbnCol'+IntToStr(i),sgRbn.ColWidths[i]); cqrini.WriteInteger('WindowSize','RbnCol'+IntToStr(i),sgRbn.ColWidths[i]);
lTelnet.Disconnect(); lTelnet.Disconnect();
dmUtils.SaveWindowPos(self) dmUtils.SaveWindowPos(self);
end; end;
procedure TfrmRbnMonitor.FormCreate(Sender: TObject); procedure TfrmRbnMonitor.FormCreate(Sender: TObject);
@ -588,6 +611,7 @@ begin
sgRbn.RowCount := 1; sgRbn.RowCount := 1;
slRbnSpots := TStringList.Create; slRbnSpots := TStringList.Create;
SrcCalls:= TStringList.Create;
lTelnet := TLTelnetClientComponent.Create(nil); lTelnet := TLTelnetClientComponent.Create(nil);
lTelnet.OnConnect := @lConnect; lTelnet.OnConnect := @lConnect;
@ -600,6 +624,7 @@ procedure TfrmRbnMonitor.FormDestroy(Sender: TObject);
begin begin
FreeAndNil(lTelnet); FreeAndNil(lTelnet);
DoneCriticalsection(csRbnMonitor); DoneCriticalsection(csRbnMonitor);
FreeAndNil(SrcCalls);
FreeAndNil(slRbnSpots) FreeAndNil(slRbnSpots)
end; end;
@ -705,11 +730,17 @@ begin
end; end;
//------------------------------------------------- //-------------------------------------------------
procedure TfrmRbnMonitor.LoadConfigToThread; procedure TfrmRbnMonitor.LoadConfigToThread;
begin begin
if Assigned(RbnMonThread) then if Assigned(RbnMonThread) then
begin begin
RbnMonThread.fil_SrcCont := cqrini.ReadString('RBNFilter','SrcCont',C_RBN_CONT); RbnMonThread.fil_SrcCont := cqrini.ReadString('RBNFilter','SrcCont',C_RBN_CONT);
SrcCalls.Clear; //we need to do this via another TString list. Direct mods to fil_SrcCalls cause SIGSEGV
SrcCalls.Delimiter:=',';
SrcCalls.AddDelimitedtext(cqrini.ReadString('RBNFilter','SrcCall',''));
RbnMonThread.fil_SrcCalls := SrcCalls;
RbnMonThread.fil_IgnWkdHour := cqrini.ReadBool('RBNFilter','IgnHour',True); RbnMonThread.fil_IgnWkdHour := cqrini.ReadBool('RBNFilter','IgnHour',True);
RbnMonThread.fil_IgnHourValue := cqrini.ReadInteger('RBNFilter','IgnHourValue',48); RbnMonThread.fil_IgnHourValue := cqrini.ReadInteger('RBNFilter','IgnHourValue',48);
RbnMonThread.fil_IgnDate := cqrini.ReadBool('RBNFilter','IgnDate',False); RbnMonThread.fil_IgnDate := cqrini.ReadBool('RBNFilter','IgnDate',False);

View File

@ -21,7 +21,7 @@ const
cRELEAS = 0; cRELEAS = 0;
cBUILD = 1; cBUILD = 1;
cBUILD_DATE = '2022-07-05'; cBUILD_DATE = '2023-01-26';
implementation implementation