/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 2000 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */ #include "nsPrintSettingsImpl.h" #include "nsCoord.h" #include "nsReadableUtils.h" // For Prefs #include "nsIPref.h" #include "nsIServiceManager.h" NS_IMPL_ISUPPORTS1(nsPrintSettings, nsIPrintSettings) /** --------------------------------------------------- * See documentation in nsPrintSettingsImpl.h * @update 6/21/00 dwc */ nsPrintSettings::nsPrintSettings() : mPrintRange(kRangeAllPages), mStartPageNum(1), mEndPageNum(1), mScaling(1.0), mPrintBGColors(PR_FALSE), mPrintBGImages(PR_FALSE), mPrintOptions(0L), mPrintReversed(PR_FALSE), mPrintInColor(PR_TRUE), mOrientation(kPortraitOrientation), mPrintToFile(PR_FALSE), mPrintFrameType(kFramesAsIs), mPrintPageDelay(500), mPrintSilent(PR_FALSE) { NS_INIT_ISUPPORTS(); /* member initializers and constructor code */ nscoord halfInch = NS_INCHES_TO_TWIPS(0.5); mMargin.SizeTo(halfInch, halfInch, halfInch, halfInch); mPrintOptions = kOptPrintOddPages | kOptPrintEvenPages; mHeaderStrs[0].AssignLiteral("&T"); mHeaderStrs[2].AssignLiteral("&U"); mFooterStrs[0].AssignLiteral("&PT"); // Use &P (Page Num Only) or &PT (Page Num of Page Total) mFooterStrs[2].AssignLiteral("&D"); } /** --------------------------------------------------- * See documentation in nsPrintSettingsImpl.h * @update 6/21/00 dwc */ nsPrintSettings::~nsPrintSettings() { } /* attribute long startPageRange; */ NS_IMETHODIMP nsPrintSettings::GetStartPageRange(PRInt32 *aStartPageRange) { //NS_ENSURE_ARG_POINTER(aStartPageRange); *aStartPageRange = mStartPageNum; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetStartPageRange(PRInt32 aStartPageRange) { mStartPageNum = aStartPageRange; return NS_OK; } /* attribute long endPageRange; */ NS_IMETHODIMP nsPrintSettings::GetEndPageRange(PRInt32 *aEndPageRange) { //NS_ENSURE_ARG_POINTER(aEndPageRange); *aEndPageRange = mEndPageNum; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetEndPageRange(PRInt32 aEndPageRange) { mEndPageNum = aEndPageRange; return NS_OK; } /* attribute boolean printReversed; */ NS_IMETHODIMP nsPrintSettings::GetPrintReversed(PRBool *aPrintReversed) { //NS_ENSURE_ARG_POINTER(aPrintReversed); *aPrintReversed = mPrintReversed; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintReversed(PRBool aPrintReversed) { mPrintReversed = aPrintReversed; return NS_OK; } /* attribute boolean printInColor; */ NS_IMETHODIMP nsPrintSettings::GetPrintInColor(PRBool *aPrintInColor) { //NS_ENSURE_ARG_POINTER(aPrintInColor); *aPrintInColor = mPrintInColor; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintInColor(PRBool aPrintInColor) { mPrintInColor = aPrintInColor; return NS_OK; } /* attribute short orientation; */ NS_IMETHODIMP nsPrintSettings::GetOrientation(PRInt32 *aOrientation) { //NS_ENSURE_ARG_POINTER(aOrientation); *aOrientation = mOrientation; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetOrientation(PRInt32 aOrientation) { mOrientation = aOrientation; return NS_OK; } /* attribute wstring printCommand; */ NS_IMETHODIMP nsPrintSettings::GetPrintCommand(PRUnichar * *aPrintCommand) { //NS_ENSURE_ARG_POINTER(aPrintCommand); *aPrintCommand = ToNewUnicode(mPrintCommand); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintCommand(const PRUnichar * aPrintCommand) { mPrintCommand = aPrintCommand; return NS_OK; } /* attribute boolean printToFile; */ NS_IMETHODIMP nsPrintSettings::GetPrintToFile(PRBool *aPrintToFile) { //NS_ENSURE_ARG_POINTER(aPrintToFile); *aPrintToFile = mPrintToFile; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintToFile(PRBool aPrintToFile) { mPrintToFile = aPrintToFile; return NS_OK; } /* attribute wstring toFileName; */ NS_IMETHODIMP nsPrintSettings::GetToFileName(PRUnichar * *aToFileName) { //NS_ENSURE_ARG_POINTER(aToFileName); *aToFileName = ToNewUnicode(mToFileName); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetToFileName(const PRUnichar * aToFileName) { mToFileName = aToFileName; return NS_OK; } /* attribute long printPageDelay; */ NS_IMETHODIMP nsPrintSettings::GetPrintPageDelay(PRInt32 *aPrintPageDelay) { *aPrintPageDelay = mPrintPageDelay; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintPageDelay(PRInt32 aPrintPageDelay) { mPrintPageDelay = aPrintPageDelay; return NS_OK; } /* attribute double marginTop; */ NS_IMETHODIMP nsPrintSettings::GetMarginTop(double *aMarginTop) { NS_ENSURE_ARG_POINTER(aMarginTop); *aMarginTop = NS_TWIPS_TO_INCHES(mMargin.top); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetMarginTop(double aMarginTop) { mMargin.top = NS_INCHES_TO_TWIPS(float(aMarginTop)); return NS_OK; } /* attribute double marginLeft; */ NS_IMETHODIMP nsPrintSettings::GetMarginLeft(double *aMarginLeft) { NS_ENSURE_ARG_POINTER(aMarginLeft); *aMarginLeft = NS_TWIPS_TO_INCHES(mMargin.left); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetMarginLeft(double aMarginLeft) { mMargin.left = NS_INCHES_TO_TWIPS(float(aMarginLeft)); return NS_OK; } /* attribute double marginBottom; */ NS_IMETHODIMP nsPrintSettings::GetMarginBottom(double *aMarginBottom) { NS_ENSURE_ARG_POINTER(aMarginBottom); *aMarginBottom = NS_TWIPS_TO_INCHES(mMargin.bottom); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetMarginBottom(double aMarginBottom) { mMargin.bottom = NS_INCHES_TO_TWIPS(float(aMarginBottom)); return NS_OK; } /* attribute double marginRight; */ NS_IMETHODIMP nsPrintSettings::GetMarginRight(double *aMarginRight) { NS_ENSURE_ARG_POINTER(aMarginRight); *aMarginRight = NS_TWIPS_TO_INCHES(mMargin.right); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetMarginRight(double aMarginRight) { mMargin.right = NS_INCHES_TO_TWIPS(float(aMarginRight)); return NS_OK; } /* attribute double scaling; */ NS_IMETHODIMP nsPrintSettings::GetScaling(double *aScaling) { NS_ENSURE_ARG_POINTER(aScaling); *aScaling = mScaling; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetScaling(double aScaling) { mScaling = aScaling; return NS_OK; } /* attribute boolean printBGColors; */ NS_IMETHODIMP nsPrintSettings::GetPrintBGColors(PRBool *aPrintBGColors) { NS_ENSURE_ARG_POINTER(aPrintBGColors); *aPrintBGColors = mPrintBGColors; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintBGColors(PRBool aPrintBGColors) { mPrintBGColors = aPrintBGColors; return NS_OK; } /* attribute boolean printBGImages; */ NS_IMETHODIMP nsPrintSettings::GetPrintBGImages(PRBool *aPrintBGImages) { NS_ENSURE_ARG_POINTER(aPrintBGImages); *aPrintBGImages = mPrintBGImages; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintBGImages(PRBool aPrintBGImages) { mPrintBGImages = aPrintBGImages; return NS_OK; } /* attribute long printRange; */ NS_IMETHODIMP nsPrintSettings::GetPrintRange(PRInt16 *aPrintRange) { NS_ENSURE_ARG_POINTER(aPrintRange); *aPrintRange = mPrintRange; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintRange(PRInt16 aPrintRange) { mPrintRange = aPrintRange; return NS_OK; } /* attribute wstring docTitle; */ NS_IMETHODIMP nsPrintSettings::GetTitle(PRUnichar * *aTitle) { NS_ENSURE_ARG_POINTER(aTitle); *aTitle = ToNewUnicode(mTitle); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetTitle(const PRUnichar * aTitle) { NS_ENSURE_ARG_POINTER(aTitle); mTitle = aTitle; return NS_OK; } /* attribute wstring docURL; */ NS_IMETHODIMP nsPrintSettings::GetDocURL(PRUnichar * *aDocURL) { NS_ENSURE_ARG_POINTER(aDocURL); *aDocURL = ToNewUnicode(mURL); return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetDocURL(const PRUnichar * aDocURL) { NS_ENSURE_ARG_POINTER(aDocURL); mURL = aDocURL; return NS_OK; } /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 1/12/01 rods */ NS_IMETHODIMP nsPrintSettings::GetPrintOptions(PRInt32 aType, PRBool *aTurnOnOff) { NS_ENSURE_ARG_POINTER(aTurnOnOff); *aTurnOnOff = mPrintOptions & aType; return NS_OK; } /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 1/12/01 rods */ NS_IMETHODIMP nsPrintSettings::SetPrintOptions(PRInt32 aType, PRBool aTurnOnOff) { if (aTurnOnOff) { mPrintOptions |= aType; } else { mPrintOptions &= ~aType; } return NS_OK; } /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 1/12/01 rods */ NS_IMETHODIMP nsPrintSettings::GetPrintOptionsBits(PRInt32 *aBits) { NS_ENSURE_ARG_POINTER(aBits); *aBits = mPrintOptions; return NS_OK; } /* attribute wstring docTitle; */ nsresult nsPrintSettings::GetMarginStrs(PRUnichar * *aTitle, nsHeaderFooterEnum aType, PRInt16 aJust) { NS_ENSURE_ARG_POINTER(aTitle); *aTitle = nsnull; if (aType == eHeader) { switch (aJust) { case kJustLeft: *aTitle = ToNewUnicode(mHeaderStrs[0]);break; case kJustCenter: *aTitle = ToNewUnicode(mHeaderStrs[1]);break; case kJustRight: *aTitle = ToNewUnicode(mHeaderStrs[2]);break; } //switch } else { switch (aJust) { case kJustLeft: *aTitle = ToNewUnicode(mFooterStrs[0]);break; case kJustCenter: *aTitle = ToNewUnicode(mFooterStrs[1]);break; case kJustRight: *aTitle = ToNewUnicode(mFooterStrs[2]);break; } //switch } return NS_OK; } nsresult nsPrintSettings::SetMarginStrs(const PRUnichar * aTitle, nsHeaderFooterEnum aType, PRInt16 aJust) { NS_ENSURE_ARG_POINTER(aTitle); if (aType == eHeader) { switch (aJust) { case kJustLeft: mHeaderStrs[0] = aTitle;break; case kJustCenter: mHeaderStrs[1] = aTitle;break; case kJustRight: mHeaderStrs[2] = aTitle;break; } //switch } else { switch (aJust) { case kJustLeft: mFooterStrs[0] = aTitle;break; case kJustCenter: mFooterStrs[1] = aTitle;break; case kJustRight: mFooterStrs[2] = aTitle;break; } //switch } return NS_OK; } /* attribute wstring Header String Left */ NS_IMETHODIMP nsPrintSettings::GetHeaderStrLeft(PRUnichar * *aTitle) { return GetMarginStrs(aTitle, eHeader, kJustLeft); } NS_IMETHODIMP nsPrintSettings::SetHeaderStrLeft(const PRUnichar * aTitle) { return SetMarginStrs(aTitle, eHeader, kJustLeft); } /* attribute wstring Header String Center */ NS_IMETHODIMP nsPrintSettings::GetHeaderStrCenter(PRUnichar * *aTitle) { return GetMarginStrs(aTitle, eHeader, kJustCenter); } NS_IMETHODIMP nsPrintSettings::SetHeaderStrCenter(const PRUnichar * aTitle) { return SetMarginStrs(aTitle, eHeader, kJustCenter); } /* attribute wstring Header String Right */ NS_IMETHODIMP nsPrintSettings::GetHeaderStrRight(PRUnichar * *aTitle) { return GetMarginStrs(aTitle, eHeader, kJustRight); } NS_IMETHODIMP nsPrintSettings::SetHeaderStrRight(const PRUnichar * aTitle) { return SetMarginStrs(aTitle, eHeader, kJustRight); } /* attribute wstring Footer String Left */ NS_IMETHODIMP nsPrintSettings::GetFooterStrLeft(PRUnichar * *aTitle) { return GetMarginStrs(aTitle, eFooter, kJustLeft); } NS_IMETHODIMP nsPrintSettings::SetFooterStrLeft(const PRUnichar * aTitle) { return SetMarginStrs(aTitle, eFooter, kJustLeft); } /* attribute wstring Footer String Center */ NS_IMETHODIMP nsPrintSettings::GetFooterStrCenter(PRUnichar * *aTitle) { return GetMarginStrs(aTitle, eFooter, kJustCenter); } NS_IMETHODIMP nsPrintSettings::SetFooterStrCenter(const PRUnichar * aTitle) { return SetMarginStrs(aTitle, eFooter, kJustCenter); } /* attribute wstring Footer String Right */ NS_IMETHODIMP nsPrintSettings::GetFooterStrRight(PRUnichar * *aTitle) { return GetMarginStrs(aTitle, eFooter, kJustRight); } NS_IMETHODIMP nsPrintSettings::SetFooterStrRight(const PRUnichar * aTitle) { return SetMarginStrs(aTitle, eFooter, kJustRight); } /* attribute long printFrame; */ NS_IMETHODIMP nsPrintSettings::GetPrintFrameType(PRInt16 *aPrintFrameType) { NS_ENSURE_ARG_POINTER(aPrintFrameType); *aPrintFrameType = (PRInt32)mPrintFrameType; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintFrameType(PRInt16 aPrintFrameType) { mPrintFrameType = aPrintFrameType; return NS_OK; } /* attribute long isCancelled; */ NS_IMETHODIMP nsPrintSettings::GetPrintSilent(PRBool *aPrintSilent) { NS_ENSURE_ARG_POINTER(aPrintSilent); *aPrintSilent = mPrintSilent; return NS_OK; } NS_IMETHODIMP nsPrintSettings::SetPrintSilent(PRBool aPrintSilent) { mPrintSilent = aPrintSilent; return NS_OK; }