| 1 | unit FormContact;
|
|---|
| 2 |
|
|---|
| 3 | interface
|
|---|
| 4 |
|
|---|
| 5 | uses
|
|---|
| 6 | Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
|
|---|
| 7 | ComCtrls, ActnList, Menus, ExtCtrls, ExtDlgs, Buttons, VCard, LCLIntf,
|
|---|
| 8 | FormProperties, DateUtils, {$IFDEF LCLGTK2}Gtk2Globals, {$ENDIF}ContactImage,
|
|---|
| 9 | ubarcodes, FormEx;
|
|---|
| 10 |
|
|---|
| 11 | type
|
|---|
| 12 |
|
|---|
| 13 | { TFormContact }
|
|---|
| 14 |
|
|---|
| 15 | TFormContact = class(TFormEx)
|
|---|
| 16 | APhotoSetUrl: TAction;
|
|---|
| 17 | APhotoShow: TAction;
|
|---|
| 18 | APhotoClear: TAction;
|
|---|
| 19 | APhotoSave: TAction;
|
|---|
| 20 | APhotoLoad: TAction;
|
|---|
| 21 | ActionList1: TActionList;
|
|---|
| 22 | BarcodeQR1: TBarcodeQR;
|
|---|
| 23 | ButtonCancel: TButton;
|
|---|
| 24 | ButtonHomeAddressShow: TButton;
|
|---|
| 25 | ButtonNameDetails: TButton;
|
|---|
| 26 | ButtonNext: TButton;
|
|---|
| 27 | ButtonOk: TButton;
|
|---|
| 28 | ButtonPrevious: TButton;
|
|---|
| 29 | ButtonWorkAddressShow: TButton;
|
|---|
| 30 | CalendarDialog1: TCalendarDialog;
|
|---|
| 31 | EditAim: TEdit;
|
|---|
| 32 | EditAniversary: TEdit;
|
|---|
| 33 | EditBirthday: TEdit;
|
|---|
| 34 | EditCategories: TEdit;
|
|---|
| 35 | EditDepartment: TEdit;
|
|---|
| 36 | EditEmail: TEdit;
|
|---|
| 37 | EditFacebook: TEdit;
|
|---|
| 38 | EditFax: TEdit;
|
|---|
| 39 | EditFullName: TEdit;
|
|---|
| 40 | EditGaduGadu: TEdit;
|
|---|
| 41 | EditGender: TEdit;
|
|---|
| 42 | EditGoogleTalk: TEdit;
|
|---|
| 43 | EditGroupWise: TEdit;
|
|---|
| 44 | EditHomeAddressCity: TEdit;
|
|---|
| 45 | EditHomeAddressCountry: TEdit;
|
|---|
| 46 | EditHomeAddressPostalCode: TEdit;
|
|---|
| 47 | EditHomeAddressPostOfficeBox: TEdit;
|
|---|
| 48 | EditHomeAddressRegion: TEdit;
|
|---|
| 49 | EditHomeAddressStreet: TEdit;
|
|---|
| 50 | EditHomeAddressStreetExtended: TEdit;
|
|---|
| 51 | EditHomeEmail: TEdit;
|
|---|
| 52 | EditHomeFax: TEdit;
|
|---|
| 53 | EditHomeMobile: TEdit;
|
|---|
| 54 | EditHomePager: TEdit;
|
|---|
| 55 | EditHomePhone: TEdit;
|
|---|
| 56 | EditHomeWeb: TEdit;
|
|---|
| 57 | EditIcq: TEdit;
|
|---|
| 58 | EditInstagram: TEdit;
|
|---|
| 59 | EditIrc: TEdit;
|
|---|
| 60 | EditJabber: TEdit;
|
|---|
| 61 | EditLinkedIn: TEdit;
|
|---|
| 62 | EditMastodon: TEdit;
|
|---|
| 63 | EditMatrix: TEdit;
|
|---|
| 64 | EditMobile: TEdit;
|
|---|
| 65 | EditMsn: TEdit;
|
|---|
| 66 | EditMySpace: TEdit;
|
|---|
| 67 | EditNickName: TEdit;
|
|---|
| 68 | EditOrganization: TEdit;
|
|---|
| 69 | EditPager: TEdit;
|
|---|
| 70 | EditPeerTube: TEdit;
|
|---|
| 71 | EditPhone: TEdit;
|
|---|
| 72 | EditQq: TEdit;
|
|---|
| 73 | EditReddit: TEdit;
|
|---|
| 74 | EditSkype: TEdit;
|
|---|
| 75 | EditSnapchat: TEdit;
|
|---|
| 76 | EditTitle: TEdit;
|
|---|
| 77 | EditTwitter: TEdit;
|
|---|
| 78 | EditWeb: TEdit;
|
|---|
| 79 | EditWindowsLive: TEdit;
|
|---|
| 80 | EditWorkAddressCity: TEdit;
|
|---|
| 81 | EditWorkAddressCountry: TEdit;
|
|---|
| 82 | EditWorkAddressPostalCode: TEdit;
|
|---|
| 83 | EditWorkAddressPostOfficeBox: TEdit;
|
|---|
| 84 | EditWorkAddressRegion: TEdit;
|
|---|
| 85 | EditWorkAddressStreet: TEdit;
|
|---|
| 86 | EditWorkAddressStreetExtended: TEdit;
|
|---|
| 87 | EditWorkEmail: TEdit;
|
|---|
| 88 | EditWorkFax: TEdit;
|
|---|
| 89 | EditWorkMobile: TEdit;
|
|---|
| 90 | EditWorkPager: TEdit;
|
|---|
| 91 | EditWorkPhone: TEdit;
|
|---|
| 92 | EditWorkWeb: TEdit;
|
|---|
| 93 | EditYahoo: TEdit;
|
|---|
| 94 | EditYouTube: TEdit;
|
|---|
| 95 | GroupBox1: TGroupBox;
|
|---|
| 96 | GroupBox2: TGroupBox;
|
|---|
| 97 | ImagePhoto: TImage;
|
|---|
| 98 | Label1: TLabel;
|
|---|
| 99 | Label10: TLabel;
|
|---|
| 100 | Label11: TLabel;
|
|---|
| 101 | Label12: TLabel;
|
|---|
| 102 | Label13: TLabel;
|
|---|
| 103 | Label14: TLabel;
|
|---|
| 104 | Label15: TLabel;
|
|---|
| 105 | Label16: TLabel;
|
|---|
| 106 | Label17: TLabel;
|
|---|
| 107 | Label18: TLabel;
|
|---|
| 108 | Label19: TLabel;
|
|---|
| 109 | Label2: TLabel;
|
|---|
| 110 | Label20: TLabel;
|
|---|
| 111 | Label21: TLabel;
|
|---|
| 112 | Label22: TLabel;
|
|---|
| 113 | Label23: TLabel;
|
|---|
| 114 | Label24: TLabel;
|
|---|
| 115 | Label28: TLabel;
|
|---|
| 116 | Label29: TLabel;
|
|---|
| 117 | Label3: TLabel;
|
|---|
| 118 | Label30: TLabel;
|
|---|
| 119 | Label31: TLabel;
|
|---|
| 120 | Label32: TLabel;
|
|---|
| 121 | Label33: TLabel;
|
|---|
| 122 | Label34: TLabel;
|
|---|
| 123 | Label35: TLabel;
|
|---|
| 124 | Label36: TLabel;
|
|---|
| 125 | Label37: TLabel;
|
|---|
| 126 | Label38: TLabel;
|
|---|
| 127 | Label39: TLabel;
|
|---|
| 128 | Label4: TLabel;
|
|---|
| 129 | Label40: TLabel;
|
|---|
| 130 | Label41: TLabel;
|
|---|
| 131 | Label42: TLabel;
|
|---|
| 132 | Label43: TLabel;
|
|---|
| 133 | Label44: TLabel;
|
|---|
| 134 | Label45: TLabel;
|
|---|
| 135 | Label46: TLabel;
|
|---|
| 136 | Label47: TLabel;
|
|---|
| 137 | Label48: TLabel;
|
|---|
| 138 | Label49: TLabel;
|
|---|
| 139 | Label50: TLabel;
|
|---|
| 140 | Label51: TLabel;
|
|---|
| 141 | Label52: TLabel;
|
|---|
| 142 | Label53: TLabel;
|
|---|
| 143 | Label54: TLabel;
|
|---|
| 144 | Label55: TLabel;
|
|---|
| 145 | Label56: TLabel;
|
|---|
| 146 | Label57: TLabel;
|
|---|
| 147 | Label6: TLabel;
|
|---|
| 148 | Label7: TLabel;
|
|---|
| 149 | Label8: TLabel;
|
|---|
| 150 | Label9: TLabel;
|
|---|
| 151 | LabelOrganization: TLabel;
|
|---|
| 152 | LabelOrganization1: TLabel;
|
|---|
| 153 | LabelOrganization10: TLabel;
|
|---|
| 154 | LabelOrganization11: TLabel;
|
|---|
| 155 | LabelOrganization12: TLabel;
|
|---|
| 156 | LabelOrganization2: TLabel;
|
|---|
| 157 | LabelOrganization3: TLabel;
|
|---|
| 158 | LabelOrganization4: TLabel;
|
|---|
| 159 | LabelOrganization5: TLabel;
|
|---|
| 160 | LabelOrganization6: TLabel;
|
|---|
| 161 | LabelOrganization7: TLabel;
|
|---|
| 162 | LabelOrganization8: TLabel;
|
|---|
| 163 | LabelOrganization9: TLabel;
|
|---|
| 164 | MemoNotes: TMemo;
|
|---|
| 165 | MenuItem1: TMenuItem;
|
|---|
| 166 | MenuItem2: TMenuItem;
|
|---|
| 167 | MenuItem3: TMenuItem;
|
|---|
| 168 | MenuItem4: TMenuItem;
|
|---|
| 169 | MenuItem5: TMenuItem;
|
|---|
| 170 | MenuItemSaveQrToFile: TMenuItem;
|
|---|
| 171 | OpenPictureDialog1: TOpenPictureDialog;
|
|---|
| 172 | PageControlContact: TPageControl;
|
|---|
| 173 | Panel1: TPanel;
|
|---|
| 174 | Panel2: TPanel;
|
|---|
| 175 | Panel3: TPanel;
|
|---|
| 176 | Panel4: TPanel;
|
|---|
| 177 | Panel5: TPanel;
|
|---|
| 178 | PanelNotes: TPanel;
|
|---|
| 179 | PanelQrCode: TPanel;
|
|---|
| 180 | PopupMenuQrCode: TPopupMenu;
|
|---|
| 181 | PopupMenuPhoto: TPopupMenu;
|
|---|
| 182 | SavePictureDialog1: TSavePictureDialog;
|
|---|
| 183 | SpeedButtonAniversary: TSpeedButton;
|
|---|
| 184 | SpeedButtonBirthDay: TSpeedButton;
|
|---|
| 185 | SpeedButtonEmail: TSpeedButton;
|
|---|
| 186 | SpeedButtonHomeEmail: TSpeedButton;
|
|---|
| 187 | SpeedButtonHomeWeb: TSpeedButton;
|
|---|
| 188 | SpeedButtonWeb: TSpeedButton;
|
|---|
| 189 | SpeedButtonWorkEmail: TSpeedButton;
|
|---|
| 190 | SpeedButtonWorkWeb: TSpeedButton;
|
|---|
| 191 | Splitter1: TSplitter;
|
|---|
| 192 | TabSheetAll: TTabSheet;
|
|---|
| 193 | TabSheetChat: TTabSheet;
|
|---|
| 194 | TabSheetGeneral: TTabSheet;
|
|---|
| 195 | TabSheetHome: TTabSheet;
|
|---|
| 196 | TabSheetOthers: TTabSheet;
|
|---|
| 197 | TabSheetSocial: TTabSheet;
|
|---|
| 198 | TabSheetWork: TTabSheet;
|
|---|
| 199 | procedure APhotoClearExecute(Sender: TObject);
|
|---|
| 200 | procedure APhotoLoadExecute(Sender: TObject);
|
|---|
| 201 | procedure APhotoSaveExecute(Sender: TObject);
|
|---|
| 202 | procedure APhotoSetUrlExecute(Sender: TObject);
|
|---|
| 203 | procedure APhotoShowExecute(Sender: TObject);
|
|---|
| 204 | procedure ButtonHomeAddressShowClick(Sender: TObject);
|
|---|
| 205 | procedure ButtonNameDetailsClick(Sender: TObject);
|
|---|
| 206 | procedure ButtonNextClick(Sender: TObject);
|
|---|
| 207 | procedure ButtonPreviousClick(Sender: TObject);
|
|---|
| 208 | procedure ButtonWorkAddressShowClick(Sender: TObject);
|
|---|
| 209 | procedure EditFullNameChange(Sender: TObject);
|
|---|
| 210 | procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
|
|---|
| 211 | procedure FormCreate(Sender: TObject);
|
|---|
| 212 | procedure FormDestroy(Sender: TObject);
|
|---|
| 213 | procedure FormShow(Sender: TObject);
|
|---|
| 214 | procedure ImagePhotoClick(Sender: TObject);
|
|---|
| 215 | procedure MenuItemSaveQrToFileClick(Sender: TObject);
|
|---|
| 216 | procedure PanelQrCodeResize(Sender: TObject);
|
|---|
| 217 | procedure SpeedButtonHomeWebClick(Sender: TObject);
|
|---|
| 218 | procedure SpeedButtonAniversaryClick(Sender: TObject);
|
|---|
| 219 | procedure SpeedButtonBirthDayClick(Sender: TObject);
|
|---|
| 220 | procedure SpeedButtonEmailClick(Sender: TObject);
|
|---|
| 221 | procedure SpeedButtonHomeEmailClick(Sender: TObject);
|
|---|
| 222 | procedure SpeedButtonWebClick(Sender: TObject);
|
|---|
| 223 | procedure SpeedButtonWorkEmailClick(Sender: TObject);
|
|---|
| 224 | procedure SpeedButtonWorkWebClick(Sender: TObject);
|
|---|
| 225 | procedure TabSheetAllShow(Sender: TObject);
|
|---|
| 226 | procedure TabSheetChatHide(Sender: TObject);
|
|---|
| 227 | procedure TabSheetChatShow(Sender: TObject);
|
|---|
| 228 | procedure TabSheetGeneralHide(Sender: TObject);
|
|---|
| 229 | procedure TabSheetGeneralShow(Sender: TObject);
|
|---|
| 230 | procedure TabSheetHomeHide(Sender: TObject);
|
|---|
| 231 | procedure TabSheetHomeShow(Sender: TObject);
|
|---|
| 232 | procedure TabSheetOthersHide(Sender: TObject);
|
|---|
| 233 | procedure TabSheetOthersShow(Sender: TObject);
|
|---|
| 234 | procedure TabSheetSocialHide(Sender: TObject);
|
|---|
| 235 | procedure TabSheetSocialShow(Sender: TObject);
|
|---|
| 236 | procedure TabSheetWorkHide(Sender: TObject);
|
|---|
| 237 | procedure TabSheetWorkShow(Sender: TObject);
|
|---|
| 238 | private
|
|---|
| 239 | FPhoto: TContactImage;
|
|---|
| 240 | procedure PhotoChange(Sender: TObject);
|
|---|
| 241 | private
|
|---|
| 242 | FContact: TContact;
|
|---|
| 243 | FOnGetNext: TGetContactEvent;
|
|---|
| 244 | FOnGetPrevious: TGetContactEvent;
|
|---|
| 245 | FormProperties: TFormProperties;
|
|---|
| 246 | procedure SetContact(AValue: TContact);
|
|---|
| 247 | procedure ReloadAllPropertiesTab;
|
|---|
| 248 | public
|
|---|
| 249 | procedure UpdateInterface;
|
|---|
| 250 | property Contact: TContact read FContact write SetContact;
|
|---|
| 251 | property OnGetPrevious: TGetContactEvent read FOnGetPrevious write FOnGetPrevious;
|
|---|
| 252 | property OnGetNext: TGetContactEvent read FOnGetNext write FOnGetNext;
|
|---|
| 253 | end;
|
|---|
| 254 |
|
|---|
| 255 |
|
|---|
| 256 | implementation
|
|---|
| 257 |
|
|---|
| 258 | {$R *.lfm}
|
|---|
| 259 |
|
|---|
| 260 | uses
|
|---|
| 261 | Core, Common, FormImage, FormNameDetails, DataFile, NameDetails;
|
|---|
| 262 |
|
|---|
| 263 | resourcestring
|
|---|
| 264 | SContact = 'Contact';
|
|---|
| 265 | SPhotoUrl = 'Photo URL';
|
|---|
| 266 | SPhotoUrlQuery = 'Enter URL for profile photo';
|
|---|
| 267 | SImageTypeNotSupported = 'Image type not supported.';
|
|---|
| 268 |
|
|---|
| 269 | function DateToISO(Date: TDateTime): string;
|
|---|
| 270 | begin
|
|---|
| 271 | Result := FormatDateTime('yyyy-mm-dd', Date);
|
|---|
| 272 | end;
|
|---|
| 273 |
|
|---|
| 274 | function URLEncode(Text: string): string;
|
|---|
| 275 | var
|
|---|
| 276 | I: Integer;
|
|---|
| 277 | begin
|
|---|
| 278 | Result := '';
|
|---|
| 279 | for I := 1 to Length(Text) do begin
|
|---|
| 280 | if not (Text[I] in ['A'..'Z', 'a'..'z', '0'..'9', '-', '_', '~', '.', ':', '/']) then
|
|---|
| 281 | Result := Result + '%' + IntToHex(Ord(Text[I]), 2)
|
|---|
| 282 | else
|
|---|
| 283 | Result := Result + Text[I];
|
|---|
| 284 | end;
|
|---|
| 285 | end;
|
|---|
| 286 |
|
|---|
| 287 | procedure UpdateEditNoOnChange(Edit: TEdit; Text: string);
|
|---|
| 288 | var
|
|---|
| 289 | LastHandler: TNotifyEvent;
|
|---|
| 290 | begin
|
|---|
| 291 | LastHandler := Edit.OnChange;
|
|---|
| 292 | Edit.OnChange := nil;
|
|---|
| 293 | try
|
|---|
| 294 | Edit.Text := Text;
|
|---|
| 295 | finally
|
|---|
| 296 | Edit.OnChange := LastHandler;
|
|---|
| 297 | end;
|
|---|
| 298 | end;
|
|---|
| 299 |
|
|---|
| 300 | {$IF FPC_FULLVERSION<30200}
|
|---|
| 301 | function TryISOStrToDate(const aString: string; out OutDate: TDateTime): Boolean;
|
|---|
| 302 | var
|
|---|
| 303 | xYear, xMonth, xDay: LongInt;
|
|---|
| 304 | begin
|
|---|
| 305 | case Length(aString) of
|
|---|
| 306 | 8: Result :=
|
|---|
| 307 | TryStrToInt(Copy(aString, 1, 4), xYear) and
|
|---|
| 308 | TryStrToInt(Copy(aString, 5, 2), xMonth) and
|
|---|
| 309 | TryStrToInt(Copy(aString, 7, 2), xDay) and
|
|---|
| 310 | TryEncodeDate(xYear, xMonth, xDay, OutDate);
|
|---|
| 311 | 10: Result :=
|
|---|
| 312 | TryStrToInt(Copy(aString, 1, 4), xYear) and
|
|---|
| 313 | TryStrToInt(Copy(aString, 6, 2), xMonth) and
|
|---|
| 314 | TryStrToInt(Copy(aString, 9, 2), xDay) and
|
|---|
| 315 | TryEncodeDate(xYear, xMonth, xDay, OutDate);
|
|---|
| 316 | else
|
|---|
| 317 | Result := False;
|
|---|
| 318 | end;
|
|---|
| 319 | if not Result then
|
|---|
| 320 | OutDate := 0;
|
|---|
| 321 | end;
|
|---|
| 322 | {$ENDIF}
|
|---|
| 323 |
|
|---|
| 324 | { TFormContact }
|
|---|
| 325 |
|
|---|
| 326 | procedure TFormContact.FormShow(Sender: TObject);
|
|---|
| 327 | begin
|
|---|
| 328 | {$IFDEF LCLGTK2}
|
|---|
| 329 | // GTK2 bug workaround https://gitlab.com/freepascal.org/lazarus/lazarus/-/issues/35720
|
|---|
| 330 | if Visible then LastMouse.WinControl := PageControlContact.ActivePage;
|
|---|
| 331 | {$ENDIF}
|
|---|
| 332 | PhotoChange(nil);
|
|---|
| 333 |
|
|---|
| 334 | FormProperties.BeginUpdate;
|
|---|
| 335 | try
|
|---|
| 336 |
|
|---|
| 337 | FormProperties.ManualDock(TabSheetAll, nil, alClient);
|
|---|
| 338 | FormProperties.Align := alClient;
|
|---|
| 339 | FormProperties.Show;
|
|---|
| 340 |
|
|---|
| 341 | UpdateInterface;
|
|---|
| 342 | finally
|
|---|
| 343 | FormProperties.EndUpdate;
|
|---|
| 344 | end;
|
|---|
| 345 | end;
|
|---|
| 346 |
|
|---|
| 347 | procedure TFormContact.ImagePhotoClick(Sender: TObject);
|
|---|
| 348 | begin
|
|---|
| 349 | APhotoShow.Execute;
|
|---|
| 350 | end;
|
|---|
| 351 |
|
|---|
| 352 | procedure TFormContact.MenuItemSaveQrToFileClick(Sender: TObject);
|
|---|
| 353 | var
|
|---|
| 354 | F: string;
|
|---|
| 355 | begin
|
|---|
| 356 | SavePictureDialog1.Filter := 'Windows bitmap files (*.bmp)|*.bmp|' +
|
|---|
| 357 | 'Portable network graphic files (*.png)|*.png|' +
|
|---|
| 358 | 'JPEG image files (*.jpg;*.jpeg)|*.jpg;*.jpeg|' +
|
|---|
| 359 | 'TIFF image files (*.tiff; *.tif)|*.tiff;*.tif|'+
|
|---|
| 360 | 'XPM image files (*.xpm)|*.xpm|' +
|
|---|
| 361 | 'Scalable vector graphics files (*.svg)|*.svg|'+
|
|---|
| 362 | 'Encapsulated PostScript files (*.eps;*.ps)|*.eps;*.ps|'+
|
|---|
| 363 | SAllFiles + ' (*.*)|*.*';
|
|---|
| 364 | SavePictureDialog1.FilterIndex := 2;
|
|---|
| 365 | SavePictureDialog1.DefaultExt := '.png';
|
|---|
| 366 | if Core.Core.LastQrCodeFileName = '' then
|
|---|
| 367 | Core.Core.LastQrCodeFileName := 'QR code.png';
|
|---|
| 368 | SavePictureDialog1.InitialDir := ExtractFileDir(Core.Core.LastQrCodeFileName);
|
|---|
| 369 | SavePictureDialog1.FileName := ExtractFileName(Core.Core.LastQrCodeFileName);
|
|---|
| 370 | if SavePictureDialog1.Execute then begin
|
|---|
| 371 | F := LowerCase(ExtractFileExt(SavePictureDialog1.FileName));
|
|---|
| 372 | if F = '.bmp' then BarcodeQR1.SaveToFile(SavePictureDialog1.FileName, TBitmap)
|
|---|
| 373 | else if F = '.png' then BarcodeQR1.SaveToFile(SavePictureDialog1.FileName, TPortableNetworkGraphic)
|
|---|
| 374 | else if (F = '.jpg') or (F = '.jpeg') then BarcodeQR1.SaveTofile(SavePictureDialog1.FileName, TJpegImage)
|
|---|
| 375 | else if (F = '.tif') or (F = '.tiff') then BarcodeQR1.SaveToFile(SavePictureDialog1.FileName, TTiffImage)
|
|---|
| 376 | else if F = '.xpm' then BarcodeQR1.SaveToFile(SavePictureDialog1.FileName, TPixmap)
|
|---|
| 377 | else if F = '.svg' then BarcodeQR1.SaveToSvgFile(SavePictureDialog1.FileName)
|
|---|
| 378 | else if (F = '.eps') or (F = '.ps') then BarcodeQR1.SaveToEpsFile(SavePictureDialog1.FileName)
|
|---|
| 379 | else raise Exception.Create(SImageTypeNotSupported);
|
|---|
| 380 | Core.Core.LastQrCodeFileName := SavePictureDialog1.FileName;
|
|---|
| 381 | end;
|
|---|
| 382 | end;
|
|---|
| 383 |
|
|---|
| 384 | procedure TFormContact.PanelQrCodeResize(Sender: TObject);
|
|---|
| 385 | begin
|
|---|
| 386 | BarcodeQR1.SetBounds(BarcodeQR1.Left, BarcodeQR1.Top,
|
|---|
| 387 | PanelQrCode.Width - BarcodeQR1.Left * 2,
|
|---|
| 388 | PanelQrCode.Width - BarcodeQR1.Left * 2);
|
|---|
| 389 | end;
|
|---|
| 390 |
|
|---|
| 391 | procedure TFormContact.SpeedButtonHomeWebClick(Sender: TObject);
|
|---|
| 392 | begin
|
|---|
| 393 | if EditHomeWeb.Text <> '' then OpenURL(EditHomeWeb.Text);
|
|---|
| 394 | end;
|
|---|
| 395 |
|
|---|
| 396 | procedure TFormContact.SpeedButtonAniversaryClick(Sender: TObject);
|
|---|
| 397 | var
|
|---|
| 398 | Date: TDateTime;
|
|---|
| 399 | begin
|
|---|
| 400 | if TryISOStrToDate(EditAniversary.Text, Date) then
|
|---|
| 401 | CalendarDialog1.Date := Date
|
|---|
| 402 | else CalendarDialog1.Date := Now;
|
|---|
| 403 | if CalendarDialog1.Execute then
|
|---|
| 404 | EditAniversary.Text := DateToISO(CalendarDialog1.Date);
|
|---|
| 405 | end;
|
|---|
| 406 |
|
|---|
| 407 | procedure TFormContact.SpeedButtonBirthDayClick(Sender: TObject);
|
|---|
| 408 | var
|
|---|
| 409 | Date: TDateTime;
|
|---|
| 410 | begin
|
|---|
| 411 | if TryISOStrToDate(EditBirthday.Text, Date) then
|
|---|
| 412 | CalendarDialog1.Date := Date
|
|---|
| 413 | else CalendarDialog1.Date := Now;
|
|---|
| 414 | if CalendarDialog1.Execute then
|
|---|
| 415 | EditBirthday.Text := DateToISO(CalendarDialog1.Date);
|
|---|
| 416 | end;
|
|---|
| 417 |
|
|---|
| 418 | procedure TFormContact.SpeedButtonEmailClick(Sender: TObject);
|
|---|
| 419 | begin
|
|---|
| 420 | if EditEmail.Text <> '' then OpenEmail(EditEmail.Text);
|
|---|
| 421 | end;
|
|---|
| 422 |
|
|---|
| 423 | procedure TFormContact.SpeedButtonHomeEmailClick(Sender: TObject);
|
|---|
| 424 | begin
|
|---|
| 425 | if EditHomeEmail.Text <> '' then OpenEmail(EditHomeEmail.Text);
|
|---|
| 426 | end;
|
|---|
| 427 |
|
|---|
| 428 | procedure TFormContact.SpeedButtonWebClick(Sender: TObject);
|
|---|
| 429 | begin
|
|---|
| 430 | if EditWeb.Text <> '' then OpenURL(EditWeb.Text);
|
|---|
| 431 | end;
|
|---|
| 432 |
|
|---|
| 433 | procedure TFormContact.SpeedButtonWorkEmailClick(Sender: TObject);
|
|---|
| 434 | begin
|
|---|
| 435 | if EditWorkEmail.Text <> '' then OpenEmail(EditWorkEmail.Text);
|
|---|
| 436 | end;
|
|---|
| 437 |
|
|---|
| 438 | procedure TFormContact.SpeedButtonWorkWebClick(Sender: TObject);
|
|---|
| 439 | begin
|
|---|
| 440 | if EditWorkWeb.Text <> '' then OpenURL(EditWorkWeb.Text);
|
|---|
| 441 | end;
|
|---|
| 442 |
|
|---|
| 443 | procedure TFormContact.TabSheetAllShow(Sender: TObject);
|
|---|
| 444 | begin
|
|---|
| 445 | FormProperties.BeginUpdate;
|
|---|
| 446 | try
|
|---|
| 447 | FormProperties.Properties := Contact.Properties;
|
|---|
| 448 | FormProperties.ReloadList;
|
|---|
| 449 | FormProperties.UpdateInterface;
|
|---|
| 450 | FormProperties.Show;
|
|---|
| 451 | finally
|
|---|
| 452 | FormProperties.EndUpdate;
|
|---|
| 453 | end;
|
|---|
| 454 | end;
|
|---|
| 455 |
|
|---|
| 456 | procedure TFormContact.TabSheetChatHide(Sender: TObject);
|
|---|
| 457 | begin
|
|---|
| 458 | Contact.Fields[cfMatrix] := EditMatrix.Text;
|
|---|
| 459 | Contact.Fields[cfJabber] := EditJabber.Text;
|
|---|
| 460 | Contact.Fields[cfIcq] := EditIcq.Text;
|
|---|
| 461 | Contact.Fields[cfMsn] := EditMsn.Text;
|
|---|
| 462 | Contact.Fields[cfSkype] := EditSkype.Text;
|
|---|
| 463 | Contact.Fields[cfQq] := EditQq.Text;
|
|---|
| 464 | Contact.Fields[cfGoogleTalk] := EditGoogleTalk.Text;
|
|---|
| 465 | Contact.Fields[cfWindowsLive] := EditWindowsLive.Text;
|
|---|
| 466 | Contact.Fields[cfYahoo] := EditYahoo.Text;
|
|---|
| 467 | Contact.Fields[cfAim] := EditAim.Text;
|
|---|
| 468 | Contact.Fields[cfIrc] := EditIrc.Text;
|
|---|
| 469 | Contact.Fields[cfGroupWise] := EditGroupWise.Text;
|
|---|
| 470 | Contact.Fields[cfGaduGadu] := EditGaduGadu.Text;
|
|---|
| 471 |
|
|---|
| 472 | ReloadAllPropertiesTab;
|
|---|
| 473 | end;
|
|---|
| 474 |
|
|---|
| 475 | procedure TFormContact.TabSheetChatShow(Sender: TObject);
|
|---|
| 476 | begin
|
|---|
| 477 | EditMatrix.Text := Contact.Fields[cfMatrix];
|
|---|
| 478 | EditJabber.Text := Contact.Fields[cfJabber];
|
|---|
| 479 | EditIcq.Text := Contact.Fields[cfIcq];
|
|---|
| 480 | EditMsn.Text := Contact.Fields[cfMsn];
|
|---|
| 481 | EditSkype.Text := Contact.Fields[cfSkype];
|
|---|
| 482 | EditQq.Text := Contact.Fields[cfQq];
|
|---|
| 483 | EditGoogleTalk.Text := Contact.Fields[cfGoogleTalk];
|
|---|
| 484 | EditWindowsLive.Text := Contact.Fields[cfWindowsLive];
|
|---|
| 485 | EditYahoo.Text := Contact.Fields[cfYahoo];
|
|---|
| 486 | EditAim.Text := Contact.Fields[cfAim];
|
|---|
| 487 | EditIrc.Text := Contact.Fields[cfIrc];
|
|---|
| 488 | EditGroupWise.Text := Contact.Fields[cfGroupWise];
|
|---|
| 489 | EditGaduGadu.Text := Contact.Fields[cfGaduGadu];
|
|---|
| 490 | end;
|
|---|
| 491 |
|
|---|
| 492 | procedure TFormContact.TabSheetGeneralHide(Sender: TObject);
|
|---|
| 493 | begin
|
|---|
| 494 | Contact.Fields[cfFullName] := EditFullName.Text;
|
|---|
| 495 | Contact.Fields[cfNickName] := EditNickName.Text;
|
|---|
| 496 | Contact.Fields[cfEmail] := EditEmail.Text;
|
|---|
| 497 | Contact.Fields[cfTel] := EditPhone.Text;
|
|---|
| 498 | Contact.Fields[cfTelCell] := EditMobile.Text;
|
|---|
| 499 | Contact.Fields[cfTelFax] := EditFax.Text;
|
|---|
| 500 | Contact.Fields[cfTelPager] := EditPager.Text;
|
|---|
| 501 | Contact.Fields[cfDayOfBirth] := EditBirthday.Text;
|
|---|
| 502 | Contact.Fields[cfAnniversary] := EditAniversary.Text;
|
|---|
| 503 | Contact.Fields[cfUrl] := EditWeb.Text;
|
|---|
| 504 | Contact.Fields[cfGender] := EditGender.Text;
|
|---|
| 505 | Contact.Fields[cfCategories] := EditCategories.Text;
|
|---|
| 506 |
|
|---|
| 507 | FPhoto.Contact := Contact;
|
|---|
| 508 | FPhoto.Save;
|
|---|
| 509 |
|
|---|
| 510 | ReloadAllPropertiesTab;
|
|---|
| 511 | end;
|
|---|
| 512 |
|
|---|
| 513 | procedure TFormContact.TabSheetGeneralShow(Sender: TObject);
|
|---|
| 514 | begin
|
|---|
| 515 | UpdateEditNoOnChange(EditFullName, Contact.Fields[cfFullName]);
|
|---|
| 516 | EditNickName.Text := Contact.Fields[cfNickName];
|
|---|
| 517 | EditEmail.Text := Contact.Fields[cfEmail];
|
|---|
| 518 | EditPhone.Text := Contact.Fields[cfTel];
|
|---|
| 519 | EditMobile.Text := Contact.Fields[cfTelCell];
|
|---|
| 520 | EditFax.Text := Contact.Fields[cfTelFax];
|
|---|
| 521 | EditPager.Text := Contact.Fields[cfTelPager];
|
|---|
| 522 | EditBirthday.Text := Contact.Fields[cfDayOfBirth];
|
|---|
| 523 | EditAniversary.Text := Contact.Fields[cfAnniversary];
|
|---|
| 524 | EditWeb.Text := Contact.Fields[cfUrl];
|
|---|
| 525 | EditGender.Text := Contact.Fields[cfGender];
|
|---|
| 526 | EditCategories.Text := Contact.Fields[cfCategories];
|
|---|
| 527 |
|
|---|
| 528 | FPhoto.Contact := Contact;
|
|---|
| 529 | FPhoto.Load;
|
|---|
| 530 | end;
|
|---|
| 531 |
|
|---|
| 532 | procedure TFormContact.TabSheetHomeHide(Sender: TObject);
|
|---|
| 533 | begin
|
|---|
| 534 | Contact.Fields[cfEmailHome] := EditHomeEmail.Text;
|
|---|
| 535 | Contact.Fields[cfTelHome] := EditHomePhone.Text;
|
|---|
| 536 | Contact.Fields[cfTelCellHome] := EditHomeMobile.Text;
|
|---|
| 537 | Contact.Fields[cfTelFaxHome] := EditHomeFax.Text;
|
|---|
| 538 | Contact.Fields[cfTelPagerHome] := EditHomePager.Text;
|
|---|
| 539 | Contact.Fields[cfHomeAddressPostOfficeBox] := EditHomeAddressPostOfficeBox.Text;
|
|---|
| 540 | Contact.Fields[cfHomeAddressStreet] := EditHomeAddressStreet.Text;
|
|---|
| 541 | Contact.Fields[cfHomeAddressStreetExtended] := EditHomeAddressStreetExtended.Text;
|
|---|
| 542 | Contact.Fields[cfHomeAddressCity] := EditHomeAddressCity.Text;
|
|---|
| 543 | Contact.Fields[cfHomeAddressRegion] := EditHomeAddressRegion.Text;
|
|---|
| 544 | Contact.Fields[cfHomeAddressCountry] := EditHomeAddressCountry.Text;
|
|---|
| 545 | Contact.Fields[cfHomeAddressPostalCode] := EditHomeAddressPostalCode.Text;
|
|---|
| 546 | Contact.Fields[cfUrlHome] := EditHomeWeb.Text;
|
|---|
| 547 |
|
|---|
| 548 | ReloadAllPropertiesTab;
|
|---|
| 549 | end;
|
|---|
| 550 |
|
|---|
| 551 | procedure TFormContact.TabSheetHomeShow(Sender: TObject);
|
|---|
| 552 | begin
|
|---|
| 553 | EditHomeEmail.Text := Contact.Fields[cfEmailHome];
|
|---|
| 554 | EditHomePhone.Text := Contact.Fields[cfTelHome];
|
|---|
| 555 | EditHomeMobile.Text := Contact.Fields[cfTelCellHome];
|
|---|
| 556 | EditHomeFax.Text := Contact.Fields[cfTelFaxHome];
|
|---|
| 557 | EditHomePager.Text := Contact.Fields[cfTelPagerHome];
|
|---|
| 558 | EditHomeAddressPostOfficeBox.Text := Contact.Fields[cfHomeAddressPostOfficeBox];
|
|---|
| 559 | EditHomeAddressStreet.Text := Contact.Fields[cfHomeAddressStreet];
|
|---|
| 560 | EditHomeAddressStreetExtended.Text := Contact.Fields[cfHomeAddressStreetExtended];
|
|---|
| 561 | EditHomeAddressCity.Text := Contact.Fields[cfHomeAddressCity];
|
|---|
| 562 | EditHomeAddressRegion.Text := Contact.Fields[cfHomeAddressRegion];
|
|---|
| 563 | EditHomeAddressCountry.Text := Contact.Fields[cfHomeAddressCountry];
|
|---|
| 564 | EditHomeAddressPostalCode.Text := Contact.Fields[cfHomeAddressPostalCode];
|
|---|
| 565 | EditHomeWeb.Text := Contact.Fields[cfUrlHome];
|
|---|
| 566 | end;
|
|---|
| 567 |
|
|---|
| 568 | procedure TFormContact.TabSheetOthersHide(Sender: TObject);
|
|---|
| 569 | begin
|
|---|
| 570 | Contact.Fields[cfNote] := MemoNotes.Lines.Text;
|
|---|
| 571 |
|
|---|
| 572 | ReloadAllPropertiesTab;
|
|---|
| 573 | end;
|
|---|
| 574 |
|
|---|
| 575 | procedure TFormContact.TabSheetOthersShow(Sender: TObject);
|
|---|
| 576 | var
|
|---|
| 577 | ContactWithoutImages: TContact;
|
|---|
| 578 | begin
|
|---|
| 579 | MemoNotes.Lines.Text := Contact.Fields[cfNote];
|
|---|
| 580 | BarcodeQR1.Text := Contact.AsString;
|
|---|
| 581 | if BarcodeQR1.ErrorString <> '' then begin
|
|---|
| 582 | ContactWithoutImages := TContact.Create;
|
|---|
| 583 | try
|
|---|
| 584 | ContactWithoutImages.Assign(Contact);
|
|---|
| 585 | ContactWithoutImages.ParentVCard := Contact.ParentVCard;
|
|---|
| 586 | while ContactWithoutImages.HasField(cfPhoto) do
|
|---|
| 587 | ContactWithoutImages.Fields[cfPhoto] := '';
|
|---|
| 588 | while ContactWithoutImages.HasField(cfLogo) do
|
|---|
| 589 | ContactWithoutImages.Fields[cfLogo] := '';
|
|---|
| 590 | BarcodeQR1.Text := ContactWithoutImages.AsString;
|
|---|
| 591 | if BarcodeQR1.ErrorString <> '' then begin
|
|---|
| 592 | BarcodeQR1.Text := '';
|
|---|
| 593 | BarcodeQR1.Visible := False;
|
|---|
| 594 | end else BarcodeQR1.Visible := True;
|
|---|
| 595 | finally
|
|---|
| 596 | ContactWithoutImages.Free;
|
|---|
| 597 | end;
|
|---|
| 598 | end else BarcodeQR1.Visible := True;
|
|---|
| 599 | end;
|
|---|
| 600 |
|
|---|
| 601 | procedure TFormContact.TabSheetSocialHide(Sender: TObject);
|
|---|
| 602 | begin
|
|---|
| 603 | Contact.Fields[cfFacebook] := EditFacebook.Text;
|
|---|
| 604 | Contact.Fields[cfTwitter] := EditTwitter.Text;
|
|---|
| 605 | Contact.Fields[cfInstagram] := EditInstagram.Text;
|
|---|
| 606 | Contact.Fields[cfYouTube] := EditYouTube.Text;
|
|---|
| 607 | Contact.Fields[cfPeerTube] := EditPeerTube.Text;
|
|---|
| 608 | Contact.Fields[cfMastodon] := EditMastodon.Text;
|
|---|
| 609 | Contact.Fields[cfLinkedIn] := EditLinkedIn.Text;
|
|---|
| 610 | Contact.Fields[cfSnapchat] := EditSnapchat.Text;
|
|---|
| 611 | Contact.Fields[cfReddit] := EditReddit.Text;
|
|---|
| 612 | Contact.Fields[cfMySpace] := EditMySpace.Text;
|
|---|
| 613 |
|
|---|
| 614 | ReloadAllPropertiesTab;
|
|---|
| 615 | end;
|
|---|
| 616 |
|
|---|
| 617 | procedure TFormContact.TabSheetSocialShow(Sender: TObject);
|
|---|
| 618 | begin
|
|---|
| 619 | EditFacebook.Text := Contact.Fields[cfFacebook];
|
|---|
| 620 | EditTwitter.Text := Contact.Fields[cfTwitter];
|
|---|
| 621 | EditInstagram.Text := Contact.Fields[cfInstagram];
|
|---|
| 622 | EditYouTube.Text := Contact.Fields[cfYouTube];
|
|---|
| 623 | EditPeerTube.Text := Contact.Fields[cfPeerTube];
|
|---|
| 624 | EditMastodon.Text := Contact.Fields[cfMastodon];
|
|---|
| 625 | EditLinkedIn.Text := Contact.Fields[cfLinkedIn];
|
|---|
| 626 | EditSnapchat.Text := Contact.Fields[cfSnapchat];
|
|---|
| 627 | EditReddit.Text := Contact.Fields[cfReddit];
|
|---|
| 628 | EditMySpace.Text := Contact.Fields[cfMySpace];
|
|---|
| 629 | end;
|
|---|
| 630 |
|
|---|
| 631 | procedure TFormContact.TabSheetWorkHide(Sender: TObject);
|
|---|
| 632 | begin
|
|---|
| 633 | Contact.Fields[cfEmailWork] := EditWorkEmail.Text;
|
|---|
| 634 | Contact.Fields[cfTelWork] := EditWorkPhone.Text;
|
|---|
| 635 | Contact.Fields[cfTelCellWork] := EditWorkMobile.Text;
|
|---|
| 636 | Contact.Fields[cfTelFaxWork] := EditWorkFax.Text;
|
|---|
| 637 | Contact.Fields[cfTelPagerWork] := EditWorkPager.Text;
|
|---|
| 638 | Contact.Fields[cfTitle] := EditTitle.Text;
|
|---|
| 639 | Contact.Fields[cfOrganization] := EditOrganization.Text;
|
|---|
| 640 | Contact.Fields[cfDepartment] := EditDepartment.Text;
|
|---|
| 641 | Contact.Fields[cfWorkAddressPostOfficeBox] := EditWorkAddressPostOfficeBox.Text;
|
|---|
| 642 | Contact.Fields[cfWorkAddressStreet] := EditWorkAddressStreet.Text;
|
|---|
| 643 | Contact.Fields[cfWorkAddressStreetExtended] := EditWorkAddressStreetExtended.Text;
|
|---|
| 644 | Contact.Fields[cfWorkAddressCity] := EditWorkAddressCity.Text;
|
|---|
| 645 | Contact.Fields[cfWorkAddressRegion] := EditWorkAddressRegion.Text;
|
|---|
| 646 | Contact.Fields[cfWorkAddressCountry] := EditWorkAddressCountry.Text;
|
|---|
| 647 | Contact.Fields[cfWorkAddressPostalCode] := EditWorkAddressPostalCode.Text;
|
|---|
| 648 | Contact.Fields[cfUrlWork] := EditWorkWeb.Text;
|
|---|
| 649 |
|
|---|
| 650 | ReloadAllPropertiesTab;
|
|---|
| 651 | end;
|
|---|
| 652 |
|
|---|
| 653 | procedure TFormContact.TabSheetWorkShow(Sender: TObject);
|
|---|
| 654 | begin
|
|---|
| 655 | EditWorkEmail.Text := Contact.Fields[cfEmailWork];
|
|---|
| 656 | EditWorkPhone.Text := Contact.Fields[cfTelWork];
|
|---|
| 657 | EditWorkMobile.Text := Contact.Fields[cfTelCellWork];
|
|---|
| 658 | EditWorkFax.Text := Contact.Fields[cfTelFaxWork];
|
|---|
| 659 | EditWorkPager.Text := Contact.Fields[cfTelPagerWork];
|
|---|
| 660 | EditTitle.Text := Contact.Fields[cfTitle];
|
|---|
| 661 | EditOrganization.Text := Contact.Fields[cfOrganization];
|
|---|
| 662 | EditDepartment.Text := Contact.Fields[cfDepartment];
|
|---|
| 663 | EditWorkAddressPostOfficeBox.Text := Contact.Fields[cfWorkAddressPostOfficeBox];
|
|---|
| 664 | EditWorkAddressStreet.Text := Contact.Fields[cfWorkAddressStreet];
|
|---|
| 665 | EditWorkAddressStreetExtended.Text := Contact.Fields[cfWorkAddressStreetExtended];
|
|---|
| 666 | EditWorkAddressCity.Text := Contact.Fields[cfWorkAddressCity];
|
|---|
| 667 | EditWorkAddressRegion.Text := Contact.Fields[cfWorkAddressRegion];
|
|---|
| 668 | EditWorkAddressCountry.Text := Contact.Fields[cfWorkAddressCountry];
|
|---|
| 669 | EditWorkAddressPostalCode.Text := Contact.Fields[cfWorkAddressPostalCode];
|
|---|
| 670 | EditWorkWeb.Text := Contact.Fields[cfUrlWork];
|
|---|
| 671 | end;
|
|---|
| 672 |
|
|---|
| 673 | procedure TFormContact.PhotoChange(Sender: TObject);
|
|---|
| 674 | begin
|
|---|
| 675 | if FPhoto.Used and (FPhoto.Url = '') then
|
|---|
| 676 | ImagePhoto.Picture.Bitmap.Assign(FPhoto.Bitmap)
|
|---|
| 677 | else ImagePhoto.Picture.Assign(Core.Core.GetProfileImage.Picture);
|
|---|
| 678 | UpdateInterface;
|
|---|
| 679 | end;
|
|---|
| 680 |
|
|---|
| 681 | procedure TFormContact.SetContact(AValue: TContact);
|
|---|
| 682 | begin
|
|---|
| 683 | if FContact = AValue then Exit;
|
|---|
| 684 | FContact := AValue;
|
|---|
| 685 | end;
|
|---|
| 686 |
|
|---|
| 687 | procedure TFormContact.ReloadAllPropertiesTab;
|
|---|
| 688 | begin
|
|---|
| 689 | if TabSheetAll.Visible then begin
|
|---|
| 690 | TabSheetAllShow(nil);
|
|---|
| 691 | end;
|
|---|
| 692 | end;
|
|---|
| 693 |
|
|---|
| 694 | procedure TFormContact.FormClose(Sender: TObject; var CloseAction: TCloseAction
|
|---|
| 695 | );
|
|---|
| 696 | begin
|
|---|
| 697 | // Hide PageControl to fire TabSheet OnHide event on form close
|
|---|
| 698 | PageControlContact.ActivePage.Hide;
|
|---|
| 699 |
|
|---|
| 700 | Core.Core.LastContactTabIndex := PageControlContact.TabIndex;
|
|---|
| 701 | end;
|
|---|
| 702 |
|
|---|
| 703 | procedure TFormContact.ButtonNextClick(Sender: TObject);
|
|---|
| 704 | begin
|
|---|
| 705 | if Assigned(FOnGetNext) then
|
|---|
| 706 | Contact := FOnGetNext(Contact);
|
|---|
| 707 | end;
|
|---|
| 708 |
|
|---|
| 709 | procedure TFormContact.APhotoLoadExecute(Sender: TObject);
|
|---|
| 710 | begin
|
|---|
| 711 | OpenPictureDialog1.InitialDir := ExtractFileDir(Core.Core.LastPhotoFileName);
|
|---|
| 712 | OpenPictureDialog1.FileName := ExtractFileName(Core.Core.LastPhotoFileName);
|
|---|
| 713 | if OpenPictureDialog1.Execute then begin
|
|---|
| 714 | FPhoto.LoadFromFile(OpenPictureDialog1.FileName);
|
|---|
| 715 | Core.Core.LastPhotoFileName := OpenPictureDialog1.FileName;
|
|---|
| 716 | end;
|
|---|
| 717 | end;
|
|---|
| 718 |
|
|---|
| 719 | procedure TFormContact.APhotoClearExecute(Sender: TObject);
|
|---|
| 720 | begin
|
|---|
| 721 | FPhoto.Clear;
|
|---|
| 722 | end;
|
|---|
| 723 |
|
|---|
| 724 | procedure TFormContact.APhotoSaveExecute(Sender: TObject);
|
|---|
| 725 | begin
|
|---|
| 726 | SavePictureDialog1.InitialDir := ExtractFileDir(Core.Core.LastPhotoFileName);
|
|---|
| 727 | SavePictureDialog1.FileName := ExtractFileName(Core.Core.LastPhotoFileName);
|
|---|
| 728 | if SavePictureDialog1.Execute then begin
|
|---|
| 729 | ImagePhoto.Picture.SaveToFile(SavePictureDialog1.FileName);
|
|---|
| 730 | Core.Core.LastPhotoFileName := SavePictureDialog1.FileName;
|
|---|
| 731 | end;
|
|---|
| 732 | end;
|
|---|
| 733 |
|
|---|
| 734 | procedure TFormContact.APhotoSetUrlExecute(Sender: TObject);
|
|---|
| 735 | begin
|
|---|
| 736 | FPhoto.Url := InputBox(SPhotoUrl, SPhotoUrlQuery, FPhoto.Url);
|
|---|
| 737 | end;
|
|---|
| 738 |
|
|---|
| 739 | procedure TFormContact.APhotoShowExecute(Sender: TObject);
|
|---|
| 740 | begin
|
|---|
| 741 | with TFormImage.Create(nil) do
|
|---|
| 742 | try
|
|---|
| 743 | Image.Assign(FPhoto);
|
|---|
| 744 | if ShowModal = mrOK then begin
|
|---|
| 745 | FPhoto.Assign(Image);
|
|---|
| 746 | UpdateInterface;
|
|---|
| 747 | end;
|
|---|
| 748 | finally
|
|---|
| 749 | Free;
|
|---|
| 750 | end;
|
|---|
| 751 | end;
|
|---|
| 752 |
|
|---|
| 753 | procedure TFormContact.ButtonHomeAddressShowClick(Sender: TObject);
|
|---|
| 754 | var
|
|---|
| 755 | Address: string;
|
|---|
| 756 | begin
|
|---|
| 757 | Address := '';
|
|---|
| 758 | if EditHomeAddressStreet.Text <> '' then Address := Address + ' ' + EditHomeAddressStreet.Text;
|
|---|
| 759 | if EditHomeAddressStreetExtended.Text <> '' then Address := Address + ' ' + EditHomeAddressStreetExtended.Text;
|
|---|
| 760 | if EditHomeAddressPostOfficeBox.Text <> '' then Address := Address + ' ' + EditHomeAddressPostOfficeBox.Text;
|
|---|
| 761 | if EditHomeAddressCity.Text <> '' then Address := Address + ' ' + EditHomeAddressCity.Text;
|
|---|
| 762 | if EditHomeAddressCountry.Text <> '' then Address := Address + ' ' + EditHomeAddressCountry.Text;
|
|---|
| 763 | if Trim(Address) <> '' then
|
|---|
| 764 | OpenURL(Core.Core.MapUrl + URLEncode(Trim(Address)));
|
|---|
| 765 | end;
|
|---|
| 766 |
|
|---|
| 767 | procedure TFormContact.ButtonNameDetailsClick(Sender: TObject);
|
|---|
| 768 | begin
|
|---|
| 769 | with TFormNameDetails.Create(nil) do
|
|---|
| 770 | try
|
|---|
| 771 | EditFirstName.Text := Contact.Fields[cfFirstName];
|
|---|
| 772 | EditLastName.Text := Contact.Fields[cfLastName];
|
|---|
| 773 | EditMiddleName.Text := Contact.Fields[cfMiddleName];
|
|---|
| 774 | EditTitleAfter.Text := Contact.Fields[cfTitleAfter];
|
|---|
| 775 | EditTitleBefore.Text := Contact.Fields[cfTitleBefore];
|
|---|
| 776 | if ShowModal = mrOk then begin
|
|---|
| 777 | Contact.Fields[cfMiddleName] := EditMiddleName.Text;
|
|---|
| 778 | Contact.Fields[cfFirstName] := EditFirstName.Text;
|
|---|
| 779 | Contact.Fields[cfLastName] := EditLastName.Text;
|
|---|
| 780 | Contact.Fields[cfTitleAfter] := EditTitleAfter.Text;
|
|---|
| 781 | Contact.Fields[cfTitleBefore] := EditTitleBefore.Text;
|
|---|
| 782 | with TNameDetails.Create do
|
|---|
| 783 | try
|
|---|
| 784 | Prefix := EditTitleBefore.Text;
|
|---|
| 785 | First := EditFirstName.Text;
|
|---|
| 786 | Middle := EditMiddleName.Text;
|
|---|
| 787 | Last := EditLastName.Text;
|
|---|
| 788 | Suffix := EditTitleAfter.Text;
|
|---|
| 789 | UpdateEditNoOnChange(EditFullName, GetCombined);
|
|---|
| 790 | finally
|
|---|
| 791 | Free;
|
|---|
| 792 | end;
|
|---|
| 793 | end;
|
|---|
| 794 | finally
|
|---|
| 795 | Free;
|
|---|
| 796 | end;
|
|---|
| 797 | end;
|
|---|
| 798 |
|
|---|
| 799 | procedure TFormContact.ButtonPreviousClick(Sender: TObject);
|
|---|
| 800 | begin
|
|---|
| 801 | if Assigned(FOnGetPrevious) then
|
|---|
| 802 | Contact := FOnGetPrevious(Contact);
|
|---|
| 803 | end;
|
|---|
| 804 |
|
|---|
| 805 | procedure TFormContact.ButtonWorkAddressShowClick(Sender: TObject);
|
|---|
| 806 | var
|
|---|
| 807 | Address: string;
|
|---|
| 808 | begin
|
|---|
| 809 | Address := '';
|
|---|
| 810 | if EditWorkAddressStreet.Text <> '' then Address := Address + ' ' + EditWorkAddressStreet.Text;
|
|---|
| 811 | if EditWorkAddressStreetExtended.Text <> '' then Address := Address + ' ' + EditWorkAddressStreetExtended.Text;
|
|---|
| 812 | if EditWorkAddressPostOfficeBox.Text <> '' then Address := Address + ' ' + EditWorkAddressPostOfficeBox.Text;
|
|---|
| 813 | if EditWorkAddressCity.Text <> '' then Address := Address + ' ' + EditWorkAddressCity.Text;
|
|---|
| 814 | if EditWorkAddressCountry.Text <> '' then Address := Address + ' ' + EditWorkAddressCountry.Text;
|
|---|
| 815 | if Trim(Address) <> '' then
|
|---|
| 816 | OpenURL(Core.Core.MapUrl + URLEncode(Trim(Address)));
|
|---|
| 817 | end;
|
|---|
| 818 |
|
|---|
| 819 | procedure TFormContact.EditFullNameChange(Sender: TObject);
|
|---|
| 820 | begin
|
|---|
| 821 | with TNameDetails.Create do
|
|---|
| 822 | try
|
|---|
| 823 | Prefix := Contact.Fields[cfTitleBefore];
|
|---|
| 824 | First := Contact.Fields[cfFirstName];
|
|---|
| 825 | Middle := Contact.Fields[cfMiddleName];
|
|---|
| 826 | Last := Contact.Fields[cfLastName];
|
|---|
| 827 | Suffix := Contact.Fields[cfTitleAfter];
|
|---|
| 828 | Split(EditFullName.Text);
|
|---|
| 829 | Contact.Fields[cfTitleBefore] := Prefix;
|
|---|
| 830 | Contact.Fields[cfFirstName] := First;
|
|---|
| 831 | Contact.Fields[cfMiddleName] := Middle;
|
|---|
| 832 | Contact.Fields[cfLastName] := Last;
|
|---|
| 833 | Contact.Fields[cfTitleAfter] := Suffix;
|
|---|
| 834 | UpdateInterface;
|
|---|
| 835 | finally
|
|---|
| 836 | Free;
|
|---|
| 837 | end;
|
|---|
| 838 | end;
|
|---|
| 839 |
|
|---|
| 840 | procedure TFormContact.FormCreate(Sender: TObject);
|
|---|
| 841 | begin
|
|---|
| 842 | FContact := nil;
|
|---|
| 843 | FormProperties := TFormProperties.Create(nil);
|
|---|
| 844 | FPhoto := TContactImage.Create(nil);
|
|---|
| 845 | FPhoto.FieldIndex := cfPhoto;
|
|---|
| 846 | FPhoto.OnChange := PhotoChange;
|
|---|
| 847 |
|
|---|
| 848 | // Set Barcode unpublished properties
|
|---|
| 849 | BarcodeQR1.Anchors := [akTop, akLeft];
|
|---|
| 850 | BarcodeQR1.PopupMenu := PopupMenuQrCode;
|
|---|
| 851 |
|
|---|
| 852 | PageControlContact.TabIndex := Core.Core.LastContactTabIndex;
|
|---|
| 853 | end;
|
|---|
| 854 |
|
|---|
| 855 | procedure TFormContact.FormDestroy(Sender: TObject);
|
|---|
| 856 | begin
|
|---|
| 857 | FreeAndNil(FPhoto);
|
|---|
| 858 | FreeAndNil(FormProperties);
|
|---|
| 859 | end;
|
|---|
| 860 |
|
|---|
| 861 | procedure TFormContact.UpdateInterface;
|
|---|
| 862 | var
|
|---|
| 863 | Title: string;
|
|---|
| 864 | begin
|
|---|
| 865 | Title := SContact;
|
|---|
| 866 | if EditFullName.Text <> '' then Title := EditFullName.Text + ' - ' + Title
|
|---|
| 867 | else
|
|---|
| 868 | if EditOrganization.Text <> '' then Title := EditOrganization.Text + ' - ' + Title;
|
|---|
| 869 | Caption := Title;
|
|---|
| 870 | APhotoSave.Enabled := FPhoto.Used;
|
|---|
| 871 | APhotoClear.Enabled := FPhoto.Used;
|
|---|
| 872 | //ButtonNext.Enabled := Assigned(FOnGetNext) and Assigned(FOnGetNext(Contact));
|
|---|
| 873 | //ButtonPrevious.Enabled := Assigned(FOnGetPrevious) and Assigned(FOnGetPrevious(Contact));
|
|---|
| 874 | end;
|
|---|
| 875 |
|
|---|
| 876 | end.
|
|---|
| 877 |
|
|---|