Changeset 45 for trunk/UContact.pas


Ignore:
Timestamp:
Dec 2, 2021, 3:19:57 PM (3 years ago)
Author:
chronos
Message:
  • Added: Allow to load photo from file or save it to file.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/UContact.pas

    r42 r45  
    6464    procedure EvaluateAttributes;
    6565    function GetDecodedValue: string;
     66    function GetEncodedValue: string;
    6667    function MatchNameGroups(AName: string; Groups: TStringArray;
    6768      NoGroups: TStringArray): Boolean;
     
    343344begin
    344345  if Encoding = 'BASE64' then begin
    345     Result := DecodeStringBase64(Value)
     346    Result := DecodeStringBase64(Value);
    346347  end else
    347348  if Encoding = 'QUOTED-PRINTABLE' then begin
    348     Result := DecodeQuotedPrintable(Value)
     349    Result := DecodeQuotedPrintable(Value);
    349350  end
    350351  else Result := '';
    351352end;
    352353
     354function TContactProperty.GetEncodedValue: string;
     355begin
     356  if Encoding = 'BASE64' then begin
     357    Result := EncodeStringBase64(Value);
     358  end else
     359  if Encoding = 'QUOTED-PRINTABLE' then begin
     360    Result := EncodeQuotedPrintable(Value);
     361  end
     362  else Result := '';
     363end;
     364
    353365function TContactProperty.MatchNameGroups(AName: string; Groups: TStringArray;
    354366  NoGroups: TStringArray): Boolean;
    355367var
    356368  I: Integer;
    357   Attr: string;
    358 begin
    359   Attr := Attributes.DelimitedText;
     369begin
    360370  Result := Name = AName;
    361371  if Result and (Length(Groups) > 0) then begin
     
    680690  J: Integer;
    681691  NameText: string;
     692  Value2: string;
    682693begin
    683694  inherited;
     
    689700      for J := 0 to Properties.Count - 1 do
    690701      with Properties[J] do begin
    691         if Pos(LineEnding, Value) > 0 then begin
    692           NameText := Name;
    693           if Attributes.Count > 0 then
    694             NameText := NameText + ';' + Attributes.DelimitedText;
    695           Add(NameText + ':' + GetNext(Value, LineEnding));
    696           while Pos(LineEnding, Value) > 0 do begin
    697             Add(' ' + GetNext(Value, LineEnding));
     702        NameText := Name;
     703        if Attributes.Count > 0 then
     704          NameText := NameText + ';' + Attributes.DelimitedText;
     705        if Encoding <> '' then begin
     706          Value2 := GetEncodedValue;
     707          NameText := NameText + ';' + Encoding;
     708        end else Value2 := Value;
     709        if Pos(LineEnding, Value2) > 0 then begin
     710          Add(NameText + ':' + GetNext(Value2, LineEnding));
     711          while Pos(LineEnding, Value2) > 0 do begin
     712            Add(' ' + GetNext(Value2, LineEnding));
    698713          end;
    699           Add(' ' + GetNext(Value, LineEnding));
     714          Add(' ' + GetNext(Value2, LineEnding));
    700715          Add('');
    701716        end else begin
    702           NameText := Name;
    703           if Attributes.Count > 0 then
    704             NameText := NameText + ';' + Attributes.DelimitedText;
    705           Add(NameText + ':' + Value);
     717          Add(NameText + ':' + Value2);
    706718        end;
    707719      end;
     
    769781            NewRecord.Properties.Add(NewProperty);
    770782          end;
    771           NewProperty.Attributes.DelimitedText := UpperCase(Names);
     783          NewProperty.Attributes.DelimitedText := Names;
    772784          if NewProperty.Attributes.Count > 0 then begin
    773785            NewProperty.Name := NewProperty.Attributes[0];
Note: See TracChangeset for help on using the changeset viewer.