package com.smartgwt.client.cordova.contacts; import com.google.gwt.core.client.JavaScriptObject; import com.google.gwt.core.client.JsArray; import com.smartgwt.client.util.JSOHelper; public class Contact extends JavaScriptObject { public static native Contact create() /*-{ return $wnd.navigator.contacts.create(); }-*/; public static native Contact create(String id) /*-{ return $wnd.navigator.contacts.create({ id: id }); }-*/; protected Contact() {} public final native String getID() /*-{ // The Cordova documentation states that the type of Contact.id is DOMString, but // at least with the iOS implementation and Cordova 2.0.0, the type is actually DOMNumber. // // Make sure that the ID is a DOMString when returning it to Java land to prevent // ClassCastExceptions. return $wnd.String(this.id); }-*/; public final native String getDisplayName() /*-{ return this.displayName; }-*/; public final native void setDisplayName(String displayName) /*-{ this.displayName = displayName; }-*/; public final native ContactName getName() /*-{ return this.name; }-*/; public final native void setName(ContactName name) /*-{ this.name = name; }-*/; public final native String getNickname() /*-{ return this.nickname; }-*/; public final native void setNickname(String nickname) /*-{ this.nickname = nickname; }-*/; public final native JsArray<ContactField> getPhoneNumbers() /*-{ return this.phoneNumbers; }-*/; public final native void setPhoneNumbers(JsArray<ContactField> phoneNumbers) /*-{ this.phoneNumbers = phoneNumbers; }-*/; public final void setPhoneNumbers(ContactField... phoneNumbers) { setPhoneNumbers(JSOHelper.convertToJsArray(phoneNumbers)); } public final native JsArray<ContactField> getEmailAddresses() /*-{ return this.emails; }-*/; public final native void setEmailAddresses(JsArray<ContactField> emailAddresses) /*-{ this.emails = emailAddresses; }-*/; public final void setEmailAddresses(ContactField... emailAddresses) { setEmailAddresses(JSOHelper.convertToJsArray(emailAddresses)); } public final native JsArray<ContactAddress> getAddresses() /*-{ return this.addresses; }-*/; public final native void setAddresses(JsArray<ContactAddress> addresses) /*-{ this.addresses = addresses; }-*/; public final void setAddresses(ContactAddress... contactAddresses) { setAddresses(JSOHelper.convertToJsArray(contactAddresses)); } // TODO ims, organizations, birthday, note, photos, categories, urls /** * Creates a deep copy of this <code>Contact</code> instance, but with the {@link #getID() id} * set to <code>null</code>. * * @return a deep copy of the current <code>Contact</code> instance. */ public final native Contact createDeepCopy() /*-{ return this.clone(); }-*/; public final void save() { save(null); } public final void save(SaveContactSuccessFunction contactSuccess) { save(contactSuccess, null); } public final native void save(SaveContactSuccessFunction contactSuccess, ContactErrorFunction contactError) /*-{ this.save($entry(function (contact) { if (contactSuccess) contactSuccess.@com.smartgwt.client.cordova.contacts.SaveContactSuccessFunction::execute(Lcom/smartgwt/client/cordova/contacts/Contact;)(contact); }), $entry(function (error) { if (contactError) contactError.@com.smartgwt.client.cordova.contacts.ContactErrorFunction::execute(Lcom/smartgwt/client/cordova/contacts/ContactError;)(error); })); }-*/; public final void remove() { remove(null); } public final void remove(ContactSuccessFunction contactSuccess) { remove(contactSuccess, null); } public final native void remove(ContactSuccessFunction contactSuccess, ContactErrorFunction contactError) /*-{ this.remove($entry(function () { if (contactSuccess) contactSuccess.@com.smartgwt.client.cordova.contacts.ContactSuccessFunction::execute()(); }), $entry(function (error) { if (contactError) contactError.@com.smartgwt.client.cordova.contacts.ContactErrorFunction::execute(Lcom/smartgwt/client/cordova/contacts/ContactError;)(error); })); }-*/; }