previous QSO listing is much faster

This commit is contained in:
Petr Hlozek 2016-02-18 20:03:05 +01:00
parent ecb3b923c1
commit ed36199275
3 changed files with 241 additions and 137 deletions

View File

@ -7,6 +7,7 @@ Legend:
1.9.2
+ program should work also with MariaDB 10.1
+ Frequency memories added
+ list of previous QSO should be much faster on older computers
- CW type window was not sizeable - fixed
- password to LoTW/eQSL could not have special characters - fixed
- program crashed after opening Preferences when path to rigctl was empty - fixed

View File

@ -24,6 +24,13 @@ uses
type
TExplodeArray = array of string;
type
TVisibleColumn = record
FieldName : String[20];
Visible : Boolean;
Exists : Boolean;
end;
const
MyWhiteSpace = [#0..#31];
AllowedCallChars = ['A'..'Z', '0'..'9', '/'];
@ -167,6 +174,8 @@ type
procedure OpenInApp(what : String);
procedure LoadRigsToComboBox(CurrentRigId : String; RigCtlBinaryPath : String; RigComboBox : TComboBox);
procedure GetShorterCoordinates(latitude,longitude : Currency; var lat, long : String);
procedure LoadVisibleColumnsConfiguration(var aColumns : array of TVisibleColumn);
function StrToDateFormat(sDate : String) : TDateTime;
function DateToSQLIteDate(date : TDateTime) : String;
@ -4197,6 +4206,126 @@ begin
long := FloatToStr(longitude)
end;
procedure TdmUtils.LoadVisibleColumnsConfiguration(var aColumns : Array of TVisibleColumn);
var
i : Integer;
begin
aColumns[0].FieldName := 'QSODATE';
aColumns[0].Visible := cqrini.ReadBool('Columns','qsodate',True);
aColumns[1].FieldName := 'TIME_ON';
aColumns[1].Visible := cqrini.ReadBool('Columns','time_on',True);
aColumns[2].FieldName := 'TIME_OFF';
aColumns[2].Visible := cqrini.ReadBool('Columns','time_off',True);
aColumns[3].FieldName := 'CALLSIGN';
aColumns[3].Visible := cqrini.ReadBool('Columns','CallSign',True);
aColumns[4].FieldName := 'MODE';
aColumns[4].Visible := cqrini.ReadBool('Columns','Mode',True);
aColumns[4].FieldName := 'FREQ';
aColumns[4].Visible := cqrini.ReadBool('Columns','Freq',True);
aColumns[5].FieldName := 'RST_S';
aColumns[5].Visible := cqrini.ReadBool('Columns','RST_S',True);
aColumns[6].FieldName := 'RST_R';
aColumns[6].Visible := cqrini.ReadBool('Columns','RST_R',True);
aColumns[7].FieldName := 'NAME';
aColumns[7].Visible := cqrini.ReadBool('Columns','Name',True);
aColumns[8].FieldName := 'QTH';
aColumns[8].Visible := cqrini.ReadBool('Columns','QTH',True);
aColumns[9].FieldName := 'QSL_S';
aColumns[9].Visible := cqrini.ReadBool('Columns','QSL_S',True);
aColumns[10].FieldName := 'QSL_R';
aColumns[10].Visible := cqrini.ReadBool('Columns','QSL_R',True);
aColumns[11].FieldName := 'QSL_VIA';
aColumns[11].Visible := cqrini.ReadBool('Columns','QSL_VIA',False);
aColumns[12].FieldName := 'LOC';
aColumns[12].Visible := cqrini.ReadBool('Columns','Locator',False);
aColumns[13].FieldName := 'MY_LOC';
aColumns[13].Visible := cqrini.ReadBool('Columns','MyLoc',False);
aColumns[14].FieldName := 'IOTA';
aColumns[14].Visible := cqrini.ReadBool('Columns','IOTA',False);
aColumns[15].FieldName := 'AWARD';
aColumns[16].Visible := cqrini.ReadBool('Columns','Award',False);
aColumns[17].FieldName := 'COUNTY';
aColumns[17].Visible := cqrini.ReadBool('Columns','County',False);
aColumns[18].FieldName := 'PWR';
aColumns[18].Visible := cqrini.ReadBool('Columns','Power',False);
aColumns[19].FieldName := 'DXCC_REF';
aColumns[19].Visible := cqrini.ReadBool('Columns','DXCC',False);
aColumns[21].FieldName := 'REMARKS';
aColumns[21].Visible := cqrini.ReadBool('Columns','Remarks',False);
aColumns[22].FieldName := 'WAZ';
aColumns[22].Visible := cqrini.ReadBool('Columns','WAZ',False);
aColumns[23].FieldName := 'ITU';
aColumns[23].Visible := cqrini.ReadBool('Columns','ITU',False);
aColumns[24].FieldName := 'STATE';
aColumns[24].Visible := cqrini.ReadBool('Columns','State',False);
aColumns[25].FieldName := 'LOTW_QSLSDATE';
aColumns[25].Visible := cqrini.ReadBool('Columns','LoTWQSLSDate',False);
aColumns[26].FieldName := 'LOTW_QSLRDATE';
aColumns[26].Visible := cqrini.ReadBool('Columns','LoTWQSLRDate',False);
aColumns[27].FieldName := 'LOTW_QSLS';
aColumns[27].Visible := cqrini.ReadBool('Columns','LoTWQSLS',False);
aColumns[28].FieldName := 'LOTW_QSLR';
aColumns[28].Visible := cqrini.ReadBool('Columns','LOTWQSLR',False);
aColumns[29].FieldName := 'CONT';
aColumns[29].Visible := cqrini.ReadBool('Columns','Cont',False);
aColumns[30].FieldName := 'QSLS_DATE';
aColumns[30].Visible := cqrini.ReadBool('Columns','QSLSDate',False);
aColumns[31].FieldName := 'QSLR_DATE';
aColumns[31].Visible := cqrini.ReadBool('Columns','QSLRDate',False);
aColumns[32].FieldName := 'EQSL_QSL_SENT';
aColumns[32].Visible := cqrini.ReadBool('Columns','eQSLQSLS',False);
aColumns[33].FieldName := 'EQSL_QSLSDATE';
aColumns[33].Visible := cqrini.ReadBool('Columns','eQSLQSLSDate',False);
aColumns[34].FieldName := 'EQSL_QSL_RCVD';
aColumns[34].Visible := cqrini.ReadBool('Columns','eQSLQSLR',False);
aColumns[35].FieldName := 'EQSL_QSLRDATE';
aColumns[35].Visible := cqrini.ReadBool('Columns','eQSLQSLRDate',False);
aColumns[36].FieldName := 'QSLR';
aColumns[36].Visible := cqrini.ReadBool('Columns','QSLRAll',False);
aColumns[37].FieldName := 'COUNTRY';
aColumns[37].Visible := cqrini.ReadBool('Columns','Country',False);
for i:=0 to Length(aColumns)-1 do
aColumns[i].Exists := False
end;
initialization
{$I dUtils.lrs}

View File

@ -28,6 +28,7 @@ const
type
TRemoteModeType = (rmtFldigi, rmtWsjt);
type
{ TfrmNewQSO }
@ -4695,148 +4696,121 @@ begin
end;
procedure TfrmNewQSO.ShowFields;
var
aColumns : array of TVisibleColumn;
i : Integer;
y : Integer;
procedure ChangeVis(Column : String; IfShow : Boolean);
var
i : Integer;
fQsoGr : String;
fqSize : Integer;
isAdded : Boolean = False;
begin
fQsoGr := cqrini.ReadString('Fonts','QGrids','Sans 10');
fqSize := cqrini.ReadInteger('Fonts','qSize',10);
for i:=0 to dbgrdQSOBefore.Columns.Count-1 do
begin
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'BAND' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'QSO_DXCC' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'PROFILE' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'ID_CQRLOG_MAIN' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'IDCALL' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR1' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR2' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR3' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR4' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR5' then
dbgrdQSOBefore.Columns[i].Visible := False;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'STATE') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'LOTW_QSLS') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'LOTW_QSLR') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'EQSL_QSL_SENT') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'EQSL_QSL_RCVD') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'QSLR') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'FREQ') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taRightJustify;
dbgrdQSOBefore.Columns[i].DisplayFormat := '###,##0.0000;;';
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = UpperCase(Column) then
begin
dbgrdQSOBefore.Columns[i].Visible := IfShow;
if IfShow and (dbgrdQSOBefore.Columns[i].Width = 0) then
dbgrdQSOBefore.Columns[i].Width := 60;
isAdded := True
end;
if cqrini.ReadBool('Fonts','UseDefault',True) then
begin
dbgrdQSOBefore.Columns[i].Title.Font.Name := 'default';
dbgrdQSOBefore.Columns[i].Title.Font.Size := 0
end
else begin
dbgrdQSOBefore.Columns[i].Title.Font.Name := fQsoGr;
dbgrdQSOBefore.Columns[i].Title.Font.Size := fqSize
end
end;
if (not isAdded) and IfShow then
begin
dbgrdQSOBefore.Columns.Add;
dbgrdQSOBefore.Columns[dbgrdQSOBefore.Columns.Count-1].FieldName := LowerCase(Column);
dbgrdQSOBefore.Columns[dbgrdQSOBefore.Columns.Count-1].DisplayName := LowerCase(Column);
dbgrdQSOBefore.Columns[dbgrdQSOBefore.Columns.Count-1].Width := 60
end
end;
fQsoGr : String;
fqSize : Integer;
isAdded : Boolean = False;
fDefault : Boolean;
ColExists : Boolean = False;
begin
dbgrdQSOBefore.DataSource := dmData.dsrQSOBefore;
dbgrdQSOBefore.ResetColWidths;
LoadGrid;
//dbgrdQSOBefore.Columns[0].Visible := False;
ChangeVis('qsodate',cqrini.ReadBool('Columns','qsodate',True));
ChangeVis('TIME_ON',cqrini.ReadBool('Columns','time_on',True));
ChangeVis('TIME_OFF',cqrini.ReadBool('Columns','time_off',False));
ChangeVis('CALLSIGN',cqrini.ReadBool('Columns','CallSign',True));
ChangeVis('MODE',cqrini.ReadBool('Columns','Mode',True));
ChangeVis('FREQ',cqrini.ReadBool('Columns','Freq',True));
ChangeVis('RST_S',cqrini.ReadBool('Columns','RST_S',True));
ChangeVis('RST_R',cqrini.ReadBool('Columns','RST_R',True));
ChangeVis('NAME',cqrini.ReadBool('Columns','Name',True));
ChangeVis('QTH',cqrini.ReadBool('Columns','QTH',True));
ChangeVis('QSL_S',cqrini.ReadBool('Columns','QSL_S',True));
ChangeVis('QSL_R',cqrini.ReadBool('Columns','QSL_R',True));
ChangeVis('QSL_VIA',cqrini.ReadBool('Columns','QSL_VIA',False));
ChangeVis('LOC',cqrini.ReadBool('Columns','Locator',False));
ChangeVis('MY_LOC',cqrini.ReadBool('Columns','MyLoc',False));
ChangeVis('IOTA',cqrini.ReadBool('Columns','IOTA',False));
ChangeVis('AWARD',cqrini.ReadBool('Columns','Award',False));
ChangeVis('COUNTY',cqrini.ReadBool('Columns','County',False));
ChangeVis('PWR',cqrini.ReadBool('Columns','Power',False));
ChangeVis('dxcc_ref',cqrini.ReadBool('Columns','DXCC',False));
ChangeVis('REMARKS',cqrini.ReadBool('Columns','Remarks',False));
ChangeVis('WAZ',cqrini.ReadBool('Columns','WAZ',False));
ChangeVis('ITU',cqrini.ReadBool('Columns','ITU',False));
ChangeVis('STATE',cqrini.ReadBool('Columns','State',False));
ChangeVis('LOTW_QSLSDATE',cqrini.ReadBool('Columns','LoTWQSLSDate',False));
ChangeVis('LOTW_QSLRDATE',cqrini.ReadBool('Columns','LoTWQSLRDate',False));
ChangeVis('LOTW_QSLS',cqrini.ReadBool('Columns','LoTWQSLS',False));
ChangeVis('LOTW_QSLR',cqrini.ReadBool('Columns','LOTWQSLR',False));
ChangeVis('CONT',cqrini.ReadBool('Columns','Cont',False));
ChangeVis('QSLS_DATE',cqrini.ReadBool('Columns','QSLSDate',False));
ChangeVis('QSLR_DATE',cqrini.ReadBool('Columns','QSLRDate',False));
ChangeVis('EQSL_QSL_SENT',cqrini.ReadBool('Columns','eQSLQSLS',False));
ChangeVis('EQSL_QSLSDATE',cqrini.ReadBool('Columns','eQSLQSLSDate',False));
ChangeVis('EQSL_QSL_RCVD',cqrini.ReadBool('Columns','eQSLQSLR',False));
ChangeVis('EQSL_QSLRDATE',cqrini.ReadBool('Columns','eQSLQSLRDate',False));
ChangeVis('QSLR',cqrini.ReadBool('Columns','QSLRAll',False));
ChangeVis('COUNTRY',cqrini.ReadBool('Columns','Country',False))
SetLength(aColumns,38);
dmUtils.LoadVisibleColumnsConfiguration(aColumns);
fQsoGr := cqrini.ReadString('Fonts','QGrids','Sans 10');
fqSize := cqrini.ReadInteger('Fonts','qSize',10);
fDefault := cqrini.ReadBool('Fonts','UseDefault',True);
for i:=0 to dbgrdQSOBefore.Columns.Count-1 do
begin
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'BAND' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'QSO_DXCC' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'PROFILE' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'ID_CQRLOG_MAIN' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'IDCALL' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR1' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR2' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR3' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR4' then
dbgrdQSOBefore.Columns[i].Visible := False;
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'CLUB_NR5' then
dbgrdQSOBefore.Columns[i].Visible := False;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'STATE') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'LOTW_QSLS') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'LOTW_QSLR') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'EQSL_QSL_SENT') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'EQSL_QSL_RCVD') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'QSLR') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taCenter;
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
if (UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = 'FREQ') then
begin
dbgrdQSOBefore.Columns[i].Alignment := taRightJustify;
dbgrdQSOBefore.Columns[i].DisplayFormat := '###,##0.0000;;';
dbgrdQSOBefore.Columns[i].Title.Alignment := taCenter
end;
for y:=0 to Length(aColumns)-1 do
begin
if UpperCase(dbgrdQSOBefore.Columns[i].DisplayName) = aColumns[y].FieldName then
begin
dbgrdQSOBefore.Columns[i].Visible := aColumns[y].Visible;
aColumns[y].Exists := True;
if aColumns[y].Visible and (dbgrdQSOBefore.Columns[i].Width = 0) then
dbgrdQSOBefore.Columns[i].Width := 60
end
end;
if fDefault then
begin
dbgrdQSOBefore.Columns[i].Title.Font.Name := 'default';
dbgrdQSOBefore.Columns[i].Title.Font.Size := 0
end
else begin
dbgrdQSOBefore.Columns[i].Title.Font.Name := fQsoGr;
dbgrdQSOBefore.Columns[i].Title.Font.Size := fqSize
end
end;
for i:=0 to Length(aColumns) do
begin
if (aColumns[i].Visible) and (not aColumns[i].Exists) then
begin
dbgrdQSOBefore.Columns.Add;
dbgrdQSOBefore.Columns[dbgrdQSOBefore.Columns.Count-1].FieldName := aColumns[i].FieldName;
dbgrdQSOBefore.Columns[dbgrdQSOBefore.Columns.Count-1].DisplayName := aColumns[i].FieldName;
dbgrdQSOBefore.Columns[dbgrdQSOBefore.Columns.Count-1].Width := 60
end
end
end;
procedure TfrmNewQSO.ChangeReports;