summaryrefslogtreecommitdiffstats
path: root/printing
diff options
context:
space:
mode:
authorkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-05 18:50:23 +0000
committerkmadhusu@chromium.org <kmadhusu@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-04-05 18:50:23 +0000
commitc97e5e844b09c0d70951beb0477fdc486b825188 (patch)
tree91524dfa7ec423ba0f27f75f7ea38b77c82d6e31 /printing
parentd76bbf097760840a476decbadfa389865d1f53a3 (diff)
downloadchromium_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.cc6
-rw-r--r--printing/print_job_constants.h2
-rw-r--r--printing/printing_context.cc14
-rw-r--r--printing/printing_context.h7
-rw-r--r--printing/printing_context_cairo.cc3
-rw-r--r--printing/printing_context_mac.h8
-rw-r--r--printing/printing_context_mac.mm35
-rw-r--r--printing/printing_context_win.cc3
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);