Ignore:
Timestamp:
Jul 1, 2023, 11:54:02 AM (11 months ago)
Author:
chronos
Message:
  • Added: Import form preparation.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/FormExport.pas

    r162 r167  
    55uses
    66  Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ComCtrls,
    7   Table, LazFileUtils, FormEx;
     7  ExtCtrls, Table, LazFileUtils, FormEx;
    88
    99type
     
    1515    ButtonCancel: TButton;
    1616    ButtonExport: TButton;
     17    CheckBoxHumanReadableHeader: TCheckBox;
    1718    ComboBoxOutputFormat: TComboBox;
    1819    EditOutputFile: TEdit;
     
    2223    SaveDialog1: TSaveDialog;
    2324    ScrollBox1: TScrollBox;
     25    TimerRedraw: TTimer;
    2426    procedure ButtonBrowseClick(Sender: TObject);
    2527    procedure ButtonExportClick(Sender: TObject);
     28    procedure CheckBoxHumanReadableHeaderChange(Sender: TObject);
    2629    procedure ComboBoxOutputFormatChange(Sender: TObject);
    2730    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
     
    2932    procedure FormDestroy(Sender: TObject);
    3033    procedure FormShow(Sender: TObject);
     34    procedure TimerRedrawTimer(Sender: TObject);
    3135  private
    3236    Table: TTable;
     37    RedrawPending: Boolean;
    3338    procedure PrepareTable;
    3439    procedure UpdateFileNameExt;
     
    4348
    4449uses
    45   Core, Common, RegistryEx, VCardFile;
     50  Core, Common, RegistryEx, VCardFile, VCard;
    4651
    4752{ TFormExport }
     
    5863  TableFormat := TTableFormat(ComboBoxOutputFormat.Items.Objects[ComboBoxOutputFormat.ItemIndex]);
    5964  SaveStringToFile(Table.GetOutput(TableFormat), EditOutputFile.Text);
     65end;
     66
     67procedure TFormExport.CheckBoxHumanReadableHeaderChange(Sender: TObject);
     68begin
     69  RedrawPending := True;
    6070end;
    6171
     
    102112procedure TFormExport.FormShow(Sender: TObject);
    103113begin
    104   PrepareTable;
    105   Table.GetOutputListView(ListView1);
     114  RedrawPending := True;
     115end;
     116
     117procedure TFormExport.TimerRedrawTimer(Sender: TObject);
     118begin
     119  if RedrawPending then begin
     120    PrepareTable;
     121    Table.GetOutputListView(ListView1);
     122    RedrawPending := False;
     123  end;
    106124end;
    107125
     
    113131  Values: TStringList;
    114132  Index: Integer;
    115 begin
     133  Fields: TContactFields;
     134  Field: TContactField;
     135  Columns: TStringList;
     136begin
     137  Fields := TContact.GetFields;
     138  Table.Clear;
     139
    116140  Values := TStringList.Create;
     141  Columns := TStringList.Create;
    117142  try
    118143    with TVCardFile(Core.Core.DataFile), VCard do begin
     
    123148        for J := 0 to Contacts[I].Properties.Count - 1 do
    124149        if not Contacts[I].Properties[J].Name.StartsWith('PHOTO') and
    125           (Table.Columns.IndexOf(Contacts[I].Properties[J].Name) = -1) then
    126           Table.Columns.Add(Contacts[I].Properties[J].Name);
     150          (Table.Columns.IndexOf(Contacts[I].Properties[J].Name) = -1) then begin
     151            Table.Columns.Add(Contacts[I].Properties[J].Name);
     152            Columns.Add(Contacts[I].Properties[J].Name);
     153          end;
     154      end;
     155
     156      if CheckBoxHumanReadableHeader.Checked then begin
     157        for I := 0 to Table.Columns.Count - 1 do begin
     158          Field := Fields.GetBySysName(Table.Columns[I]);
     159          if Assigned(Field) then Table.Columns[I] := Field.Title;
     160        end;
    127161      end;
    128162
    129163      for I := 0 to Contacts.Count - 1 do begin
    130164        Values.Clear;
    131         for J := 0 to Table.Columns.Count - 1 do
     165        for J := 0 to Columns.Count - 1 do
    132166          Values.Add('');
    133167        for J := 0 to Contacts[I].Properties.Count - 1 do begin
    134           Index := Table.Columns.IndexOf(Contacts[I].Properties[J].Name);
     168          Index := Columns.IndexOf(Contacts[I].Properties[J].Name);
    135169          if Index <> -1 then
    136170            Values[Index] := Contacts[I].Properties[J].Value;
     
    144178  finally
    145179    Values.Free;
     180    Columns.Free;
    146181  end;
    147182end;
     
    163198  try
    164199    CurrentContext := Core.Core.ApplicationInfo1.GetRegistryContext;
    165     EditOutputFile.Text := ReadStringWithDefault('LastExportFileName', 'Export.txt');
    166     TableFormat := TTableFormat(ReadIntegerWithDefault('TableFormat', Integer(tfCsv)));
     200    EditOutputFile.Text := ReadStringWithDefault('ExportFileName', 'Export.txt');
     201    TableFormat := TTableFormat(ReadIntegerWithDefault('ExportTableFormat', Integer(tfCsv)));
     202    CheckBoxHumanReadableHeader.Checked := ReadBoolWithDefault('ExportHumanReadableColumns', CheckBoxHumanReadableHeader.Checked);
    167203    ComboBoxOutputFormat.ItemIndex := ComboBoxOutputFormat.Items.IndexOfObject(TObject(TableFormat));
    168204  finally
     
    176212  try
    177213    CurrentContext := Core.Core.ApplicationInfo1.GetRegistryContext;
    178     WriteString('LastExportFileName', EditOutputFile.Text);
    179     WriteInteger('TableFormat', Integer(ComboBoxOutputFormat.Items.Objects[ComboBoxOutputFormat.ItemIndex]));
     214    WriteString('ExportFileName', EditOutputFile.Text);
     215    WriteInteger('ExportTableFormat', Integer(ComboBoxOutputFormat.Items.Objects[ComboBoxOutputFormat.ItemIndex]));
     216    WriteBool('ExportHumanReadableColumns', CheckBoxHumanReadableHeader.Checked);
    180217  finally
    181218    Free;
Note: See TracChangeset for help on using the changeset viewer.