This repository has been archived on 2024-01-19. You can view files and clone it, but cannot push or open issues or pull requests.
epubreader/public/pdfjs/controllers/reader_controller.js

167 lines
4.4 KiB
JavaScript
Raw Normal View History

2020-04-21 20:37:42 +00:00
PDFJS.reader.ReaderController = function() {
var $main = $("#main"),
$viewer = $("#viewer"),
$divider = $("#divider"),
$loader = $("#loader"),
$next = $("#next"),
$prev = $("#prev"),
$sidebarReflow = $('#sidebarReflow'),
$metainfo = $("#metainfo"),
$use_custom_colors = $("#use_custom_colors"),
$container = $("#container"),
$fullscreen = $("#fullscreen"),
$bookmark = $("#bookmark"),
$note = $("#note"),
$nightmode = $("#nightmode"),
$rotate_left = $("#rotate_left"),
$rotate_right = $("#rotate_right"),
$clear_search = $("#clear_search");
var reader = this,
book = this.book,
settings = reader.settings;
var slideIn = function() {
if (reader.viewerResized) {
var currentPosition = settings.currentPage;
reader.viewerResized = false;
}
};
var slideOut = function() {
var currentPosition = settings.currentPage;
reader.viewerResized = true;
};
var showLoader = function() {
$loader.show();
hideDivider();
};
var hideLoader = function() {
$loader.hide();
};
var showDivider = function() {
$divider.addClass("show");
};
var hideDivider = function() {
$divider.removeClass("show");
};
var keylock = false;
var showActive = function (obj) {
keylock = true;
obj.addClass("active");
setTimeout(function () {
keylock = false;
obj.removeClass("active");
}, 100);
};
var keyCommands = function(e) {
var page_no = false;
e.preventDefault();
switch (settings.keyboard[e.keyCode]) {
case 'previous':
$prev.click();
break;
case 'next':
$next.click();
break;
case 'first':
page_no = 1;
break;
case 'last':
page_no = reader.settings.numPages;
break;
case 'annotate':
$note.click();
break;
case 'bookmark':
$bookmark.click();
break;
case 'toggleTitlebar':
reader.ControlsController.toggle();
break;
case 'toggleSidebar':
reader.SidebarController.toggle();
break;
case 'closeSidebar':
reader.SidebarController.hide();
break;
case 'toggleFullscreen':
$fullscreen.click();
break;
case 'toggleNight':
$nightmode.click();
break;
case 'rotateLeft':
$rotate_left.click();
break;
case 'rotateRight':
$rotate_right.click();
break;
case 'cycleZoom':
reader.cycleZoom();
break;
case 'previousMatch':
reader.SearchController.nextMatch(true);
break;
case 'nextMatch':
if (e.shiftKey)
reader.SearchController.nextMatch(true);
else
reader.SearchController.nextMatch(false);
break;
case 'clearSearch':
$clear_search.click();
break;
case 'search':
if (e.shiftKey) {
reader.SidebarController.changePanelTo("Search");
reader.SearchController.show();
}
break;
default:
console.log("unsupported keyCode: " + e.keyCode);
}
if (page_no) {
reader.queuePage(page_no);
}
};
document.addEventListener('keydown', keyCommands, false);
$next.on("click", function(e){
reader.nextPage();
showActive($next);
e.preventDefault();
});
$prev.on("click", function(e){
reader.prevPage();
showActive($prev);
e.preventDefault();
});
return {
"slideOut" : slideOut,
"slideIn" : slideIn,
"showLoader" : showLoader,
"hideLoader" : hideLoader,
"showDivider" : showDivider,
"hideDivider" : hideDivider,
"keyCommands" : keyCommands
};
};