summaryrefslogtreecommitdiffstats
path: root/chrome/browser/printing
diff options
context:
space:
mode:
authormaruel@chromium.org <maruel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-09 16:36:44 +0000
committermaruel@chromium.org <maruel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-04-09 16:36:44 +0000
commitd7546c4042bb93eb0be113debc9678b3ac7045c7 (patch)
tree09150ad121496b59d28dafc155600bda3827109c /chrome/browser/printing
parent2645a758e49d27e759c8c1075def8d7973e87e6f (diff)
downloadchromium_src-d7546c4042bb93eb0be113debc9678b3ac7045c7.zip
chromium_src-d7546c4042bb93eb0be113debc9678b3ac7045c7.tar.gz
chromium_src-d7546c4042bb93eb0be113debc9678b3ac7045c7.tar.bz2
Implement Printer Preference Persistence (Step 1/3)
Introduce new "Preferences" for printer overlays were added in PrefNames: - printing.page.header.left - printing.page.header.center - printing.page.header.right - printing.page.footer.left - printing.page.footer.center - printing.page.footer.right The prefs file will look like this: "printing": { "page": { "header": { "left": " ", "center": " ", "right": " " }, "footer": { "left": "{date}", "center": " ", "right": " " } } } The steps for Printer Preferences: Step 1: Introduce some sort of persistence for header/footer which is located in the Preference file. Step 2: Allow PrinterQuery to read those stored preferences and setup PrinterSettings so that it will apply it when printing. Step 3: Create a UI for the print preference, so that the users will easily change those printing settings. NOTE: I tested the following approach while doing a simple Hack with PrintJob (if you see the previous patch), and it works great, with some bad after effect. It was done for testing purposes. So I hope we are going in the right direction. BUG=947 (http://crbug.com/947) Patch contributed by Mohamed Mansour <m0.interactive@gmail.com> Review: http://codereview.chromium.org/60118/show git-svn-id: svn://svn.chromium.org/chrome/trunk/src@13426 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/printing')
-rw-r--r--chrome/browser/printing/page_overlays.cc50
-rw-r--r--chrome/browser/printing/page_overlays.h6
-rw-r--r--chrome/browser/printing/page_overlays_unittest.cc15
3 files changed, 68 insertions, 3 deletions
diff --git a/chrome/browser/printing/page_overlays.cc b/chrome/browser/printing/page_overlays.cc
index eb1d3c6..4a20dd6 100644
--- a/chrome/browser/printing/page_overlays.cc
+++ b/chrome/browser/printing/page_overlays.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -84,6 +84,54 @@ const std::wstring& PageOverlays::GetOverlay(HorizontalPosition x,
return EmptyWString();
}
+void PageOverlays::SetOverlay(HorizontalPosition x, VerticalPosition y,
+ std::wstring& input) {
+ switch (x) {
+ case LEFT:
+ switch (y) {
+ case TOP:
+ top_left = input;
+ break;
+ case BOTTOM:
+ bottom_left = input;
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+ break;
+ case CENTER:
+ switch (y) {
+ case TOP:
+ top_center = input;
+ break;
+ case BOTTOM:
+ bottom_center = input;
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+ break;
+ case RIGHT:
+ switch (y) {
+ case TOP:
+ top_right = input;
+ break;
+ case BOTTOM:
+ bottom_right = input;
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+ break;
+ default:
+ NOTREACHED();
+ break;
+ }
+}
+
//static
std::wstring PageOverlays::ReplaceVariables(const std::wstring& input,
const PrintedDocument& document,
diff --git a/chrome/browser/printing/page_overlays.h b/chrome/browser/printing/page_overlays.h
index 42e77fc..7663153 100644
--- a/chrome/browser/printing/page_overlays.h
+++ b/chrome/browser/printing/page_overlays.h
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -39,6 +39,10 @@ class PageOverlays {
const std::wstring& GetOverlay(HorizontalPosition x,
VerticalPosition y) const;
+ // Sets the string of an overlay according to its x,y position.
+ void SetOverlay(HorizontalPosition x, VerticalPosition y,
+ std::wstring& input);
+
// Replaces the variables in |input| with their actual values according to the
// properties of the current printed document and the current printed page.
static std::wstring ReplaceVariables(const std::wstring& input,
diff --git a/chrome/browser/printing/page_overlays_unittest.cc b/chrome/browser/printing/page_overlays_unittest.cc
index 04104a8..0710f33 100644
--- a/chrome/browser/printing/page_overlays_unittest.cc
+++ b/chrome/browser/printing/page_overlays_unittest.cc
@@ -1,4 +1,4 @@
-// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
+// Copyright (c) 2006-2009 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -73,4 +73,17 @@ TEST_F(PageOverlaysTest, StringConversion) {
EXPECT_EQ(StringPrintf(L"foo%lsbar", kOverlayKeys[i].expected), out) <<
kOverlayKeys[i].key;
}
+
+ // Check if SetOverlay really sets the page overlay.
+ overlays.SetOverlay(printing::PageOverlays::LEFT,
+ printing::PageOverlays::TOP,
+ UTF16ToWide(L"Page {page}"));
+ input = overlays.GetOverlay(printing::PageOverlays::LEFT,
+ printing::PageOverlays::TOP);
+ EXPECT_EQ(input, L"Page {page}");
+
+ // Replace the variables to see if the page number is correct.
+ out = printing::PageOverlays::ReplaceVariables(input, *doc.get(),
+ *page.get());
+ EXPECT_EQ(out, L"Page 1");
}