Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
12 lines
No EOL
3.5 KiB
JavaScript
12 lines
No EOL
3.5 KiB
JavaScript
;'use strict';window.addEventListener('load',function(){navigator.mozL10n.once(function(){navigator.mozSetMessageHandler('activity',function(activity){var type=activity.source.data.type;if(type==='ringtone'||(Array.isArray(type)&&type.indexOf('ringtone')!==-1)){pickRingtone(activity);}
|
|
else if(type==='wallpaper'||(Array.isArray(type)&&type.indexOf('wallpaper')!==-1)){pickWallpaper(activity);}
|
|
else{console.error('unexpected activity request',activity.source.name,JSON.stringify(activity.source.data));}});});});function pickRingtone(activity){var selectedRingtone;var selectedRingtoneID;var player=new Audio();var currentRingtoneName;var numRingtones=0;var container=$('ringtones');var header=$('header');container.hidden=false;$('done').hidden=false;$('title').textContent=_('pick-ringtone');header.addEventListener('action',function(){player.pause();activity.postError('cancelled');});$('done').onclick=function(){player.pause();ForwardLock.getKey(function(secret){ForwardLock.lockBlob(secret,selectedRingtone.blob,{},function(lockedBlob){activity.postResult({blob:lockedBlob,name:selectedRingtone.descriptor.name,id:selectedRingtoneID});});});};getCurrentRingtoneName(function(name){currentRingtoneName=name;enumerateAndBuildUI();});function getCurrentRingtoneName(callback){navigator.mozSettings.createLock().get(RINGTONE_NAME_KEY).onsuccess=function(e){callback(e.target.result[RINGTONE_NAME_KEY]);};}
|
|
function enumerateAndBuildUI(){objectStore.readonly('ringtones',function(ringtoneStore){var cursor=ringtoneStore.openCursor();cursor.onsuccess=function(){if(cursor.result){addRingtone(cursor.result.value,'forwardlock:'+cursor.result.key);cursor.result.continue();}
|
|
else{if(numRingtones===0){displayError(activity,'no-installed-ringtones');}}};});}
|
|
function addRingtone(ringtone,id){numRingtones++;var name=ringtone.descriptor.name;var listItem=document.createElement('li');var radio=document.createElement('gaia-radio');radio.name='ringtone';var label=document.createElement('label');label.textContent=name;radio.appendChild(label);if(name===currentRingtoneName){selectedRingtone=ringtone;selectedRingtoneID=id;radio.checked=true;}
|
|
radio.addEventListener('change',function(){if(radio.checked){selectedRingtone=ringtone;selectedRingtoneID=id;play(ringtone);}});listItem.appendChild(radio);container.appendChild(listItem);}
|
|
function play(ringtone){if(!ringtone.url){ringtone.url=URL.createObjectURL(ringtone.blob);}
|
|
player.src=ringtone.url;player.play();}}
|
|
function pickWallpaper(activity){var numWallpapers=0;var template=$('wallpaper-template');var container=$('wallpapers');container.hidden=false;$('title').textContent=_('pick-wallpaper');$('header').addEventListener('action',function(){activity.postError('cancelled');});objectStore.readonly('wallpapers',function(wallpaperStore){var cursor=wallpaperStore.openCursor();cursor.onsuccess=function(){if(cursor.result){addWallpaper(cursor.result.value);numWallpapers++;cursor.result.continue();}
|
|
else{if(numWallpapers===0){displayError(activity,'no-installed-wallpaper');}}};});function addWallpaper(wallpaper){var blob=wallpaper.blob;var url=URL.createObjectURL(blob);var wallpaperEl=template.content.cloneNode(true).firstElementChild;container.appendChild(wallpaperEl);wallpaperEl.style.backgroundImage='url('+url+')';wallpaperEl.onclick=function(){ForwardLock.getKey(function(secret){ForwardLock.lockBlob(secret,blob,{},function(lockedBlob){activity.postResult({blob:lockedBlob});});});};}}
|
|
function displayError(activity,id){setTimeout(function(){alert(_(id));activity.postError(id);});} |