151 lines
4.5 KiB
JavaScript
Raw Permalink Normal View History

2024-08-31 01:03:37 +08:00
define(function(require, exports) {
var imageRemoveCallback = false;
var getImageArr = function(filePath,name){
var imageList = kodApp.imageList;
imageRemoveCallback = imageList.removeCallback || false;
kodApp.imageList = false;
if(!imageList) {
imageList = {items:[{
src:core.pathImage(filePath,1200),
msrc:core.pathImage(filePath,250),
trueImage:core.pathImage(filePath,false),
title:htmlEncode(name || ''),
}],index:0};
}
var items = [];
_.each(imageList.items,function(item){
var parse = $.parseUrl(item.src);
var title = item.title || _.get(parse,'params.name') || pathTools.pathThis(item.src);
items.push([
[
item.msrc || item.src,
item.src,
item.trueImage || item.src
],
htmlEncode(title),[0,0],'',item
]);
});
return {items:items,index:imageList.index};
};
//播放幻灯片时,删除图片.
var removeImageRequest = function(imageItem,callback){
if(!imageItem || !imageItem[4] || !imageRemoveCallback) return;
imageRemoveCallback(imageItem[4],function(){
callback && callback();
});
};
var removeAllowCheck = function(){
var $btn = $('#PV_Btn_Remove');
imageRemoveCallback ? $btn.removeClass('hidden') : $btn.addClass('hidden');
}
var openImageAfter = function(){
$("#PV_Btn_Open").remove();
setTimeout(function(){
removeAllowCheck();
$('#PicasaView').attr('tabindex','10').focus();
},100);
};
var removeImage = function(){
var index = parseInt($('#PV_Control #PV_Items .current').attr('number'));
var imageItem = myPicasa.arrItems[index];
removeImageRequest(imageItem,function(){
if(myPicasa.arrItems.length <=1){
return myPicasa.close();
}
myPicasa.arrItems.splice(index,1);
if(index >= myPicasa.arrItems.length -1){
index = myPicasa.arrItems.length -1
}
myPicasa.play(myPicasa.arrItems,index);
openImageAfter();
});
}
var optionsList = function(storeKey,lengthMax){
LocalData.values = LocalData.values || {};
var values = LocalData.values[storeKey] || LocalData.getConfig(storeKey) || {};
LocalData.values[storeKey] = values;
var get = function(key,defaultValue){
return values[key] || defaultValue;
}
var set = function(key,value){
values[key] = value;
if(value == null){delete values[key];}
save();
}
var save = function(){
if(!lengthMax) return;
var keys = Object.keys(values);
if(keys.length > lengthMax){
var newValues = {};
keys = keys.slice(keys.length - lengthMax);
for(var i = 0; i < keys.length; i++) {
newValues[keys[i]] = values[keys[i]];
}
values = newValues;
}
LocalData.setConfig(storeKey,values);
};
var clear = function(){values = {};save();}
return {set:set,get:get,clear:clear};
}
var imageRotateList = new optionsList('imageRotate',500);
var imageRotate = function(rotate){
var index = parseInt($('#PV_Control #PV_Items .current').attr('number'));
var image = myPicasa.arrItems[index][0];
// console.log(101,rotate,myPicasa.arrItems[index]);
var radius = parseInt(imageRotateItem(image[1],'get')) + 90;
imageRotateItem(image[1],radius,true);
}
var imageRotateItem = function(src,radius,isSave){
if(!src) return;
var $image = $('#PV_Picture');
var style = $image.attr('style') || '';
var match = style.match(/transform:\s*rotate\((\d+)deg\)/);
if(radius == 'get'){return match ? match[1]:0;}
var transform = radius ? 'rotate('+radius+'deg)' : '';
if(isSave){
$image.css('transition','all 0.3s');
setTimeout(function(){$image.css('transition','');},310);
if(radius % 360 == 0){radius = null;}
imageRotateList.set(src,radius);
}
$image.css('transform',transform);
};
var timeoutHolder = false;
var loadImageBefore = function(){
var index = parseInt($('#PV_Control #PV_Items .current').attr('number'));
var src = myPicasa.arrItems[index][0][1];
var radius = imageRotateList.get(src,0);
var image = myPicasa.arrItems[index][0];
imageRotateItem(src,radius);
clearTimeout(timeoutHolder);
$('#PV_Picture_Temp').attr('src','');
timeoutHolder = setTimeout(function(){
$('#PV_Picture_Temp').attr('src',image[0]);
},500);//延迟处理;
};
return function(path,ext,name,appStatic){
requireAsync([
appStatic+'picasa/style/style.css',
appStatic+'picasa/picasa.js'
],function(){
if(!window.myPicasa){
myPicasa = new Picasa();
myPicasa.removeImage = removeImage;
myPicasa.imageRotate = imageRotate;
myPicasa.loadImageBefore = loadImageBefore;
}
var images = getImageArr(path,name);
myPicasa.play(images.items,images.index);
openImageAfter();
});
};
});