added double click action on images, some refactoring...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2012-08-22 02:00:23 +04:00
parent 0648729562
commit fca8ecb604
2 changed files with 57 additions and 24 deletions

View File

@ -860,7 +860,8 @@ function setupEvents(){
function setupControlElements(){ function setupControlElements(){
// images... // images...
$(".image").mousedown(handleImageClick) // NOTE: when the images are loaded, the actual handlers will be set by the loader...
setupImageEventHandlers($(".image"))
// buttons... // buttons...
$('.screen-button.next-image').mousedown(ImageGrid.nextImage) $('.screen-button.next-image').mousedown(ImageGrid.nextImage)
@ -883,6 +884,30 @@ function setupControlElements(){
/**************************************************** Serialization **/ /**************************************************** Serialization **/
// setup image event handlers...
function setupImageEventHandlers(image){
return (image
.click(handleImageClick)
.dblclick(function(e){
$(this).click()
ImageGrid.toggleSingleImageMode()
}))
}
// build an image element...
function makeImage(url, order, set_order){
if(set_order == null){
set_order = setImageOrder
}
return (setupImageEventHandlers(
set_order($('<div class="image"></div>')
.css({ 'background-image': 'url('+url+')' }), order)))
}
function loadImages(json){ function loadImages(json){
var images = json.images var images = json.images
var ribbon = $('.ribbon').last() var ribbon = $('.ribbon').last()
@ -890,10 +915,8 @@ function loadImages(json){
$('.image').remove() $('.image').remove()
for(var i = 0; i < images.length; i++){ for(var i = 0; i < images.length; i++){
setImageOrder($('<div class="image"></div>') makeImage(images[i], i)
.css({ 'background-image': 'url('+images[i]+')' }), i) .appendTo(ribbon)
.click(handleImageClick)
.appendTo(ribbon)
} }
ribbon.children().first().click() ribbon.children().first().click()
} }
@ -960,10 +983,8 @@ function loadJSON(data, set_order){
for(var j in images){ for(var j in images){
var image = $(images[j]) var image = $(images[j])
// create image... // create image...
set_order($('<div class="image"></div>') makeImage(image.attr('url'), j, set_order)
.css({ 'background-image': 'url('+image.attr('url')+')' }), j) .appendTo(ribbon)
.click(handleImageClick)
.appendTo(ribbon)
} }
} }
$('.image').first().click() $('.image').first().click()
@ -1114,19 +1135,26 @@ ImageGrid.GROUP('Mode: All',
doc: 'Toggle through background theems: none -> dark -> black\n\n'+ doc: 'Toggle through background theems: none -> dark -> black\n\n'+
'NOTE: modes are toggled independently for single image and '+ 'NOTE: modes are toggled independently for single image and '+
'rinbon modes', 'rinbon modes',
type: 'toggle',
}, },
function toggleBackgroundModes(){ function toggleBackgroundModes(action){
var BACKGROUND_MODES = ImageGrid.option.BACKGROUND_MODES if(action == '?'){
var mode = ImageGrid.getBackgroundMode() return ImageGrid.getBackgroundMode()
// default -> first } else if(action != null){
if(mode == null){ return ImageGrid.setBackgroundMode(action)
ImageGrid.setBackgroundMode(BACKGROUND_MODES[0])
// last -> default...
} else if(mode == BACKGROUND_MODES[BACKGROUND_MODES.length-1]){
ImageGrid.setBackgroundMode()
// next...
} else { } else {
ImageGrid.setBackgroundMode(BACKGROUND_MODES[BACKGROUND_MODES.indexOf(mode)+1]) var BACKGROUND_MODES = ImageGrid.option.BACKGROUND_MODES
var mode = ImageGrid.getBackgroundMode()
// default -> first
if(mode == null){
ImageGrid.setBackgroundMode(BACKGROUND_MODES[0])
// last -> default...
} else if(mode == BACKGROUND_MODES[BACKGROUND_MODES.length-1]){
ImageGrid.setBackgroundMode()
// next...
} else {
ImageGrid.setBackgroundMode(BACKGROUND_MODES[BACKGROUND_MODES.indexOf(mode)+1])
}
} }
}), }),
@ -1143,13 +1171,15 @@ ImageGrid.GROUP('Mode: All',
doc: 'Toggle global transitions.', doc: 'Toggle global transitions.',
type: 'toggle', type: 'toggle',
}, },
createCSSClassToggler('.viewer', 'transitions-enabled')), createCSSClassToggler('.viewer', 'transitions-enabled')))
ImageGrid.GROUP('Configuration and Help',
ImageGrid.ACTION({ ImageGrid.ACTION({
title: 'Close overlay' title: 'Close overlay'
}, },
function closeOverlay(){ $('.overlay').click() }), function closeOverlay(){ $('.overlay').click() }),
// XXX use order and priority of options... // XXX use order and priority of options...
// XXX make history work for this... // XXX make history work for this...
// XXX should this be a toggle?? // XXX should this be a toggle??
@ -1159,7 +1189,10 @@ ImageGrid.GROUP('Mode: All',
}, },
function showSetup(){ function showSetup(){
showOptionsUI(ImageGrid.option_props, showOptionsUI(ImageGrid.option_props,
function(e){return ImageGrid.option[e.name]}, function(e){
// XXX need to update a value here...
return ImageGrid.option[e.name]
},
function(e){return e.click_handler}) function(e){return e.click_handler})
}), }),
ImageGrid.ACTION({ ImageGrid.ACTION({

View File

@ -7,8 +7,8 @@ var keybindings = {
'ctrl': ImageGrid.showSetup, // ctrl+? 'ctrl': ImageGrid.showSetup, // ctrl+?
}, },
70: ImageGrid.toggleSingleImageMode, // f 70: ImageGrid.toggleSingleImageMode, // f
83: ImageGrid.toggleSingleRibbonMode, // s
13: 70, // Enter 13: 70, // Enter
83: ImageGrid.toggleSingleRibbonMode, // s
84: ImageGrid.toggleSingleImageModeTransitions, // t 84: ImageGrid.toggleSingleImageModeTransitions, // t
65: ImageGrid.toggleTransitions, // a 65: ImageGrid.toggleTransitions, // a
9: ImageGrid.toggleControls, // tab 9: ImageGrid.toggleControls, // tab