files_reader/vendor/pdfjs/controllers/reader_controller.js
Frank de Lange b190e180ef - Migrated from https://github.com/Yetangitu/owncloud-apps
- substantial bit rot accrued in 4 years of non-maintenance which made Reader unusable
 - Reader now works reliably on public pages - or at least it _Works For Me™_

 - Refactored a substantial part of the code to comply to the "current" (ha ha) Nextcloud API
 - Dropped Owncloud compatibility for lack of a testing installation
 - Dropped IE (<11) support
 - Dropped compatibility with older (<20) Nextcloud versions
 - Dropped app-specific ajax code, now handled by SettingsController
 - Updated dependencies where applicable
2022-09-24 00:00:03 +00:00

166 lines
4.4 KiB
JavaScript

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
};
};