added experimental code features, still thinking about them...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2012-08-14 23:40:26 +04:00
parent c0725e6218
commit af56ac8e98
4 changed files with 95 additions and 17 deletions

View File

@ -53,7 +53,7 @@ function setup(){
setDefaultInitialState()
// XXX
toggleSingleImageMode('off')
ImageGrid.toggleSingleImageMode('off')
enableTransitions()
// setup event handlers...

View File

@ -1,13 +1,60 @@
/******************************************* Actions (EXPERIMENTAL) **/
// XXX this set of features is experimental...
//
// the main questions are:
// - is this overcomplicating things?
// - are the benefits worth it?
// - namespace cleanup
// - auto-generated help
var ImageGrid = {
option: {}
}
// create an action...
// the two values that are obligatory are:
// name - name of the action
// call - callable
// XXX revise...
function ACTION(obj){
var call = obj.call
// add all the attrs to the function...
for(i in obj){
call[i] = obj[i]
}
ImageGrid[obj.title] = call
return call
}
function OPTION(obj){
obj.valueOf = function(){return this.value}
ImageGrid.option[obj.name] = obj
}
/******************************************* Setup Data and Globals **/
var DEBUG = true
// the list of style modes...
// these are swithched through in order by toggleBackgroundModes()
/*
var BACKGROUND_MODES = [
'dark',
'black'
]
*/
// XXX is this worth it??
OPTION({
name: 'BACKGROUND_MODES',
doc: 'list of available background styles.',
value: [
'dark',
'black'
]
})
// remember the default backgrounds for modes...
@ -35,7 +82,7 @@ var MOVE_DELTA = 50
/********************************************************** Helpers **/
/************************************************ jQuery extensions **/
jQuery.fn.reverseChildren = function(){
@ -45,6 +92,7 @@ jQuery.fn.reverseChildren = function(){
}
jQuery.fn.sortChildren = function(func){
return $(this).each(function(_, e){
return $(e).append($(e).children().detach().get().sort(func))
@ -53,6 +101,9 @@ jQuery.fn.sortChildren = function(func){
/********************************************************** Helpers **/
function getImageOrder(img){
// XXX HACK need to parseInt this because '13' is less than '2'...
// ...figure a way out of this!!!
@ -71,7 +122,6 @@ function cmpImageOrder(a, b){
// this will create a function that will add/remove a css_class to elem
// calling the optional callbacks before and/or after.
//
@ -297,8 +347,8 @@ function setupControlElements(){
$('.screen-button.promote').click(shiftImageDown)
$('.screen-button.zoom-in').click(function(){scaleContainerBy(ZOOM_FACTOR)})
$('.screen-button.zoom-out').click(function(){scaleContainerBy(1/ZOOM_FACTOR)})
$('.screen-button.toggle-wide').click(toggleWideView)
$('.screen-button.toggle-single').click(toggleSingleImageMode)
$('.screen-button.toggle-wide').click(ImageGrid.toggleWideView)
$('.screen-button.toggle-single').click(ImageGrid.toggleSingleImageMode)
$('.screen-button.fit-three').click(fitThreeImages)
$('.screen-button.show-controls').click(showControls)
$('.screen-button.settings').click(function(){alert('not implemented yet...')})
@ -645,14 +695,20 @@ function makeKeyboardHandler(keybindings, unhandled){
/************************************************************ Modes **/
var toggleSingleImageMode = createCSSClassToggler('.viewer', 'single-image-mode',
// XXX is this worth it??
ACTION({
title: 'toggleSingleImageMode',
doc: 'Toggle single image mode.',
group: 'Modes',
type: 'toggle',
call: createCSSClassToggler('.viewer', 'single-image-mode',
// pre...
function(action){
if(action == 'on'){
NORMAL_MODE_BG = getBackgroundMode()
ORIGINAL_FIELD_SCALE = getElementScale($('.field'))
// do this only when coming out of single image mode...
} else if(toggleSingleImageMode('?') == 'on'){
} else if(ImageGrid.toggleSingleImageMode('?') == 'on'){
SINGLE_IMAGE_MODE_BG = getBackgroundMode()
}
},
@ -667,10 +723,16 @@ var toggleSingleImageMode = createCSSClassToggler('.viewer', 'single-image-mode'
}
clickAfterTransitionsDone()
})
})
// wide view mode toggle...
var toggleWideView = createCSSClassToggler('.viewer', 'wide-view-mode',
// XXX is this worth it??
ACTION({
title: 'toggleWideView',
doc: 'Toggle wide view mode.',
group: 'Modes',
type: 'toggle',
call: createCSSClassToggler('.viewer', 'wide-view-mode',
// pre...
function(action){
if(action == 'on'){
@ -682,11 +744,17 @@ var toggleWideView = createCSSClassToggler('.viewer', 'wide-view-mode',
},
// post...
function(){})
})
var toggleSingleRibbonMode = createCSSClassToggler('.viewer', 'single-ribbon-mode')
// XXX is this worth it??
ACTION({
title: 'toggleSingleRibbonMode',
doc: 'Show/hide other ribbons.',
group: 'Modes',
type: 'toggle',
call: createCSSClassToggler('.viewer', 'single-ribbon-mode')
})
// XXX this can be done in two ways:
@ -696,12 +764,20 @@ var toggleSingleRibbonMode = createCSSClassToggler('.viewer', 'single-ribbon-mod
// - will complicate reversing ribbons allot
// - add/remove these images on demand
// + a tad complicated...
var toggleDisplayShiftedUpImages = createCSSClassToggler('.viewer', 'show-shifted-up-images')
// XXX is this worth it??
ACTION({
title: 'toggleDisplayShiftedUpImages',
doc: 'Toggle display of shifted images.',
group: 'Modes',
type: 'toggle',
call: createCSSClassToggler('.viewer', 'show-shifted-up-images')
})
function getBackgroundMode(){
var mode = null
var BACKGROUND_MODES = ImageGrid.option.BACKGROUND_MODES.valueOf()
// find a mode to set...
for(var i = 0; i < BACKGROUND_MODES.length; i++){
// we found our mode...
@ -717,6 +793,7 @@ function getBackgroundMode(){
// set the background mode
// NOTE: passing null will set the default.
function setBackgroundMode(mode){
var BACKGROUND_MODES = ImageGrid.option.BACKGROUND_MODES.valueOf()
var cur = BACKGROUND_MODES.indexOf(mode)
// invalid mode...
@ -741,6 +818,7 @@ function setBackgroundMode(mode){
// this will toggle through background theems: none -> dark -> black
function toggleBackgroundModes(){
var BACKGROUND_MODES = ImageGrid.option.BACKGROUND_MODES.valueOf()
var mode = getBackgroundMode()
// default -> first
if(mode == null){

View File

@ -50,7 +50,7 @@ function setup(){
// XXX
// this will set the defaults...
toggleSingleImageMode('off')
ImageGrid.toggleSingleImageMode('off')
enableTransitions()
// setup event handlers...
@ -171,7 +171,7 @@ $(document).ready(setup);
<br><br>
<button onclick="toggleWideView()">toggle wide view</button>
<button onclick="ImageGrid.toggleWideView()">toggle wide view</button>
<br><br>

View File

@ -3,8 +3,8 @@
var keybindings = {
// togglable modes and options...
//191: toggleHelp, // ?
70: toggleSingleImageMode, // f
83: toggleSingleRibbonMode, // s
70: ImageGrid.toggleSingleImageMode, // f
83: ImageGrid.toggleSingleRibbonMode, // s
13: 70, // Enter
84: toggleSingleImageModeTransitions, // t
65: toggleTransitions, // a