Skip to content

Commit

Permalink
Merge pull request mozilla-b2g#5426 from evelynhung/sound-selection
Browse files Browse the repository at this point in the history
[Settings] add sound select
  • Loading branch information
fabi1cazenave committed Sep 28, 2012
2 parents e380b72 + 58cafc1 commit be2d74d
Show file tree
Hide file tree
Showing 14 changed files with 187 additions and 67 deletions.
4 changes: 2 additions & 2 deletions apps/communications/dialer/js/oncall.js
Original file line number Diff line number Diff line change
Expand Up @@ -164,7 +164,7 @@ var OnCallHandler = (function onCallHandler() {

/* === Settings === */
var activePhoneSound = true;
SettingsListener.observe('phone.ring.incoming', true, function(value) {
SettingsListener.observe('ring.enabled', true, function(value) {
activePhoneSound = !!value;
});

Expand All @@ -190,7 +190,7 @@ var OnCallHandler = (function onCallHandler() {
ringtonePlayer.loop = true;

var activateVibration = true;
SettingsListener.observe('phone.vibration.incoming', false, function(value) {
SettingsListener.observe('vibration.enabled', true, function(value) {
activateVibration = !!value;
});

Expand Down
115 changes: 72 additions & 43 deletions apps/settings/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,7 @@
<script type="application/javascript" defer src="js/storage.js"></script>
<script type="application/javascript" defer src="js/app_storage.js"></script>
<script type="application/javascript" defer src="js/date_time.js"></script>
<script type="application/javascript" defer src="js/sound.js"></script>
<script type="application/javascript" defer src="js/phone_lock.js"></script>
<script type="application/javascript" defer src="js/factory_reset.js"></script>
</head>
Expand Down Expand Up @@ -565,97 +566,133 @@ <h2 data-l10n-id="internetSharing-usb"> USB </h2>
</ul>
</section>

<!-- Personalization :: Sound -->
<section role="region" id="sounds" data-leaf>
<section role="region" id="sound-selection" date-leaf>
<header>
<a href="#root"><span class="icon icon-back">back</span></a>
<h1 data-l10n-id="sound">
Sound
</h1>
<button type="reset">
<span data-l10n-id="back" class="icon icon-back">Back</span>
</button>
<menu type="toolbar">
<button data-l10n-id="done" type="submit">Done</button>
</menu>
<h1 data-l10n-id="select-tone">Select a Tone</h1>
</header>
<header>
<h2 data-l10n-id="ring-tones">Ringtones</h2>
</header>

<!-- Ring Tones -->
<ul>
<li>
<p data-l10n-id="volume">Volume</p>
<label>
<progress data-name="audio.volume.master" value="5" max="10"></progress>
</label>
</li>
<li>
<label onmouseup="audioPreview(this)">
<input type="radio" name="dialer.ringtone" value="classic.ogg" checked />
<input type="radio" name="tone-option" data-ignore value="classic.ogg" data-label="Default" checked />
<span></span>
</label>
<a data-l10n-id="classic">Default</a>
</li>
<li>
<label onmouseup="audioPreview(this)">
<input type="radio" name="dialer.ringtone" value="old_school.ogg"/>
<input type="radio" name="tone-option" data-ignore value="old_school.ogg" data-label="Old School" />
<span></span>
</label>
<a data-l10n-id="oldSchool">Old School</a>
</li>
<li>
<label onmouseup="audioPreview(this)">
<input type="radio" name="dialer.ringtone" value="low_bit.ogg"/>
<input type="radio" name="tone-option" data-ignore value="low_bit.ogg" data-label="Low Bit" />
<span></span>
</label>
<a data-l10n-id="lowBit">Low Bit</a>
</li>
</ul>
<header>
<h2 data-l10n-id="alert-tones">Alert Tones</h2>
</header>
<ul>
<li>
<label onmouseup="audioPreview(this)">
<input type="radio" name="tone-option" data-ignore value="sms.wav" data-label="Sound of Message" />
<span></span>
</label>
<a data-l10n-id="lowBit">Sound of Message</a>
</li>
</ul>

<!-- Phone -->
<!-- Audio Preview -->
<audio style="display: none;" src="style/ringtones/classic.ogg" />
</section>


<!-- Personalization :: Sound -->
<section role="region" id="sounds">
<header>
<h2 data-l10n-id="phone">Phone</h2>
<a href="#root"><span class="icon icon-back">back</span></a>
<h1 data-l10n-id="sound">
Sound
</h1>
</header>
<!-- Ring and Vibrate -->
<ul>
<li>
<label>
<input type="checkbox" name="phone.vibration.incoming" checked />
<label class="switch">
<input type="checkbox" name="ring.enabled" checked />
<span></span>
</label>
<a data-l10n-id="ring">Ring</a>
</li>
<li>
<label class="switch">
<input type="checkbox" name="vibration.enabled" checked />
<span></span>
</label>
<a data-l10n-id="vibrate">Vibrate</a>
</li>
</ul>

<!-- Volume and Tones -->
<header>
<h2 data-l10n-id="volume-and-tones">Volume and Tones</h2>
</header>
<ul>
<li>
<p data-l10n-id="volume">Volume</p>
<label>
<input type="checkbox" name="phone.ring.keypad" checked />
<progress data-name="audio.volume.master" value="5" max="10"></progress>
</label>
</li>
<li>
<label>
<button id="call-tone-selection" class="tone-select">Old School</button>
<span></span>
</label>
<a data-l10n-id="keypad">Keypad</a>
<a data-l10n-id="call">Call</a>
</li>
<li>
<label>
<input type="checkbox" name="phone.ring.incoming" checked />
<button id="sms-tone-selection" class="tone-select">Beep Beep</button>
<span></span>
</label>
<a data-l10n-id="ring">Ring</a>
<a data-l10n-id="message">Message</a>
</li>
</ul>

<!-- Messages -->
<!-- Other Sounds -->
<header>
<h2 data-l10n-id="messages">Messages</h2>
<h2 data-l10n-id="other-sounds">Other Sounds</h2>
</header>
<ul>
<li>
<label>
<input type="checkbox" name="sms.vibration.received" checked />
<input type="checkbox" name="phone.ring.keypad" checked />
<span></span>
</label>
<a data-l10n-id="vibrate">Vibrate</a>
<a data-l10n-id="keypad">Keypad</a>
</li>
<li>
<label>
<input type="checkbox" name="sms.ring.received" checked />
<input type="checkbox" name="lockscreen.unlock-sound.enabled" checked />
<span></span>
</label>
<a data-l10n-id="ring">Ring</a>
<a data-l10n-id="unlock-screen">Unlock Screen</a>
</li>
</ul>

<!-- Audio Preview -->
<audio style="display: none;" src="style/ringtones/classic.ogg" />
</section>

<!-- Personalization :: Display -->
Expand Down Expand Up @@ -1045,7 +1082,6 @@ <h1 data-l10n-id="phoneLock">
<input type="checkbox" name="lockscreen.passcode-lock.enabled" id="passcode-enable" checked />
<span></span>
</label>
<small data-l10n-id="passcode-lock-desc" data-l10n-id='{"code", "0000"}'>Passcode</small>
<a data-l10n-id="passcode-lock">Passcode Lock</a>
</li>
<li class="passcode-enabled" id="passcode-timeout-row">
Expand All @@ -1063,15 +1099,8 @@ <h1 data-l10n-id="phoneLock">
</li>
<li class="passcode-enabled">
<label>
<button data-l10n-id="edit-passcode" id="passcode-edit">Edit passcode</button>
</label>
</li>
<li>
<label>
<input type="checkbox" name="lockscreen.unlock-sound.enabled" checked />
<span></span>
<button data-l10n-id="change-passcode" id="passcode-edit">Change Passcode</button>
</label>
<a data-l10n-id="unlock-sound">Unlock Sound</a>
</li>
</ul>
</section>
Expand Down
78 changes: 78 additions & 0 deletions apps/settings/js/sound.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
/* -*- Mode: js; js-indent-level: 2; indent-tabs-mode: nil -*- */
/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */

'use strict';

var SoundSettings = {
dialog: document.getElementById('sound-selection'),
callSettings: {
button: document.getElementById('call-tone-selection'),
key: 'dialer.ringtone',
value: null
},
smsSettings: {
button: document.getElementById('sms-tone-selection'),
key: 'sms.ringtone',
value: null
},

init: function ss_init() {
var self = this;
this.callSettings.button.onclick = function() {
self.showDialog(self.callSettings);
};
this.smsSettings.button.onclick = function() {
self.showDialog(self.smsSettings);
};

var lock = window.navigator.mozSettings.createLock();
var req = lock.get(this.callSettings.key);
req.onsuccess = function ss_getDialerTone() {
self.callSettings.value = req.result['dialer.ringtone'] || 'classic.ogg';
self.updateButton(self.callSettings);
};
var req2 = lock.get(this.smsSettings.key);
req2.onsuccess = function ss_getSmsTone() {
self.smsSettings.value = req2.result['sms.ringtone'] || 'sms.wav';
self.updateButton(self.smsSettings);
};
},

showDialog: function ss_showDialog(target) {
var radios = this.dialog.querySelectorAll('input[type="radio"]');
for (var i = 0; i < radios.length; i++) {
(function(radio) {
radio.checked = (target.value === radio.value);
})(radios[i]);
}

var self = this;
var submit = this.dialog.querySelector('[type=submit]');
submit.onclick = function onsubmit() {
var settings = window.navigator.mozSettings;
var rule = 'input[type="radio"]:checked';
target.value = self.dialog.querySelector(rule).value;
var keyValue = {};
keyValue[target.key] = target.value;
settings.createLock().set(keyValue);
self.updateButton(target);
document.location.hash = 'sounds';
};

var reset = this.dialog.querySelector('[type=reset]');
reset.onclick = function onreset() {
document.location.hash = 'sounds'; // hide dialog box
};
document.location.hash = this.dialog.id;
},

updateButton: function ss_updateButton(target) {
var rule = 'input[value="' + target.value + '"]';
var label = this.dialog.querySelector(rule).dataset.label;
target.button.textContent = label;
}

};

SoundSettings.init();

2 changes: 1 addition & 1 deletion apps/settings/js/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ function openDialog(dialogID, onSubmit, onReset) {
*/

function audioPreview(element) {
var audio = document.querySelector('#sounds audio');
var audio = document.querySelector('#sound-selection audio');
var source = audio.src;
var playing = !audio.paused;

Expand Down
12 changes: 9 additions & 3 deletions apps/settings/locales/settings.en-US.properties
Original file line number Diff line number Diff line change
Expand Up @@ -161,9 +161,17 @@ personalization=Personalization
# Personalization :: Sound
sound=Sound
volume=Volume
select-tone=Select a Tone
ring-tones=Ringtones
alert-tones=Alert Tones
classic=Classic
oldSchool=Old School
lowBit=Low Bit
volume-and-tones=Volume and Tones
call=Call
other-sounds=Other Sounds
unlock-screen=Unlock Screen


# Personalization :: Display
display=Display
Expand Down Expand Up @@ -239,11 +247,9 @@ mail=Mail

securityAndPrivacy=Security & Privacy
passcode-lock=Passcode Lock
passcode-lock-desc=Passcode: {{code}}
appPermissions=App Permissions
phoneLock=Phone Lock
simSecurity=SIM Security
unlock-sound=Unlock Sound

# Security :: Phone Lock
phone=Phone
Expand All @@ -268,7 +274,7 @@ after-fifteen-minute=After 15 minutes
after-one-hour=After 1 hour
after-four-hours=After 4 hours
require-passcode=Require Passcode
edit-passcode=Edit Passcode
change-passcode=Change Passcode

# Security :: SIM PIN Lock
noSimCard=No SIM Card
Expand Down
10 changes: 10 additions & 0 deletions apps/settings/style/lists.css
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,16 @@ ul li p + input[type=password] {
}


/******************************************************************************
* Sound
*/
.tone-select {
width: 60%;
position: absolute;
right: 0;
}


/******************************************************************************
* Wallpaper snapshot
*/
Expand Down
Binary file added apps/settings/style/ringtones/sms.wav
Binary file not shown.
13 changes: 9 additions & 4 deletions apps/sms/js/background.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,28 @@

/* === Settings === */
var activeSMSSound = true;
SettingsListener.observe('sms.ring.received', true, function(value) {
SettingsListener.observe('ring.enabled', true, function(value) {
activeSMSSound = !!value;
});

var selectedSmsSound = 'style/ringtones/sms.wav';
SettingsListener.observe('sms.ringtone', 'sms.wav', function(value) {
selectedSmsSound = 'style/ringtones/' + value;
});

var activateSMSVibration = false;
SettingsListener.observe('sms.vibration.received', true, function(value) {
SettingsListener.observe('vibration.enabled', true, function(value) {
activateSMSVibration = !!value;
});

function ring() {
var ringtonePlayer = new Audio();
ringtonePlayer.src = 'style/ringtones/sms.wav';
ringtonePlayer.src = selectedSmsSound;
ringtonePlayer.play();
window.setTimeout(function smsRingtoneEnder() {
ringtonePlayer.pause();
ringtonePlayer.src = '';
}, 500);
}, 2000);
}

function vibrate() {
Expand Down
Binary file added apps/sms/style/ringtones/classic.ogg
Binary file not shown.
Binary file added apps/sms/style/ringtones/low_bit.ogg
Binary file not shown.
Binary file added apps/sms/style/ringtones/old_school.ogg
Binary file not shown.
Loading

0 comments on commit be2d74d

Please sign in to comment.