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 |