Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Bug 838020 - [Dialer][User Story] Dialed number addition to existing …
Browse files Browse the repository at this point in the history
…contact r=gtorodelvalle(cherry picked from commit 9f666a3)
  • Loading branch information
albertopq authored and gtorodelvalle committed Mar 18, 2013
1 parent 407f251 commit a78ebf4
Show file tree
Hide file tree
Showing 5 changed files with 154 additions and 143 deletions.
31 changes: 5 additions & 26 deletions apps/communications/dialer/js/keypad.js
Expand Up @@ -349,32 +349,11 @@ var KeypadManager = {
var number = this._phoneNumber;
if (!number)
return;

try {
var activity = new MozActivity({
name: 'new',
data: {
type: 'webcontacts/contact',
params: {
'tel': number
}
}
});
// If we created the contact let's invalidated the contacts
// tab within the dialer.
activity.onsuccess = function contactCreated() {
var contactsIframe = document.getElementById('iframe-contacts');
var src = contactsIframe.src;
// Only perform this refresh if we DID open the contacts tab
if (src && src.length > 0) {
var timestamp = new Date().getTime();
contactsIframe.contentWindow.location.search =
'?timestamp=' + timestamp;
}
};
} catch (e) {
console.log('WebActivities unavailable? : ' + e);
}
LazyLoader.load(['/dialer/js/phone_action_menu.js'],
function hk_showPhoneNumberActionMenu() {
PhoneNumberActionMenu.show(null, number,
['new-contact', 'add-to-existent']);
});
},

callbarBackAction: function hk_callbarBackAction(event) {
Expand Down
136 changes: 136 additions & 0 deletions apps/communications/dialer/js/phone_action_menu.js
@@ -0,0 +1,136 @@
var PhoneNumberActionMenu = (function () {

var _initiated, _newPhoneNumber, _addContactActionMenu, _callMenuItem,
_createNewContactMenuItem, _addToExistingContactMenuItem,
_cancelActionMenuItem;

var _formSubmit = function _formSubmit(event) {
return false;
};

var _updateLatestVisit = function _updateLatestVisit() {
window.asyncStorage.setItem('latestCallLogVisit', Date.now());
};

var _createNewContact = function _createNewContact() {
launchActivity('new');
};

var _addToExistingContact = function _addToExistingContact() {
launchActivity('update');
};

var launchActivity = function launchActivity(name) {
var options = {
name: name,
data: {
type: 'webcontacts/contact',
params: {
'tel': _newPhoneNumber
}
}
};

try {
var activity = new MozActivity(options);
activity.onsuccess = function() {
Recents.refresh();
}
} catch (e) {
console.error('Error while creating activity');
}
_addContactActionMenu.classList.remove('visible');
};

var _call = function _call() {
if (_newPhoneNumber) {
_updateLatestVisit();
CallHandler.call(_newPhoneNumber);
}
_addContactActionMenu.classList.remove('visible');
};

var _cancelActionMenu = function _cancelActionMenu() {
_addContactActionMenu.classList.remove('visible');
};

/*
* @param {Array} options Possible entries are: 'call', 'new-contact',
* 'add-to-existent'. If no options, include all possible options.
*/
var _show = function _show(contactId, phoneNumber, options) {
if (options) {
if (options.indexOf('call') >= 0) {
_callMenuItem.classList.remove('hide');
} else {
_callMenuItem.classList.add('hide');
}
if (options.indexOf('new-contact') >= 0) {
_createNewContactMenuItem.classList.remove('hide');
} else {
_createNewContactMenuItem.classList.add('hide');
}
if (options.indexOf('add-to-existent') >= 0) {
_addToExistingContactMenuItem.classList.remove('hide');
} else {
_addToExistingContactMenuItem.classList.add('hide');
}
} else {
_callMenuItem.classList.remove('hide');
_createNewContactMenuItem.classList.remove('hide');
_addToExistingContactMenuItem.classList.remove('hide');
}
if (contactId) {
var contactsIframe = document.getElementById('iframe-contacts');
var src = '/contacts/index.html';
src += '#view-contact-details?id=' + contactId;
src += '&tel=' + phoneNumber;
// Enable the function of receiving the messages posted from the iframe.
src += '&back_to_previous_tab=1';
var timestamp = new Date().getTime();
contactsIframe.src = src + '&timestamp=' + timestamp;
window.location.hash = '#contacts-view';
} else {
_newPhoneNumber = phoneNumber;
_addContactActionMenu.classList.add('visible');
}
};

var _init = function _init() {
if (_initiated) {
return;
}
_addContactActionMenu = document.getElementById('add-contact-action-menu');
_addContactActionMenu.hidden = false;
_addContactActionMenu.addEventListener('submit', _formSubmit);
_callMenuItem = document.getElementById('call-menuitem');
_callMenuItem.addEventListener('click', _call);
_createNewContactMenuItem = document.getElementById(
'create-new-contact-menuitem');
_createNewContactMenuItem.addEventListener('click', _createNewContact);
_addToExistingContactMenuItem = document.getElementById(
'add-to-existing-contact-menuitem');
_addToExistingContactMenuItem.addEventListener('click',
_addToExistingContact);
_cancelActionMenuItem = document.getElementById('cancel-action-menu');
_cancelActionMenuItem.addEventListener('click', _cancelActionMenu);
_initiated = true;
};

return {
/*
* @param {Array} options Possible entries are: 'call', 'new-contact',
* 'add-to-existent'. If no options, include all possible options.
*/
show: function show(contactId, phoneNumber, options) {
LazyLoader.load([
'/shared/style/action_menu.css',
'/dialer/style/phone_action_menu.css'
], function pnam_show() {
_init();
_show(contactId, phoneNumber, options);
});
}
};

}());
106 changes: 2 additions & 104 deletions apps/communications/dialer/js/recents.js
Expand Up @@ -70,42 +70,12 @@ var Recents = {
getElementById('iframe-contacts');
},

get addContactActionMenu() {
delete this.addContactActionMenu;
return this.addContactActionMenu = document.
getElementById('add-contact-action-menu');
},

get recentsEditMenu() {
delete this.recentsEditMenu;
return this.recentsEditMenu = document.
getElementById('edit-mode');
},

get callMenuItem() {
delete this.callMenuItem;
return this.callMenuItem = document.
getElementById('call-menuitem');
},

get createNewContactMenuItem() {
delete this.createNewContactMenuItem;
return this.createNewContactMenuItem = document.
getElementById('create-new-contact-menuitem');
},

get addToExistingContactMenuItem() {
delete this.addToExistingContactMenuItem;
return this.addToExistingContactMenuItem = document.
getElementById('add-to-existing-contact-menuitem');
},

get cancelActionMenuItem() {
delete this.cancelActionMenuItem;
return this.cancelActionMenuItem = document.
getElementById('cancel-action-menu');
},

load: function re_load(callback) {
if (this._loaded) {
if (callback) {
Expand All @@ -123,9 +93,9 @@ var Recents = {
'/shared/style/headers.css',
'/shared/style/switches.css',
'/shared/style/edit_mode.css',
'/shared/style/action_menu.css',
'/shared/style_unstable/lists.css',

'/dialer/js/phone_action_menu.js',
'/dialer/js/fixed_header.js',
'/dialer/js/utils.js',
'/dialer/js/recents_db.js'
Expand All @@ -138,7 +108,6 @@ var Recents = {

this.init();
this.recentsView.classList.remove('hidden');
this.addContactActionMenu.hidden = false;
this.recentsEditMenu.hidden = false;

if (callback) {
Expand Down Expand Up @@ -186,26 +155,6 @@ var Recents = {
this.recentsContainer.addEventListener('click',
this.click.bind(this));
}
if (this.callMenuItem) {
this.callMenuItem.addEventListener('click',
this.call.bind(this));
}
if (this.addContactActionMenu) {
this.addContactActionMenu.addEventListener('submit',
this.formSubmit.bind(this));
}
if (this.createNewContactMenuItem) {
this.createNewContactMenuItem.addEventListener('click',
this.createNewContact.bind(this));
}
if (this.addToExistingContactMenuItem) {
this.addToExistingContactMenuItem.addEventListener('click',
this.addToExistingContact.bind(this));
}
if (this.cancelActionMenuItem) {
this.cancelActionMenuItem.addEventListener('click',
this.cancelActionMenu.bind(this));
}

// Setting up the SimplePhoneMatcher
var conn = window.navigator.mozMobileConnection;
Expand Down Expand Up @@ -508,7 +457,7 @@ var Recents = {
if (target.classList.contains('isContact')) {
contactId = target.dataset.contactId;
}
Recents.viewOrCreate(contactId, phoneNumber);
PhoneNumberActionMenu.show(contactId, phoneNumber);
} else {
//Edit mode
if (target.classList.contains('call-log-contact-photo')) {
Expand Down Expand Up @@ -537,57 +486,6 @@ var Recents = {
}
},

formSubmit: function formSubmit(event) {
return false;
},

createNewContact: function re_createNewContact() {
var src = '/contacts/index.html';
src += '#view-contact-form?tel=' + this.newPhoneNumber;
var timestamp = new Date().getTime();
this.iframeContacts.src = src + '&timestamp=' + timestamp;
window.location.hash = '#contacts-view';
this.addContactActionMenu.classList.remove('visible');
},

addToExistingContact: function re_addToExistingContact() {
var src = '/contacts/index.html';
src += '#add-parameters?tel=' + this.newPhoneNumber;
var timestamp = new Date().getTime();
this.iframeContacts.src = src + '&timestamp=' + timestamp;
window.location.hash = '#contacts-view';
this.addContactActionMenu.classList.remove('visible');
},

call: function re_call() {
if (this.newPhoneNumber) {
this.updateLatestVisit();
CallHandler.call(this.newPhoneNumber);
}
this.addContactActionMenu.classList.remove('visible');
},

cancelActionMenu: function re_cancelActionMenu() {
this.addContactActionMenu.classList.remove('visible');
},

viewOrCreate: function re_viewOrCreate(contactId, phoneNumber) {
var contactsIframe = document.getElementById('iframe-contacts');
var src = '/contacts/index.html';
if (contactId) {
src += '#view-contact-details?id=' + contactId;
src += '&tel=' + phoneNumber;
// enable the function of receiving the messages posted from the iframe
src += '&back_to_previous_tab=1';
var timestamp = new Date().getTime();
contactsIframe.src = src + '&timestamp=' + timestamp;
window.location.hash = '#contacts-view';
} else {
this.newPhoneNumber = phoneNumber;
this.addContactActionMenu.classList.add('visible');
}
},

getSelectedEntries: function re_getSelectedGroups() {
var itemSelector = '.log-item:not(.hide) input:checked';
var items = document.querySelectorAll(itemSelector);
Expand Down
13 changes: 0 additions & 13 deletions apps/communications/dialer/style/commslog.css
Expand Up @@ -240,16 +240,3 @@ ul[role="tablist"][data-type="filter"] > [role="tab"].selected > a {
color: #606060;
margin: 0;
}

/*
Add contact action menu
*/

#add-contact-action-menu {
display: none;
}

#add-contact-action-menu.visible {
display: inline;
}

11 changes: 11 additions & 0 deletions apps/communications/dialer/style/phone_action_menu.css
@@ -0,0 +1,11 @@
/*
Add contact action menu
*/

#add-contact-action-menu {
display: none;
}

#add-contact-action-menu.visible {
display: inline;
}

0 comments on commit a78ebf4

Please sign in to comment.