Chromium Code Reviews| Index: chrome/browser/resources/print_preview/print_preview.js |
| diff --git a/chrome/browser/resources/print_preview/print_preview.js b/chrome/browser/resources/print_preview/print_preview.js |
| index 6cf5f4c7963e2c6d545b67dfa98f77a0720b3708..f6f71b04af82307ceb039b16f669e9642e65e965 100644 |
| --- a/chrome/browser/resources/print_preview/print_preview.js |
| +++ b/chrome/browser/resources/print_preview/print_preview.js |
| @@ -80,6 +80,13 @@ var marginSettings; |
| // related settings. |
| var headerFooterSettings; |
| +// @type {print_preview.FitToPageSettings} Holds all the fit to page related |
| +// settings. |
| +var fitToPageSettings; |
| + |
| +// @type {print_preview.MoreOptions} Holds the more options implementation. |
| +var moreOptions; |
| + |
| // @type {print_preview.ColorSettings} Holds all the color related settings. |
| var colorSettings; |
| @@ -119,6 +126,8 @@ var addedCloudPrinters = {}; |
| // Names of all the custom events used. |
| var customEvents = { |
| + // Fired when the header footer option visibility changed. |
| + HEADER_FOOTER_VISIBILITY_CHANGED: 'headerFooterVisibilityChanged', |
| // Fired when the mouse moves while a margin line is being dragged. |
| MARGIN_LINE_DRAG: 'marginLineDrag', |
| // Fired when a mousedown event occurs on a margin line. |
| @@ -133,6 +142,8 @@ var customEvents = { |
| PDF_LOADED: 'PDFLoaded', |
| // Fired when the selected printer capabilities change. |
| PRINTER_CAPABILITIES_UPDATED: 'printerCapabilitiesUpdated', |
| + // Fired when the destination printer is changed. |
| + PRINTER_SELECTION_CHANGED: 'printerSelectionChanged', |
| // Fired when the print button needs to be updated. |
| UPDATE_PRINT_BUTTON: 'updatePrintButton', |
| // Fired when the print summary needs to be updated. |
| @@ -178,6 +189,8 @@ function onLoad() { |
| layoutSettings = print_preview.LayoutSettings.getInstance(); |
| marginSettings = print_preview.MarginSettings.getInstance(); |
| headerFooterSettings = print_preview.HeaderFooterSettings.getInstance(); |
| + fitToPageSettings = print_preview.FitToPageSettings.getInstance(); |
| + moreOptions = print_preview.MoreOptions.getInstance(); |
| colorSettings = print_preview.ColorSettings.getInstance(); |
| $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities; |
| @@ -278,6 +291,16 @@ function launchNativePrintDialog() { |
| } |
| /** |
| + * Notifies listeners of |customEvents.PRINTER_SELECTION_CHANGED| event about |
| + * the current selected printer. |
| + */ |
| +function dispatchPrinterSelectionChangedEvent() { |
| + var customEvent = cr.Event(customEvents.PRINTER_SELECTION_CHANGED); |
| + customEvent.selectedPrinter = getSelectedPrinterName(); |
| + document.dispatchEvent(customEvent); |
| +} |
| + |
| +/** |
| * Gets the selected printer capabilities and updates the controls accordingly. |
| */ |
| function updateControlsWithSelectedPrinterCapabilities() { |
| @@ -289,6 +312,7 @@ function updateControlsWithSelectedPrinterCapabilities() { |
| $('open-pdf-in-preview-link').disabled = false; |
| var skip_refresh = false; |
| + var selectedPrinterChanged = true; |
|
dpapad
2012/04/19 21:11:29
Why not dispatching the event here, and eliminatin
kmadhusu
2012/04/20 23:03:42
As we discussed, I am leaving this as it is.
|
| var selectedValue = printerList.options[selectedIndex].value; |
| if (cloudprint.isCloudPrint(printerList.options[selectedIndex])) { |
| cloudprint.updatePrinterCaps(printerList.options[selectedIndex], |
| @@ -300,6 +324,7 @@ function updateControlsWithSelectedPrinterCapabilities() { |
| printerList.selectedIndex = lastSelectedPrinterIndex; |
| chrome.send(selectedValue); |
| skip_refresh = true; |
| + selectedPrinterChanged = false; |
|
dpapad
2012/04/19 21:11:29
Same here.
kmadhusu
2012/04/20 23:03:42
As we discussed, I am leaving this as it is.
|
| } else if (selectedValue == PRINT_TO_PDF || |
| selectedValue == PRINT_WITH_CLOUD_PRINT) { |
| updateWithPrinterCapabilities({ |
| @@ -316,6 +341,9 @@ function updateControlsWithSelectedPrinterCapabilities() { |
| // function. |
| chrome.send('getPrinterCapabilities', [selectedValue]); |
| } |
| + if (selectedPrinterChanged) |
| + dispatchPrinterSelectionChangedEvent(); |
| + |
| if (!skip_refresh) { |
| lastSelectedPrinterIndex = selectedIndex; |
| @@ -394,6 +422,16 @@ function finishedCloudPrinting() { |
| } |
| /** |
| + * Updates the fit to page option state based on the print scaling option of |
| + * source pdf. PDF's have an option to enable/disable print scaling. When we |
| + * find out that the print scaling option is disabled for the source pdf, we |
| + * uncheck the fit to page checkbox. This function is called from C++ code. |
| + */ |
| +function printScalingDisabledForSourcePDF() { |
| + fitToPageSettings.printScalingDisabledUpdateState(); |
| +} |
| + |
| +/** |
| * Checks whether the specified settings are valid. |
| * |
| * @return {boolean} true if settings are valid, false if not. |
| @@ -431,6 +469,7 @@ function getSettings() { |
| 'marginsType': marginSettings.selectedMarginsValue, |
| 'requestID': -1, |
| 'generateDraftData': generateDraftData, |
| + 'fitToPageEnabled': fitToPageSettings.hasFitToPage(), |
| 'previewModifiable': previewModifiable}; |
| if (marginSettings.isCustomMarginsSelected()) |
| @@ -579,9 +618,9 @@ function loadSelectedPages() { |
| } |
| /** |
| - * Asks the browser to generate a preview PDF based on current print settings. |
| + * Updates the variables states for preview. |
| */ |
| -function requestPrintPreview() { |
| +function updateStateForPreview() { |
| if (!isTabHidden) |
| previewArea.showLoadingAnimation(); |
| @@ -604,7 +643,14 @@ function requestPrintPreview() { |
| var totalPageCount = pageSettings.totalPageCount; |
| if (!previewModifiable && totalPageCount > 0) |
| generateDraftData = false; |
| +} |
| +/** |
| + * Asks the browser to generate a preview PDF based on current print settings. |
| + */ |
| +function requestPrintPreview() { |
| + updateStateForPreview(); |
| + var totalPageCount = pageSettings.totalPageCount; |
| var pageCount = totalPageCount != undefined ? totalPageCount : -1; |
|
dpapad
2012/04/19 21:11:29
Not related to your changes (optional): I believe
kmadhusu
2012/04/20 23:03:42
Done.
|
| chrome.send('getPreview', [JSON.stringify(getSettingsWithRequestID()), |
| pageCount, |
| @@ -828,6 +874,10 @@ function invalidPrinterSettings() { |
| function onPDFLoad() { |
| if (previewModifiable) { |
| setPluginPreviewPageCount(); |
| + } else { |
| + // If the source is pdf, print ready metafile is available only after |
| + // loading the pdf in the plugin. |
| + isPrintReadyMetafileReady = true; |
| } |
| // Instruct the plugin which page numbers to display in the page number |
| // indicator. |
| @@ -911,6 +961,8 @@ function reloadPreviewPages(previewUid, previewResponseId) { |
| if (!isExpectedPreviewResponse(previewResponseId)) |
| return; |
| + if (!previewModifiable) |
| + previewArea.createOrReloadPDFPlugin(PRINT_READY_DATA_INDEX); |
| cr.dispatchSimpleEvent(document, customEvents.UPDATE_PRINT_BUTTON); |
| checkAndHideOverlayLayerIfValid(); |
| var pageSet = pageSettings.previouslySelectedPages; |
| @@ -974,13 +1026,14 @@ function onDidPreviewPage(pageNumber, previewUid, previewResponseId) { |
| function updatePrintPreview(previewUid, previewResponseId) { |
| if (!isExpectedPreviewResponse(previewResponseId)) |
| return; |
| - isPrintReadyMetafileReady = true; |
| if (!previewModifiable) { |
| // If the preview is not modifiable the plugin has not been created yet. |
| currentPreviewUid = previewUid; |
| hasPendingPreviewRequest = false; |
| previewArea.createOrReloadPDFPlugin(PRINT_READY_DATA_INDEX); |
| + } else { |
| + isPrintReadyMetafileReady = true; |
| } |
| cr.dispatchSimpleEvent(document, customEvents.UPDATE_PRINT_BUTTON); |
| @@ -1203,6 +1256,7 @@ window.addEventListener('keydown', onKeyDown); |
| <include src="page_settings.js"/> |
| <include src="copies_settings.js"/> |
| <include src="header_footer_settings.js"/> |
| +<include src="fit_to_page_settings.js"/> |
| <include src="layout_settings.js"/> |
| <include src="color_settings.js"/> |
| <include src="margin_settings.js"/> |
| @@ -1210,4 +1264,5 @@ window.addEventListener('keydown', onKeyDown); |
| <include src="margin_utils.js"/> |
| <include src="margins_ui.js"/> |
| <include src="margins_ui_pair.js"/> |
| +<include src="more_options.js"/> |
| <include src="preview_area.js"/> |