oops! ..forgot to add the bookmarks.js file :))))

Signed-off-by: Alex A. Naanou <alex.nanou@gmail.com>
This commit is contained in:
Alex A. Naanou 2013-12-14 04:31:05 +04:00
parent da26156f74
commit 9db9983371

192
ui/bookmarks.js Executable file
View File

@ -0,0 +1,192 @@
/**********************************************************************
*
*
*
**********************************************************************/
// list of bookmarked gids...
var BOOKMARKS= []
// bookmark data
//
// NOTE: elements are added here only when some data is set, use
// BOOKMARKS, as the main structure.
var BOOKMARKS_DATA = {
}
var BOOKMARKS_FILE_DEFAULT = 'bookmarked.json'
var BOOKMARKS_FILE_PATTERN = /^[0-9]*-bookmarked.json$/
/**********************************************************************
* Helpers
*/
// XXX argument processing...
function getBookmarkedGIDBefore(gid){
if(BOOKMARKS.length == 0){
return null
}
gid = gid == null ? getImageGID() : gid
var prev
// need to account for cropping here...
do {
prev = getGIDBefore(gid, BOOKMARKS)
gid = getGIDBefore(prev)
} while(prev != gid && prev != null)
// no bookmarks before current image...
if(prev == null){
return prev
}
return prev
}
/*********************************************************************/
function cropBookmarkedImages(cmp, keep_ribbons, no_cleanout_marks){
cropDataTo(BOOKMARKS.slice(), keep_ribbons, no_cleanout_marks)
return DATA
}
// update image bookmark state...
var updateBookmarkedImageMark = makeMarkUpdater(
'bookmarked',
'bookmark',
function(gid){
return BOOKMARKS.indexOf(gid) > -1
})
IMAGE_UPDATERS.push(updateBookmarkedImageMark)
/*********************************************************************/
// XXX not sure that these should be modes...
var toggleBookmarkedOnlyView = makeCropModeToggler(
'bookmarked-only-view',
cropBookmarkedImages)
var toggleBookmarkedOnlyWithRibbonsView = makeCropModeToggler(
'bookmarked-only-view',
function(){
cropBookmarkedImages(null, true)
})
/**********************************************************************
* Actions
*/
// NOTE: this can be called without arguments (affects current image) or
// passed either an image object or a gid...
var toggleBookmark = makeMarkToggler(
'bookmarked',
'bookmark',
'togglingBookmark')
// focus previous bookmark...
//
function nextBookmark(){
if(BOOKMARKS.length == 0){
flashIndicator('end')
return getImage()
}
var cur = getImageGID()
var next = getBookmarkedGIDBefore(cur)
var i = BOOKMARKS.indexOf(next)+1
// we are before the first loaded bookmark, find the first...
while((next == cur || next == null) && i < BOOKMARKS.length){
next = BOOKMARKS[i]
next = getBookmarkedGIDBefore(next)
i++
}
// did not find any loaded bookmarks after...
if(i >= BOOKMARKS.length && (next == null || next == cur)){
flashIndicator('end')
return getImage(cur)
}
return showImage(next)
}
// focus previous bookmark...
//
function prevBookmark(){
if(BOOKMARKS.length == 0){
flashIndicator('start')
return getImage(cur)
}
var cur = getImageGID()
var prev = getBookmarkedGIDBefore(cur)
// nothing bookmarked before us...
if(prev == null){
flashIndicator('start')
return getImage(cur)
}
// current image is bookmarked, get the bookmark before it...
if(prev == cur){
prev = BOOKMARKS[BOOKMARKS.indexOf(prev)-1]
prev = prev != null ? getBookmarkedGIDBefore(prev) : prev
// no loaded (crop mode?) bookmark before us...
if(prev == null){
flashIndicator('start')
return getImage(cur)
}
}
return showImage(prev)
}
/*********************************************************************/
// setup event handlers for the bookmark framework...
//
function setupBookmarks(viewer){
console.log('Bookmarks: setup...')
return viewer
.on('togglingBookmark', function(evt, gid, action){
// add a bookmark...
if(action == 'on'){
if(BOOKMARKS.indexOf(gid) == -1){
BOOKMARKS.push(gid)
// XXX is this too expensive???
// ...a way to avoid sorting is to:
// BOOKMARKS.splice(
// getGIDBefore(gid, BOOKMARKS)+1, 0, gid)
BOOKMARKS.sort(imageOrderCmp)
}
// remove a bookmark...
} else {
BOOKMARKS.splice(BOOKMARKS.indexOf(gid), 1)
}
})
.on('sortedImages', function(){
BOOKMARKS.sort(imageOrderCmp)
})
}
SETUP_BINDINGS.push(setupBookmarks)
/**********************************************************************
* vim:set ts=4 sw=4 : */