refactored marks a bit + fixed a minor bug...

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2014-01-20 06:18:36 +04:00
parent ee57d68922
commit 8f43056c0c
4 changed files with 75 additions and 70 deletions

View File

@ -96,6 +96,17 @@ var toggleBookmark = makeMarkToggler(
}) })
function removeAllBookmarks(mode){
mode = mode == null ? 'ribbon' : mode
var res = setAllMarks('off', mode, BOOKMARKS, toggleBookmark)
$('.viewer')
.trigger('togglingBookmarks', [res, 'off'])
.trigger('removingBookmarks', [res, mode])
bookmarksUpdated()
return res
}
// focus next/prev bookmark... // focus next/prev bookmark...
// //
var nextBookmark = makeNextFromListAction( var nextBookmark = makeNextFromListAction(

View File

@ -195,7 +195,7 @@ function setupInfo(viewer){
}) })
.on([ .on([
'focusingImage', 'focusingImage',
'togglingMark', 'togglingMarks',
'togglingBookmark', 'togglingBookmark',
'removeingAllMarks', 'removeingAllMarks',
'removeingRibbonMarks', 'removeingRibbonMarks',

View File

@ -760,22 +760,25 @@ var KEYBOARD_CONFIG = {
markAll('all') markAll('all')
}), }),
}, },
'unmark-ribbon': doc('Unmark current ribbon', 'unmark-ribbon': doc('Unmark current ribbon',
function(){ function(){
event.preventDefault() event.preventDefault()
removeImageMarks('ribbon') unmarkAll('ribbon')
}), }),
'unmark-all': doc('Unmark all images',
function(){ unmarkAll('all') }),
D: { D: {
ctrl: 'unmark-ribbon', ctrl: 'unmark-ribbon',
'ctrl+shift': doc('Unmark all images', 'ctrl+shift': 'unmark-all',
function(){ removeImageMarks('all') }),
}, },
U: { U: {
default: doc('Unmark current image', default: doc('Unmark current image',
function(){ toggleMark('off') }), function(){ toggleMark('off') }),
ctrl: 'unmark-ribbon', ctrl: 'unmark-ribbon',
shift: doc('Unamrk all', shift: 'unmark-all',
function(){ removeImageMarks('all') }),
}, },

View File

@ -302,6 +302,47 @@ function shiftGIDInSparseList(gid, list){
} }
// NOTE: this is sparse-only...
function setAllMarks(action, mode, list, toggler){
action = action == null ? toggler('?') : action
mode = mode == null ? 'ribbon' : mode
var updated = []
if(action == 'on'){
var _update = function(e){
if(list.indexOf(e) < 0){
list[DATA.order.indexOf(e)] = e
updated.push(e)
}
}
} else {
var _update = function(e){
var i = list.indexOf(e)
if(i >= 0){
delete list[i]
updated.push(e)
}
}
}
// marks from current ribbon (default)...
if(mode == 'ribbon'){
var res = getRibbonGIDs()
// all marks...
} else if(mode == 'all'){
var res = getLoadedGIDs()
}
res.forEach(_update)
updateImages(updated)
return res
}
/********************************************************************** /**********************************************************************
* *
@ -380,7 +421,7 @@ var toggleMarksView = createCSSClassToggler(
var toggleMark = makeMarkToggler( var toggleMark = makeMarkToggler(
'marked', 'marked',
'selected', 'selected',
'togglingMark', 'togglingMarks',
function(gid, action){ function(gid, action){
// add marked image to list... // add marked image to list...
if(action == 'on'){ if(action == 'on'){
@ -397,67 +438,22 @@ var toggleMark = makeMarkToggler(
}) })
function markAllImagesTo(action, mode){
function setAllMarks(action, mode){
action = action == null ? toggleMark('?') : action
mode = mode == null ? 'ribbon' : mode mode = mode == null ? 'ribbon' : mode
var res = setAllMarks(action, mode, MARKED, toggleMark)
var updated = [] $('.viewer')
.trigger('togglingMarks', [res, action])
if(action == 'on'){ .trigger('removingMarks', [res, mode])
var _update = function(e){
if(MARKED.indexOf(e) < 0){
MARKED[DATA.order.indexOf(e)] = e
updated.push(e)
}
}
} else {
var _update = function(e){
var i = MARKED.indexOf(e)
if(i >= 0){
delete MARKED[i]
updated.push(e)
}
}
}
// marks from current ribbon (default)...
if(mode == 'ribbon'){
var res = getRibbonGIDs()
// all marks...
} else if(mode == 'all'){
var res = getLoadedGIDs()
}
res.forEach(_update)
updateImages(updated)
$('.viewer').trigger('togglingMarks', [updated, action])
marksUpdated() marksUpdated()
return res return res
} }
// mode can be: // mode can be:
// - 'ribbon' // - 'ribbon'
// - 'all' // - 'all'
function removeImageMarks(mode){ function unmarkAll(mode){ markAllImagesTo('off', mode) }
mode = mode == null ? 'ribbon' : mode function markAll(mode){ markAllImagesTo('on', mode) }
var res = setAllMarks('off', mode)
$('.viewer').trigger('removingMarks', [res, mode])
return res
}
function markAll(mode){
mode = mode == null ? 'ribbon' : mode
var res = setAllMarks('on', mode)
$('.viewer').trigger('addingMarks', [res, mode])
return res
}
// NOTE: this only does it's work in the current ribbon... // NOTE: this only does it's work in the current ribbon...
@ -689,19 +685,19 @@ function markImagesDialog(){
var msg = 'inverted ribbon marks' var msg = 'inverted ribbon marks'
} else if(/Mark all.*current ribbon/.test(res)){ } else if(/Mark all.*current ribbon/.test(res)){
markAll() markAll('ribbon')
var msg = 'marked ribbon' var msg = 'marked ribbon'
} else if(/Mark all/.test(res)){ } else if(/Mark all/.test(res)){
markAll() markAll('all')
var msg = 'marked ribbon' var msg = 'marked all'
} else if(/Unmark all in/.test(res)){ } else if(/Unmark all in/.test(res)){
removeImageMarks('ribbon') unmarkAll('ribbon')
var msg = 'unmarked ribbon' var msg = 'unmarked ribbon'
} else if(/Unmark all images/.test(res)){ } else if(/Unmark all images/.test(res)){
removeImageMarks('all') unmarkAll('all')
var msg = 'unmarked all' var msg = 'unmarked all'
} }
@ -775,11 +771,6 @@ function setupMarks(viewer){
return viewer return viewer
// XXX do we actually need this??? // XXX do we actually need this???
.on('togglingMarks', function(evt, lst, action){
lst.forEach(function(gid){
viewer.trigger('togglingMark', [gid, action])
})
})
.on('sortedImages', function(){ .on('sortedImages', function(){
MARKED = populateSparceGIDList(MARKED) MARKED = populateSparceGIDList(MARKED)
marksUpdated() marksUpdated()