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.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
15
assets/webapps/wallpaper.gaiamobile.org/js/share.js
Normal file
15
assets/webapps/wallpaper.gaiamobile.org/js/share.js
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
;'use strict';window.onload=function(){navigator.mozSetMessageHandler('activity',function handler(activityRequest){var activityName=activityRequest.source.name;if(activityName!=='share'&&activityName!=='setwallpaper'){return;}
|
||||
startShare(activityRequest);});var preview=document.getElementById('preview');var cancelButton=document.getElementById('cancel');var setButton=document.getElementById('set-wallpaper');var activity;var blob;var url;var gestureDetector=new GestureDetector(preview);var posX=0;var posY=0;var limitX;var limitY;var scale;var previewImage=document.getElementById('previewImage');var screenWidth,screenHeight;var windowWidth,windowHeight;if(screen.mozOrientation&&screen.mozOrientation.startsWith('landscape')){screenWidth=Math.max(screen.width,screen.height);windowWidth=Math.max(window.innerWidth,window.innerHeight);screenHeight=Math.min(screen.width,screen.height);windowHeight=Math.min(window.innerWidth,window.innerHeight);}else{screenWidth=Math.min(screen.width,screen.height);windowWidth=Math.min(window.innerWidth,window.innerHeight);screenHeight=Math.max(screen.width,screen.height);windowHeight=Math.max(window.innerWidth,window.innerHeight);}
|
||||
screenWidth=Math.ceil(screenWidth*window.devicePixelRatio);screenHeight=Math.ceil(screenHeight*window.devicePixelRatio);function startShare(request){cancelButton.addEventListener('click',cancelShare);gestureDetector.startDetecting();activity=request;blob=activity.source.data.blobs[0];url=URL.createObjectURL(blob);ImageUtils.getSizeAndType(blob).then(gotImageData,imageDataError);function imageDataError(err){console.error('Could not set wallpaper:',err);activity.postError('Could not set wallpaper: '+err);endShare();}
|
||||
function gotImageData(imgdata){if(imgdata.type===ImageUtils.JPEG){var scale=Math.max(screenWidth/imgdata.width,screenHeight/imgdata.height);var fragment=ImageUtils.Downsample.sizeNoMoreThan(scale);loadImage(url,fragment);}
|
||||
else{loadImage(url);}}
|
||||
function loadImage(url,fragment){previewImage.src=url+(fragment?fragment:'');previewImage.onload=function(){previewImage.hidden=false;var scalex=windowWidth/previewImage.width;var scaley=windowHeight/previewImage.height;scale=Math.max(scalex,scaley);previewImage.width=Math.round(previewImage.width*scale);limitX=windowWidth-previewImage.width;limitY=windowHeight-previewImage.height;posX=Math.round(limitX/2);posY=Math.round(limitY/2);previewImage.style.transform='translate('+posX+'px, '+posY+'px)';setButton.addEventListener('click',scaleImage);previewImage.addEventListener('pan',moveBackground);};}}
|
||||
function moveBackground(evt){var positions=evt.detail.relative;posX+=positions.dx;if(posX>0){posX=0;}else if(posX<limitX){posX=limitX;}
|
||||
posY+=positions.dy;if(posY>0){posY=0;}else if(posY<limitY){posY=limitY;}
|
||||
previewImage.style.transform='translate('+posX+'px, '+posY+'px)';}
|
||||
function scaleImage(){setButton.disabled=true;var canvas=document.createElement('canvas');canvas.width=screenWidth;canvas.height=screenHeight;var ctx=canvas.getContext('2d');var w=Math.round(windowWidth/scale);var h=Math.round(windowHeight/scale);var x=Math.round(-1*posX/scale);var y=Math.round(-1*posY/scale);if(x<0){x=0;console.error('The value of x shouldn\'t be negative.');}
|
||||
if(y<0){y=0;console.error('The value of y shouldn\'t be negative.');}
|
||||
ctx.drawImage(previewImage,x,y,w,h,0,0,canvas.width,canvas.height);canvas.toBlob(function(newBlob){blob=newBlob;setWallpaper();},'image/jpeg');}
|
||||
function setWallpaper(){var request=navigator.mozSettings.createLock().set({'wallpaper.image':blob});request.onsuccess=function(){activity.postResult('shared');endShare();};request.onerror=function(){console.warn('error setting wallpaper.image:',request.error);activity.postError('could not set wallpaper: '+request.error);endShare();};}
|
||||
function cancelShare(){activity.postError('cancelled');endShare();}
|
||||
function endShare(){activity=null;window.URL.revokeObjectURL(url);window.URL.revokeObjectURL(previewImage.src);setButton.removeEventListener('click',scaleImage);cancelButton.removeEventListener('click',cancelShare);}};
|
||||
Loading…
Reference in a new issue