Changeset 138


Ignore:
Timestamp:
Aug 23, 2022, 10:06:54 AM (21 months ago)
Author:
chronos
Message:
  • Added: Allow to configure visible columns in contacts table.
Location:
trunk
Files:
3 added
12 edited

Legend:

Unmodified
Added
Removed
  • trunk/Forms/UFormContacts.lfm

    r128 r138  
    1313  OnResize = FormResize
    1414  OnShow = FormShow
    15   LCLVersion = '2.2.0.4'
     15  LCLVersion = '2.2.2.0'
    1616  object ListView1: TListView
    1717    Left = 0
    18     Height = 810
     18    Height = 809
    1919    Top = 0
    2020    Width = 1210
     
    6868    Left = 0
    6969    Height = 39
    70     Top = 842
     70    Top = 841
    7171    Width = 1210
    7272    Align = alBottom
     
    116116    Left = 0
    117117    Height = 32
    118     Top = 810
     118    Top = 809
    119119    Width = 1210
    120120    OnChange = ListViewFilter1Change
     
    123123  object StatusBar1: TStatusBar
    124124    Left = 0
    125     Height = 27
    126     Top = 881
     125    Height = 28
     126    Top = 880
    127127    Width = 1210
    128128    Panels = <   
     
    171171    object MenuItem8: TMenuItem
    172172      Action = ASaveToFile
     173    end
     174    object Separator1: TMenuItem
     175      Caption = '-'
     176    end
     177    object MenuItemColumns: TMenuItem
     178      Action = AColumns
    173179    end
    174180  end
     
    233239      ShortCut = 16470
    234240    end
     241    object AColumns: TAction
     242      Caption = 'Columns'
     243      OnExecute = AColumnsExecute
     244    end
    235245  end
    236246  object ListViewSort1: TListViewSort
  • trunk/Forms/UFormContacts.lrj

    r82 r138  
    1818{"hash":304761,"name":"tformcontacts.acopy.caption","sourcebytes":[67,111,112,121],"value":"Copy"},
    1919{"hash":19140,"name":"tformcontacts.acut.caption","sourcebytes":[67,117,116],"value":"Cut"},
    20 {"hash":5671589,"name":"tformcontacts.apaste.caption","sourcebytes":[80,97,115,116,101],"value":"Paste"}
     20{"hash":5671589,"name":"tformcontacts.apaste.caption","sourcebytes":[80,97,115,116,101],"value":"Paste"},
     21{"hash":174310419,"name":"tformcontacts.acolumns.caption","sourcebytes":[67,111,108,117,109,110,115],"value":"Columns"}
    2122]}
  • trunk/Forms/UFormContacts.pas

    r134 r138  
    55uses
    66  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, ComCtrls,
    7   Menus, ActnList, UVCard, UListViewSort, LazUTF8, Clipbrd,
    8   Generics.Collections;
     7  Menus, ActnList, UVCard, UListViewSort, LazUTF8, Clipbrd, URegistry,
     8  Generics.Collections, Types;
    99
    1010type
     
    1616    AClone: TAction;
    1717    ACopy: TAction;
     18    AColumns: TAction;
    1819    ACut: TAction;
    1920    APaste: TAction;
     
    3132    MenuItem11: TMenuItem;
    3233    MenuItem12: TMenuItem;
     34    Separator1: TMenuItem;
     35    MenuItemColumns: TMenuItem;
    3336    MenuItem2: TMenuItem;
    3437    MenuItem3: TMenuItem;
     
    5356    procedure AAddExecute(Sender: TObject);
    5457    procedure ACloneExecute(Sender: TObject);
     58    procedure AColumnsExecute(Sender: TObject);
    5559    procedure ACopyExecute(Sender: TObject);
    5660    procedure ACutExecute(Sender: TObject);
     
    8387    procedure DoUpdateInterface;
    8488    procedure UpdateColumns;
     89    procedure LoadFromRegistry(Context: TRegistryContext);
     90    procedure SaveToRegistry(Context: TRegistryContext);
    8591  public
    8692    ListViewColumns: TContactFieldIndexes;
    8793    FilterItems: TContactFilterItems;
    88     property Contacts: TContacts read FContacts write SetContacts;
     94    Context: TRegistryContext;
    8995    procedure ReloadList;
    9096    procedure BeginUpdate;
    9197    procedure EndUpdate;
    9298    procedure UpdateInterface;
     99    property Contacts: TContacts read FContacts write SetContacts;
    93100  end;
    94101
     
    102109
    103110uses
    104   UFormContact, UCore, UVCardFile;
     111  UFormContact, UCore, UVCardFile, UFormColumns;
    105112
    106113resourcestring
     
    315322end;
    316323
     324procedure TFormContacts.LoadFromRegistry(Context: TRegistryContext);
     325var
     326  I: Integer;
     327  Registry: TRegistryEx;
     328  ContactFieldIndex: TContactFieldIndex;
     329begin
     330  Registry := TRegistryEx.Create;
     331  with Registry do
     332  try
     333    RootKey := Context.RootKey;
     334    OpenKey(Context.Key, True);
     335    ListViewColumns.Clear;
     336    I := 0;
     337    while ValueExists('Column' + IntToStr(I)) do begin
     338      ContactFieldIndex := TContactFieldIndex(ReadIntegerWithDefault('Column' + IntToStr(I), -1));
     339      ListViewColumns.Add(ContactFieldIndex);
     340      Inc(I);
     341    end;
     342
     343    if ListViewColumns.Count = 0 then begin
     344      with ListViewColumns do begin
     345        Add(cfFullName);
     346        Add(cfFirstName);
     347        Add(cfMiddleName);
     348        Add(cfLastName);
     349        Add(cfTel);
     350        Add(cfTelCell);
     351        Add(cfTelHome);
     352        Add(cfTelWork);
     353        Add(cfEmailWork);
     354        Add(cfOrganization);
     355      end;
     356    end;
     357  finally
     358    Free;
     359  end;
     360end;
     361
     362procedure TFormContacts.SaveToRegistry(Context: TRegistryContext);
     363var
     364  I: Integer;
     365  Registry: TRegistryEx;
     366begin
     367  Registry := TRegistryEx.Create;
     368  with Registry do
     369  try
     370    RootKey := Context.RootKey;
     371    OpenKey(Context.Key, True);
     372    for I := 0 to ListViewColumns.Count - 1 do
     373      WriteInteger('Column' + IntToStr(I), Integer(ListViewColumns[I]));
     374
     375    // Remove old columns
     376    I := ListViewColumns.Count;
     377    while ValueExists('Column' + IntToStr(I)) do begin
     378      DeleteValue('Column' + IntToStr(I));
     379      Inc(I);
     380    end;
     381  finally
     382    Free;
     383  end;
     384end;
     385
    317386procedure TFormContacts.FormShow(Sender: TObject);
    318387begin
     
    320389  Core.ThemeManager1.UseTheme(Self);
    321390  Core.PersistentForm1.Load(Self);
     391  LoadFromRegistry(Context);
    322392  ReloadList;
    323393  UpdateInterface;
     
    385455end;
    386456
     457procedure TFormContacts.AColumnsExecute(Sender: TObject);
     458var
     459  FormColumns: TFormColumns;
     460  I: Integer;
     461  Field: TContactField;
     462begin
     463  FormColumns := TFormColumns.Create(nil);
     464  with FormColumns do
     465  try
     466    for I := 0 to ListViewColumns.Count - 1 do begin
     467      Field := TContact.GetFields.GetByIndex(ListViewColumns[I]);
     468      if Assigned(Field) then
     469        ActiveColumns.AddObject(Field.Title, Field);
     470    end;
     471    for I := 0 to TContact.GetFields.Count - 1 do begin
     472      Field := TContact.GetFields[I];
     473      if ListViewColumns.IndexOf(Field.Index) = -1 then
     474        AvailableColumns.AddObject(Field.Title, Field);
     475    end;
     476    if ShowModal = mrOK then begin
     477      ListViewColumns.Clear;
     478      for I := 0 to ActiveColumns.Count - 1 do begin
     479        ListViewColumns.Add(TContactField(ActiveColumns.Objects[I]).Index);
     480      end;
     481      UpdateColumns;
     482      ReloadList;
     483    end;
     484  finally
     485    Free;
     486  end;
     487end;
     488
    387489procedure TFormContacts.ACopyExecute(Sender: TObject);
    388490var
     
    571673  );
    572674begin
     675  SaveToRegistry(Context);
    573676  Core.PersistentForm1.Save(Self);
    574677end;
     
    579682begin
    580683  FilterItems := TContactFilterItems.Create;
    581 
    582684  ListViewColumns := TContactFieldIndexes.Create;
    583   with ListViewColumns do begin
    584     Add(cfFullName);
    585     Add(cfFirstName);
    586     Add(cfMiddleName);
    587     Add(cfLastName);
    588     Add(cfTel);
    589     Add(cfTelCell);
    590     Add(cfTelHome);
    591     Add(cfTelWork);
    592     Add(cfEmailWork);
    593   end;
    594685
    595686  FContacts := nil;
  • trunk/Forms/UFormMain.lfm

    r126 r138  
    1515  OnResize = FormResize
    1616  OnShow = FormShow
    17   LCLVersion = '2.2.0.4'
     17  LCLVersion = '2.2.2.0'
    1818  object CoolBar1: TCoolBar
    1919    Left = 0
     
    177177        OnClick = MenuItemToolbarClick
    178178      end
     179      object MenuItemColumns: TMenuItem
     180        Caption = 'Columns'
     181        OnClick = MenuItemColumnsClick
     182      end
    179183    end
    180184    object MenuItemTools: TMenuItem
  • trunk/Forms/UFormMain.lrj

    r81 r138  
    66{"hash":380871,"name":"tformmain.menuitemview.caption","sourcebytes":[86,105,101,119],"value":"View"},
    77{"hash":8267778,"name":"tformmain.menuitemtoolbar.caption","sourcebytes":[77,97,105,110,32,116,111,111,108,98,97,114],"value":"Main toolbar"},
     8{"hash":174310419,"name":"tformmain.menuitemcolumns.caption","sourcebytes":[67,111,108,117,109,110,115],"value":"Columns"},
    89{"hash":5989939,"name":"tformmain.menuitemtools.caption","sourcebytes":[84,111,111,108,115],"value":"Tools"},
    910{"hash":322608,"name":"tformmain.menuitemhelp.caption","sourcebytes":[72,101,108,112],"value":"Help"}
  • trunk/Forms/UFormMain.pas

    r129 r138  
    1919    MenuItem12: TMenuItem;
    2020    MenuItem13: TMenuItem;
     21    MenuItemColumns: TMenuItem;
    2122    MenuItem3: TMenuItem;
    2223    MenuItem4: TMenuItem;
     
    5960    procedure FormResize(Sender: TObject);
    6061    procedure FormShow(Sender: TObject);
     62    procedure MenuItemColumnsClick(Sender: TObject);
    6163    procedure MenuItemToolbarClick(Sender: TObject);
    6264  private
     
    7678
    7779uses
    78   UCore, UFormContacts, UVCard, UVCardFile;
     80  UCore, UFormContacts, UVCard, UVCardFile, URegistry;
    7981
    8082resourcestring
     
    121123    CoolBar1.AutosizeBands;
    122124
     125    FormContacts.Context := TRegistryContext.Create(Core.ApplicationInfo1.RegistryRoot,
     126      Core.ApplicationInfo1.RegistryKey + '\ContactsColumns');
    123127    FormContacts.Contacts := TVCardFile(Core.DataFile).VCard.Contacts;
    124128    FormContacts.ManualDock(Self, nil, alClient);
     
    128132    FormContacts.EndUpdate;
    129133  end;
     134end;
     135
     136procedure TFormMain.MenuItemColumnsClick(Sender: TObject);
     137begin
     138  FormContacts.AColumns.Execute;
    130139end;
    131140
  • trunk/Languages/vCardStudio.cs.po

    r134 r138  
    11msgid ""
    22msgstr ""
    3 "Content-Type: text/plain; charset=UTF-8\n"
    43"Project-Id-Version: \n"
    54"POT-Creation-Date: \n"
     
    76"Last-Translator: Chronos <robie@centrum.cz>\n"
    87"Language-Team: \n"
     8"Language: cs\n"
    99"MIME-Version: 1.0\n"
     10"Content-Type: text/plain; charset=UTF-8\n"
    1011"Content-Transfer-Encoding: 8bit\n"
    11 "Language: cs\n"
    12 "X-Generator: Poedit 3.0\n"
     12"X-Generator: Poedit 3.0.1\n"
    1313
    1414#: tcore.aabout.caption
     
    113113msgstr "Vybrat adresář"
    114114
     115#: tformcolumns.buttoncancel.caption
     116msgctxt "tformcolumns.buttoncancel.caption"
     117msgid "Cancel"
     118msgstr "Zrušit"
     119
     120#: tformcolumns.buttondown.caption
     121msgid "Move down"
     122msgstr "Posunout dolů"
     123
     124#: tformcolumns.buttonok.caption
     125msgctxt "tformcolumns.buttonok.caption"
     126msgid "OK"
     127msgstr "OK"
     128
     129#: tformcolumns.buttontoleft.caption
     130msgid "<<"
     131msgstr "<<"
     132
     133#: tformcolumns.buttontoright.caption
     134msgid ">>"
     135msgstr ">>"
     136
     137#: tformcolumns.buttonup.caption
     138msgid "Move up"
     139msgstr "Posunout nahoru"
     140
     141#: tformcolumns.caption
     142msgid "Columns settings"
     143msgstr "Nastavení sloupců"
     144
     145#: tformcolumns.label1.caption
     146msgid "Active:"
     147msgstr "Aktivní:"
     148
     149#: tformcolumns.label2.caption
     150msgid "Available:"
     151msgstr "Dostupné:"
     152
    115153#: tformcompare.afileopenleft.caption
    116154msgid "Open left file"
     
    622660msgstr "Klonovat"
    623661
     662#: tformcontacts.acolumns.caption
     663msgctxt "tformcontacts.acolumns.caption"
     664msgid "Columns"
     665msgstr "Sloupce"
     666
    624667#: tformcontacts.acopy.caption
    625668msgctxt "tformcontacts.acopy.caption"
     
    817860msgid "Find"
    818861msgstr "Hledat"
     862
     863#: tformmain.menuitemcolumns.caption
     864#, fuzzy
     865msgctxt "tformmain.menuitemcolumns.caption"
     866msgid "Columns"
     867msgstr "Sloupce"
    819868
    820869#: tformmain.menuitemfile.caption
  • trunk/Languages/vCardStudio.pot

    r134 r138  
    103103msgstr ""
    104104
     105#: tformcolumns.buttoncancel.caption
     106msgctxt "tformcolumns.buttoncancel.caption"
     107msgid "Cancel"
     108msgstr ""
     109
     110#: tformcolumns.buttondown.caption
     111msgid "Move down"
     112msgstr ""
     113
     114#: tformcolumns.buttonok.caption
     115msgctxt "tformcolumns.buttonok.caption"
     116msgid "OK"
     117msgstr ""
     118
     119#: tformcolumns.buttontoleft.caption
     120msgid "<<"
     121msgstr ""
     122
     123#: tformcolumns.buttontoright.caption
     124msgid ">>"
     125msgstr ""
     126
     127#: tformcolumns.buttonup.caption
     128msgid "Move up"
     129msgstr ""
     130
     131#: tformcolumns.caption
     132msgid "Columns settings"
     133msgstr ""
     134
     135#: tformcolumns.label1.caption
     136msgid "Active:"
     137msgstr ""
     138
     139#: tformcolumns.label2.caption
     140msgid "Available:"
     141msgstr ""
     142
    105143#: tformcompare.afileopenleft.caption
    106144msgid "Open left file"
     
    612650msgstr ""
    613651
     652#: tformcontacts.acolumns.caption
     653msgctxt "tformcontacts.acolumns.caption"
     654msgid "Columns"
     655msgstr ""
     656
    614657#: tformcontacts.acopy.caption
    615658msgctxt "tformcontacts.acopy.caption"
     
    799842msgstr ""
    800843
     844#: tformmain.menuitemcolumns.caption
     845msgctxt "tformmain.menuitemcolumns.caption"
     846msgid "Columns"
     847msgstr ""
     848
    801849#: tformmain.menuitemfile.caption
    802850msgctxt "tformmain.menuitemfile.caption"
  • trunk/Languages/vCardStudio.sv.po

    r134 r138  
    114114msgstr "Välj en katalog"
    115115
     116#: tformcolumns.buttoncancel.caption
     117#, fuzzy
     118msgctxt "tformcolumns.buttoncancel.caption"
     119msgid "Cancel"
     120msgstr "Avbryt"
     121
     122#: tformcolumns.buttondown.caption
     123msgid "Move down"
     124msgstr ""
     125
     126#: tformcolumns.buttonok.caption
     127#, fuzzy
     128msgctxt "tformcolumns.buttonok.caption"
     129msgid "OK"
     130msgstr "Ok"
     131
     132#: tformcolumns.buttontoleft.caption
     133msgid "<<"
     134msgstr ""
     135
     136#: tformcolumns.buttontoright.caption
     137msgid ">>"
     138msgstr ""
     139
     140#: tformcolumns.buttonup.caption
     141msgid "Move up"
     142msgstr ""
     143
     144#: tformcolumns.caption
     145msgid "Columns settings"
     146msgstr ""
     147
     148#: tformcolumns.label1.caption
     149msgid "Active:"
     150msgstr ""
     151
     152#: tformcolumns.label2.caption
     153msgid "Available:"
     154msgstr ""
     155
    116156#: tformcompare.afileopenleft.caption
    117157msgid "Open left file"
     
    626666msgstr "Klona"
    627667
     668#: tformcontacts.acolumns.caption
     669msgctxt "tformcontacts.acolumns.caption"
     670msgid "Columns"
     671msgstr ""
     672
    628673#: tformcontacts.acopy.caption
    629674msgctxt "tformcontacts.acopy.caption"
     
    821866msgid "Find"
    822867msgstr "Hitta"
     868
     869#: tformmain.menuitemcolumns.caption
     870msgctxt "tformmain.menuitemcolumns.caption"
     871msgid "Columns"
     872msgstr ""
    823873
    824874#: tformmain.menuitemfile.caption
  • trunk/UTest.pas

    r134 r138  
    7373procedure Translate;
    7474begin
    75  ResultText[trNone] := SNone;
    76  ResultText[trPassed] := SPassed;
    77  ResultText[trFailed] := SFailed;
     75  ResultText[trNone] := SNone;
     76  ResultText[trPassed] := SPassed;
     77  ResultText[trFailed] := SFailed;
    7878end;
    7979
  • trunk/vCardStudio.lpi

    r134 r138  
    123123      </Item7>
    124124    </RequiredPackages>
    125     <Units Count="23">
     125    <Units Count="24">
    126126      <Unit0>
    127127        <Filename Value="vCardStudio.lpr"/>
     
    267267        <IsPartOfProject Value="True"/>
    268268      </Unit22>
     269      <Unit23>
     270        <Filename Value="Forms\UFormColumns.pas"/>
     271        <IsPartOfProject Value="True"/>
     272        <ComponentName Value="FormColumns"/>
     273        <ResourceBaseClass Value="Form"/>
     274      </Unit23>
    269275    </Units>
    270276  </ProjectOptions>
  • trunk/vCardStudio.lpr

    r134 r138  
    77  Interfaces, // this includes the LCL widgetset
    88  Forms, UFormMain, UCore, Diff, SysUtils, UFormCompare, UTestCases,
    9   UVCardFile;
     9  UVCardFile, UFormColumns;
    1010
    1111{$R *.res}
Note: See TracChangeset for help on using the changeset viewer.