Skip to content

Commit

Permalink
Updated Contacts JS API with proper find method and filter parameter.
Browse files Browse the repository at this point in the history
  • Loading branch information
Fil Maj committed Nov 28, 2009
1 parent 1126195 commit 4821aae
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 88 deletions.
58 changes: 14 additions & 44 deletions blackberry/framework/src/www/phonegap.js
Original file line number Diff line number Diff line change
Expand Up @@ -186,79 +186,49 @@ Contact.prototype.displayName = function()
return this.name;
}

function AddressBook() {
function Contacts() {
// Dummy object to hold array of contacts
this.contacts = [];
this.timestamp = new Date().getTime();
}

if (typeof navigator.AddressBook == "undefined") navigator.AddressBook = new AddressBook();
if (typeof navigator.contacts == "undefined") navigator.contacts = new Contacts();

AddressBook.prototype.formParams = function(options, startArray) {
Contacts.prototype.formParams = function(options, startArray) {
var params = [];
if (startArray) params = startArray;
if (options.pageSize && options.pageSize > 0) params.push("pageSize:" + options.pageSize);
if (options.pageNumber) params.push("pageNumber:" + options.pageNumber);
if (options.nameFilter) params.push("nameFilter:" + options.nameFilter);
if (options.contactID) params.push("contactID:" + options.contactID);
if (options.limit && options.limit > 0) params.push("pageSize:" + options.limit);
if (options.page) params.push("pageNumber:" + options.page);
return params;
};
AddressBook.prototype.chooseContact = function(successCallback, options) {
Contacts.prototype.chooseContact = function(successCallback, options) {
this.choose_onSuccess = successCallback;
var params = ["choose"];
params = this.formParams(options,params);
PhoneGap.exec("contacts", params);
};
AddressBook.prototype.findContacts = function(successCallback, errorCallback, options) {
if (options.nameFilter && options.nameFilter.length > 0) {
Contacts.prototype.find = function(filter, successCallback, errorCallback, options) {
if (typeof(filter) != 'object') {
alert('[PhoneGap Error] filter parameter passed into navigator.contacts.find must be of type object.');
return;
}
if (filter.name && filter.name.length > 0) {
var params = ["search"];
params.push('nameFilter:' + filter.name);
params = this.formParams(options,params);
this.search_onSuccess = successCallback;
this.search_onError = errorCallback;
PhoneGap.exec("contacts", params);
} else {
this.getAllContacts(successCallback,errorCallback,options);
return;
}
};
AddressBook.prototype.getAllContacts = function(successCallback, errorCallback, options) {
Contacts.prototype.getAllContacts = function(successCallback, errorCallback, options) {
this.global_onSuccess = successCallback;
this.global_onError = errorCallback;
var params = ["getall"];
params = this.formParams(options,params);
PhoneGap.exec("contacts", params);
};
AddressBook.prototype.addContact = function(contact, successCallback, errorCallback, options) {
if (!contact) {
alert("[PhoneGap Error] newContact function not provided with a contact parameter.");
return;
} else {
if (!contact.firstName || !contact.lastName || !contact.phoneNumber || !contact.address || !contact.email) {
alert("[PhoneGap Error] newContact function parameter 'contact' does not have proper contact members (firstName, lastName, phoneNumber, address and email).");
return;
}
options.push("firstName:" + contact.firstName);
options.push("lastName:" + contact.lastName);
options.push("address:" + contact.address);
// Create a phone number parameter that we can parse on the BlackBerry end.
var phones = '';
for (var i = 0; i < contact.phoneNumber.length; i++) {
phones += contact.phoneNumber[i].label + '=';
phones += contact.phoneNumber[i].value + '|';
}
options.push("phoneNumber:" + phones.substr(0,phones.length-1));
var emails = '';
for (var j = 0; j < contact.email.length; j++) {
emails += contact.email[j].label + '=';
emails += contact.email[j].value + '|';
}
options.push("email:" + emails.substr(0,emails.length-1));
this.new_onSuccess = successCallback;
this.new_onError = errorCallback;
var params = ["new"];
params = this.formParams(options,params);
PhoneGap.exec("contacts", params);
}
};/**
* this represents the mobile device, and provides properties for inspecting the model, version, UUID of the
* phone, etc.
Expand Down
58 changes: 14 additions & 44 deletions blackberry/js/contacts.js
Original file line number Diff line number Diff line change
Expand Up @@ -18,77 +18,47 @@ Contact.prototype.displayName = function()
return this.name;
}

function AddressBook() {
function Contacts() {
// Dummy object to hold array of contacts
this.contacts = [];
this.timestamp = new Date().getTime();
}

if (typeof navigator.AddressBook == "undefined") navigator.AddressBook = new AddressBook();
if (typeof navigator.contacts == "undefined") navigator.contacts = new Contacts();

AddressBook.prototype.formParams = function(options, startArray) {
Contacts.prototype.formParams = function(options, startArray) {
var params = [];
if (startArray) params = startArray;
if (options.pageSize && options.pageSize > 0) params.push("pageSize:" + options.pageSize);
if (options.pageNumber) params.push("pageNumber:" + options.pageNumber);
if (options.nameFilter) params.push("nameFilter:" + options.nameFilter);
if (options.contactID) params.push("contactID:" + options.contactID);
if (options.limit && options.limit > 0) params.push("pageSize:" + options.limit);
if (options.page) params.push("pageNumber:" + options.page);
return params;
};
AddressBook.prototype.chooseContact = function(successCallback, options) {
Contacts.prototype.chooseContact = function(successCallback, options) {
this.choose_onSuccess = successCallback;
var params = ["choose"];
params = this.formParams(options,params);
PhoneGap.exec("contacts", params);
};
AddressBook.prototype.findContacts = function(successCallback, errorCallback, options) {
if (options.nameFilter && options.nameFilter.length > 0) {
Contacts.prototype.find = function(filter, successCallback, errorCallback, options) {
if (typeof(filter) != 'object') {
alert('[PhoneGap Error] filter parameter passed into navigator.contacts.find must be of type object.');
return;
}
if (filter.name && filter.name.length > 0) {
var params = ["search"];
params.push('nameFilter:' + filter.name);
params = this.formParams(options,params);
this.search_onSuccess = successCallback;
this.search_onError = errorCallback;
PhoneGap.exec("contacts", params);
} else {
this.getAllContacts(successCallback,errorCallback,options);
return;
}
};
AddressBook.prototype.getAllContacts = function(successCallback, errorCallback, options) {
Contacts.prototype.getAllContacts = function(successCallback, errorCallback, options) {
this.global_onSuccess = successCallback;
this.global_onError = errorCallback;
var params = ["getall"];
params = this.formParams(options,params);
PhoneGap.exec("contacts", params);
};
AddressBook.prototype.addContact = function(contact, successCallback, errorCallback, options) {
if (!contact) {
alert("[PhoneGap Error] newContact function not provided with a contact parameter.");
return;
} else {
if (!contact.firstName || !contact.lastName || !contact.phoneNumber || !contact.address || !contact.email) {
alert("[PhoneGap Error] newContact function parameter 'contact' does not have proper contact members (firstName, lastName, phoneNumber, address and email).");
return;
}
options.push("firstName:" + contact.firstName);
options.push("lastName:" + contact.lastName);
options.push("address:" + contact.address);
// Create a phone number parameter that we can parse on the BlackBerry end.
var phones = '';
for (var i = 0; i < contact.phoneNumber.length; i++) {
phones += contact.phoneNumber[i].label + '=';
phones += contact.phoneNumber[i].value + '|';
}
options.push("phoneNumber:" + phones.substr(0,phones.length-1));
var emails = '';
for (var j = 0; j < contact.email.length; j++) {
emails += contact.email[j].label + '=';
emails += contact.email[j].value + '|';
}
options.push("email:" + emails.substr(0,emails.length-1));
this.new_onSuccess = successCallback;
this.new_onError = errorCallback;
var params = ["new"];
params = this.formParams(options,params);
PhoneGap.exec("contacts", params);
}
};

0 comments on commit 4821aae

Please sign in to comment.