Display the pageSize of the *currently* active page in the document properties dialog

This commit is contained in:
Jonas Jenwald 2018-03-17 18:50:34 +01:00
parent adeaefedae
commit 51ddcd6380
2 changed files with 17 additions and 4 deletions

View File

@ -429,7 +429,7 @@ let PDFViewerApplication = {
this.pdfDocumentProperties = this.pdfDocumentProperties =
new PDFDocumentProperties(appConfig.documentProperties, new PDFDocumentProperties(appConfig.documentProperties,
this.overlayManager, this.l10n); this.overlayManager, eventBus, this.l10n);
this.pdfCursorTools = new PDFCursorTools({ this.pdfCursorTools = new PDFCursorTools({
container, container,

View File

@ -30,10 +30,11 @@ class PDFDocumentProperties {
/** /**
* @param {PDFDocumentPropertiesOptions} options * @param {PDFDocumentPropertiesOptions} options
* @param {OverlayManager} overlayManager - Manager for the viewer overlays. * @param {OverlayManager} overlayManager - Manager for the viewer overlays.
* @param {EventBus} eventBus - The application event bus.
* @param {IL10n} l10n - Localization service. * @param {IL10n} l10n - Localization service.
*/ */
constructor({ overlayName, fields, container, closeButton, }, constructor({ overlayName, fields, container, closeButton, },
overlayManager, l10n = NullL10n) { overlayManager, eventBus, l10n = NullL10n) {
this.overlayName = overlayName; this.overlayName = overlayName;
this.fields = fields; this.fields = fields;
this.container = container; this.container = container;
@ -47,6 +48,12 @@ class PDFDocumentProperties {
} }
this.overlayManager.register(this.overlayName, this.container, this.overlayManager.register(this.overlayName, this.container,
this.close.bind(this)); this.close.bind(this));
if (eventBus) {
eventBus.on('pagechanging', (evt) => {
this._currentPageNumber = evt.pageNumber;
});
}
} }
/** /**
@ -64,12 +71,16 @@ class PDFDocumentProperties {
Promise.all([this.overlayManager.open(this.overlayName), Promise.all([this.overlayManager.open(this.overlayName),
this._dataAvailableCapability.promise]).then(() => { this._dataAvailableCapability.promise]).then(() => {
const currentPageNumber = this._currentPageNumber;
// If the document properties were previously fetched (for this PDF file), // If the document properties were previously fetched (for this PDF file),
// just update the dialog immediately to avoid redundant lookups. // just update the dialog immediately to avoid redundant lookups.
if (this.fieldData) { if (this.fieldData &&
currentPageNumber === this.fieldData['_currentPageNumber']) {
this._updateUI(); this._updateUI();
return; return;
} }
// Get the document properties. // Get the document properties.
this.pdfDocument.getMetadata().then( this.pdfDocument.getMetadata().then(
({ info, metadata, contentDispositionFilename, }) => { ({ info, metadata, contentDispositionFilename, }) => {
@ -80,7 +91,7 @@ class PDFDocumentProperties {
this._parseFileSize(this.maybeFileSize), this._parseFileSize(this.maybeFileSize),
this._parseDate(info.CreationDate), this._parseDate(info.CreationDate),
this._parseDate(info.ModDate), this._parseDate(info.ModDate),
this.pdfDocument.getPage(1).then((pdfPage) => { this.pdfDocument.getPage(currentPageNumber).then((pdfPage) => {
return this._parsePageSize(pdfPage.pageSizeInches); return this._parsePageSize(pdfPage.pageSizeInches);
}), }),
]); ]);
@ -101,6 +112,7 @@ class PDFDocumentProperties {
'pageCount': this.pdfDocument.numPages, 'pageCount': this.pdfDocument.numPages,
'pageSizeInch': pageSizes.inch, 'pageSizeInch': pageSizes.inch,
'pageSizeMM': pageSizes.mm, 'pageSizeMM': pageSizes.mm,
'_currentPageNumber': currentPageNumber,
}); });
this._updateUI(); this._updateUI();
@ -176,6 +188,7 @@ class PDFDocumentProperties {
this.maybeFileSize = 0; this.maybeFileSize = 0;
delete this.fieldData; delete this.fieldData;
this._dataAvailableCapability = createPromiseCapability(); this._dataAvailableCapability = createPromiseCapability();
this._currentPageNumber = 1;
} }
/** /**