diff options
author | maruel@chromium.org <maruel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-09 16:36:44 +0000 |
---|---|---|
committer | maruel@chromium.org <maruel@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-04-09 16:36:44 +0000 |
commit | d7546c4042bb93eb0be113debc9678b3ac7045c7 (patch) | |
tree | 09150ad121496b59d28dafc155600bda3827109c /chrome/browser/printing | |
parent | 2645a758e49d27e759c8c1075def8d7973e87e6f (diff) | |
download | chromium_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.cc | 50 | ||||
-rw-r--r-- | chrome/browser/printing/page_overlays.h | 6 | ||||
-rw-r--r-- | chrome/browser/printing/page_overlays_unittest.cc | 15 |
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"); } |