Fixes to LoTW/eQSL mark upload, Group edit, Filter
LoTW/eQSL: "Mark all qsos uploaded" did set ALL qsos uploaded with current date. Issue #352 Fixed to affect only qsos that have empty/NULL upload infos Filter: Added selections for Propagation mode and Satellite. Issue #351 Adding them needed some layout changes so lfm contains lot of changes. Group edit: Fixed bug in eQSL part. Added Propagation mode, Satellite and lotw send date field selections. Reordering of field selection list. Layout changes, more informative look. Help files fixed Squashed commit of the following: commit e32d5e0286c6e28b0632551a532498ff7cbed700 Author: OH1KH <oh1kh@sral.fi> Date: Tue Nov 24 20:29:34 2020 +0200 Fixes to LoTW/eQSL mark upload, Group edit, Filter commit 0099f6d591f9512325f5f82b3fb172f5875758f5 Author: OH1KH <oh1kh@sral.fi> Date: Tue Nov 24 20:27:55 2020 +0200 Fixes to LoTW/eQSL mark upload, Group edit, Filter commit 61f24a6d8c1731fc47bd5777c7d5886e7127b515 Author: OH1KH <oh1kh@sral.fi> Date: Tue Nov 24 20:14:47 2020 +0200 Fixes to LoTW/eQSL mark upload, Group edit, Filter LoTW/eQSL: "Mark all qsos uploaded" did set ALL qsos uploaded with current date. Issue #352 Fixed to affect only qsos that have empty/NULL upload infos Filter: Added selections for Propagation mode and Satellite. Issue #351 Adding them needed some layout changes so lfm contains lot of changes. Group edit: Fixed bug in eQSL part. Added Propagation mode, Satellite and lotw send date field selections. Reordering of field selection list. Layout changes, more informative look. Help files fixed Please enter the commit message for your changes. Lines starting
@ -72,22 +72,22 @@
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
|
||||
<p><img src=img/h90.png></p>
|
||||
<div align="justify">A record can be tagged by clicking the corresponding icon or
|
||||
with the mouse - hold the Ctrl key on the keyboard and left click on the QSO record
|
||||
to be tagged.<br>
|
||||
Or you can set up filter and pick qsos that need editing.
|
||||
</div>
|
||||
<p><img src=img/h90.png></p>
|
||||
<div align="justify">Click the <em>Edit QSO</em> button and the group edit menu
|
||||
You can also set up filter (<strong>Filter/Create</strong> or <strong>F12</strong>) and pick qsos that need editing.
|
||||
<br><strong>Note: </strong>If you do not do either one Group edit will affect to your <strong>whole log</strong> and there is <strong>no undone!</strong>. You have been warned.
|
||||
</div><br>
|
||||
<div align="justify">Click the <strong>Edit QSO</strong> button or select <strong>File/Group edit</strong> and the group edit form
|
||||
appears:<br></div>
|
||||
<p><img src=img/h91.png></p>
|
||||
<div align="justify">Choose the field to be edited from the pulldown menu:<br></div>
|
||||
<p><img src=img/h92.png></p>
|
||||
<div align="justify">The field name changes. Enter the value (word, string) which
|
||||
will appear in <strong>ALL</strong> tagged QSO records. Click the <em>Apply</em>
|
||||
button and the value in all tagged records will be changed to the value entered
|
||||
into <em>Value:</em> box. All values entered within a session are temporarily stored
|
||||
so you can list it with the "down arrow" button in the group edit menu.
|
||||
<p><img src=img/h91.png> <img src=img/h90b.png><br>
|
||||
<img src=img/h92.png> <img src=img/h92b.png><br>
|
||||
<img src=img/h92c.png></p>
|
||||
<div align="justify">Choose the field to be edited from the pulldown menu:The field name changes. Enter the value (word, string) which will appear in <strong>ALL</strong> tagged QSO records.
|
||||
<br>Click the <em>Apply</em> button and the value in all tagged records will be changed to the value entered
|
||||
into <em>Value:</em> box. When edit is done you can select another field or close Group edit using button <em>Cancel</em>.
|
||||
</div>
|
||||
<table border="0" cellpadding="5" cellspacing="2" width="100%">
|
||||
<tbody>
|
||||
|
BIN
help/img/h49.png
Before Width: | Height: | Size: 73 KiB After Width: | Height: | Size: 74 KiB |
BIN
help/img/h90.png
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 77 KiB |
BIN
help/img/h90b.png
Normal file
After Width: | Height: | Size: 9.8 KiB |
BIN
help/img/h91.png
Before Width: | Height: | Size: 3.4 KiB After Width: | Height: | Size: 9.8 KiB |
BIN
help/img/h92.png
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 9.5 KiB |
BIN
help/img/h92b.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
help/img/h92c.png
Normal file
After Width: | Height: | Size: 12 KiB |
@ -3535,7 +3535,7 @@ end;
|
||||
|
||||
procedure TdmData.MarkAllAsUploadedToeQSL;
|
||||
const
|
||||
C_UPD = 'update cqrlog_main set eqsl_qsl_sent = %s,eqsl_qslsdate=%s';
|
||||
C_UPD = 'update cqrlog_main set eqsl_qsl_sent = %s,eqsl_qslsdate=%s where (eqsl_qsl_sent="" and eqsl_qslsdate is NULL)';
|
||||
begin
|
||||
Q1.Close;
|
||||
if trQ1.Active then
|
||||
@ -3554,7 +3554,7 @@ begin
|
||||
end;
|
||||
procedure TdmData.MarkAllAsUploadedToLoTW;
|
||||
const
|
||||
C_UPD = 'update cqrlog_main set lotw_qsls = %s, lotw_qslsdate = %s';
|
||||
C_UPD = 'update cqrlog_main set lotw_qsls = %s, lotw_qslsdate = %s where (lotw_qsls="" and lotw_qslsdate is NULL)';
|
||||
begin
|
||||
Q1.Close;
|
||||
if trQ1.Active then
|
||||
|
468
src/fFilter.lfm
114
src/fFilter.pas
@ -40,6 +40,8 @@ type
|
||||
cmbeQSL_qslr : TComboBox;
|
||||
cmbeQSL_qsls : TComboBox;
|
||||
cmbMode: TComboBox;
|
||||
cmbPropMode: TComboBox;
|
||||
cmbSatName: TComboBox;
|
||||
cmbQSL_S: TComboBox;
|
||||
cmbQSL_R: TComboBox;
|
||||
cmbProfile: TComboBox;
|
||||
@ -75,6 +77,8 @@ type
|
||||
edtITU: TEdit;
|
||||
gbCallsign: TGroupBox;
|
||||
gbIota: TGroupBox;
|
||||
gbPropMode: TGroupBox;
|
||||
gbSatName: TGroupBox;
|
||||
gbRemarks: TGroupBox;
|
||||
gbAward: TGroupBox;
|
||||
gbMyLoc: TGroupBox;
|
||||
@ -110,8 +114,8 @@ type
|
||||
lblSentL: TLabel;
|
||||
lblSortBy: TLabel;
|
||||
lblEqsl : TLabel;
|
||||
Label18 : TLabel;
|
||||
Label19 : TLabel;
|
||||
lblPwrTo : TLabel;
|
||||
lblPwrFrom : TLabel;
|
||||
Label2: TLabel;
|
||||
Label20: TLabel;
|
||||
Label3: TLabel;
|
||||
@ -122,6 +126,8 @@ type
|
||||
Label9: TLabel;
|
||||
dlgOpen: TOpenDialog;
|
||||
rbExactlyDarcDok: TRadioButton;
|
||||
rbExactlyPropMode: TRadioButton;
|
||||
rbExactlySatName: TRadioButton;
|
||||
rbIncludeDarcDok: TRadioButton;
|
||||
rbExactlyCounty: TRadioButton;
|
||||
rbExactlyMyLoc: TRadioButton;
|
||||
@ -134,6 +140,8 @@ type
|
||||
rbExactlyCall: TRadioButton;
|
||||
rbIncludeCounty: TRadioButton;
|
||||
rbIncludeMyLoc: TRadioButton;
|
||||
rbIncludePropMode: TRadioButton;
|
||||
rbIncludeSatName: TRadioButton;
|
||||
rbIncludeRem: TRadioButton;
|
||||
rbIncludeLoc: TRadioButton;
|
||||
rbIncludeQth: TRadioButton;
|
||||
@ -147,6 +155,9 @@ type
|
||||
procedure btnSelectDXCCClick(Sender: TObject);
|
||||
procedure chkRememberChange(Sender: TObject);
|
||||
procedure cmbBandSelectorChange(Sender: TObject);
|
||||
procedure cmbContestNameExit(Sender: TObject);
|
||||
procedure cmbPropModeExit(Sender: TObject);
|
||||
procedure cmbSatNameExit(Sender: TObject);
|
||||
procedure edtCallSignChange(Sender: TObject);
|
||||
procedure edtLocatorChange(Sender: TObject);
|
||||
procedure edtMyLocChange(Sender: TObject);
|
||||
@ -162,7 +173,6 @@ type
|
||||
tmp : String;
|
||||
end;
|
||||
const
|
||||
C_CONTEST_LIST_FILE_NAME = 'ContestName.tab';
|
||||
C_FILTER_LAST_SETTINGS_FILE_NAME = 'FilterSettings.fil';
|
||||
var
|
||||
frmFilter: TfrmFilter;
|
||||
@ -171,7 +181,7 @@ implementation
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfrmFilter }
|
||||
uses dData, dUtils,fSelectDXCC, dMembership, uMyini;
|
||||
uses dData, dUtils,fSelectDXCC, dMembership, uMyini,dSatellite;
|
||||
|
||||
procedure TfrmFilter.btnOKClick(Sender: TObject);
|
||||
var
|
||||
@ -368,6 +378,20 @@ begin
|
||||
if ((edtPwrFrom.Text <> '') and (edtPwrTo.Text <> '')) then tmp := tmp + ' (pwr >= ' + edtPwrFrom.Text + ') AND '+
|
||||
' (pwr <= ' + edtPwrTo.Text + ') AND';
|
||||
|
||||
if (cmbPropMode.Text <> '') then
|
||||
begin
|
||||
if rbExactlyPropMode.Checked then
|
||||
tmp := tmp + ' (prop_mode = ' + QuotedStr(cmbPropMode.Text)+') AND'
|
||||
else
|
||||
tmp := tmp + ' (prop_mode LIKE ''%' + cmbPropMode.Text + '%'') AND';
|
||||
end;
|
||||
if (cmbSatName.Text <> '') then
|
||||
begin
|
||||
if rbExactlySatName.Checked then
|
||||
tmp := tmp + ' (satellite = ' + QuotedStr(cmbSatName.Text)+') AND'
|
||||
else
|
||||
tmp := tmp + ' (satellite LIKE ''%' + cmbSatName.Text + '%'') AND';
|
||||
end;
|
||||
|
||||
if cmbMembers.ItemIndex >0 then tmp := tmp + ' (club_nr'+IntToStr(cmbMembers.ItemIndex)+' <> '+
|
||||
QuotedStr('')+') AND';
|
||||
@ -438,50 +462,29 @@ procedure TfrmFilter.btnCancelClick(Sender: TObject);
|
||||
begin
|
||||
Close
|
||||
end;
|
||||
|
||||
procedure TfrmFilter.FormCreate(Sender: TObject);
|
||||
var
|
||||
ListOfContests : TStringList;
|
||||
i : integer;
|
||||
s: string;
|
||||
Contestfile :TextFile;
|
||||
begin
|
||||
dmUtils.InsertModes(cmbMode);
|
||||
cmbMode.Items.Insert(0,''); //to be sure there is empty line at start
|
||||
dmUtils.InsertBands(cmbBandSelector);
|
||||
cmbBandSelector.Items.Insert(0, ''); //to be sure
|
||||
// loading the contest list from ../ContestNames.tab
|
||||
// Format of File CONTEST_ID|CONTEST_DESCRIPTION
|
||||
// see ADIF 3.0.9 http://www.adif.org/309/ADIF_309.htm#Contest_ID
|
||||
ListOfContests:= TStringList.Create;
|
||||
ListOfContests.Clear;
|
||||
ListOfContests.Sorted:=false;
|
||||
if FileExists(dmData.HomeDir + C_CONTEST_LIST_FILE_NAME) then
|
||||
Begin
|
||||
AssignFile(Contestfile, dmData.HomeDir + C_CONTEST_LIST_FILE_NAME);
|
||||
try
|
||||
reset(Contestfile);
|
||||
while not eof(Contestfile) do
|
||||
begin
|
||||
readln(Contestfile, s);
|
||||
ListOfContests.Add(ExtractDelimited(1,s,['|']));
|
||||
end;
|
||||
CloseFile(Contestfile);
|
||||
except
|
||||
on E: EInOutError do
|
||||
writeln('Contestfile reading error. Details: ', E.Message);
|
||||
end;
|
||||
end;
|
||||
//Add strings that wsjt-x may use at contest_name column
|
||||
ListOfContests.Add('NA VHF');
|
||||
ListOfContests.Add('EU VHF');
|
||||
ListOfContests.Add('FIELD DAY');
|
||||
ListOfContests.Add('RTTY RU');
|
||||
ListOfContests.Add('FOX-QSO');
|
||||
ListOfContests.Add('HOUND-QSO');
|
||||
ListOfContests.Sort;
|
||||
cmbContestName.Clear;
|
||||
cmbContestName.Items := ListOfContests;
|
||||
cmbContestName.Items.Insert(0,''); //to be sure there is empty line at start
|
||||
ListOfContests.Free;
|
||||
cmbBandSelector.Items.Insert(0, '');
|
||||
dmUtils.InsertContests(cmbContestName);
|
||||
cmbContestName.Items.Insert(0,'');
|
||||
cmbContestName.Items.Add('NA VHF'); //Add strings that wsjt-x may use at contest_name column
|
||||
cmbContestName.Items.Add('EU VHF');
|
||||
cmbContestName.Items.Add('FIELD DAY');
|
||||
cmbContestName.Items.Add('RTTY RU');
|
||||
cmbContestName.Items.Add('FOX-QSO');
|
||||
cmbContestName.Items.Add('HOUND-QSO');
|
||||
TStringList(cmbContestName.Items).Sort;
|
||||
dmSatellite.SetListOfPropModes(cmbPropMode);
|
||||
cmbPropMode.Items.Insert(0, '');
|
||||
dmSatellite.SetListOfSatellites(cmbSatName);
|
||||
cmbSatName.Items.Insert(0, '');
|
||||
dmData.InsertProfiles(cmbProfile,True);
|
||||
cmbProfile.Text := dmData.GetDefaultProfileText;
|
||||
cmbProfile.Items.Insert(0,'Any profile');
|
||||
cmbProfile.ItemIndex := 0;
|
||||
end;
|
||||
//actually form create and show are common procedure as filter is opened in showModal and it always
|
||||
//creates and shows itself in every opening
|
||||
@ -495,13 +498,7 @@ begin
|
||||
cmbQSL_S.Items.Add('Empty');
|
||||
dmUtils.InsertQSL_R(cmbQSL_R);
|
||||
cmbQSL_R.Items.Add('Empty');
|
||||
dmUtils.InsertModes(cmbMode);
|
||||
cmbMode.Items.Insert(0,'');
|
||||
|
||||
dmData.InsertProfiles(cmbProfile,True);
|
||||
cmbProfile.Text := dmData.GetDefaultProfileText;
|
||||
cmbProfile.Items.Insert(0,'Any profile');
|
||||
cmbProfile.ItemIndex := 0;
|
||||
cmbMembers.Items.Add('');
|
||||
if dmMembership.Club1.Name <> '' then
|
||||
cmbMembers.Items.Add('1;'+dmMembership.Club1.Name+';'+dmMembership.Club1.LongName);
|
||||
@ -576,6 +573,21 @@ begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TfrmFilter.cmbContestNameExit(Sender: TObject);
|
||||
begin
|
||||
cmbContestName.Text:=ExtractWord(1,cmbContestName.Text,['|'])
|
||||
end;
|
||||
|
||||
procedure TfrmFilter.cmbPropModeExit(Sender: TObject);
|
||||
begin
|
||||
cmbPropMode.Text:=ExtractWord(1,cmbPropMode.Text,['|']);
|
||||
end;
|
||||
|
||||
procedure TfrmFilter.cmbSatNameExit(Sender: TObject);
|
||||
begin
|
||||
cmbSatName.Text:=ExtractWord(1,cmbSatName.Text,['|']);
|
||||
end;
|
||||
|
||||
procedure TfrmFilter.edtCallSignChange(Sender: TObject);
|
||||
var i: integer;
|
||||
s: string;
|
||||
|
@ -1,13 +1,13 @@
|
||||
object frmGroupEdit: TfrmGroupEdit
|
||||
Left = 454
|
||||
Height = 146
|
||||
Height = 150
|
||||
Top = 357
|
||||
Width = 436
|
||||
ActiveControl = btnApply
|
||||
BorderIcons = [biSystemMenu]
|
||||
BorderStyle = bsDialog
|
||||
Caption = 'Group edit'
|
||||
ClientHeight = 146
|
||||
ClientHeight = 150
|
||||
ClientWidth = 436
|
||||
Icon.Data = {
|
||||
BE1000000000010001002020000001002000A810000016000000280000002000
|
||||
@ -148,56 +148,41 @@ object frmGroupEdit: TfrmGroupEdit
|
||||
}
|
||||
OnShow = FormShow
|
||||
Position = poMainFormCenter
|
||||
LCLVersion = '2.0.4.0'
|
||||
LCLVersion = '2.0.8.0'
|
||||
object GroupBox1: TGroupBox
|
||||
AnchorSideLeft.Control = Owner
|
||||
AnchorSideTop.Control = Owner
|
||||
AnchorSideRight.Control = Owner
|
||||
Left = 0
|
||||
Height = 108
|
||||
Height = 112
|
||||
Top = 0
|
||||
Width = 436
|
||||
Align = alClient
|
||||
ClientHeight = 106
|
||||
ClientHeight = 110
|
||||
ClientWidth = 434
|
||||
TabOrder = 0
|
||||
object Label1: TLabel
|
||||
object lblField: TLabel
|
||||
AnchorSideLeft.Control = GroupBox1
|
||||
AnchorSideTop.Control = cmbField
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 12
|
||||
Height = 17
|
||||
Top = 9
|
||||
Width = 35
|
||||
Height = 15
|
||||
Top = 10
|
||||
Width = 34
|
||||
BorderSpacing.Left = 12
|
||||
Caption = 'Field:'
|
||||
ParentColor = False
|
||||
OnClick = lblFieldClick
|
||||
end
|
||||
object Label2: TLabel
|
||||
AnchorSideLeft.Control = Label1
|
||||
object lblValue: TLabel
|
||||
AnchorSideLeft.Control = lblField
|
||||
AnchorSideTop.Control = cmbValue
|
||||
AnchorSideTop.Side = asrCenter
|
||||
Left = 12
|
||||
Height = 17
|
||||
Height = 15
|
||||
Top = 44
|
||||
Width = 40
|
||||
Caption = 'Value:'
|
||||
ParentColor = False
|
||||
end
|
||||
object lblInfo: TLabel
|
||||
AnchorSideLeft.Control = GroupBox1
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Side = asrBottom
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 197
|
||||
Height = 17
|
||||
Top = 83
|
||||
Width = 41
|
||||
Anchors = [akLeft, akBottom]
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Bottom = 6
|
||||
Caption = 'lblInfo'
|
||||
Caption = 'Value:'
|
||||
ParentColor = False
|
||||
end
|
||||
object cmbField: TComboBox
|
||||
@ -221,29 +206,33 @@ object frmGroupEdit: TfrmGroupEdit
|
||||
'RSt received'
|
||||
'Name'
|
||||
'QTH'
|
||||
'QSL sent'
|
||||
'QSL received'
|
||||
'QSL via'
|
||||
'Power'
|
||||
'ITU'
|
||||
'WAZ'
|
||||
'County'
|
||||
'State'
|
||||
'LoTW QSL sent'
|
||||
'LoTW QSL received'
|
||||
'Award'
|
||||
'IOTA'
|
||||
'Comment to QSO'
|
||||
'My locator'
|
||||
'Locator'
|
||||
'QTH Profile'
|
||||
'QSL via'
|
||||
'QSL sent'
|
||||
'QSL sent date'
|
||||
'QSL received'
|
||||
'QSL rcvd date'
|
||||
'LoTW QSL sent'
|
||||
'LoTW QSL sent date'
|
||||
'LoTW QSL received'
|
||||
'LoTW QSL received date'
|
||||
'eQSL sent'
|
||||
'eQSL sent date'
|
||||
'eQSL rcvd'
|
||||
'eQSL rcvd date'
|
||||
'Contest name'
|
||||
'Propagation mode'
|
||||
'Satellite name'
|
||||
)
|
||||
OnChange = cmbFieldChange
|
||||
Style = csDropDownList
|
||||
@ -254,7 +243,7 @@ object frmGroupEdit: TfrmGroupEdit
|
||||
AnchorSideTop.Control = cmbField
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 96
|
||||
Height = 34
|
||||
Height = 33
|
||||
Top = 35
|
||||
Width = 312
|
||||
BorderSpacing.Top = 3
|
||||
@ -262,6 +251,38 @@ object frmGroupEdit: TfrmGroupEdit
|
||||
OnChange = cmbValueChange
|
||||
TabOrder = 1
|
||||
end
|
||||
object pnlGrpEdt: TPanel
|
||||
AnchorSideLeft.Control = GroupBox1
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = cmbValue
|
||||
AnchorSideTop.Side = asrBottom
|
||||
Left = 6
|
||||
Height = 32
|
||||
Top = 72
|
||||
Width = 422
|
||||
BorderSpacing.Top = 4
|
||||
BorderWidth = 1
|
||||
BorderStyle = bsSingle
|
||||
ClientHeight = 30
|
||||
ClientWidth = 420
|
||||
TabOrder = 2
|
||||
object lblInfo: TLabel
|
||||
AnchorSideLeft.Control = pnlGrpEdt
|
||||
AnchorSideLeft.Side = asrCenter
|
||||
AnchorSideTop.Control = pnlGrpEdt
|
||||
AnchorSideTop.Side = asrCenter
|
||||
AnchorSideBottom.Control = GroupBox1
|
||||
AnchorSideBottom.Side = asrBottom
|
||||
Left = 210
|
||||
Height = 1
|
||||
Top = 15
|
||||
Width = 1
|
||||
BorderSpacing.Top = 6
|
||||
BorderSpacing.Bottom = 12
|
||||
Layout = tlCenter
|
||||
ParentColor = False
|
||||
end
|
||||
end
|
||||
end
|
||||
object Panel1: TPanel
|
||||
AnchorSideLeft.Control = Owner
|
||||
@ -269,7 +290,7 @@ object frmGroupEdit: TfrmGroupEdit
|
||||
AnchorSideBottom.Control = Owner
|
||||
Left = 0
|
||||
Height = 38
|
||||
Top = 108
|
||||
Top = 112
|
||||
Width = 436
|
||||
Align = alBottom
|
||||
BevelOuter = bvNone
|
||||
|
@ -29,14 +29,16 @@ type
|
||||
cmbField: TComboBox;
|
||||
cmbValue: TComboBox;
|
||||
GroupBox1: TGroupBox;
|
||||
Label1: TLabel;
|
||||
Label2: TLabel;
|
||||
lblField: TLabel;
|
||||
lblValue: TLabel;
|
||||
lblInfo: TLabel;
|
||||
Panel1: TPanel;
|
||||
pnlGrpEdt: TPanel;
|
||||
procedure btnApplyClick(Sender: TObject);
|
||||
procedure cmbFieldChange(Sender: TObject);
|
||||
procedure cmbValueChange(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure lblFieldClick(Sender: TObject);
|
||||
private
|
||||
{ private declarations }
|
||||
public
|
||||
@ -51,7 +53,7 @@ implementation
|
||||
{$R *.lfm}
|
||||
|
||||
{ TfrmGroupEdit }
|
||||
uses dUtils, dData, dDXCC, fMain;
|
||||
uses dUtils, dData, dDXCC, fMain,dSatellite;
|
||||
|
||||
procedure TfrmGroupEdit.cmbFieldChange(Sender: TObject);
|
||||
begin
|
||||
@ -62,51 +64,63 @@ begin
|
||||
dmUtils.InsertModes(cmbValue);
|
||||
cmbValue.Style:=csDropDownList;
|
||||
end;
|
||||
10 : begin
|
||||
22 : begin
|
||||
dmUtils.InsertQSL_S(cmbValue);
|
||||
cmbValue.ItemIndex := 0;
|
||||
cmbValue.Style:=csDropDownList;
|
||||
end;
|
||||
11 : begin
|
||||
24 : begin
|
||||
dmUtils.InsertQSL_R(cmbValue);
|
||||
cmbValue.ItemIndex := 0;
|
||||
cmbValue.Style:=csDropDownList;
|
||||
end;
|
||||
18,28 : begin
|
||||
26,30 : begin
|
||||
cmbValue.Items.Add('Y');
|
||||
cmbValue.Items.Add('N');
|
||||
cmbValue.ItemIndex := 0;
|
||||
cmbValue.Style:=csDropDownList;
|
||||
end;
|
||||
19 : begin
|
||||
28 : begin
|
||||
cmbValue.Items.Add('L');
|
||||
cmbValue.Items.Add('N');
|
||||
cmbValue.ItemIndex := 0;
|
||||
cmbValue.Style:=csDropDownList;
|
||||
end;
|
||||
25 : begin
|
||||
20 : begin
|
||||
dmData.InsertProfiles(cmbValue,False);
|
||||
cmbValue.ItemIndex := 0;
|
||||
cmbValue.Style:=csDropDownList;
|
||||
end;
|
||||
30 : begin
|
||||
32 : begin
|
||||
cmbValue.Items.Add('E');
|
||||
cmbValue.Items.Add('N');
|
||||
cmbValue.ItemIndex := 0;
|
||||
cmbValue.Style:=csDropDownList;
|
||||
end;
|
||||
32 : begin
|
||||
34 : begin
|
||||
dmUtils.InsertContests(cmbValue);
|
||||
cmbValue.Style:=csDropDown;
|
||||
end;
|
||||
35 : begin
|
||||
dmSatellite.SetListOfPropModes(cmbValue);
|
||||
cmbValue.Style:=csDropDown;
|
||||
end;
|
||||
36 : begin
|
||||
dmSatellite.SetListOfSatellites(cmbValue);
|
||||
cmbValue.Style:=csDropDown;
|
||||
end;
|
||||
end;
|
||||
pnlGrpEdt.Color:=clRed;
|
||||
lblInfo.Caption := 'Backup your log! Operations can not be undone!';
|
||||
pnlGrpEdt.Repaint;
|
||||
lblInfo.Repaint;
|
||||
end;
|
||||
|
||||
procedure TfrmGroupEdit.cmbValueChange(Sender: TObject);
|
||||
begin
|
||||
pnlGrpEdt.Color:=clRed;
|
||||
lblInfo.Caption := 'Backup your log! Operations can not be undone!';
|
||||
pnlGrpEdt.Repaint;
|
||||
lblInfo.Repaint;
|
||||
|
||||
if (cmbField.ItemIndex=23) or (cmbField.ItemIndex=24) then
|
||||
@ -116,18 +130,26 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
{eQSL sent 28
|
||||
eQSL sent date 29
|
||||
eQSL rcvd 30
|
||||
eQSL rcvd date 31
|
||||
}
|
||||
procedure TfrmGroupEdit.FormShow(Sender: TObject);
|
||||
begin
|
||||
dmUtils.LoadFontSettings(self);
|
||||
lblInfo.Caption := 'Backup your log! Operations can not be undone!';
|
||||
pnlGrpEdt.Color:=clDefault;
|
||||
if Selected then
|
||||
lblInfo.Caption := 'Apply will afftect to selected qso(s)'
|
||||
else
|
||||
if dmData.IsFilter then
|
||||
lblInfo.Caption := 'Apply will afftect to filtered qso(s)'
|
||||
else
|
||||
lblInfo.Caption := 'Apply will afftect to whole log';
|
||||
pnlGrpEdt.Repaint;
|
||||
lblInfo.Repaint;
|
||||
end;
|
||||
|
||||
procedure TfrmGroupEdit.lblFieldClick(Sender: TObject);
|
||||
begin
|
||||
|
||||
end;
|
||||
|
||||
procedure TfrmGroupEdit.btnApplyClick(Sender: TObject);
|
||||
var
|
||||
sql : String = '';
|
||||
@ -173,7 +195,9 @@ var
|
||||
|
||||
|
||||
inc(nr);
|
||||
pnlGrpEdt.Color:=clYellow;
|
||||
lblInfo.Caption := 'Working .... QSO nr. ' + IntToStr(nr);
|
||||
pnlGrpEdt.Repaint;
|
||||
lblInfo.Repaint
|
||||
end;
|
||||
|
||||
@ -264,37 +288,10 @@ begin
|
||||
sql := 'qth='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
10 : begin
|
||||
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_S field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
sql := 'qsl_s='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
11 : begin
|
||||
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_R field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
sql := 'qsl_r='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
12 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear QSL via field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
sql := 'qsl_via='+QuotedStr(UpperCase(cmbValue.Text))
|
||||
end;
|
||||
13 : begin
|
||||
if (cmbValue.Text<>'') then
|
||||
sql := 'pwr='+QuotedStr(UpperCase(cmbValue.Text))
|
||||
end;
|
||||
14 : begin
|
||||
11 : begin
|
||||
if not (TryStrToInt(cmbValue.Text,zone) and (zone > 0) and (zone < 76)) then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct ITU zone!','Error ...', mb_OK+mb_IconError);
|
||||
@ -303,7 +300,7 @@ begin
|
||||
end;
|
||||
sql := 'itu='+cmbValue.Text
|
||||
end;
|
||||
15 : begin
|
||||
12 : begin
|
||||
if not (TryStrToInt(cmbValue.Text,zone) and (zone > 0) and (zone < 41)) then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct WAZ zone!','Error ...', mb_OK+mb_IconError);
|
||||
@ -312,7 +309,7 @@ begin
|
||||
end;
|
||||
sql := 'waz='+cmbValue.Text
|
||||
end;
|
||||
16 : begin
|
||||
13 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear County field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
@ -321,7 +318,7 @@ begin
|
||||
end;
|
||||
sql := 'county='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
17 : begin
|
||||
14 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear State field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
@ -330,21 +327,8 @@ begin
|
||||
end;
|
||||
sql := 'state='+QuotedStr(UpperCase(cmbValue.Text))
|
||||
end;
|
||||
18 : begin
|
||||
if cmbValue.Text = 'Y' then
|
||||
sql := 'lotw_qsls='+QuotedStr(cmbValue.Text)+',lotw_qslsdate='+
|
||||
QuotedStr(dmUtils.MyDateToStr(now))
|
||||
else
|
||||
sql := 'lotw_qsls='+QuotedStr('')+',lotw_qslsdate=null'
|
||||
end;
|
||||
19 : begin
|
||||
if cmbValue.Text = 'Y' then
|
||||
sql := 'lotw_qslr='+QuotedStr(cmbValue.Text)+',lotw_qslrdate='+
|
||||
QuotedStr(dmUtils.MyDateToStr(now))
|
||||
else
|
||||
sql := 'lotw_qslr='+QuotedStr('')+',lotw_qslrdate=null';
|
||||
end;
|
||||
20 : begin
|
||||
|
||||
15 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Award field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
@ -353,7 +337,7 @@ begin
|
||||
end;
|
||||
sql := 'award='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
21 : begin
|
||||
16 : begin
|
||||
if not ((cmbValue.Text <> '') and dmUtils.IsIOTAOK(cmbValue.Text)) then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct IOTA!','Error ...', mb_OK+mb_IconError);
|
||||
@ -362,7 +346,7 @@ begin
|
||||
end;
|
||||
sql := 'iota='+QuotedStr(UpperCase(cmbValue.Text))
|
||||
end;
|
||||
22 : begin
|
||||
17 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Comment to QSO field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
@ -370,28 +354,28 @@ begin
|
||||
exit
|
||||
end;
|
||||
sql := 'remarks='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
23 : begin
|
||||
end;
|
||||
18 : begin
|
||||
if (cmbValue.Text <> '') then
|
||||
begin
|
||||
if not dmUtils.IsLocOK(cmbValue.Text) then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct locator!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
begin
|
||||
if not dmUtils.IsLocOK(cmbValue.Text) then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct locator!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end
|
||||
end
|
||||
end
|
||||
else begin
|
||||
else begin
|
||||
if (Application.MessageBox('Dou you really want to clear My locator field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end
|
||||
end;
|
||||
sql := 'my_loc='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
sql := 'my_loc='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
24 : begin
|
||||
19 : begin
|
||||
if (cmbValue.Text <> '') then
|
||||
begin
|
||||
if not dmUtils.IsLocOK(cmbValue.Text) then
|
||||
@ -411,11 +395,29 @@ begin
|
||||
end;
|
||||
sql := 'loc='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
25 : begin
|
||||
20 : begin
|
||||
sql := 'profile=' + IntToStr(dmData.GetNRFromProfile(cmbValue.Text))
|
||||
end;
|
||||
26 : begin
|
||||
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
|
||||
21 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear QSL via field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
sql := 'qsl_via='+QuotedStr(UpperCase(cmbValue.Text))
|
||||
end;
|
||||
22 : begin
|
||||
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_S field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
sql := 'qsl_s='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
23 : begin
|
||||
if (not dmUtils.IsDateOK(cmbValue.Text))then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
@ -426,8 +428,17 @@ begin
|
||||
else
|
||||
sql := 'qsls_date='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
27 : begin
|
||||
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
|
||||
24 : begin
|
||||
if (cmbValue.ItemIndex=0) and (Application.MessageBox('Dou you really want to clear QSL_R field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
begin
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
sql := 'qsl_r='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
25 : begin
|
||||
if (not dmUtils.IsDateOK(cmbValue.Text))then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
@ -438,58 +449,98 @@ begin
|
||||
else
|
||||
sql := 'qslr_date='+QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
26 : begin
|
||||
if cmbValue.Text = 'Y' then
|
||||
sql := 'lotw_qsls='+QuotedStr(cmbValue.Text)+',lotw_qslsdate='+
|
||||
QuotedStr(dmUtils.MyDateToStr(now))
|
||||
else
|
||||
sql := 'lotw_qsls="",lotw_qslsdate=null'
|
||||
end;
|
||||
27 : begin
|
||||
if (not dmUtils.IsDateOK(cmbValue.Text))then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end
|
||||
else
|
||||
sql := 'lotw_qsls='+QuotedStr('Y')+',lotw_qslsdate='+
|
||||
QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
28 : begin
|
||||
if cmbValue.Text = 'Y' then
|
||||
sql := 'lotw_qslr='+QuotedStr(cmbValue.Text)+',lotw_qslrdate='+
|
||||
QuotedStr(dmUtils.MyDateToStr(now))
|
||||
else
|
||||
sql := 'lotw_qslr="",lotw_qslrdate=null';
|
||||
end;
|
||||
|
||||
29 : begin
|
||||
if (not dmUtils.IsDateOK(cmbValue.Text))then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end
|
||||
else
|
||||
sql := 'lotw_qslr='+QuotedStr('E')+',lotw_qslrdate='+
|
||||
QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
30 : begin
|
||||
if cmbValue.Text = 'Y' then
|
||||
sql := 'eqsl_qsl_sent='+QuotedStr(cmbValue.Text)+',eqsl_qslsdate='+
|
||||
QuotedStr(dmUtils.MyDateToStr(now))
|
||||
else
|
||||
sql := 'eqsl_qsl_sent=null,eqsl_qslsdate=null';
|
||||
sql := 'eqsl_qsl_sent="",eqsl_qslsdate=null';
|
||||
end;
|
||||
29 : begin
|
||||
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
|
||||
31 : begin
|
||||
if (not dmUtils.IsDateOK(cmbValue.Text))then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
if cmbValue.Text = '' then
|
||||
sql := 'eqsl_qsl_sent=null,eqsl_qslsdate=null'
|
||||
end
|
||||
else
|
||||
sql := 'eqsl_qsl_sent='+QuotedStr('Y')+',eqsl_qslsdate='+
|
||||
QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
30 : begin
|
||||
32 : begin
|
||||
if cmbValue.Text = 'E' then
|
||||
sql := 'eqsl_qsl_rcvd='+QuotedStr(cmbValue.Text)+',eqsl_qslrdate='+
|
||||
QuotedStr(dmUtils.MyDateToStr(now))
|
||||
else
|
||||
sql := 'eqsl_qsl_rcvd=null,eqsl_qslrdate=null'
|
||||
sql := 'eqsl_qsl_rcvd="",eqsl_qslrdate=null'
|
||||
end;
|
||||
31 : begin
|
||||
if (cmbValue.Text <> '') and (not dmUtils.IsDateOK(cmbValue.Text)) then
|
||||
33 : begin
|
||||
if (not dmUtils.IsDateOK(cmbValue.Text))then
|
||||
begin
|
||||
Application.MessageBox('Please enter correct date!','Error ...', mb_OK+mb_IconError);
|
||||
cmbValue.SetFocus;
|
||||
exit
|
||||
end;
|
||||
if cmbValue.Text = '' then
|
||||
sql := 'eqsl_qsl_rcvd=null,eqsl_qslrdate=null'
|
||||
end
|
||||
else
|
||||
sql := 'eqsl_qsl_rcvd='+QuotedStr('E')+',eqsl_qslrdate='+
|
||||
QuotedStr(cmbValue.Text)
|
||||
end;
|
||||
32 : begin
|
||||
34 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Contest name field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
exit;
|
||||
sql := 'contestname='+QuotedStr(ExtractWord(1,cmbValue.Text,['|']));
|
||||
end;
|
||||
35 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Propagation mode field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
exit;
|
||||
sql := 'prop_mode='+QuotedStr(ExtractWord(1,cmbValue.Text,['|']));
|
||||
end;
|
||||
36 : begin
|
||||
if (cmbValue.Text='') and (Application.MessageBox('Dou you really want to clear Satellite field?',
|
||||
'Question ...',mb_YesNo+mb_IconQuestion)=idNo) then
|
||||
exit;
|
||||
sql := 'satellite='+QuotedStr(ExtractWord(1,cmbValue.Text,['|']));
|
||||
end;
|
||||
|
||||
{eQSL sent 28
|
||||
eQSL sent date 29
|
||||
eQSL rcvd 30
|
||||
eQSL rcvd date 31
|
||||
}
|
||||
end;
|
||||
if sql = '' then exit;
|
||||
try
|
||||
@ -519,6 +570,8 @@ begin
|
||||
frmMain.acRefresh.Execute
|
||||
end;
|
||||
lblInfo.Caption := 'Edit done! (Press Cancel to exit)';
|
||||
pnlGrpEdt.Color:= clLime;
|
||||
pnlGrpEdt.Repaint;
|
||||
lblInfo.Repaint;
|
||||
end;
|
||||
|
||||
|
@ -9,7 +9,7 @@ const
|
||||
cMINOR = 4;
|
||||
cRELEAS = 0;
|
||||
cBUILD = 1;
|
||||
cBUILD_DATE = '2020-11-18';
|
||||
cBUILD_DATE = '2020-11-24';
|
||||
|
||||
implementation
|
||||
|
||||
|