/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ dictionary ContactAddress { sequence? type; DOMString? streetAddress; DOMString? locality; DOMString? region; DOMString? postalCode; DOMString? countryName; boolean? pref; }; dictionary ContactField { sequence? type; DOMString? value; boolean? pref; }; dictionary ContactTelField : ContactField { DOMString? carrier; }; dictionary ContactProperties { Date? bday; Date? anniversary; DOMString? sex; DOMString? genderIdentity; sequence? photo; sequence? adr; sequence? email; sequence? url; sequence? impp; sequence? tel; sequence? name; sequence? honorificPrefix; sequence? givenName; sequence? phoneticGivenName; sequence? additionalName; sequence? familyName; sequence? phoneticFamilyName; sequence? honorificSuffix; sequence? nickname; sequence? category; sequence? org; sequence? jobTitle; sequence? note; sequence? key; }; [Constructor(optional ContactProperties properties), JSImplementation="@mozilla.org/contact;1"] interface mozContact { attribute DOMString id; readonly attribute Date? published; readonly attribute Date? updated; attribute Date? bday; attribute Date? anniversary; attribute DOMString? sex; attribute DOMString? genderIdentity; [Cached, Pure] attribute sequence? photo; [Cached, Pure] attribute sequence? adr; [Cached, Pure] attribute sequence? email; [Cached, Pure] attribute sequence? url; [Cached, Pure] attribute sequence? impp; [Cached, Pure] attribute sequence? tel; [Cached, Pure] attribute sequence? name; [Cached, Pure] attribute sequence? honorificPrefix; [Cached, Pure] attribute sequence? givenName; [Cached, Pure] attribute sequence? phoneticGivenName; [Cached, Pure] attribute sequence? additionalName; [Cached, Pure] attribute sequence? familyName; [Cached, Pure] attribute sequence? phoneticFamilyName; [Cached, Pure] attribute sequence? honorificSuffix; [Cached, Pure] attribute sequence? nickname; [Cached, Pure] attribute sequence? category; [Cached, Pure] attribute sequence? org; [Cached, Pure] attribute sequence? jobTitle; [Cached, Pure] attribute sequence? note; [Cached, Pure] attribute sequence? key; void init(optional ContactProperties properties); [ChromeOnly] void setMetadata(DOMString id, Date? published, Date? updated); jsonifier; }; dictionary ContactFindSortOptions { DOMString sortBy; // "givenName" or "familyName" DOMString sortOrder = "ascending"; // e.g. "descending" }; dictionary ContactFindOptions : ContactFindSortOptions { DOMString filterValue; // e.g. "Tom" DOMString filterOp; // e.g. "startsWith" any filterBy; // e.g. ["givenName", "nickname"] unsigned long filterLimit = 0; }; [NoInterfaceObject, NavigatorProperty="mozContacts", JSImplementation="@mozilla.org/contactManager;1"] interface ContactManager : EventTarget { DOMRequest find(optional ContactFindOptions options); DOMCursor getAll(optional ContactFindSortOptions options); DOMRequest clear(); DOMRequest save(mozContact contact); DOMRequest remove((mozContact or DOMString) contactOrId); DOMRequest getRevision(); DOMRequest getCount(); attribute EventHandler oncontactchange; };