1 /*global Phone, callContactCarousel, GRID_TAB, LIST_TAB, loadTemplate, ko*/
4 * Class which provides methods to operate with contacts library which displays all contact information (name, phone number, photo) from paired device ordered by name.
6 * @class ContactsLibrary
7 * @module PhoneApplication
9 var ContactsLibrary = {
10 currentSelectedContact : "",
12 * Method initializes contacts library.
18 $('#library').library("setSectionTitle", "PHONE CONTACTS");
19 $('#library').library("init");
23 text : "CONTACTS A-Z",
28 $('#library').library("tabMenuTemplateCompile", tabMenuModel);
30 $('#library').bind('eventClick_GridViewBtn', function() {
31 ContactsLibrary.showContacts();
34 $('#library').bind('eventClick_ListViewBtn', function() {
35 ContactsLibrary.showContacts();
38 $('#library').bind('eventClick_SearchViewBtn', function() {
41 $('#library').bind('eventClick_menuItemBtn', function() {
42 ContactsLibrary.showContacts();
45 $('#library').bind('eventClick_closeSubpanel', function() {
48 $("#alphabetBookmarkList").on("letterClick", function(event, letter) {
50 Phone.contactsAlphabetFilter(letter === "*" ? "" : letter);
53 ContactsLibrary.showContacts();
56 * Method unhides library page.
62 $('#library').library("showPage");
65 * Method hides library page.
71 $('#library').library("hidePage");
74 * Method opens contact detail.
76 * @method openContactDetail
78 * {Object} Object representing contact's information.
80 openContactDetail : function(contact) {
83 ContactsLibrary.currentSelectedContact = contact;
84 var history = Phone.getCallHistoryByPersonId(contact.personId);
85 var formattedContact = ContactsLibrary.initContactDetail(contact);
86 formattedContact.history = history;
87 ContactsLibrary.renderContactDetailView(formattedContact);
89 console.log("Supplied contact is null.");
93 * Method renders search view.
95 * @method renderContactDetailView
97 * {Object} Contact object.
99 renderContactDetailView : function(contact) {
101 console.log("open contact called");
102 var subpanelModel = {
103 textTitle : "CONTACT",
104 textSubtitle : contact.name || "Unknown",
106 action : function() {
107 console.log("back clicked");
108 ContactsLibrary.showContacts();
109 ContactsLibrary.currentSelectedContact = "";
112 $('#library').library("subpanelContentTemplateCompile", subpanelModel);
113 $('#library').library("clearContent");
114 $('#library').library("setContentDelegate", "templates/libraryContactDetailDelegate.html");
115 $('#library').library("contentTemplateCompile", contact, "contactDetail", function() {
116 $("#contactDetailMobileTitle").boxCaptionPlugin('initSmall', "MOBILE");
117 $("#contactDetailEmailTitle").boxCaptionPlugin('initSmall', "EMAIL");
118 $("#contactDetailAddressTitle").boxCaptionPlugin('initSmall', "ADDRESS");
122 * Method which shows contacts in grid or list view.
124 * @method showContacts
126 showContacts : function() {
128 console.log("show contacts called");
130 switch ($('#library').library('getSelectetLeftTabIndex')) {
132 view = "contactsLibraryContentGrid";
135 view = "contactsLibraryContentList";
138 view = "contactsLibraryContentList";
141 $('#library').library('closeSubpanel');
142 $('#library').library("clearContent");
143 $('#library').library("changeContentClass", view);
144 loadTemplate("templates/", "template-contacts", function() {
145 var contactsElement = '<div data-bind="template: { name: \'template-contacts\', foreach: Phone.contactsComputed }"></div>';
146 $(contactsElement).appendTo($('.' + view));
147 ko.applyBindings(Phone);
151 * Method which initializes contact detail.
153 * @method initContactDetail
155 * {Object} Contact object.
157 initContactDetail : function(contact) {
174 tempContact.id = contact.uid;
177 if (!!contact.name) {
178 tempContact.name = Phone.getDisplayNameStr(contact);
181 if (!!contact.phoneNumbers && contact.phoneNumbers.length && !!contact.phoneNumbers[0].number) {
182 tempContact.phoneNumber = contact.phoneNumbers[0].number.trim();
185 if (!!contact.emails && contact.emails.length && !!contact.emails[0].email) {
186 tempContact.email = contact.emails[0].email.trim();
189 if (!!contact.photoURI) {
190 tempContact.photoURI = contact.photoURI.trim();
193 if (!!contact.addresses && contact.addresses.length) {
194 str = !!contact.addresses[0].streetAddress ? contact.addresses[0].streetAddress.trim() + "<br />" : "";
195 str += !!contact.addresses[0].city ? contact.addresses[0].city.trim() + "<br />" : "";
196 str += !!contact.addresses[0].country ? contact.addresses[0].country.trim() + "<br />" : "";
197 str += !!contact.addresses[0].postalCode ? contact.addresses[0].postalCode.trim() : "";
199 if (str.toString().trim() === "") {
203 tempContact.address = str.trim();
206 tempContact.isFavorite = contact.isFavorite;