VulpesOS/assets/webapps/fl.gaiamobile.org/js/pick.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

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);});}