diff options
author | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 18:50:23 +0000 |
---|---|---|
committer | kmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-04-05 18:50:23 +0000 |
commit | c97e5e844b09c0d70951beb0477fdc486b825188 (patch) | |
tree | 91524dfa7ec423ba0f27f75f7ea38b77c82d6e31 /printing | |
parent | d76bbf097760840a476decbadfa389865d1f53a3 (diff) | |
download | chromium_src-c97e5e844b09c0d70951beb0477fdc486b825188.zip chromium_src-c97e5e844b09c0d70951beb0477fdc486b825188.tar.gz chromium_src-c97e5e844b09c0d70951beb0477fdc486b825188.tar.bz2 |
PrintPreview: Set number of copies and collate in print ticket.
BUG=none
TEST=Enable print preview on mac. Print preview a webpage. Change the number of copies and collate setting values. Print the preview data.
Review URL: http://codereview.chromium.org/6780001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@80499 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'printing')
-rw-r--r-- | printing/print_job_constants.cc | 6 | ||||
-rw-r--r-- | printing/print_job_constants.h | 2 | ||||
-rw-r--r-- | printing/printing_context.cc | 14 | ||||
-rw-r--r-- | printing/printing_context.h | 7 | ||||
-rw-r--r-- | printing/printing_context_cairo.cc | 3 | ||||
-rw-r--r-- | printing/printing_context_mac.h | 8 | ||||
-rw-r--r-- | printing/printing_context_mac.mm | 35 | ||||
-rw-r--r-- | printing/printing_context_win.cc | 3 |
8 files changed, 51 insertions, 27 deletions
diff --git a/printing/print_job_constants.cc b/printing/print_job_constants.cc index 1e316be..5442690 100644 --- a/printing/print_job_constants.cc +++ b/printing/print_job_constants.cc @@ -6,9 +6,15 @@ namespace printing { +// Print job setting 'collate'. +const char kSettingCollate[] = "collate"; + // Print out color: true for color, false for grayscale. const char kSettingColor[] = "color"; +// Number of copies. +const char kSettingCopies[] = "copies"; + // Page orientation: true for landscape, false for portrait. const char kSettingLandscape[] = "landscape"; diff --git a/printing/print_job_constants.h b/printing/print_job_constants.h index 8a0f41a..b34915c 100644 --- a/printing/print_job_constants.h +++ b/printing/print_job_constants.h @@ -7,7 +7,9 @@ namespace printing { +extern const char kSettingCollate[]; extern const char kSettingColor[]; +extern const char kSettingCopies[]; extern const char kSettingLandscape[]; extern const char kSettingPrintToPDF[]; extern const char kSettingPrinterName[]; diff --git a/printing/printing_context.cc b/printing/printing_context.cc index 390d8f0..fb554e7 100644 --- a/printing/printing_context.cc +++ b/printing/printing_context.cc @@ -5,7 +5,6 @@ #include "printing/printing_context.h" #include "base/values.h" -#include "printing/print_job_constants.h" namespace printing { @@ -29,19 +28,6 @@ void PrintingContext::ResetSettings() { abort_printing_ = false; } -bool PrintingContext::GetSettingsFromDict(const DictionaryValue& settings, - bool* landscape, - std::string* printerName) { - bool ret = true; - if (landscape) - ret &= settings.GetBoolean(kSettingLandscape, landscape); - - if (printerName) - ret &= settings.GetString(kSettingPrinterName, printerName); - - return ret; -} - PrintingContext::Result PrintingContext::OnError() { ResetSettings(); return abort_printing_ ? CANCEL : FAILED; diff --git a/printing/printing_context.h b/printing/printing_context.h index 0a30cea..c4e2094 100644 --- a/printing/printing_context.h +++ b/printing/printing_context.h @@ -104,13 +104,6 @@ class PrintingContext { // Reinitializes the settings for object reuse. void ResetSettings(); - // Extracts print job settings from |settings|. Out parameters can be NULL. - // Returns true if all non-NULL out parameters are successfully extracted - // from |settings| else returns false. - bool GetSettingsFromDict(const DictionaryValue& settings, - bool* landscape, - std::string* printerName); - // Does bookkeeping when an error occurs. PrintingContext::Result OnError(); diff --git a/printing/printing_context_cairo.cc b/printing/printing_context_cairo.cc index 17e7885..7f31efb 100644 --- a/printing/printing_context_cairo.cc +++ b/printing/printing_context_cairo.cc @@ -6,6 +6,7 @@ #include "base/logging.h" #include "base/values.h" +#include "printing/print_job_constants.h" #include "printing/print_settings_initializer_gtk.h" #include "printing/units.h" @@ -153,7 +154,7 @@ PrintingContext::Result PrintingContextCairo::UpdatePrintSettings( DCHECK(!in_print_job_); bool landscape; - if (!GetSettingsFromDict(job_settings, &landscape, NULL)) + if (!job_settings.GetBoolean(kSettingLandscape, &landscape)) return OnError(); settings_.SetOrientation(landscape); diff --git a/printing/printing_context_mac.h b/printing/printing_context_mac.h index 6c7097c..54ad559 100644 --- a/printing/printing_context_mac.h +++ b/printing/printing_context_mac.h @@ -51,6 +51,14 @@ class PrintingContextMac : public PrintingContext { // Returns true if the printer was set else returns false. bool SetPrinter(const std::string& printer_name); + // Sets |copies| in PMPrintSettings. + // Returns true if the number of copies is set. + bool SetCopiesInPrintSettings(int copies); + + // Sets |collate| in PMPrintSettings. + // Returns true if |collate| is set. + bool SetCollateInPrintSettings(bool collate); + // The native print info object. scoped_nsobject<NSPrintInfo> print_info_; diff --git a/printing/printing_context_mac.mm b/printing/printing_context_mac.mm index 9357e77..cc5b808 100644 --- a/printing/printing_context_mac.mm +++ b/printing/printing_context_mac.mm @@ -11,6 +11,7 @@ #include "base/mac/scoped_cftyperef.h" #include "base/sys_string_conversions.h" #include "base/values.h" +#include "printing/print_job_constants.h" #include "printing/print_settings_initializer_mac.h" namespace printing { @@ -85,22 +86,33 @@ PrintingContext::Result PrintingContextMac::UpdatePrintSettings( const DictionaryValue& job_settings, const PageRanges& ranges) { DCHECK(!in_print_job_); - // TODO (kmadhusu): Update other print job settings such as number of copies, - // collate, etc., - ResetSettings(); print_info_.reset([[NSPrintInfo sharedPrintInfo] copy]); bool landscape; std::string printer_name; - if (!GetSettingsFromDict(job_settings, &landscape, &printer_name)) + int copies; + bool collate; + if (!job_settings.GetBoolean(kSettingLandscape, &landscape) || + !job_settings.GetString(kSettingPrinterName, &printer_name) || + !job_settings.GetInteger(kSettingCopies, &copies) || + !job_settings.GetBoolean(kSettingCollate, &collate)) { return OnError(); + } settings_.SetOrientation(landscape); if (!SetPrinter(printer_name)) return OnError(); + if (!SetCopiesInPrintSettings(copies)) + return OnError(); + + if (!SetCollateInPrintSettings(collate)) + return OnError(); + + [print_info_.get() updateFromPMPrintSettings]; + InitPrintSettingsFromPrintInfo(ranges); return OK; } @@ -132,6 +144,21 @@ bool PrintingContextMac::SetPrinter(const std::string& printer_name) { return true; } +bool PrintingContextMac::SetCopiesInPrintSettings(int copies) { + if (copies < 1) + return false; + + PMPrintSettings pmPrintSettings = + static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]); + return PMSetCopies(pmPrintSettings, copies, false) == noErr; +} + +bool PrintingContextMac::SetCollateInPrintSettings(bool collate) { + PMPrintSettings pmPrintSettings = + static_cast<PMPrintSettings>([print_info_.get() PMPrintSettings]); + return PMSetCollate(pmPrintSettings, collate) == noErr; +} + void PrintingContextMac::ParsePrintInfo(NSPrintInfo* print_info) { ResetSettings(); print_info_.reset([print_info retain]); diff --git a/printing/printing_context_win.cc b/printing/printing_context_win.cc index b1b8ba9..1acdc6a 100644 --- a/printing/printing_context_win.cc +++ b/printing/printing_context_win.cc @@ -12,6 +12,7 @@ #include "base/time.h" #include "base/utf_string_conversions.h" #include "base/values.h" +#include "printing/print_job_constants.h" #include "printing/print_settings_initializer_win.h" #include "printing/printed_document.h" #include "skia/ext/platform_device_win.h" @@ -214,7 +215,7 @@ PrintingContext::Result PrintingContextWin::UpdatePrintSettings( DCHECK(!in_print_job_); bool landscape; - if (!GetSettingsFromDict(job_settings, &landscape, NULL)) + if (!job_settings.GetBoolean(kSettingLandscape, &landscape)) return OnError(); settings_.SetOrientation(landscape); |