Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(55)

Side by Side Diff: chrome/browser/resources/print_preview/print_preview.js

Issue 8425008: PrintPreview:[MAC] Added "Open PDF In Preview" option to open the pdf in native preview app. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: '' Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 var colorSettings; 76 var colorSettings;
77 77
78 // @type {print_preview.PreviewArea} Holds information related to the preview 78 // @type {print_preview.PreviewArea} Holds information related to the preview
79 // area (on the right). 79 // area (on the right).
80 var previewArea; 80 var previewArea;
81 81
82 // True if the user has click 'Advanced...' in order to open the system print 82 // True if the user has click 'Advanced...' in order to open the system print
83 // dialog. 83 // dialog.
84 var showingSystemDialog = false; 84 var showingSystemDialog = false;
85 85
86 // True if the user has clicked 'Open PDF in Preview' option.
87 var previewAppRequested = false;
88
86 // The range of options in the printer dropdown controlled by cloud print. 89 // The range of options in the printer dropdown controlled by cloud print.
87 var firstCloudPrintOptionPos = 0; 90 var firstCloudPrintOptionPos = 0;
88 var lastCloudPrintOptionPos = firstCloudPrintOptionPos; 91 var lastCloudPrintOptionPos = firstCloudPrintOptionPos;
89 92
90 // Store the current previewUid. 93 // Store the current previewUid.
91 var currentPreviewUid = ''; 94 var currentPreviewUid = '';
92 95
93 // True if we need to generate draft preview data. 96 // True if we need to generate draft preview data.
94 var generateDraftData = true; 97 var generateDraftData = true;
95 98
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
144 $('cancel-button').focus(); 147 $('cancel-button').focus();
145 previewArea.displayErrorMessageWithButtonAndNotify( 148 previewArea.displayErrorMessageWithButtonAndNotify(
146 localStrings.getString('noPlugin'), 149 localStrings.getString('noPlugin'),
147 localStrings.getString('launchNativeDialog'), 150 localStrings.getString('launchNativeDialog'),
148 launchNativePrintDialog); 151 launchNativePrintDialog);
149 $('mainview').parentElement.removeChild($('dummy-viewer')); 152 $('mainview').parentElement.removeChild($('dummy-viewer'));
150 return; 153 return;
151 } 154 }
152 155
153 $('system-dialog-link').addEventListener('click', onSystemDialogLinkClicked); 156 $('system-dialog-link').addEventListener('click', onSystemDialogLinkClicked);
157 if (cr.isMac) {
158 $('open-pdf-in-preview-link').addEventListener(
159 'click',onOpenPdfInPreviewLinkClicked);
csilv 2011/11/14 19:34:14 nit: space after comma, indent 4 spaces
kmadhusu 2011/11/16 17:59:40 Done.
160 }
154 $('mainview').parentElement.removeChild($('dummy-viewer')); 161 $('mainview').parentElement.removeChild($('dummy-viewer'));
155 162
156 $('printer-list').disabled = true; 163 $('printer-list').disabled = true;
157 164
158 pageSettings = print_preview.PageSettings.getInstance(); 165 pageSettings = print_preview.PageSettings.getInstance();
159 copiesSettings = print_preview.CopiesSettings.getInstance(); 166 copiesSettings = print_preview.CopiesSettings.getInstance();
160 layoutSettings = print_preview.LayoutSettings.getInstance(); 167 layoutSettings = print_preview.LayoutSettings.getInstance();
161 marginSettings = print_preview.MarginSettings.getInstance(); 168 marginSettings = print_preview.MarginSettings.getInstance();
162 headerFooterSettings = print_preview.HeaderFooterSettings.getInstance(); 169 headerFooterSettings = print_preview.HeaderFooterSettings.getInstance();
163 colorSettings = print_preview.ColorSettings.getInstance(); 170 colorSettings = print_preview.ColorSettings.getInstance();
(...skipping 11 matching lines...) Expand all
175 function disableInputElementsInSidebar() { 182 function disableInputElementsInSidebar() {
176 var els = $('navbar-container').querySelectorAll('input, button, select'); 183 var els = $('navbar-container').querySelectorAll('input, button, select');
177 for (var i = 0; i < els.length; i++) { 184 for (var i = 0; i < els.length; i++) {
178 if (els[i] == printHeader.cancelButton) 185 if (els[i] == printHeader.cancelButton)
179 continue; 186 continue;
180 els[i].disabled = true; 187 els[i].disabled = true;
181 } 188 }
182 } 189 }
183 190
184 /** 191 /**
192 * Enables the input elements in the sidebar.
193 */
194 function enableInputElementsInSidebar() {
195 var els = $('navbar-container').querySelectorAll('input, button, select');
196 for (var i = 0; i < els.length; i++)
197 els[i].disabled = false;
198 }
199
200 /**
185 * Disables the controls in the sidebar, shows the throbber and instructs the 201 * Disables the controls in the sidebar, shows the throbber and instructs the
186 * backend to open the native print dialog. 202 * backend to open the native print dialog.
187 */ 203 */
188 function onSystemDialogLinkClicked() { 204 function onSystemDialogLinkClicked() {
189 if (showingSystemDialog) 205 if (showingSystemDialog)
190 return; 206 return;
191 showingSystemDialog = true; 207 showingSystemDialog = true;
192 disableInputElementsInSidebar(); 208 disableInputElementsInSidebar();
193 $('system-dialog-throbber').hidden = false; 209 $('system-dialog-throbber').hidden = false;
194 chrome.send('showSystemDialog'); 210 chrome.send('showSystemDialog');
195 } 211 }
196 212
197 /** 213 /**
214 * Disables the controls in the sidebar, shows the throbber and instructs the
215 * backend to open the pdf in native preview app. This is only for Mac.
216 */
217 function onOpenPdfInPreviewLinkClicked() {
218 if (previewAppRequested)
219 return;
220 previewAppRequested = true;
221 disableInputElementsInSidebar();
222 $('open-preview-app-throbber').hidden = false;
223 printHeader.disableCancelButton();
224 requestToPrintDocument();
225 }
226
227 /**
198 * Similar to onSystemDialogLinkClicked(), but specific to the 228 * Similar to onSystemDialogLinkClicked(), but specific to the
199 * 'Launch native print dialog' UI. 229 * 'Launch native print dialog' UI.
200 */ 230 */
201 function launchNativePrintDialog() { 231 function launchNativePrintDialog() {
202 if (showingSystemDialog) 232 if (showingSystemDialog)
203 return; 233 return;
204 showingSystemDialog = true; 234 showingSystemDialog = true;
205 previewArea.errorButton.disabled = true; 235 previewArea.errorButton.disabled = true;
206 printHeader.disableCancelButton(); 236 printHeader.disableCancelButton();
207 $('native-print-dialog-throbber').hidden = false; 237 $('native-print-dialog-throbber').hidden = false;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 } 275 }
246 276
247 /** 277 /**
248 * Gets the selected printer capabilities and updates the controls accordingly. 278 * Gets the selected printer capabilities and updates the controls accordingly.
249 */ 279 */
250 function updateControlsWithSelectedPrinterCapabilities() { 280 function updateControlsWithSelectedPrinterCapabilities() {
251 var printerList = $('printer-list'); 281 var printerList = $('printer-list');
252 var selectedIndex = printerList.selectedIndex; 282 var selectedIndex = printerList.selectedIndex;
253 if (selectedIndex < 0) 283 if (selectedIndex < 0)
254 return; 284 return;
285 if (cr.isMac)
286 $('open-pdf-in-preview-link').disabled = false;
287
255 var skip_refresh = false; 288 var skip_refresh = false;
256 var selectedValue = printerList.options[selectedIndex].value; 289 var selectedValue = printerList.options[selectedIndex].value;
257 if (cloudprint.isCloudPrint(printerList.options[selectedIndex])) { 290 if (cloudprint.isCloudPrint(printerList.options[selectedIndex])) {
258 cloudprint.updatePrinterCaps(printerList.options[selectedIndex], 291 cloudprint.updatePrinterCaps(printerList.options[selectedIndex],
259 doUpdateCloudPrinterCapabilities); 292 doUpdateCloudPrinterCapabilities);
260 skip_refresh = true; 293 skip_refresh = true;
261 } else if (selectedValue == SIGN_IN || 294 } else if (selectedValue == SIGN_IN ||
262 selectedValue == MANAGE_CLOUD_PRINTERS || 295 selectedValue == MANAGE_CLOUD_PRINTERS ||
263 selectedValue == MANAGE_LOCAL_PRINTERS) { 296 selectedValue == MANAGE_LOCAL_PRINTERS) {
264 printerList.selectedIndex = lastSelectedPrinterIndex; 297 printerList.selectedIndex = lastSelectedPrinterIndex;
(...skipping 194 matching lines...) Expand 10 before | Expand all | Expand 10 after
459 * Asks the browser to print the preview PDF based on current print 492 * Asks the browser to print the preview PDF based on current print
460 * settings. If the preview is still loading, printPendingFile() will get 493 * settings. If the preview is still loading, printPendingFile() will get
461 * called once the preview loads. 494 * called once the preview loads.
462 */ 495 */
463 function requestToPrintDocument() { 496 function requestToPrintDocument() {
464 hasPendingPrintDocumentRequest = !isPrintReadyMetafileReady; 497 hasPendingPrintDocumentRequest = !isPrintReadyMetafileReady;
465 var selectedPrinterName = getSelectedPrinterName(); 498 var selectedPrinterName = getSelectedPrinterName();
466 var printToPDF = selectedPrinterName == PRINT_TO_PDF; 499 var printToPDF = selectedPrinterName == PRINT_TO_PDF;
467 var printWithCloudPrint = selectedPrinterName == PRINT_WITH_CLOUD_PRINT; 500 var printWithCloudPrint = selectedPrinterName == PRINT_WITH_CLOUD_PRINT;
468 if (hasPendingPrintDocumentRequest) { 501 if (hasPendingPrintDocumentRequest) {
469 if (printToPDF) { 502 if (previewAppRequested) {
503 previewArea.showCustomMessage(
504 localStrings.getString('openingPDFInPreview'));
505 } else if (printToPDF) {
470 sendPrintDocumentRequest(); 506 sendPrintDocumentRequest();
471 } else if (printWithCloudPrint) { 507 } else if (printWithCloudPrint) {
472 previewArea.showCustomMessage( 508 previewArea.showCustomMessage(
473 localStrings.getString('printWithCloudPrintWait')); 509 localStrings.getString('printWithCloudPrintWait'));
474 disableInputElementsInSidebar(); 510 disableInputElementsInSidebar();
475 } else { 511 } else {
476 isTabHidden = true; 512 isTabHidden = true;
477 chrome.send('hidePreview'); 513 chrome.send('hidePreview');
478 } 514 }
479 return; 515 return;
480 } 516 }
481 517
482 if (printToPDF) { 518 if (printToPDF || previewAppRequested) {
483 sendPrintDocumentRequest(); 519 sendPrintDocumentRequest();
484 } else { 520 } else {
485 window.setTimeout(function() { sendPrintDocumentRequest(); }, 1000); 521 window.setTimeout(function() { sendPrintDocumentRequest(); }, 1000);
486 } 522 }
487 } 523 }
488 524
489 /** 525 /**
490 * Sends a message to cancel the pending print request. 526 * Sends a message to cancel the pending print request.
491 */ 527 */
492 function cancelPendingPrintRequest() { 528 function cancelPendingPrintRequest() {
493 if (isTabHidden) 529 if (isTabHidden)
494 chrome.send('cancelPendingPrintRequest'); 530 chrome.send('cancelPendingPrintRequest');
495 } 531 }
496 532
497 /** 533 /**
498 * Sends a message to initiate print workflow. 534 * Sends a message to initiate print workflow.
499 */ 535 */
500 function sendPrintDocumentRequest() { 536 function sendPrintDocumentRequest() {
501 var printerList = $('printer-list'); 537 var printerList = $('printer-list');
502 var printer = printerList[printerList.selectedIndex]; 538 var printer = printerList[printerList.selectedIndex];
503 chrome.send('saveLastPrinter', [printer.value, cloudprint.getData(printer)]); 539 chrome.send('saveLastPrinter', [printer.value, cloudprint.getData(printer)]);
504 chrome.send('print', [JSON.stringify(getSettings()), 540
541 var settings = getSettings();
542 if (cr.isMac && previewAppRequested)
543 settings.OpenPDFInPreview = true;
544
545 chrome.send('print', [JSON.stringify(settings),
505 cloudprint.getPrintTicketJSON(printer)]); 546 cloudprint.getPrintTicketJSON(printer)]);
506 } 547 }
507 548
508 /** 549 /**
509 * Loads the selected preview pages. 550 * Loads the selected preview pages.
510 */ 551 */
511 function loadSelectedPages() { 552 function loadSelectedPages() {
512 pageSettings.updatePageSelection(); 553 pageSettings.updatePageSelection();
513 var pageSet = pageSettings.previouslySelectedPages; 554 var pageSet = pageSettings.previouslySelectedPages;
514 var pageCount = pageSet.length; 555 var pageCount = pageSet.length;
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
746 localStrings.getString('previewFailed'), 787 localStrings.getString('previewFailed'),
747 localStrings.getString('launchNativeDialog'), 788 localStrings.getString('launchNativeDialog'),
748 launchNativePrintDialog); 789 launchNativePrintDialog);
749 } 790 }
750 791
751 /** 792 /**
752 * Display an error message when encountered invalid printer settings. 793 * Display an error message when encountered invalid printer settings.
753 * Called from PrintPreviewMessageHandler::OnInvalidPrinterSettings(). 794 * Called from PrintPreviewMessageHandler::OnInvalidPrinterSettings().
754 */ 795 */
755 function invalidPrinterSettings() { 796 function invalidPrinterSettings() {
797 if (cr.isMac) {
798 if (previewAppRequested) {
799 $('open-preview-app-throbber').hidden = true;
800 previewArea.clearCustomMessageWithDots();
801 previewAppRequested = false;
802 hasPendingPrintDocumentRequest = false;
803 enableInputElementsInSidebar();
804 }
805 $('open-pdf-in-preview-link').disabled = true;
806 }
756 previewArea.displayErrorMessageAndNotify( 807 previewArea.displayErrorMessageAndNotify(
757 localStrings.getString('invalidPrinterSettings')); 808 localStrings.getString('invalidPrinterSettings'));
758 } 809 }
759 810
760 /** 811 /**
761 * Called when the PDF plugin loads its document. 812 * Called when the PDF plugin loads its document.
762 */ 813 */
763 function onPDFLoad() { 814 function onPDFLoad() {
764 if (previewModifiable) { 815 if (previewModifiable) {
765 setPluginPreviewPageCount(); 816 setPluginPreviewPageCount();
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
1100 <include src="copies_settings.js"/> 1151 <include src="copies_settings.js"/>
1101 <include src="header_footer_settings.js"/> 1152 <include src="header_footer_settings.js"/>
1102 <include src="layout_settings.js"/> 1153 <include src="layout_settings.js"/>
1103 <include src="color_settings.js"/> 1154 <include src="color_settings.js"/>
1104 <include src="margin_settings.js"/> 1155 <include src="margin_settings.js"/>
1105 <include src="margin_textbox.js"/> 1156 <include src="margin_textbox.js"/>
1106 <include src="margin_utils.js"/> 1157 <include src="margin_utils.js"/>
1107 <include src="margins_ui.js"/> 1158 <include src="margins_ui.js"/>
1108 <include src="margins_ui_pair.js"/> 1159 <include src="margins_ui_pair.js"/>
1109 <include src="preview_area.js"/> 1160 <include src="preview_area.js"/>
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698