mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-21 15:48:06 +02:00
Merge pull request #7458 from Snuffleupagus/updateUIToolbar
Consolidate updating of various Toolbar state (e.g. page and scale) in one method in `PDFViewerApplication`
This commit is contained in:
commit
bca1aebeac
2 changed files with 76 additions and 51 deletions
123
web/app.js
123
web/app.js
|
@ -833,11 +833,9 @@ var PDFViewerApplication = {
|
|||
self.loadingBar.hide();
|
||||
});
|
||||
|
||||
var pagesCount = pdfDocument.numPages;
|
||||
var toolbarConfig = this.appConfig.toolbar;
|
||||
toolbarConfig.numPages.textContent =
|
||||
mozL10n.get('page_of', {pageCount: pagesCount}, 'of {{pageCount}}');
|
||||
toolbarConfig.pageNumber.max = pagesCount;
|
||||
this._updateUIToolbar({
|
||||
resetNumPages: true,
|
||||
});
|
||||
|
||||
var id = this.documentFingerprint = pdfDocument.fingerprint;
|
||||
var store = this.store = new ViewHistory(id);
|
||||
|
@ -1050,10 +1048,6 @@ var PDFViewerApplication = {
|
|||
|
||||
this.isInitialViewSet = true;
|
||||
|
||||
// When opening a new file, when one is already loaded in the viewer,
|
||||
// ensure that the 'pageNumber' element displays the correct value.
|
||||
this.appConfig.toolbar.pageNumber.value = this.pdfViewer.currentPageNumber;
|
||||
|
||||
this.pdfSidebar.setInitialView(this.preferenceSidebarViewOnLoad ||
|
||||
(sidebarView | 0));
|
||||
|
||||
|
@ -1224,6 +1218,67 @@ var PDFViewerApplication = {
|
|||
this.pdfPresentationMode.mouseScroll(delta);
|
||||
},
|
||||
|
||||
/**
|
||||
* @typedef UpdateUIToolbarParameters
|
||||
* @property {number} pageNumber
|
||||
* @property {string} scaleValue
|
||||
* @property {scale} scale
|
||||
* @property {boolean} resetNumPages
|
||||
*/
|
||||
|
||||
/**
|
||||
* @param {Object} UpdateUIToolbarParameters
|
||||
* @private
|
||||
*/
|
||||
_updateUIToolbar: function (params) {
|
||||
function selectScaleOption(value, scale) {
|
||||
var options = toolbarConfig.scaleSelect.options;
|
||||
var predefinedValueFound = false;
|
||||
for (var i = 0, ii = options.length; i < ii; i++) {
|
||||
var option = options[i];
|
||||
if (option.value !== value) {
|
||||
option.selected = false;
|
||||
continue;
|
||||
}
|
||||
option.selected = true;
|
||||
predefinedValueFound = true;
|
||||
}
|
||||
if (!predefinedValueFound) {
|
||||
var customScale = Math.round(scale * 10000) / 100;
|
||||
toolbarConfig.customScaleOption.textContent =
|
||||
mozL10n.get('page_scale_percent', {scale: customScale}, '{{scale}}%');
|
||||
toolbarConfig.customScaleOption.selected = true;
|
||||
}
|
||||
}
|
||||
|
||||
var pageNumber = params.pageNumber || this.pdfViewer.currentPageNumber;
|
||||
var scaleValue = (params.scaleValue || params.scale ||
|
||||
this.pdfViewer.currentScaleValue || DEFAULT_SCALE_VALUE).toString();
|
||||
var scale = params.scale || this.pdfViewer.currentScale;
|
||||
var resetNumPages = params.resetNumPages || false;
|
||||
|
||||
var toolbarConfig = this.appConfig.toolbar;
|
||||
var pagesCount = this.pagesCount;
|
||||
|
||||
if (resetNumPages) {
|
||||
toolbarConfig.numPages.textContent =
|
||||
mozL10n.get('page_of', { pageCount: pagesCount }, 'of {{pageCount}}');
|
||||
toolbarConfig.pageNumber.max = pagesCount;
|
||||
}
|
||||
toolbarConfig.pageNumber.value = pageNumber;
|
||||
|
||||
toolbarConfig.previous.disabled = (pageNumber <= 1);
|
||||
toolbarConfig.next.disabled = (pageNumber >= pagesCount);
|
||||
|
||||
toolbarConfig.firstPage.disabled = (pageNumber <= 1);
|
||||
toolbarConfig.lastPage.disabled = (pageNumber >= pagesCount);
|
||||
|
||||
toolbarConfig.zoomOut.disabled = (scale === MIN_SCALE);
|
||||
toolbarConfig.zoomIn.disabled = (scale === MAX_SCALE);
|
||||
|
||||
selectScaleOption(scaleValue, scale);
|
||||
},
|
||||
|
||||
bindEvents: function pdfViewBindEvents() {
|
||||
var eventBus = this.eventBus;
|
||||
|
||||
|
@ -1825,21 +1880,6 @@ function webViewerFileInputChange(e) {
|
|||
}
|
||||
//#endif
|
||||
|
||||
function selectScaleOption(value) {
|
||||
var options = PDFViewerApplication.appConfig.toolbar.scaleSelect.options;
|
||||
var predefinedValueFound = false;
|
||||
for (var i = 0, ii = options.length; i < ii; i++) {
|
||||
var option = options[i];
|
||||
if (option.value !== value) {
|
||||
option.selected = false;
|
||||
continue;
|
||||
}
|
||||
option.selected = true;
|
||||
predefinedValueFound = true;
|
||||
}
|
||||
return predefinedValueFound;
|
||||
}
|
||||
|
||||
window.addEventListener('localized', function localized(evt) {
|
||||
PDFViewerApplication.eventBus.dispatch('localized');
|
||||
});
|
||||
|
@ -1925,20 +1965,11 @@ function webViewerFindFromUrlHash(e) {
|
|||
}
|
||||
|
||||
function webViewerScaleChanging(e) {
|
||||
var appConfig = PDFViewerApplication.appConfig;
|
||||
appConfig.toolbar.zoomOut.disabled = (e.scale === MIN_SCALE);
|
||||
appConfig.toolbar.zoomIn.disabled = (e.scale === MAX_SCALE);
|
||||
PDFViewerApplication._updateUIToolbar({
|
||||
scaleValue: e.presetValue,
|
||||
scale: e.scale,
|
||||
});
|
||||
|
||||
// Update the 'scaleSelect' DOM element.
|
||||
var predefinedValueFound = selectScaleOption(e.presetValue ||
|
||||
'' + e.scale);
|
||||
if (!predefinedValueFound) {
|
||||
var customScaleOption = appConfig.toolbar.customScaleOption;
|
||||
var customScale = Math.round(e.scale * 10000) / 100;
|
||||
customScaleOption.textContent =
|
||||
mozL10n.get('page_scale_percent', { scale: customScale }, '{{scale}}%');
|
||||
customScaleOption.selected = true;
|
||||
}
|
||||
if (!PDFViewerApplication.initialized) {
|
||||
return;
|
||||
}
|
||||
|
@ -1947,20 +1978,14 @@ function webViewerScaleChanging(e) {
|
|||
|
||||
function webViewerPageChanging(e) {
|
||||
var page = e.pageNumber;
|
||||
if (e.previousPageNumber !== page) {
|
||||
PDFViewerApplication.appConfig.toolbar.pageNumber.value = page;
|
||||
|
||||
if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
|
||||
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
|
||||
}
|
||||
PDFViewerApplication._updateUIToolbar({
|
||||
pageNumber: page,
|
||||
});
|
||||
if (e.previousPageNumber !== page &&
|
||||
PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
|
||||
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
|
||||
}
|
||||
var numPages = PDFViewerApplication.pagesCount;
|
||||
|
||||
PDFViewerApplication.appConfig.toolbar.previous.disabled = (page <= 1);
|
||||
PDFViewerApplication.appConfig.toolbar.next.disabled = (page >= numPages);
|
||||
|
||||
PDFViewerApplication.appConfig.toolbar.firstPage.disabled = (page <= 1);
|
||||
PDFViewerApplication.appConfig.toolbar.lastPage.disabled = (page >= numPages);
|
||||
|
||||
// we need to update stats
|
||||
if (pdfjsLib.PDFJS.pdfBug && Stats.enabled) {
|
||||
|
|
|
@ -231,7 +231,7 @@ var PDFViewer = (function pdfViewer() {
|
|||
set currentScaleValue(val) {
|
||||
if (!this.pdfDocument) {
|
||||
this._currentScale = isNaN(val) ? UNKNOWN_SCALE : val;
|
||||
this._currentScaleValue = val;
|
||||
this._currentScaleValue = val.toString();
|
||||
return;
|
||||
}
|
||||
this._setScale(val, false);
|
||||
|
@ -418,7 +418,7 @@ var PDFViewer = (function pdfViewer() {
|
|||
|
||||
_setScaleUpdatePages: function pdfViewer_setScaleUpdatePages(
|
||||
newScale, newValue, noScroll, preset) {
|
||||
this._currentScaleValue = newValue;
|
||||
this._currentScaleValue = newValue.toString();
|
||||
|
||||
if (isSameScale(this._currentScale, newScale)) {
|
||||
if (preset) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue