| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 // require: cr/ui/print_preview_cloud.js | 5 // require: cr/ui/print_preview_cloud.js |
| 6 | 6 |
| 7 var localStrings = new LocalStrings(); | 7 var localStrings = new LocalStrings(); |
| 8 | 8 |
| 9 // If useCloudPrint is true we attempt to connect to cloud print | 9 // If useCloudPrint is true we attempt to connect to cloud print |
| 10 // and populate the list of printers with cloud print printers. | 10 // and populate the list of printers with cloud print printers. |
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 98 printHeader = print_preview.PrintHeader.getInstance(); | 98 printHeader = print_preview.PrintHeader.getInstance(); |
| 99 pageSettings = print_preview.PageSettings.getInstance(); | 99 pageSettings = print_preview.PageSettings.getInstance(); |
| 100 copiesSettings = print_preview.CopiesSettings.getInstance(); | 100 copiesSettings = print_preview.CopiesSettings.getInstance(); |
| 101 layoutSettings = print_preview.LayoutSettings.getInstance(); | 101 layoutSettings = print_preview.LayoutSettings.getInstance(); |
| 102 colorSettings = print_preview.ColorSettings.getInstance(); | 102 colorSettings = print_preview.ColorSettings.getInstance(); |
| 103 printHeader.addEventListeners(); | 103 printHeader.addEventListeners(); |
| 104 pageSettings.addEventListeners(); | 104 pageSettings.addEventListeners(); |
| 105 copiesSettings.addEventListeners(); | 105 copiesSettings.addEventListeners(); |
| 106 layoutSettings.addEventListeners(); | 106 layoutSettings.addEventListeners(); |
| 107 colorSettings.addEventListeners(); | 107 colorSettings.addEventListeners(); |
| 108 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities; |
| 108 | 109 |
| 109 showLoadingAnimation(); | 110 showLoadingAnimation(); |
| 110 chrome.send('getDefaultPrinter'); | 111 chrome.send('getDefaultPrinter'); |
| 111 } | 112 } |
| 112 | 113 |
| 113 /** | 114 /** |
| 114 * Adds event listeners to the settings controls. | |
| 115 */ | |
| 116 function addEventListeners() { | |
| 117 // Controls that require preview rendering. | |
| 118 $('printer-list').onchange = updateControlsWithSelectedPrinterCapabilities; | |
| 119 } | |
| 120 | |
| 121 /** | |
| 122 * Removes event listeners from the settings controls. | |
| 123 */ | |
| 124 function removeEventListeners() { | |
| 125 if (pageSettings) | |
| 126 clearTimeout(pageSettings.timerId_); | |
| 127 | |
| 128 // Controls that require preview rendering | |
| 129 $('printer-list').onchange = null; | |
| 130 } | |
| 131 | |
| 132 /** | |
| 133 * Disables the input elements in the sidebar. | 115 * Disables the input elements in the sidebar. |
| 134 */ | 116 */ |
| 135 function disableInputElementsInSidebar() { | 117 function disableInputElementsInSidebar() { |
| 136 var els = $('sidebar').querySelectorAll('input, button, select'); | 118 var els = $('sidebar').querySelectorAll('input, button, select'); |
| 137 for (var i = 0; i < els.length; i++) | 119 for (var i = 0; i < els.length; i++) |
| 138 els[i].disabled = true; | 120 els[i].disabled = true; |
| 139 } | 121 } |
| 140 | 122 |
| 141 /** | 123 /** |
| 142 * Disables the controls in the sidebar, shows the throbber and instructs the | 124 * Disables the controls in the sidebar, shows the throbber and instructs the |
| (...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 374 } else { | 356 } else { |
| 375 isTabHidden = true; | 357 isTabHidden = true; |
| 376 chrome.send('hidePreview'); | 358 chrome.send('hidePreview'); |
| 377 } | 359 } |
| 378 return; | 360 return; |
| 379 } | 361 } |
| 380 | 362 |
| 381 if (printToPDF) { | 363 if (printToPDF) { |
| 382 sendPrintDocumentRequest(); | 364 sendPrintDocumentRequest(); |
| 383 } else { | 365 } else { |
| 384 removeEventListeners(); | |
| 385 window.setTimeout(function() { sendPrintDocumentRequest(); }, 1000); | 366 window.setTimeout(function() { sendPrintDocumentRequest(); }, 1000); |
| 386 } | 367 } |
| 387 } | 368 } |
| 388 | 369 |
| 389 /** | 370 /** |
| 390 * Asks the browser to print the pending preview PDF that just finished | 371 * Asks the browser to print the pending preview PDF that just finished |
| 391 * loading. | 372 * loading. |
| 392 */ | 373 */ |
| 393 function requestToPrintPendingDocument() { | 374 function requestToPrintPendingDocument() { |
| 394 hasPendingPrintDocumentRequest = false; | 375 hasPendingPrintDocumentRequest = false; |
| (...skipping 23 matching lines...) Expand all Loading... |
| 418 cloudprint.getData(printer)]); | 399 cloudprint.getData(printer)]); |
| 419 chrome.send('print', [JSON.stringify(getSettings()), | 400 chrome.send('print', [JSON.stringify(getSettings()), |
| 420 cloudprint.getPrintTicketJSON(printer)]); | 401 cloudprint.getPrintTicketJSON(printer)]); |
| 421 } | 402 } |
| 422 | 403 |
| 423 /** | 404 /** |
| 424 * Asks the browser to generate a preview PDF based on current print settings. | 405 * Asks the browser to generate a preview PDF based on current print settings. |
| 425 */ | 406 */ |
| 426 function requestPrintPreview() { | 407 function requestPrintPreview() { |
| 427 hasPendingPreviewRequest = true; | 408 hasPendingPreviewRequest = true; |
| 428 removeEventListeners(); | |
| 429 printSettings.save(); | 409 printSettings.save(); |
| 430 if (!isTabHidden) | 410 if (!isTabHidden) |
| 431 showLoadingAnimation(); | 411 showLoadingAnimation(); |
| 432 | 412 |
| 433 var settings = getSettings(); | 413 var settings = getSettings(); |
| 434 settings.requestID = generatePreviewRequestID(); | 414 settings.requestID = generatePreviewRequestID(); |
| 415 console.log("requestPrintPreview " + settings.requestID); |
| 435 chrome.send('getPreview', [JSON.stringify(settings)]); | 416 chrome.send('getPreview', [JSON.stringify(settings)]); |
| 436 } | 417 } |
| 437 | 418 |
| 438 /** | 419 /** |
| 439 * Called from PrintPreviewUI::OnFileSelectionCancelled to notify the print | 420 * Called from PrintPreviewUI::OnFileSelectionCancelled to notify the print |
| 440 * preview tab regarding the file selection cancel event. | 421 * preview tab regarding the file selection cancel event. |
| 441 */ | 422 */ |
| 442 function fileSelectionCancelled() { | 423 function fileSelectionCancelled() { |
| 443 // TODO(thestig) re-enable controls here. | 424 // TODO(thestig) re-enable controls here. |
| 444 } | 425 } |
| (...skipping 279 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 724 /** | 705 /** |
| 725 * Display an error message in the center of the preview area. | 706 * Display an error message in the center of the preview area. |
| 726 * @param {string} errorMessage The error message to be displayed. | 707 * @param {string} errorMessage The error message to be displayed. |
| 727 */ | 708 */ |
| 728 function displayErrorMessage(errorMessage) { | 709 function displayErrorMessage(errorMessage) { |
| 729 $('print-button').disabled = true; | 710 $('print-button').disabled = true; |
| 730 $('overlay-layer').classList.remove('invisible'); | 711 $('overlay-layer').classList.remove('invisible'); |
| 731 $('dancing-dots-text').classList.add('hidden'); | 712 $('dancing-dots-text').classList.add('hidden'); |
| 732 $('error-text').innerHTML = errorMessage; | 713 $('error-text').innerHTML = errorMessage; |
| 733 $('error-text').classList.remove('hidden'); | 714 $('error-text').classList.remove('hidden'); |
| 734 removeEventListeners(); | |
| 735 var pdfViewer = $('pdf-viewer'); | 715 var pdfViewer = $('pdf-viewer'); |
| 736 if (pdfViewer) | 716 if (pdfViewer) |
| 737 $('mainview').removeChild(pdfViewer); | 717 $('mainview').removeChild(pdfViewer); |
| 738 | 718 |
| 739 if (isTabHidden) | 719 if (isTabHidden) |
| 740 cancelPendingPrintRequest(); | 720 cancelPendingPrintRequest(); |
| 741 } | 721 } |
| 742 | 722 |
| 743 /** | 723 /** |
| 744 * Display an error message in the center of the preview area followed by a | 724 * Display an error message in the center of the preview area followed by a |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 786 pageSettings.previouslySelectedPages.length); | 766 pageSettings.previouslySelectedPages.length); |
| 787 } | 767 } |
| 788 | 768 |
| 789 /** | 769 /** |
| 790 * Update the page count and check the page range. | 770 * Update the page count and check the page range. |
| 791 * Called from PrintPreviewUI::OnDidGetPreviewPageCount(). | 771 * Called from PrintPreviewUI::OnDidGetPreviewPageCount(). |
| 792 * @param {number} pageCount The number of pages. | 772 * @param {number} pageCount The number of pages. |
| 793 * @param {boolean} isModifiable Indicates whether the previewed document can be | 773 * @param {boolean} isModifiable Indicates whether the previewed document can be |
| 794 * modified. | 774 * modified. |
| 795 */ | 775 */ |
| 796 function onDidGetPreviewPageCount(pageCount, isModifiable) { | 776 function onDidGetPreviewPageCount(pageCount, isModifiable, previewResponseId) { |
| 777 console.log("onDidGetPreviewPageCount " + previewResponseId); |
| 778 if (!isExpectedPreviewResponse(previewResponseId)) |
| 779 return; |
| 797 pageSettings.updateState(pageCount); | 780 pageSettings.updateState(pageCount); |
| 798 previewModifiable = isModifiable; | 781 previewModifiable = isModifiable; |
| 799 } | 782 } |
| 800 | 783 |
| 801 /** | 784 /** |
| 802 * Called when no pipelining previewed pages. | 785 * Called when no pipelining previewed pages. |
| 803 */ | 786 */ |
| 804 function reloadPreviewPages(previewUid, previewResponseId) { | 787 function reloadPreviewPages(previewUid, previewResponseId) { |
| 805 if (!isExpectedPreviewResponse(previewResponseId)) | 788 if (!isExpectedPreviewResponse(previewResponseId)) |
| 806 return; | 789 return; |
| 807 hasPendingPreviewRequest = false; | 790 hasPendingPreviewRequest = false; |
| 808 | 791 |
| 809 if (checkIfSettingsChangedAndRegeneratePreview()) | 792 if (checkIfSettingsChangedAndRegeneratePreview()) |
| 810 return; | 793 return; |
| 811 cr.dispatchSimpleEvent(document, 'updateSummary'); | 794 cr.dispatchSimpleEvent(document, 'updateSummary'); |
| 812 cr.dispatchSimpleEvent(document, 'updatePrintButton'); | 795 cr.dispatchSimpleEvent(document, 'updatePrintButton'); |
| 813 addEventListeners(); | |
| 814 hideLoadingAnimation(); | 796 hideLoadingAnimation(); |
| 815 var pageSet = pageSettings.previouslySelectedPages; | 797 var pageSet = pageSettings.previouslySelectedPages; |
| 816 for (var i = 0; i < pageSet.length; i++) | 798 for (var i = 0; i < pageSet.length; i++) |
| 817 $('pdf-viewer').loadPreviewPage(getPageSrcURL(previewUid, pageSet[i]-1), i); | 799 $('pdf-viewer').loadPreviewPage(getPageSrcURL(previewUid, pageSet[i]-1), i); |
| 818 // TODO(dpapad): handle pending print file requests. | 800 // TODO(dpapad): handle pending print file requests. |
| 819 } | 801 } |
| 820 | 802 |
| 821 /** | 803 /** |
| 822 * Notification that a print preview page has been rendered. | 804 * Notification that a print preview page has been rendered. |
| 823 * Check if the settings have changed and request a regeneration if needed. | 805 * Check if the settings have changed and request a regeneration if needed. |
| 824 * Called from PrintPreviewUI::OnDidPreviewPage(). | 806 * Called from PrintPreviewUI::OnDidPreviewPage(). |
| 825 * @param {number} pageNumber The page number, 0-based. | 807 * @param {number} pageNumber The page number, 0-based. |
| 826 */ | 808 */ |
| 827 function onDidPreviewPage(pageNumber, previewUid) { | 809 function onDidPreviewPage(pageNumber, previewUid, previewResponseId) { |
| 810 console.log("onDidPreviewPage " + previewResponseId); |
| 811 if (!isExpectedPreviewResponse(previewResponseId)) |
| 812 return; |
| 828 // Refactor | 813 // Refactor |
| 829 if (!previewModifiable) | 814 if (!previewModifiable) |
| 830 return; | 815 return; |
| 831 | 816 |
| 832 var pageIndex = pageSettings.previouslySelectedPages.indexOf(pageNumber + 1); | 817 var pageIndex = pageSettings.previouslySelectedPages.indexOf(pageNumber + 1); |
| 833 | 818 |
| 834 if (checkIfSettingsChangedAndRegeneratePreview()) | 819 if (checkIfSettingsChangedAndRegeneratePreview()) |
| 835 return; | 820 return; |
| 836 if (pageIndex == 0) | 821 if (pageIndex == 0) |
| 837 createPDFPlugin(previewUid); | 822 createPDFPlugin(previewUid); |
| 838 | 823 |
| 839 $('pdf-viewer').loadPreviewPage( | 824 $('pdf-viewer').loadPreviewPage( |
| 840 getPageSrcURL(previewUid, pageNumber), pageIndex); | 825 getPageSrcURL(previewUid, pageNumber), pageIndex); |
| 841 } | 826 } |
| 842 | 827 |
| 843 /** | 828 /** |
| 844 * Update the print preview when new preview data is available. | 829 * Update the print preview when new preview data is available. |
| 845 * Create the PDF plugin as needed. | 830 * Create the PDF plugin as needed. |
| 846 * Called from PrintPreviewUI::PreviewDataIsAvailable(). | 831 * Called from PrintPreviewUI::PreviewDataIsAvailable(). |
| 847 * @param {string} jobTitle The print job title. | 832 * @param {string} jobTitle The print job title. |
| 848 * @param {boolean} modifiable If the preview is modifiable. | 833 * @param {boolean} modifiable If the preview is modifiable. |
| 849 * @param {string} previewUid Preview unique identifier. | 834 * @param {string} previewUid Preview unique identifier. |
| 850 * @param {number} previewResponseId The preview request id that resulted in | 835 * @param {number} previewResponseId The preview request id that resulted in |
| 851 * this response. | 836 * this response. |
| 852 */ | 837 */ |
| 853 function updatePrintPreview(jobTitle, | 838 function updatePrintPreview(jobTitle, |
| 854 previewUid, | 839 previewUid, |
| 855 previewResponseId) { | 840 previewResponseId) { |
| 841 console.log("updatePrintPreview" + previewResponseId); |
| 856 if (!isExpectedPreviewResponse(previewResponseId)) | 842 if (!isExpectedPreviewResponse(previewResponseId)) |
| 857 return; | 843 return; |
| 858 hasPendingPreviewRequest = false; | 844 hasPendingPreviewRequest = false; |
| 859 | 845 |
| 860 if (checkIfSettingsChangedAndRegeneratePreview()) | 846 if (checkIfSettingsChangedAndRegeneratePreview()) |
| 861 return; | 847 return; |
| 862 | 848 |
| 863 document.title = localStrings.getStringF('printPreviewTitleFormat', jobTitle); | 849 document.title = localStrings.getStringF('printPreviewTitleFormat', jobTitle); |
| 864 | 850 |
| 865 if (!previewModifiable) { | 851 if (!previewModifiable) { |
| 866 // If the preview is not modifiable the plugin has not been created yet. | 852 // If the preview is not modifiable the plugin has not been created yet. |
| 867 createPDFPlugin(previewUid); | 853 createPDFPlugin(previewUid); |
| 868 } | 854 } |
| 869 | 855 |
| 870 cr.dispatchSimpleEvent(document, 'updateSummary'); | 856 cr.dispatchSimpleEvent(document, 'updateSummary'); |
| 871 cr.dispatchSimpleEvent(document, 'updatePrintButton'); | 857 cr.dispatchSimpleEvent(document, 'updatePrintButton'); |
| 872 addEventListeners(); | |
| 873 | 858 |
| 874 if (hasPendingPrintDocumentRequest) | 859 if (hasPendingPrintDocumentRequest) |
| 875 requestToPrintPendingDocument(); | 860 requestToPrintPendingDocument(); |
| 876 } | 861 } |
| 877 | 862 |
| 878 /** | 863 /** |
| 879 * Check if any print settings changed and regenerate the preview if needed. | 864 * Check if any print settings changed and regenerate the preview if needed. |
| 880 * @return {boolean} true if a new preview is required. | 865 * @return {boolean} true if a new preview is required. |
| 881 */ | 866 */ |
| 882 function checkIfSettingsChangedAndRegeneratePreview() { | 867 function checkIfSettingsChangedAndRegeneratePreview() { |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 959 } | 944 } |
| 960 | 945 |
| 961 /** | 946 /** |
| 962 * Takes a snapshot of the print settings. | 947 * Takes a snapshot of the print settings. |
| 963 */ | 948 */ |
| 964 PrintSettings.prototype.save = function() { | 949 PrintSettings.prototype.save = function() { |
| 965 this.deviceName = getSelectedPrinterName(); | 950 this.deviceName = getSelectedPrinterName(); |
| 966 this.isLandscape = layoutSettings.isLandscape(); | 951 this.isLandscape = layoutSettings.isLandscape(); |
| 967 } | 952 } |
| 968 | 953 |
| OLD | NEW |