Adding clone functionality to Contact object

This commit is contained in:
macdonst
2010-09-30 23:51:07 +08:00
parent a772acbd89
commit 297ddb99fe
3 changed files with 107 additions and 22 deletions
+16 -10
View File
@@ -27,6 +27,20 @@ var Contact = function(id, displayName, name, nickname, phoneNumbers, emails, ad
this.connected = connected || null;
};
Contact.prototype.remove = function(contact) {
};
Contact.prototype.clone = function() {
var clonedContact = PhoneGap.clone(this);
clonedContact.id = null;
return clonedContact;
};
Contact.prototype.save = function(contact) {
};
var ContactName = function(formatted, familyName, givenName, middle, prefix, suffix) {
this.formatted = formatted || null;
this.familyName = familyName || null;
@@ -72,7 +86,6 @@ var Contacts = function() {
this.records = new Array();
}
// Contacts.prototype.find = function(obj, win, fail) {
Contacts.prototype.find = function(fields, win, fail, options) {
this.win = win;
this.fail = fail;
@@ -84,16 +97,9 @@ Contacts.prototype.droidDone = function(contacts) {
this.win(eval('(' + contacts + ')'));
};
Contacts.prototype.remove = function(contact) {
};
Contacts.prototype.save = function(contact) {
};
// This function does not create a new contact in the db.
// Must call contact.save() for it to be persisted in the db.
Contacts.prototype.create = function(contact) {
};
Contacts.prototype.m_foundContacts = function(win, contacts) {
+36
View File
@@ -324,6 +324,42 @@ PhoneGap.stringify = function(args) {
}
};
/**
* Does a deep clone of the object.
*
* @param obj
* @return
*/
PhoneGap.clone = function(obj) {
if(!obj) {
return obj;
}
if(obj instanceof Array){
var retVal = new Array();
for(var i = 0; i < obj.length; ++i){
retVal.push(PhoneGap.clone(obj[i]));
}
return retVal;
}
if (obj instanceof Function) {
return obj;
}
if(!(obj instanceof Object)){
return obj;
}
retVal = new Object();
for(i in obj){
if(!(i in retVal) || retVal[i] != obj[i]) {
retVal[i] = PhoneGap.clone(obj[i]);
}
}
return retVal;
};
PhoneGap.callbackId = 0;
PhoneGap.callbacks = {};