亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ucontactsync.pas

?? FMA is a free1 powerful phone editing tool allowing users to easily manage all of the personal data
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
{ TContactSource }

constructor TContactSource.Create;
begin
  inherited;

  FContacts := TContacts.Create;
  FConfirmActions := [caAdd, caUpdate, caDelete]; 
end;

function TContactSource.DeformatPhoneNumber(PhoneNumber: String): String;
const ValidChars = ['*', '#', '+', '0'..'9', 'p']; // do not localize
var I: Integer;
begin
  Result := '';
  for I := 1 to Length(PhoneNumber) do
    if PhoneNumber[I] in ValidChars then
      Result := Result + PhoneNumber[I];
end;

destructor TContactSource.Destroy;
begin
  FContacts.Free;

  inherited;
end;

function TContactSource.Find(SyncID: Cardinal): TContact;
begin
  Result := FContacts.FindBySyncID(SyncID);
end;

procedure TContactSource.Unlink(Contact: TContact);
begin
  if Assigned(Contact.LinkedContact) then begin
    Contact.LinkedContact.LinkedContact := nil;
    Contact.LinkedContact := nil;
  end;
end;

{ TContacts }

function TContacts.Add(Item: TContact): Integer;
begin
  Result := FList.Add(Item);
end;

procedure TContacts.Clear;
begin
  FList.Clear;
end;

constructor TContacts.Create;
begin
  inherited;

  FList := TObjectList.Create;
end;

procedure TContacts.Delete(Index: Integer);
begin
  FList.Delete(Index);
end;

destructor TContacts.Destroy;
begin
  FList.Free;

  inherited;
end;

function TContacts.GetItem(Index: Integer): TContact;
begin
  Result := FList[Index] as TContact;
end;

function TContacts.GetCount: Integer;
begin
  Result := FList.Count;
end;

function TContacts.IndexOf(Item: TContact): Integer;
begin
  Result := FList.IndexOf(Item);
end;

procedure TContacts.PutItem(Index: Integer; const Value: TContact);
begin
  FList[Index] := Value;
end;

procedure TContacts.Remove(Item: TContact);
begin
  FList.Remove(Item);
end;

function TContacts.FindByID(ID: Variant): TContact;
var I: Integer;
begin
  Result := nil;

  for I := 0 to Count - 1 do
    if Items[I].ID = ID then begin
      Result := Items[I];
      Break;
    end;
end;

function TContacts.FindBySyncID(SyncID: Cardinal): TContact;
var I: Integer;
begin
  Result := nil;

  for I := 0 to Count - 1 do
    if Items[I].SyncID = SyncID then begin
      Result := Items[I];
      Break;
    end;
end;

{ TBaseContact }

function TBaseContact.GetFullName: WideString;
begin
  Result := FName;
  if FSurName <> '' then
    if Result <> '' then
      Result := Result + ' ' + FSurName
    else
      Result := FSurName;
end;

{ TPossibleLinks }

constructor TPossibleLinks.Create;
begin
  inherited;

  FList := TObjectList.Create;
end;

destructor TPossibleLinks.Destroy;
begin
  FList.Free;

  inherited;
end;

function TPossibleLinks.Add(Contact: TContact; Score: Integer): Integer;
var PossibleLink: TPossibleLink;
begin
  PossibleLink := TPossibleLink.Create;
  PossibleLink.Contact := Contact;
  PossibleLink.Score := Score;


  Result := FList.Add(PossibleLink);
end;

procedure TPossibleLinks.Clear;
begin
  FList.Clear;
end;

procedure TPossibleLinks.Delete(Index: Integer);
begin
  FList.Delete(Index);
end;

function TPossibleLinks.GetCount: Integer;
begin
  Result := FList.Count;
end;

function TPossibleLinks.GetItem(Index: Integer): TPossibleLink;
begin
  Result := FList[Index] as TPossibleLink;
end;

function TPossibleLinks.IndexOf(Item: TPossibleLink): Integer;
begin
  Result := FList.IndexOf(Item);
end;

procedure TPossibleLinks.PutItem(Index: Integer; const Value: TPossibleLink);
begin
  FList[Index] := Value;
end;

procedure TPossibleLinks.Remove(Item: TPossibleLink);
begin
  FList.Remove(Item);
end;

function PossibleLinksSortCompare(Item1, Item2: Pointer): Integer;
var Score1, Score2: Integer;
begin
  Score1 := TPossibleLink(Item1).Score;
  Score2 := TPossibleLink(Item2).Score;

  if Score1= Score2 then
    Result := 0
  else if Score1 < Score2 then
    Result := 1
  else
    Result := -1;
end;

procedure TPossibleLinks.Sort;
begin
  FList.Sort(PossibleLinksSortCompare);
end;

{ TContactFieldMapper }

constructor TContactFieldMapper.Create;
begin
  inherited;

  FMappedFields := TStringList.Create;
  FFields := TStringList.Create;
  FStandardFields := TStringList.Create;

  LoadStandardFields;
end;

destructor TContactFieldMapper.Destroy;
begin
  FMappedFields.Free;
  FFields.Free;
  FStandardFields.Free;

  inherited;
end;

function TContactFieldMapper.GetBirthday: TDateTime;
begin
  Result := MappedValue['Birthday'];
end;

function TContactFieldMapper.GetCellPhone: WideString;
begin
  Result := MappedValue['CellPhone'];
end;

function TContactFieldMapper.GetCity: WideString;
begin
  Result := MappedValue['City'];
end;

function TContactFieldMapper.GetCountry: WideString;
begin
  Result := MappedValue['Country'];
end;

function TContactFieldMapper.GetEMail: WideString;
begin
  Result := MappedValue['EMail'];
end;

function TContactFieldMapper.GetFaxPhone: WideString;
begin
  Result := MappedValue['FaxPhone'];
end;

function TContactFieldMapper.GetHomePhone: WideString;
begin
  Result := MappedValue['HomePhone'];
end;

function TContactFieldMapper.GetMappedField(Field: String): String;
begin
  Result := FMappedFields.Values[Field];
  if Result = '' then
    { If not match found, use direct name mapping }
    Result := Field;
end;

function TContactFieldMapper.GetMappedValue(Field: String): Variant;
begin
  Result := VariantValue[MappedField[Field]];
end;

function TContactFieldMapper.GetName: WideString;
begin
  Result := MappedValue['Name'];
end;

function TContactFieldMapper.GetOrganization: WideString;
begin
  Result := MappedValue['Organization'];
end;

function TContactFieldMapper.GetOtherPhone: WideString;
begin
  Result := MappedValue['OtherPhone'];
end;

function TContactFieldMapper.GetPostalCode: WideString;
begin
  Result := MappedValue['PostalCode'];
end;

function TContactFieldMapper.GetRegion: WideString;
begin
  Result := MappedValue['Region'];
end;

function TContactFieldMapper.GetStreet: WideString;
begin
  Result := MappedValue['Street'];
end;

function TContactFieldMapper.GetSurName: WideString;
begin
  Result := MappedValue['SurName'];
end;

function TContactFieldMapper.GetTitle: WideString;
begin
  Result := MappedValue['Title'];
end;

function TContactFieldMapper.GetWorkPhone: WideString;
begin
  Result := MappedValue['WorkPhone'];
end;

procedure TContactFieldMapper.LoadStandardFields;
begin

  { REFFERENCE !!!

    TFMAContactFieldMapper.Create;
    TContactFieldMapper.LoadStandardFields;
    TOutlookContactSource.Read/Write();
  }

  FStandardFields.Add('Title');
  FStandardFields.Add('Name');
  FStandardFields.Add('SurName');
  FStandardFields.Add('Organization');
  FStandardFields.Add('EMail');
  FStandardFields.Add('HomePhone');
  FStandardFields.Add('WorkPhone');
  FStandardFields.Add('CellPhone');
  FStandardFields.Add('FaxPhone');
  FStandardFields.Add('OtherPhone');
  FStandardFields.Add('Street');
  FStandardFields.Add('City');
  FStandardFields.Add('Region');
  FStandardFields.Add('PostalCode');
  FStandardFields.Add('Country');
  {
  Fields.Add('WorkStreet');
  Fields.Add('WorkCity');
  Fields.Add('WorkRegion');
  Fields.Add('WorkPostalCode');
  Fields.Add('WorkCountry');
  }
  FStandardFields.Add('Birthday');
end;

procedure TContactFieldMapper.SetBirthday(const Value: TDateTime);
begin
  MappedValue['Birthday'] := Value;
end;

procedure TContactFieldMapper.SetCellPhone(const Value: WideString);
begin
  MappedValue['CellPhone'] := Value;
end;

procedure TContactFieldMapper.SetCity(const Value: WideString);
begin
  MappedValue['City'] := Value;
end;

procedure TContactFieldMapper.SetCountry(const Value: WideString);
begin
  MappedValue['Country'] := Value;
end;

procedure TContactFieldMapper.SetEMail(const Value: WideString);
begin
  MappedValue['EMail'] := Value;
end;

procedure TContactFieldMapper.SetFaxPhone(const Value: WideString);
begin
  MappedValue['FaxPhone'] := Value;
end;

procedure TContactFieldMapper.SetFields(const Value: TStrings);
begin
  FFields.Assign(Value);
end;

procedure TContactFieldMapper.SetHomePhone(const Value: WideString);
begin
  MappedValue['HomePhone'] := Value;
end;

procedure TContactFieldMapper.SetMappedFields(const Value: TStrings);
begin
  FMappedFields.Assign(Value);
end;

procedure TContactFieldMapper.SetMappedValue(Field: String; const AValue: Variant);
begin
  VariantValue[MappedField[Field]] := AValue;
end;

procedure TContactFieldMapper.SetName(const Value: WideString);
begin
  MappedValue['Name'] := Value;
end;

procedure TContactFieldMapper.SetOrganization(const Value: WideString);
begin
  MappedValue['Organization'] := Value;
end;

procedure TContactFieldMapper.SetOtherPhone(const Value: WideString);
begin
  MappedValue['OtherPhone'] := Value;
end;

procedure TContactFieldMapper.SetPostalCode(const Value: WideString);
begin
  MappedValue['PostalCode'] := Value;
end;

procedure TContactFieldMapper.SetRegion(const Value: WideString);
begin
  MappedValue['Region'] := Value;
end;

procedure TContactFieldMapper.SetStreet(const Value: WideString);
begin
  MappedValue['Street'] := Value;
end;

procedure TContactFieldMapper.SetSurName(const Value: WideString);
begin
  MappedValue['SurName'] := Value;
end;

procedure TContactFieldMapper.SetTitle(const Value: WideString);
begin
  MappedValue['Title'] := Value;
end;

procedure TContactFieldMapper.SetWorkPhone(const Value: WideString);
begin
  MappedValue['WorkPhone'] := Value;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲区小说区图片区qvod| 日韩视频免费观看高清在线视频| 国产欧美一区视频| 国产福利91精品| 国产精品免费丝袜| 在线观看av一区二区| 日韩激情av在线| 欧美岛国在线观看| 成人免费毛片片v| 亚洲同性同志一二三专区| 91久久奴性调教| 日韩制服丝袜av| 日韩欧美另类在线| 成人深夜福利app| 亚洲一区二区三区四区在线| 91精品国产日韩91久久久久久| 久久99国产精品久久| 国产免费观看久久| 在线国产电影不卡| 精品一区在线看| 精东粉嫩av免费一区二区三区| 国产午夜亚洲精品午夜鲁丝片| 成人激情黄色小说| 五月开心婷婷久久| 国产午夜精品在线观看| 色婷婷综合视频在线观看| 日韩国产高清在线| 中文字幕一区二区三区av| 4438亚洲最大| www.日韩av| 久久99精品久久久久婷婷| 亚洲免费观看高清完整版在线观看熊 | 欧美视频第二页| 国内成人精品2018免费看| 一区二区三区在线播放| 精品久久久久久久久久久院品网| 99国产精品久久久久久久久久 | 国产精品综合在线视频| 亚洲乱码国产乱码精品精可以看 | 粉嫩av一区二区三区粉嫩 | 精品剧情在线观看| 91在线你懂得| 国产经典欧美精品| 爽好久久久欧美精品| 亚洲天堂福利av| 久久久精品国产免费观看同学| 欧美亚洲另类激情小说| 成人午夜精品在线| 久草精品在线观看| 婷婷久久综合九色国产成人| 亚洲精品老司机| 国产精品私人影院| 久久先锋影音av鲁色资源| 欧美一区二区三区在线电影| 在线精品视频免费播放| jlzzjlzz亚洲女人18| 国产制服丝袜一区| 精品一区二区在线视频| 天堂久久久久va久久久久| 一区二区国产盗摄色噜噜| 亚洲色图另类专区| 国产精品你懂的在线欣赏| 久久男人中文字幕资源站| 精品国产百合女同互慰| 欧美一区二区在线看| 91麻豆精品91久久久久久清纯| 欧洲精品视频在线观看| 91在线视频播放| 97久久精品人人澡人人爽| 成人av影院在线| 波多野结衣中文字幕一区二区三区| 国产成人午夜高潮毛片| 国产一区二区三区蝌蚪| 韩国女主播成人在线观看| 国内精品写真在线观看| 韩国欧美国产一区| 国产精品自拍三区| 大桥未久av一区二区三区中文| 国产成人免费视| www.66久久| 欧美亚洲综合一区| 亚洲男同1069视频| 一区二区三区四区精品在线视频| 自拍偷拍国产精品| 亚洲自拍偷拍欧美| 亚洲妇女屁股眼交7| 日日摸夜夜添夜夜添国产精品| 日韩极品在线观看| 国产又黄又大久久| 不卡一区二区中文字幕| 色哟哟国产精品| 欧美日韩高清在线播放| 日韩精品一区二区三区swag | 中文在线资源观看网站视频免费不卡 | 国产精品亚洲午夜一区二区三区| 国产乱淫av一区二区三区| 国产91丝袜在线播放0| 成人免费看视频| 日本久久一区二区三区| 欧美老女人第四色| 久久先锋影音av鲁色资源| 1区2区3区国产精品| 亚洲第一成年网| 国内成人自拍视频| 色噜噜狠狠色综合中国 | 欧美精品一区二区久久婷婷| 国产日韩v精品一区二区| 亚洲精品福利视频网站| 美女脱光内衣内裤视频久久影院| 国产电影精品久久禁18| 在线观看91视频| 精品va天堂亚洲国产| 亚洲激情欧美激情| 激情av综合网| 欧美中文字幕亚洲一区二区va在线| 日韩一区二区三区免费观看| 国产精品激情偷乱一区二区∴| 亚洲国产欧美在线| 国产精品69毛片高清亚洲| 91成人免费网站| 久久久三级国产网站| 亚洲午夜视频在线观看| 国产精品亚洲一区二区三区在线| 91久久一区二区| 国产婷婷色一区二区三区四区| 亚洲午夜精品网| 成人高清免费观看| 日韩欧美一区二区免费| 尤物av一区二区| 国产精品一区二区在线观看不卡| 欧美性猛片aaaaaaa做受| 久久综合久久综合九色| 五月天丁香久久| 91在线观看地址| 国产亚洲欧美日韩俺去了| 日本91福利区| 91激情在线视频| 国产精品女人毛片| 国产一区二区剧情av在线| 欧美日韩激情在线| 亚洲视频在线观看一区| 国产九九视频一区二区三区| 91麻豆精品国产91久久久久久| 亚洲免费av网站| 成人免费av资源| 久久久国产精品不卡| 久久99精品久久久久久动态图| 欧美亚洲自拍偷拍| 亚洲欧洲中文日韩久久av乱码| 国产成人综合网| 久久视频一区二区| 精品一区二区三区免费视频| 欧美男男青年gay1069videost| 亚洲免费大片在线观看| jlzzjlzz亚洲日本少妇| 亚洲国产精华液网站w| 国产精品 欧美精品| 久久蜜桃av一区精品变态类天堂| 蓝色福利精品导航| 欧美一区二区在线看| 日韩成人免费看| 亚洲国产日韩一级| 欧美亚洲动漫精品| 亚洲综合免费观看高清完整版在线 | 精品一区二区三区视频在线观看| 91精品国产欧美一区二区| 日韩精品成人一区二区在线| 欧美日韩国产在线播放网站| 亚洲午夜激情网站| 制服丝袜亚洲精品中文字幕| 亚洲大片一区二区三区| 欧美丰满一区二区免费视频| 亚洲电影第三页| 日韩一区二区在线看| 激情欧美一区二区三区在线观看| 欧美成人精精品一区二区频| 国产一区美女在线| 国产午夜精品理论片a级大结局| 国产乱码精品一区二区三区av| 久久婷婷久久一区二区三区| 国产黑丝在线一区二区三区| 中文字幕一区二区三区不卡在线 | 久久久久国产免费免费| 国产成人免费视频网站高清观看视频| 国产精品看片你懂得| 91麻豆免费视频| 日韩二区三区四区| 精品乱码亚洲一区二区不卡| 成人午夜在线免费| 亚洲影院免费观看| 日韩亚洲电影在线| 粉嫩av亚洲一区二区图片| 一区二区三区欧美久久| 欧美另类z0zxhd电影| 国产精品综合一区二区三区| 一二三四社区欧美黄| 欧美一级午夜免费电影| 丁香亚洲综合激情啪啪综合| 伊人色综合久久天天| 日韩欧美中文一区二区|