diff --git a/widget/public/nsIPrintOptions.idl b/widget/public/nsIPrintOptions.idl index ed88186a1e4a..2b201a9d981c 100644 --- a/widget/public/nsIPrintOptions.idl +++ b/widget/public/nsIPrintOptions.idl @@ -62,100 +62,11 @@ interface nsISimpleEnumerator; interface nsIPrintOptions : nsISupports { - /* Print Option Flags for Bit Field*/ - const long kOptPrintOddPages = 0x00000001; - const long kOptPrintEvenPages = 0x00000002; - const long kPrintOptionsEnableSelectionRB = 0x00000004; - - /* Print Range Enums */ - const long kRangeAllPages = 0; - const long kRangeSpecifiedPageRange = 1; - const long kRangeSelection = 2; - const long kRangeFocusFrame = 3; - - /* Justification Enums */ - const long kJustLeft = 0; - const long kJustCenter = 1; - const long kJustRight = 2; - - /** - * Page Size Constants (NOTE: These have been deprecated!); - */ - const short kLetterPaperSize = 0; - const short kLegalPaperSize = 1; - const short kExecutivePaperSize = 2; - const short kA4PaperSize = 3; - const short kA3PaperSize = 4; - - /** - * FrameSet Default Type Constants - */ - const short kUseInternalDefault = 0; - const short kUseSettingWhenPossible = 1; - - /** - * Page Size Type Constants - */ - const short kPaperSizeNativeData = 0; - const short kPaperSizeDefined = 1; - - /** - * Page Size Unit Constants - */ - const short kPaperSizeInches = 0; - const short kPaperSizeMillimeters = 1; - - /** - * Orientation Constants - */ - const short kPortraitOrientation = 0; - const short kLandscapeOrientation = 1; - - /** - * Print Frame Constants - */ - const short kNoFrames = 0; - const short kFramesAsIs = 1; - const short kSelectedFrame = 2; - const short kEachFrameSep = 3; - - /** - * How to Enable Frame Set Printing Constants - */ - const short kFrameEnableNone = 0; - const short kFrameEnableAll = 1; - const short kFrameEnableAsIsAndEach = 2; - /** * Show Native Print Options dialog, this may not be supported on all platforms */ void ShowPrintSetupDialog(in nsIPrintSettings aThePrintSettings); - /** - * Set PrintOptions - */ - void SetPrintOptions(in PRInt32 aType, in PRBool aTurnOnOff); - - /** - * Get PrintOptions - */ - PRBool GetPrintOptions(in PRInt32 aType); - - /** - * Set PrintOptions Bit field - */ - PRInt32 GetPrintOptionsBits(); - - /** - * Read Prefs - */ - void ReadPrefs(); - - /** - * Write Prefs - */ - void WritePrefs(); - /** * Creates a new PrintSettnigs Object * and initializes it from prefs @@ -171,79 +82,20 @@ interface nsIPrintOptions : nsISupports /** * Initialize the values in the PrintSettings from Prefs + * aPS - PrintSettings to have its settings read + * aUsePrinterNamePrefix - indicates whether to use the printer name as a prefix */ - void InitPrintSettingsFromPrefs(in nsIPrintSettings aPO); + void initPrintSettingsFromPrefs(in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); /** - * Data Members + * Save all the PrintSettings to Prefs. + * This is on a printer by printer basis + * Or saved generically if the printer name is null or empty + * + * aPS - PrintSettings to have its settings saved + * aUsePrinterNamePrefix - indicates whether to use the printer name as a prefix */ - attribute long startPageRange; - attribute long endPageRange; - - attribute double marginTop; /* these are in inches */ - attribute double marginLeft; - attribute double marginBottom; - attribute double marginRight; - - attribute double scaling; /* values 0.0 - 1.0 */ - attribute boolean printBGColors; /* Print Background Colors */ - attribute boolean printBGImages; /* Print Background Images */ - - attribute short printRange; - - attribute wstring title; - attribute wstring docURL; - - attribute wstring headerStrLeft; - attribute wstring headerStrCenter; - attribute wstring headerStrRight; - - attribute wstring footerStrLeft; - attribute wstring footerStrCenter; - attribute wstring footerStrRight; - - attribute short howToEnableFrameUI; - attribute boolean isCancelled; - attribute short printFrameTypeUsage; /* indicates whether to use the interal value or not*/ - attribute short printFrameType; - attribute boolean printSilent; /* print without putting up the dialog */ - - attribute nsIPrintSettings printSettingsValues; /* used copy the values to/from the settings obj*/ - attribute nsIPrintSettings printSettings; /* used to set and get the current object */ - - /* Additional XP Related */ - attribute short paperSizeType; /* use native data or is defined here */ - attribute short paperData; /* native data value */ - attribute double paperWidth; /* width of the paper in inches or mm */ - attribute double paperHeight; /* height of the paper in inches or mm */ - attribute short paperSizeUnit; /* paper is in inches or mm */ - - attribute long paperSize; /* This has been deprecated */ - - attribute boolean printReversed; - attribute boolean printInColor; /* a false means grayscale */ - attribute long orientation; /* see orientation consts */ - attribute wstring printCommand; - attribute long numCopies; - attribute wstring printerName; - attribute boolean printToFile; - attribute wstring toFileName; - - attribute long printPageDelay; /* in milliseconds */ - - /* No Script Methods */ - - [noscript] void SetFontNamePointSize(in nsNativeStringRef aName, in PRInt32 aPointSize); - - [noscript] void SetMarginInTwips(in nsNativeMarginRef aMargin); - /* Purposely made this an "in" arg */ - [noscript] void GetMarginInTwips(in nsNativeMarginRef aMargin); - - [noscript] void SetDefaultFont(in nsNativeFontRef aMargin); - /* Purposely made this an "in" arg */ - [noscript] void GetDefaultFont(in nsNativeFontRef aMargin); - - [noscript] void GetPageSizeInTwips(out long aWidth, out long aHeight); + void savePrintSettingsToPrefs(in nsIPrintSettings aPrintSettings, in boolean aUsePrinterNamePrefix, in unsigned long aFlags); /** * available Printers @@ -255,6 +107,22 @@ interface nsIPrintOptions : nsISupports */ void displayJobProperties (in wstring aPrinter, in nsIPrintSettings aPrintSettings, out boolean aDisplayed); + // Attributes + attribute boolean isCancelled; + + attribute wstring title; + attribute wstring docURL; + + attribute boolean printToFile; + attribute wstring toFileName; + + // no script methods + [noscript] void SetFontNamePointSize(in nsNativeStringRef aName, in PRInt32 aPointSize); + + [noscript] void SetDefaultFont(in nsNativeFontRef aFont); + /* Purposely made this an "in" arg */ + [noscript] void GetDefaultFont(in nsNativeFontRef aFont); + /** * Native data constants */ diff --git a/widget/public/nsIPrintSettings.idl b/widget/public/nsIPrintSettings.idl index 929e0d06e942..4447f24c2251 100644 --- a/widget/public/nsIPrintSettings.idl +++ b/widget/public/nsIPrintSettings.idl @@ -59,6 +59,36 @@ interface nsIPrintSettings : nsISupports { + /** + * PrintSettings to be Saved Navigation Constants + */ + const unsigned long kInitSaveOddEvenPages = 0x00000001; + const unsigned long kInitSaveHeaderLeft = 0x00000002; + const unsigned long kInitSaveHeaderCenter = 0x00000004; + const unsigned long kInitSaveHeaderRight = 0x00000008; + const unsigned long kInitSaveFooterLeft = 0x00000010; + const unsigned long kInitSaveFooterCenter = 0x00000020; + const unsigned long kInitSaveFooterRight = 0x00000040; + const unsigned long kInitSaveBGColors = 0x00000080; + const unsigned long kInitSaveBGImages = 0x00000100; + const unsigned long kInitSavePaperSize = 0x00000200; + const unsigned long kInitSavePaperName = 0x00000400; + const unsigned long kInitSavePaperSizeUnit = 0x00000800; + const unsigned long kInitSavePaperSizeType = 0x00001000; + const unsigned long kInitSavePaperData = 0x00002000; + const unsigned long kInitSavePaperWidth = 0x00004000; + const unsigned long kInitSavePaperHeight = 0x00008000; + + const unsigned long kInitSaveReversed = 0x00010000; + const unsigned long kInitSaveInColor = 0x00020000; + const unsigned long kInitSaveOrientation = 0x00040000; + const unsigned long kInitSavePrintCommand = 0x00080000; + const unsigned long kInitSavePrinterName = 0x00100000; + const unsigned long kInitSavePrintToFile = 0x00200000; + const unsigned long kInitSaveToFileName = 0x00400000; + const unsigned long kInitSavePageDelay = 0x00800000; + const unsigned long kInitSaveMargins = 0x01000000; + const unsigned long kInitSaveAll = 0xFFFFFFFF; /* Print Option Flags for Bit Field*/ const long kPrintOddPages = 0x00000001; @@ -171,6 +201,7 @@ interface nsIPrintSettings : nsISupports attribute boolean shrinkToFit; /* shrinks content to fit on page */ /* Additional XP Related */ + attribute wstring paperName; /* name of paper */ attribute short paperSizeType; /* use native data or is defined here */ attribute short paperData; /* native data value */ attribute double paperWidth; /* width of the paper in inches or mm */ diff --git a/widget/src/windows/nsDeviceContextSpecWin.cpp b/widget/src/windows/nsDeviceContextSpecWin.cpp index 78e38122b191..a65cc4f2b0f6 100644 --- a/widget/src/windows/nsDeviceContextSpecWin.cpp +++ b/widget/src/windows/nsDeviceContextSpecWin.cpp @@ -1528,7 +1528,8 @@ nsDeviceContextSpecWin::GetDataFromPrinter(const PRUnichar * aName, nsIPrintSett nsresult rv = NS_ERROR_FAILURE; if (!GlobalPrinters::GetInstance()->PrintersAreAllocated()) { - return rv; + rv = GlobalPrinters::GetInstance()->EnumeratePrinterList(); + NS_ENSURE_SUCCESS(rv, rv); } HANDLE hPrinter = NULL; @@ -1794,7 +1795,7 @@ nsPrinterEnumeratorWin::EnumeratePrinters(PRUint32* aCount, PRUnichar*** aResult PRInt32 count = 0; PRInt32 printerInx = 0; while( count < numItems ) { - LPTSTR name = GlobalPrinters::GetInstance()->GetItemFromList(printerInx); + LPTSTR name = GlobalPrinters::GetInstance()->GetItemFromList(printerInx++); nsString newName; newName.AssignWithConversion(name); PRUnichar *str = ToNewUnicode(newName); diff --git a/widget/src/xpwidgets/nsPrintOptionsImpl.cpp b/widget/src/xpwidgets/nsPrintOptionsImpl.cpp index f9209250b443..fc2a1efcd72a 100644 --- a/widget/src/xpwidgets/nsPrintOptionsImpl.cpp +++ b/widget/src/xpwidgets/nsPrintOptionsImpl.cpp @@ -65,48 +65,44 @@ static NS_DEFINE_IID(kCPrinterEnumerator, NS_PRINTER_ENUMERATOR_CID); NS_IMPL_ISUPPORTS1(nsPrintOptions, nsIPrintOptions) // Pref Constants -const char kMarginTop[] = "print.print_margin_top"; -const char kMarginLeft[] = "print.print_margin_left"; -const char kMarginBottom[] = "print.print_margin_bottom"; -const char kMarginRight[] = "print.print_margin_right"; +const char kMarginTop[] = "print_margin_top"; +const char kMarginLeft[] = "print_margin_left"; +const char kMarginBottom[] = "print_margin_bottom"; +const char kMarginRight[] = "print_margin_right"; // Prefs for Print Options -const char kPrintEvenPages[] = "print.print_evenpages"; -const char kPrintOddPages[] = "print.print_oddpages"; -const char kPrintHeaderStr1[] = "print.print_headerleft"; -const char kPrintHeaderStr2[] = "print.print_headercenter"; -const char kPrintHeaderStr3[] = "print.print_headerright"; -const char kPrintFooterStr1[] = "print.print_footerleft"; -const char kPrintFooterStr2[] = "print.print_footercenter"; -const char kPrintFooterStr3[] = "print.print_footerright"; +const char kPrintEvenPages[] = "print_evenpages"; +const char kPrintOddPages[] = "print_oddpages"; +const char kPrintHeaderStrLeft[] = "print_headerleft"; +const char kPrintHeaderStrCenter[] = "print_headercenter"; +const char kPrintHeaderStrRight[] = "print_headerright"; +const char kPrintFooterStrLeft[] = "print_footerleft"; +const char kPrintFooterStrCenter[] = "print_footercenter"; +const char kPrintFooterStrRight[] = "print_footerright"; // Additional Prefs -const char kPrintPaperSize[] = "print.print_paper_size"; // this has been deprecated +const char kPrintPaperSize[] = "print_paper_size"; // this has been deprecated -const char kPrintReversed[] = "print.print_reversed"; -const char kPrintColor[] = "print.print_color"; -const char kPrintPaperSizeType[] = "print.print_paper_size_type"; -const char kPrintPaperData[] = "print.print_paper_data"; -const char kPrintPaperSizeUnit[] = "print.print_paper_size_unit"; -const char kPrintPaperWidth[] = "print.print_paper_width"; -const char kPrintPaperHeight[]= "print.print_paper_height"; -const char kPrintOrientation[]= "print.print_orientation"; -const char kPrintCommand[] = "print.print_command"; -const char kPrinter[] = "print.print_printer"; -const char kPrintFile[] = "print.print_file"; -const char kPrintToFile[] = "print.print_tofile"; -const char kPrintPageDelay[] = "print.print_pagedelay"; +const char kPrintReversed[] = "print_reversed"; +const char kPrintInColor[] = "print_in_color"; +const char kPrintPaperName[] = "print_paper_name"; +const char kPrintPaperSizeType[] = "print_paper_size_type"; +const char kPrintPaperData[] = "print_paper_data"; +const char kPrintPaperSizeUnit[] = "print_paper_size_unit"; +const char kPrintPaperWidth[] = "print_paper_width"; +const char kPrintPaperHeight[] = "print_paper_height"; +const char kPrintOrientation[] = "print_orientation"; +const char kPrintCommand[] = "print_command"; +const char kPrinterName[] = "print_printer"; +const char kPrintToFile[] = "print_to_file"; +const char kPrintToFileName[] = "print_to_filename"; +const char kPrintPageDelay[] = "print_pagedelay"; +const char kPrintBGColors[] = "print_bgcolor"; +const char kPrintBGImages[] = "print_bgimages"; -// There are currently NOT supported -//const char kPrintBevelLines[] = "print.print_bevellines"; -//const char kPrintBlackText[] = "print.print_blacktext"; -//const char kPrintBlackLines[] = "print.print_blacklines"; -//const char kPrintLastPageFirst[] = "print.print_lastpagefirst"; -//const char kPrintBackgrounds[] = "print.print_backgrounds"; - -const char kLeftJust[] = "left"; -const char kCenterJust[] = "center"; -const char kRightJust[] = "right"; +const char kJustLeft[] = "left"; +const char kJustCenter[] = "center"; +const char kJustRight[] = "right"; nsFont* nsPrintOptions::sDefaultFont = nsnull; @@ -115,51 +111,16 @@ nsFont* nsPrintOptions::sDefaultFont = nsnull; * @update 6/21/00 dwc */ nsPrintOptions::nsPrintOptions() : - mPrintOptions(0L), - mPrintRange(kRangeAllPages), - mStartPageNum(1), - mEndPageNum(1), - mScaling(1.0), - mNumCopies(1), - mPrintFrameTypeUsage(kUseInternalDefault), - mPrintFrameType(kFramesAsIs), - mHowToEnableFrameUI(kFrameEnableNone), mIsCancelled(PR_FALSE), - mPrintSilent(PR_FALSE), - mPrintPageDelay(500), - mPrintSettingsObj(nsnull), - mPaperSizeType(kPaperSizeDefined), - mPaperData(0), - mPaperWidth(8.5), - mPaperHeight(11.0), - mPaperSizeUnit(kPaperSizeInches), - mPaperSize(kLetterPaperSize), /* this has been deprecated */ - mPrintReversed(PR_FALSE), - mPrintInColor(PR_TRUE), - mOrientation(kPortraitOrientation), mPrintToFile(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; - if (sDefaultFont == nsnull) { sDefaultFont = new nsFont("Times", NS_FONT_STYLE_NORMAL,NS_FONT_VARIANT_NORMAL, NS_FONT_WEIGHT_NORMAL,0,NSIntPointsToTwips(10)); } - - mHeaderStrs[0].Assign(NS_LITERAL_STRING("&T")); - mHeaderStrs[2].Assign(NS_LITERAL_STRING("&U")); - - mFooterStrs[0].Assign(NS_LITERAL_STRING("&PT")); // Use &P (Page Num Only) or &PT (Page Num of Page Total) - mFooterStrs[2].Assign(NS_LITERAL_STRING("&D")); - - ReadPrefs(); - } /** --------------------------------------------------- @@ -297,46 +258,6 @@ nsPrintOptions::GetDefaultFont(nsFont &aFont) return NS_OK; } -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 6/21/00 dwc - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::SetMarginInTwips(nsMargin& aMargin) -{ - mMargin = aMargin; - return NS_OK; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 6/21/00 dwc - */ -NS_IMETHODIMP -nsPrintOptions::GetMarginInTwips(nsMargin& aMargin) -{ - aMargin = mMargin; - return NS_OK; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 6/21/00 dwc - */ -NS_IMETHODIMP -nsPrintOptions::GetPageSizeInTwips(PRInt32 *aWidth, PRInt32 *aHeight) -{ - if (mPaperSizeUnit == kPaperSizeInches) { - *aWidth = NS_INCHES_TO_TWIPS(float(mPaperWidth)); - *aHeight = NS_INCHES_TO_TWIPS(float(mPaperHeight)); - } else { - *aWidth = NS_MILLIMETERS_TO_TWIPS(float(mPaperWidth)); - *aHeight = NS_MILLIMETERS_TO_TWIPS(float(mPaperHeight)); - } - return NS_OK; -} - /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 6/21/00 dwc @@ -385,359 +306,559 @@ nsPrintOptions::ShowPrintSetupDialog(nsIPrintSettings *aPS) } +/** --------------------------------------------------- + * Helper function - Creates the "prefix" for the pref + * It is either "print." + * or "print.printer_." + */ +const char* nsPrintOptions::GetPrefName(const char * aPrefName, + const nsString& aPrinterName) +{ + if (!aPrefName || !*aPrefName) { + NS_ASSERTION(0, "Must have a valid pref name!"); + return aPrefName; + } + + mPrefName.AssignWithConversion(NS_LITERAL_STRING("print.")); + + if (aPrinterName.Length()) { + mPrefName.AppendWithConversion(NS_LITERAL_STRING("printer_")); + mPrefName.AppendWithConversion(aPrinterName); + mPrefName.AppendWithConversion(NS_LITERAL_STRING(".")); + } + mPrefName += aPrefName; + + return mPrefName.get(); + +} + +/** --------------------------------------------------- + * Helper function - Returns either the name or sets the length to zero + */ +static void GetAdjustedPrinterName(nsIPrintSettings* aPS, PRBool aUsePNP, nsString& aPrinterName) +{ + aPrinterName.SetLength(0); + + // Get the Printer Name from the PtinerSettings + // to use as a prefix for Pref Names + PRUnichar* prtName = nsnull; + if (aUsePNP && NS_SUCCEEDED(aPS->GetPrinterName(&prtName))) { + if (prtName && !*prtName) { + nsMemory::Free(prtName); + prtName = nsnull; + } + } + + if (prtName) { + aPrinterName = prtName; + PRUnichar uc = '_'; + PRUnichar space = ' '; + aPrinterName.ReplaceChar(space, uc); + } +} + /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 1/12/01 rods */ NS_IMETHODIMP -nsPrintOptions::SetPrintOptions(PRInt32 aType, PRBool aTurnOnOff) +nsPrintOptions::InitPrintSettingsFromPrefs(nsIPrintSettings* aPS, PRBool aUsePNP, PRUint32 aFlags) { - if (aTurnOnOff) { - mPrintOptions |= aType; - } else { - mPrintOptions &= ~aType; + nsString prtName; + // read any non printer specific prefs + // with empty printer name + nsresult rv = ReadPrefs(aPS, prtName, aFlags); + NS_ENSURE_SUCCESS(rv, rv); + + // Get the Printer Name from the PtinerSettings + // to use as a prefix for Pref Names + GetAdjustedPrinterName(aPS, aUsePNP, prtName); + if (prtName.Length()) { + // Now read any printer specific prefs + return ReadPrefs(aPS, prtName, aFlags); } return NS_OK; } -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::GetPrintOptions(PRInt32 aType, PRBool *aTurnOnOff) +//---------------------------------------------------------------------- +// Testing of read/write prefs +// This define controls debug output +#ifdef DEBUG_rods_X +static void WriteDebugStr(const char* aArg1, const char* aArg2, const PRUnichar* aStr) { - NS_ENSURE_ARG_POINTER(aTurnOnOff); - *aTurnOnOff = mPrintOptions & aType; - return NS_OK; + nsString str(aStr); + PRUnichar s = '&'; + PRUnichar r = '_'; + str.ReplaceChar(s, r); + + printf("%s %s = %s \n", aArg1, aArg2, ToNewUTF8String(str)); } +const char* kWriteStr = "Write Pref:"; +const char* kReadStr = "Read Pref:"; +#define DUMP_STR(_a1, _a2, _a3) WriteDebugStr((_a1), GetPrefName((_a2), aPrefName), (_a3)); +#define DUMP_BOOL(_a1, _a2, _a3) printf("%s %s = %s \n", (_a1), GetPrefName((_a2), aPrefName), (_a3)?"T":"F"); +#define DUMP_INT(_a1, _a2, _a3) printf("%s %s = %d \n", (_a1), GetPrefName((_a2), aPrefName), (_a3)); +#define DUMP_DBL(_a1, _a2, _a3) printf("%s %s = %10.5f \n", (_a1), GetPrefName((_a2), aPrefName), (_a3)); +#else +#define DUMP_STR(_a1, _a2, _a3) +#define DUMP_BOOL(_a1, _a2, _a3) +#define DUMP_INT(_a1, _a2, _a3) +#define DUMP_DBL(_a1, _a2, _a3) +#endif +//---------------------------------------------------------------------- /** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::GetPrintOptionsBits(PRInt32 *aBits) -{ - NS_ENSURE_ARG_POINTER(aBits); - *aBits = mPrintOptions; - return NS_OK; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::ReadPrefs() + * This will read in the generic prefs (not specific to a printer) + * or it will it can read the prefs in using the printer name to qualify + * It is either "print.attr_name" + * or "print.printer_HPLasr5.attr_name" + * +*/ +nsresult +nsPrintOptions::ReadPrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUint32 aFlags) { nsCOMPtr prefs = do_GetService(NS_PREF_CONTRACTID); if (prefs) { - ReadInchesToTwipsPref(prefs, kMarginTop, mMargin.top); - ReadInchesToTwipsPref(prefs, kMarginLeft, mMargin.left); - ReadInchesToTwipsPref(prefs, kMarginBottom, mMargin.bottom); - ReadInchesToTwipsPref(prefs, kMarginRight, mMargin.right); - - ReadBitFieldPref(prefs, kPrintEvenPages, kOptPrintEvenPages); - ReadBitFieldPref(prefs, kPrintOddPages, kOptPrintOddPages); - - ReadPrefString(prefs, kPrintHeaderStr1, mHeaderStrs[0]); - ReadPrefString(prefs, kPrintHeaderStr2, mHeaderStrs[1]); - ReadPrefString(prefs, kPrintHeaderStr3, mHeaderStrs[2]); - ReadPrefString(prefs, kPrintFooterStr1, mFooterStrs[0]); - ReadPrefString(prefs, kPrintFooterStr2, mFooterStrs[1]); - ReadPrefString(prefs, kPrintFooterStr3, mFooterStrs[2]); - - // Read Additional XP Prefs - prefs->GetIntPref(kPrintPaperSize, &mPaperSize); // this has been deprecated - - prefs->GetBoolPref(kPrintReversed, &mPrintReversed); - prefs->GetBoolPref(kPrintColor, &mPrintInColor); - - PRInt32 iVal = kPaperSizeInches; - prefs->GetIntPref(kPrintPaperSizeUnit, &iVal); - mPaperSizeUnit = PRInt16(iVal); - iVal = kPaperSizeDefined; - prefs->GetIntPref(kPrintPaperSizeType, &iVal); - mPaperSizeType = PRInt16(iVal); - iVal = 0; - prefs->GetIntPref(kPrintPaperData, &iVal); - mPaperData = PRInt16(iVal); - ReadPrefDouble(prefs, kPrintPaperWidth, mPaperWidth); - ReadPrefDouble(prefs, kPrintPaperHeight, mPaperHeight); - - prefs->GetIntPref(kPrintOrientation, &mOrientation); - ReadPrefString(prefs, kPrintCommand, mPrintCommand); - ReadPrefString(prefs, kPrinter, mPrinter); - prefs->GetBoolPref(kPrintFile, &mPrintToFile); - ReadPrefString(prefs, kPrintToFile, mToFileName); - prefs->GetIntPref(kPrintPageDelay, &mPrintPageDelay); - - return NS_OK; - } - return NS_ERROR_FAILURE; -} - -/** --------------------------------------------------- - * See documentation in nsPrintOptionsImpl.h - * @update 1/12/01 rods - */ -NS_IMETHODIMP -nsPrintOptions::InitPrintSettingsFromPrefs(nsIPrintSettings* aPS) -{ - nsCOMPtr prefs = do_GetService(NS_PREF_CONTRACTID); - if (prefs) { - nscoord halfInch = NS_INCHES_TO_TWIPS(0.5); - nsMargin margin; - margin.SizeTo(halfInch, halfInch, halfInch, halfInch); - ReadInchesToTwipsPref(prefs, kMarginTop, margin.top); - ReadInchesToTwipsPref(prefs, kMarginLeft, margin.left); - ReadInchesToTwipsPref(prefs, kMarginBottom, margin.bottom); - ReadInchesToTwipsPref(prefs, kMarginRight, margin.right); - aPS->SetMarginInTwips(margin); - - // Note: Following prefs are not required to be in a pref - // each has a proper default defined here. - // The following two are special in that they set a bit field - // which is initialized in the constructor. - PRBool b; - if (NS_SUCCEEDED(prefs->GetBoolPref(kPrintEvenPages, &b))) - aPS->SetPrintOptions(kOptPrintEvenPages, b); - - if (NS_SUCCEEDED(prefs->GetBoolPref(kPrintOddPages, &b))) - aPS->SetPrintOptions(kOptPrintOddPages, b); + if (aFlags & nsIPrintSettings::kInitSaveMargins) { + nscoord halfInch = NS_INCHES_TO_TWIPS(0.5); + nsMargin margin; + margin.SizeTo(halfInch, halfInch, halfInch, halfInch); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginTop, aPrefName), margin.top); + DUMP_INT(kReadStr, kMarginTop, margin.top); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginLeft, aPrefName), margin.left); + DUMP_INT(kReadStr, kMarginLeft, margin.left); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginBottom, aPrefName), margin.bottom); + DUMP_INT(kReadStr, kMarginBottom, margin.bottom); + ReadInchesToTwipsPref(prefs, GetPrefName(kMarginRight, aPrefName), margin.right); + DUMP_INT(kReadStr, kMarginRight, margin.right); + aPS->SetMarginInTwips(margin); + } + PRBool b; nsString str; - str.SetLength(0); - ReadPrefString(prefs, kPrintHeaderStr1, str); - aPS->SetHeaderStrLeft(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintHeaderStr2, str); - aPS->SetHeaderStrCenter(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintHeaderStr3, str); - aPS->SetHeaderStrRight(str.get()); + PRInt32 iVal; + double dbl; - str.SetLength(0); - ReadPrefString(prefs, kPrintFooterStr1, str); - aPS->SetFooterStrRight(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintFooterStr2, str); - aPS->SetFooterStrCenter(str.get()); - str.SetLength(0); - ReadPrefString(prefs, kPrintFooterStr3, str); - aPS->SetFooterStrRight(str.get()); + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintEvenPages, aPrefName), &b))) { + aPS->SetPrintOptions(nsIPrintSettings::kPrintEvenPages, b); + DUMP_BOOL(kReadStr, kPrintEvenPages, b); + } + } - // Read Additional XP Prefs - PRInt32 iVal = kLetterPaperSize; - prefs->GetIntPref(kPrintPaperSize, &iVal); // this has been deprecated - aPS->SetPaperSize(iVal); + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintOddPages, aPrefName), &b))) { + aPS->SetPrintOptions(nsIPrintSettings::kPrintOddPages, b); + DUMP_BOOL(kReadStr, kPrintOddPages, b); + } + } - b = PR_FALSE; - prefs->GetBoolPref(kPrintReversed, &b); - aPS->SetPrintReversed(b); + if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintHeaderStrLeft, aPrefName), str))) { + aPS->SetHeaderStrLeft(str.get()); + DUMP_STR(kReadStr, kPrintHeaderStrLeft, str.get()); + } + } - b = PR_TRUE; - prefs->GetBoolPref(kPrintColor, &b); - aPS->SetPrintInColor(b); + if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintHeaderStrCenter, aPrefName), str))) { + aPS->SetHeaderStrCenter(str.get()); + DUMP_STR(kReadStr, kPrintHeaderStrCenter, str.get()); + } + } - iVal = kPaperSizeInches; - prefs->GetIntPref(kPrintPaperSizeUnit, &iVal); - aPS->SetPaperSizeUnit(iVal); + if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintHeaderStrRight, aPrefName), str))) { + aPS->SetHeaderStrRight(str.get()); + DUMP_STR(kReadStr, kPrintHeaderStrRight, str.get()); + } + } - iVal = kPaperSizeDefined; - prefs->GetIntPref(kPrintPaperSizeType, &iVal); - aPS->SetPaperSizeType(iVal); + if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintFooterStrLeft, aPrefName), str))) { + aPS->SetFooterStrLeft(str.get()); + DUMP_STR(kReadStr, kPrintFooterStrLeft, str.get()); + } + } - iVal = 0; - prefs->GetIntPref(kPrintPaperData, &iVal); - aPS->SetPaperData(iVal); + if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintFooterStrCenter, aPrefName), str))) { + aPS->SetFooterStrCenter(str.get()); + DUMP_STR(kReadStr, kPrintFooterStrCenter, str.get()); + } + } - double d = 8.5; - ReadPrefDouble(prefs, kPrintPaperWidth, d); - aPS->SetPaperWidth(d); + if (aFlags & nsIPrintSettings::kInitSaveFooterRight) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintFooterStrRight, aPrefName), str))) { + aPS->SetFooterStrRight(str.get()); + DUMP_STR(kReadStr, kPrintFooterStrRight, str.get()); + } + } - d = 11.0; - ReadPrefDouble(prefs, kPrintPaperHeight, d); - aPS->SetPaperHeight(d); + if (aFlags & nsIPrintSettings::kInitSaveBGColors) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintBGColors, aPrefName), &b))) { + aPS->SetPrintBGColors(b); + DUMP_BOOL(kReadStr, kPrintBGColors, b); + } + } - iVal = kPortraitOrientation; - prefs->GetIntPref(kPrintOrientation, &mOrientation); - aPS->SetOrientation(iVal); + if (aFlags & nsIPrintSettings::kInitSaveBGImages) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintBGImages, aPrefName), &b))) { + aPS->SetPrintBGImages(b); + DUMP_BOOL(kReadStr, kPrintBGImages, b); + } + } - str.SetLength(0); - ReadPrefString(prefs, kPrintCommand, str); - aPS->SetPrintCommand(str.get()); + if (aFlags & nsIPrintSettings::kInitSavePaperSize) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperSize, aPrefName), &iVal))) { // this has been deprecated + aPS->SetPaperSize(iVal); + DUMP_INT(kReadStr, kPrintPaperSize, iVal); + } + } - str.SetLength(0); - ReadPrefString(prefs, kPrinter, mPrinter); - aPS->SetPrinterName(str.get()); + if (aFlags & nsIPrintSettings::kInitSaveReversed) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintReversed, aPrefName), &b))) { + aPS->SetPrintReversed(b); + DUMP_BOOL(kReadStr, kPrintReversed, b); + } + } - b = PR_FALSE; - prefs->GetBoolPref(kPrintFile, &b); - aPS->SetPrintToFile(b); + if (aFlags & nsIPrintSettings::kInitSaveInColor) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintInColor, aPrefName), &b))) { + aPS->SetPrintInColor(b); + DUMP_BOOL(kReadStr, kPrintInColor, b); + } + } - ReadPrefString(prefs, kPrintToFile, mToFileName); + if (aFlags & nsIPrintSettings::kInitSavePaperName) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintPaperName, aPrefName), str))) { + aPS->SetPaperName(str.get()); + DUMP_STR(kReadStr, kPrintPaperName, str.get()); + } + } - iVal = 500; - prefs->GetIntPref(kPrintPageDelay, &iVal); - aPS->SetPrintPageDelay(iVal); + if (aFlags & nsIPrintSettings::kInitSavePaperSizeUnit) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperSizeUnit, aPrefName), &iVal))) { + aPS->SetPaperSizeUnit(iVal); + DUMP_INT(kReadStr, kPrintPaperSizeUnit, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSizeType) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperSizeType, aPrefName), &iVal))) { + aPS->SetPaperSizeType(iVal); + DUMP_INT(kReadStr, kPrintPaperSizeType, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperData) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPaperData, aPrefName), &iVal))) { + aPS->SetPaperData(iVal); + DUMP_INT(kReadStr, kPrintPaperData, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperWidth) { + if (NS_SUCCEEDED(ReadPrefDouble(prefs, GetPrefName(kPrintPaperWidth, aPrefName), dbl))) { + aPS->SetPaperWidth(dbl); + DUMP_DBL(kReadStr, kPrintPaperWidth, dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperHeight) { + if (NS_SUCCEEDED(ReadPrefDouble(prefs, GetPrefName(kPrintPaperHeight, aPrefName), dbl))) { + aPS->SetPaperHeight(dbl); + DUMP_DBL(kReadStr, kPrintPaperHeight, dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveOrientation) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintOrientation, aPrefName), &iVal))) { + aPS->SetOrientation(iVal); + DUMP_INT(kReadStr, kPrintOrientation, iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintCommand) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintCommand, aPrefName), str))) { + aPS->SetPrintCommand(str.get()); + DUMP_STR(kReadStr, kPrintCommand, str.get()); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrinterName) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrinterName, aPrefName), str))) { + aPS->SetPrinterName(str.get()); + DUMP_STR(kReadStr, kPrinterName, str.get()); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintToFile) { + if (NS_SUCCEEDED(prefs->GetBoolPref(GetPrefName(kPrintToFile, aPrefName), &b))) { + aPS->SetPrintToFile(b); + DUMP_BOOL(kReadStr, kPrintToFile, b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveToFileName) { + if (NS_SUCCEEDED(ReadPrefString(prefs, GetPrefName(kPrintToFileName, aPrefName), str))) { + aPS->SetToFileName(str.get()); + DUMP_STR(kReadStr, kPrintToFileName, str.get()); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePageDelay) { + if (NS_SUCCEEDED(prefs->GetIntPref(GetPrefName(kPrintPageDelay, aPrefName), &iVal))) { + aPS->SetPrintPageDelay(iVal); + DUMP_INT(kReadStr, kPrintPageDelay, iVal); + } + } + + // Not Reading In: + // Scaling + // ShrinkToFit + // Number of Copies return NS_OK; } return NS_ERROR_FAILURE; } +/* void SavePrintSettingsToPrefs (in nsIPrintSettings aPS); */ +/** --------------------------------------------------- + * This will asve into prefs most all the PrintSettings either generically (not specified printer) + * or to a specific printer. + */ +nsresult +nsPrintOptions::SavePrintSettingsToPrefs(nsIPrintSettings *aPS, PRBool aUsePrinterNamePrefix, PRUint32 aFlags) +{ + nsString prtName; + // Get the Printer Name from the PtinerSettings + // to use as a prefix for Pref Names + GetAdjustedPrinterName(aPS, aUsePrinterNamePrefix, prtName); + + // Now write any printer specific prefs + return WritePrefs(aPS, prtName, aFlags); +} + + /** --------------------------------------------------- * See documentation in nsPrintOptionsImpl.h * @update 1/12/01 rods */ -NS_IMETHODIMP -nsPrintOptions::WritePrefs() +nsresult +nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsString& aPrefName, PRUint32 aFlags) { + NS_ENSURE_ARG_POINTER(aPS); + nsCOMPtr prefs = do_GetService(NS_PREF_CONTRACTID); if (prefs) { - WriteInchesFromTwipsPref(prefs, kMarginTop, mMargin.top); - WriteInchesFromTwipsPref(prefs, kMarginLeft, mMargin.left); - WriteInchesFromTwipsPref(prefs, kMarginBottom, mMargin.bottom); - WriteInchesFromTwipsPref(prefs, kMarginRight, mMargin.right); + nsMargin margin; + if (aFlags & nsIPrintSettings::kInitSaveMargins) { + if (NS_SUCCEEDED(aPS->GetMarginInTwips(margin))) { + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginTop, aPrefName), margin.top); + DUMP_INT(kWriteStr, kMarginTop, margin.top); + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginLeft, aPrefName), margin.left); + DUMP_INT(kWriteStr, kMarginLeft, margin.top); + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginBottom, aPrefName), margin.bottom); + DUMP_INT(kWriteStr, kMarginBottom, margin.top); + WriteInchesFromTwipsPref(prefs, GetPrefName(kMarginRight, aPrefName), margin.right); + DUMP_INT(kWriteStr, kMarginRight, margin.top); + } + } - WriteBitFieldPref(prefs, kPrintEvenPages, kOptPrintEvenPages); - WriteBitFieldPref(prefs, kPrintOddPages, kOptPrintOddPages); + PRBool b; + PRUnichar* uStr; + PRInt32 iVal; + PRInt16 iVal16; + double dbl; - WritePrefString(prefs, kPrintHeaderStr1, mHeaderStrs[0]); - WritePrefString(prefs, kPrintHeaderStr2, mHeaderStrs[1]); - WritePrefString(prefs, kPrintHeaderStr3, mHeaderStrs[2]); - WritePrefString(prefs, kPrintFooterStr1, mFooterStrs[0]); - WritePrefString(prefs, kPrintFooterStr2, mFooterStrs[1]); - WritePrefString(prefs, kPrintFooterStr3, mFooterStrs[2]); + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(aPS->GetPrintOptions(nsIPrintSettings::kPrintEvenPages, &b))) { + DUMP_BOOL(kWriteStr, kPrintEvenPages, b); + prefs->SetBoolPref(GetPrefName(kPrintEvenPages, aPrefName), b); + } + } - // Write Additional XP Prefs - prefs->SetIntPref(kPrintPaperSize, mPaperSize); // this has been deprecated + if (aFlags & nsIPrintSettings::kInitSaveOddEvenPages) { + if (NS_SUCCEEDED(aPS->GetPrintOptions(nsIPrintSettings::kPrintOddPages, &b))) { + DUMP_BOOL(kWriteStr, kPrintOddPages, b); + prefs->SetBoolPref(GetPrefName(kPrintOddPages, aPrefName), b); + } + } - prefs->SetBoolPref(kPrintReversed, mPrintReversed); - prefs->SetBoolPref(kPrintColor, mPrintInColor); - prefs->SetIntPref(kPrintPaperSizeUnit, PRInt32(mPaperSizeUnit)); - prefs->SetIntPref(kPrintPaperSizeType, PRInt32(mPaperSizeType)); - prefs->SetIntPref(kPrintPaperData, PRInt32(mPaperData)); - WritePrefDouble(prefs, kPrintPaperWidth, mPaperWidth); - WritePrefDouble(prefs, kPrintPaperHeight, mPaperHeight); - prefs->SetIntPref(kPrintOrientation, mOrientation); - WritePrefString(prefs, kPrintCommand, mPrintCommand); - WritePrefString(prefs, kPrinter, mPrinter); - prefs->SetBoolPref(kPrintFile, mPrintToFile); - WritePrefString(prefs, kPrintToFile, mToFileName); - prefs->SetIntPref(kPrintPageDelay, mPrintPageDelay); + if (aFlags & nsIPrintSettings::kInitSaveHeaderLeft) { + if (NS_SUCCEEDED(aPS->GetHeaderStrLeft(&uStr))) { + DUMP_STR(kWriteStr, kPrintHeaderStrLeft, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintHeaderStrLeft, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveHeaderCenter) { + if (NS_SUCCEEDED(aPS->GetHeaderStrCenter(&uStr))) { + DUMP_STR(kWriteStr, kPrintHeaderStrCenter, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintHeaderStrCenter, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveHeaderRight) { + if (NS_SUCCEEDED(aPS->GetHeaderStrRight(&uStr))) { + DUMP_STR(kWriteStr, kPrintHeaderStrRight, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintHeaderStrRight, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveFooterLeft) { + if (NS_SUCCEEDED(aPS->GetFooterStrLeft(&uStr))) { + DUMP_STR(kWriteStr, kPrintFooterStrLeft, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintFooterStrLeft, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveFooterCenter) { + if (NS_SUCCEEDED(aPS->GetFooterStrCenter(&uStr))) { + DUMP_STR(kWriteStr, kPrintFooterStrCenter, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintFooterStrCenter, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveFooterRight) { + if (NS_SUCCEEDED(aPS->GetFooterStrRight(&uStr))) { + DUMP_STR(kWriteStr, kPrintFooterStrRight, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintFooterStrRight, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveBGColors) { + if (NS_SUCCEEDED(aPS->GetPrintBGColors(&b))) { + DUMP_BOOL(kWriteStr, kPrintBGColors, b); + prefs->SetBoolPref(GetPrefName(kPrintBGColors, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveBGImages) { + if (NS_SUCCEEDED(aPS->GetPrintBGImages(&b))) { + DUMP_BOOL(kWriteStr, kPrintBGImages, b); + prefs->SetBoolPref(GetPrefName(kPrintBGImages, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSize) { + if (NS_SUCCEEDED(aPS->GetPaperSize(&iVal))) { + DUMP_INT(kWriteStr, kPrintPaperSize, iVal); + prefs->SetIntPref(GetPrefName(kPrintPaperSize, aPrefName), iVal); // this has been deprecated + } + } + + if (aFlags & nsIPrintSettings::kInitSaveReversed) { + if (NS_SUCCEEDED(aPS->GetPrintReversed(&b))) { + DUMP_BOOL(kWriteStr, kPrintReversed, b); + prefs->SetBoolPref(GetPrefName(kPrintReversed, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveInColor) { + if (NS_SUCCEEDED(aPS->GetPrintInColor(&b))) { + DUMP_BOOL(kWriteStr, kPrintInColor, b); + prefs->SetBoolPref(GetPrefName(kPrintInColor, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperName) { + if (NS_SUCCEEDED(aPS->GetPaperName(&uStr))) { + DUMP_STR(kWriteStr, kPrintPaperName, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintPaperName, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSizeUnit) { + if (NS_SUCCEEDED(aPS->GetPaperSizeUnit(&iVal16))) { + DUMP_INT(kWriteStr, kPrintPaperSizeUnit, iVal16); + prefs->SetIntPref(GetPrefName(kPrintPaperSizeUnit, aPrefName), PRInt32(iVal16)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperSizeType) { + if (NS_SUCCEEDED(aPS->GetPaperSizeType(&iVal16))) { + DUMP_INT(kWriteStr, kPrintPaperSizeType, iVal16); + prefs->SetIntPref(GetPrefName(kPrintPaperSizeType, aPrefName), PRInt32(iVal16)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperData) { + if (NS_SUCCEEDED(aPS->GetPaperData(&iVal16))) { + DUMP_INT(kWriteStr, kPrintPaperData, iVal16); + prefs->SetIntPref(GetPrefName(kPrintPaperData, aPrefName), PRInt32(iVal16)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperWidth) { + if (NS_SUCCEEDED(aPS->GetPaperWidth(&dbl))) { + DUMP_DBL(kWriteStr, kPrintPaperWidth, dbl); + WritePrefDouble(prefs, GetPrefName(kPrintPaperWidth, aPrefName), dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePaperHeight) { + if (NS_SUCCEEDED(aPS->GetPaperHeight(&dbl))) { + DUMP_DBL(kWriteStr, kPrintPaperHeight, dbl); + WritePrefDouble(prefs, GetPrefName(kPrintPaperHeight, aPrefName), dbl); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveOrientation) { + if (NS_SUCCEEDED(aPS->GetOrientation(&iVal))) { + DUMP_INT(kWriteStr, kPrintOrientation, iVal); + prefs->SetIntPref(GetPrefName(kPrintOrientation, aPrefName), iVal); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintCommand) { + if (NS_SUCCEEDED(aPS->GetPrintCommand(&uStr))) { + DUMP_STR(kWriteStr, kPrintCommand, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintCommand, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrinterName) { + if (NS_SUCCEEDED(aPS->GetPrinterName(&uStr))) { + DUMP_STR(kWriteStr, kPrinterName, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrinterName, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePrintToFile) { + if (NS_SUCCEEDED(aPS->GetPrintToFile(&b))) { + DUMP_BOOL(kWriteStr, kPrintToFile, b); + prefs->SetBoolPref(GetPrefName(kPrintToFile, aPrefName), b); + } + } + + if (aFlags & nsIPrintSettings::kInitSaveToFileName) { + if (NS_SUCCEEDED(aPS->GetToFileName(&uStr))) { + DUMP_STR(kWriteStr, kPrintToFileName, uStr); + WritePrefString(prefs, uStr, GetPrefName(kPrintToFileName, aPrefName)); + } + } + + if (aFlags & nsIPrintSettings::kInitSavePageDelay) { + if (NS_SUCCEEDED(aPS->GetPrintPageDelay(&iVal))) { + DUMP_INT(kWriteStr, kPrintPageDelay, iVal); + prefs->SetIntPref(GetPrefName(kPrintPageDelay, aPrefName), iVal); + } + } + + // Not Writing Out: + // Scaling + // ShrinkToFit + // Number of Copies return NS_OK; } + return NS_ERROR_FAILURE; } -/* attribute long startPageRange; */ -NS_IMETHODIMP nsPrintOptions::GetStartPageRange(PRInt32 *aStartPageRange) -{ - //NS_ENSURE_ARG_POINTER(aStartPageRange); - *aStartPageRange = mStartPageNum; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetStartPageRange(PRInt32 aStartPageRange) -{ - mStartPageNum = aStartPageRange; - return NS_OK; -} - -/* attribute long endPageRange; */ -NS_IMETHODIMP nsPrintOptions::GetEndPageRange(PRInt32 *aEndPageRange) -{ - //NS_ENSURE_ARG_POINTER(aEndPageRange); - *aEndPageRange = mEndPageNum; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetEndPageRange(PRInt32 aEndPageRange) -{ - mEndPageNum = aEndPageRange; - return NS_OK; -} - -/* attribute boolean printReversed; */ -NS_IMETHODIMP nsPrintOptions::GetPrintReversed(PRBool *aPrintReversed) -{ - //NS_ENSURE_ARG_POINTER(aPrintReversed); - *aPrintReversed = mPrintReversed; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintReversed(PRBool aPrintReversed) -{ - mPrintReversed = aPrintReversed; - return NS_OK; -} - -/* attribute boolean printInColor; */ -NS_IMETHODIMP nsPrintOptions::GetPrintInColor(PRBool *aPrintInColor) -{ - //NS_ENSURE_ARG_POINTER(aPrintInColor); - *aPrintInColor = mPrintInColor; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintInColor(PRBool aPrintInColor) -{ - mPrintInColor = aPrintInColor; - return NS_OK; -} - -/* attribute wstring printCommand; */ -NS_IMETHODIMP nsPrintOptions::GetPrintCommand(PRUnichar * *aPrintCommand) -{ - //NS_ENSURE_ARG_POINTER(aPrintCommand); - *aPrintCommand = ToNewUnicode(mPrintCommand); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintCommand(const PRUnichar * aPrintCommand) -{ - mPrintCommand = aPrintCommand; - return NS_OK; -} - -/* attribute short orientation; */ -NS_IMETHODIMP nsPrintOptions::GetOrientation(PRInt32 *aOrientation) -{ - //NS_ENSURE_ARG_POINTER(aOrientation); - *aOrientation = mOrientation; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetOrientation(PRInt32 aOrientation) -{ - mOrientation = aOrientation; - return NS_OK; -} - -/* attribute wstring printer; */ -NS_IMETHODIMP nsPrintOptions::GetPrinterName(PRUnichar * *aPrinter) -{ - //NS_ENSURE_ARG_POINTER(aPrinter); - *aPrinter = ToNewUnicode(mPrinter); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrinterName(const PRUnichar * aPrinter) -{ - mPrinter = aPrinter; - return NS_OK; -} - -/* attribute long numCopies; */ -NS_IMETHODIMP nsPrintOptions::GetNumCopies(PRInt32 *aNumCopies) -{ - //NS_ENSURE_ARG_POINTER(aNumCopies); - *aNumCopies = mNumCopies; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetNumCopies(PRInt32 aNumCopies) -{ - mNumCopies = aNumCopies; - return NS_OK; -} - /* create and return a new |nsPrinterListEnumerator| */ NS_IMETHODIMP nsPrintOptions::AvailablePrinters(nsISimpleEnumerator **aPrinterEnumerator) { @@ -776,6 +897,19 @@ NS_IMETHODIMP nsPrintOptions::DisplayJobProperties( const PRUnichar *aPrinter, n return NS_OK; } +/* attribute long isCancelled; */ +NS_IMETHODIMP nsPrintOptions::GetIsCancelled(PRBool *aIsCancelled) +{ + NS_ENSURE_ARG_POINTER(aIsCancelled); + *aIsCancelled = mIsCancelled; + return NS_OK; +} +NS_IMETHODIMP nsPrintOptions::SetIsCancelled(PRBool aIsCancelled) +{ + mIsCancelled = aIsCancelled; + return NS_OK; +} + /* attribute boolean printToFile; */ NS_IMETHODIMP nsPrintOptions::GetPrintToFile(PRBool *aPrintToFile) { @@ -802,123 +936,6 @@ NS_IMETHODIMP nsPrintOptions::SetToFileName(const PRUnichar * aToFileName) return NS_OK; } -/* attribute long printPageDelay; */ -NS_IMETHODIMP nsPrintOptions::GetPrintPageDelay(PRInt32 *aPrintPageDelay) -{ - *aPrintPageDelay = mPrintPageDelay; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintPageDelay(PRInt32 aPrintPageDelay) -{ - mPrintPageDelay = aPrintPageDelay; - return NS_OK; -} - -/* attribute double marginTop; */ -NS_IMETHODIMP nsPrintOptions::GetMarginTop(double *aMarginTop) -{ - NS_ENSURE_ARG_POINTER(aMarginTop); - *aMarginTop = NS_TWIPS_TO_INCHES(mMargin.top); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginTop(double aMarginTop) -{ - mMargin.top = NS_INCHES_TO_TWIPS(float(aMarginTop)); - return NS_OK; -} - -/* attribute double marginLeft; */ -NS_IMETHODIMP nsPrintOptions::GetMarginLeft(double *aMarginLeft) -{ - NS_ENSURE_ARG_POINTER(aMarginLeft); - *aMarginLeft = NS_TWIPS_TO_INCHES(mMargin.left); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginLeft(double aMarginLeft) -{ - mMargin.left = NS_INCHES_TO_TWIPS(float(aMarginLeft)); - return NS_OK; -} - -/* attribute double marginBottom; */ -NS_IMETHODIMP nsPrintOptions::GetMarginBottom(double *aMarginBottom) -{ - NS_ENSURE_ARG_POINTER(aMarginBottom); - *aMarginBottom = NS_TWIPS_TO_INCHES(mMargin.bottom); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginBottom(double aMarginBottom) -{ - mMargin.bottom = NS_INCHES_TO_TWIPS(float(aMarginBottom)); - return NS_OK; -} - -/* attribute double marginRight; */ -NS_IMETHODIMP nsPrintOptions::GetMarginRight(double *aMarginRight) -{ - NS_ENSURE_ARG_POINTER(aMarginRight); - *aMarginRight = NS_TWIPS_TO_INCHES(mMargin.right); - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetMarginRight(double aMarginRight) -{ - mMargin.right = NS_INCHES_TO_TWIPS(float(aMarginRight)); - return NS_OK; -} - -/* attribute double scaling; */ -NS_IMETHODIMP nsPrintOptions::GetScaling(double *aScaling) -{ - NS_ENSURE_ARG_POINTER(aScaling); - *aScaling = mScaling; - return NS_OK; -} - -NS_IMETHODIMP nsPrintOptions::SetScaling(double aScaling) -{ - mScaling = aScaling; - return NS_OK; -} - -/* attribute boolean printBGColors; */ -NS_IMETHODIMP nsPrintOptions::GetPrintBGColors(PRBool *aPrintBGColors) -{ - NS_ENSURE_ARG_POINTER(aPrintBGColors); - *aPrintBGColors = mPrintBGColors; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintBGColors(PRBool aPrintBGColors) -{ - mPrintBGColors = aPrintBGColors; - return NS_OK; -} - -/* attribute boolean printBGImages; */ -NS_IMETHODIMP nsPrintOptions::GetPrintBGImages(PRBool *aPrintBGImages) -{ - NS_ENSURE_ARG_POINTER(aPrintBGImages); - *aPrintBGImages = mPrintBGImages; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintBGImages(PRBool aPrintBGImages) -{ - mPrintBGImages = aPrintBGImages; - return NS_OK; -} - -/* attribute long printRange; */ -NS_IMETHODIMP nsPrintOptions::GetPrintRange(PRInt16 *aPrintRange) -{ - NS_ENSURE_ARG_POINTER(aPrintRange); - *aPrintRange = mPrintRange; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintRange(PRInt16 aPrintRange) -{ - mPrintRange = aPrintRange; - return NS_OK; -} - /* attribute wstring docTitle; */ NS_IMETHODIMP nsPrintOptions::GetTitle(PRUnichar * *aTitle) { @@ -953,180 +970,6 @@ NS_IMETHODIMP nsPrintOptions::SetDocURL(const PRUnichar * aDocURL) return NS_OK; } -/* attribute wstring docTitle; */ -nsresult -nsPrintOptions::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 -nsPrintOptions::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 nsPrintOptions::GetHeaderStrLeft(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eHeader, kJustLeft); -} -NS_IMETHODIMP nsPrintOptions::SetHeaderStrLeft(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eHeader, kJustLeft); -} - -/* attribute wstring Header String Center */ -NS_IMETHODIMP nsPrintOptions::GetHeaderStrCenter(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eHeader, kJustCenter); -} -NS_IMETHODIMP nsPrintOptions::SetHeaderStrCenter(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eHeader, kJustCenter); -} - -/* attribute wstring Header String Right */ -NS_IMETHODIMP nsPrintOptions::GetHeaderStrRight(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eHeader, kJustRight); -} -NS_IMETHODIMP nsPrintOptions::SetHeaderStrRight(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eHeader, kJustRight); -} - - -/* attribute wstring Footer String Left */ -NS_IMETHODIMP nsPrintOptions::GetFooterStrLeft(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustLeft); -} -NS_IMETHODIMP nsPrintOptions::SetFooterStrLeft(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustLeft); -} - -/* attribute wstring Footer String Center */ -NS_IMETHODIMP nsPrintOptions::GetFooterStrCenter(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustCenter); -} -NS_IMETHODIMP nsPrintOptions::SetFooterStrCenter(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustCenter); -} - -/* attribute wstring Footer String Right */ -NS_IMETHODIMP nsPrintOptions::GetFooterStrRight(PRUnichar * *aTitle) -{ - return GetMarginStrs(aTitle, eFooter, kJustRight); -} -NS_IMETHODIMP nsPrintOptions::SetFooterStrRight(const PRUnichar * aTitle) -{ - return SetMarginStrs(aTitle, eFooter, kJustRight); -} - - -/* attribute boolean isPrintFrame; */ -NS_IMETHODIMP nsPrintOptions::GetHowToEnableFrameUI(PRInt16 *aHowToEnableFrameUI) -{ - NS_ENSURE_ARG_POINTER(aHowToEnableFrameUI); - *aHowToEnableFrameUI = (PRInt32)mHowToEnableFrameUI; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetHowToEnableFrameUI(PRInt16 aHowToEnableFrameUI) -{ - mHowToEnableFrameUI = aHowToEnableFrameUI; - return NS_OK; -} - -/* attribute long printFrame; */ -NS_IMETHODIMP nsPrintOptions::GetPrintFrameType(PRInt16 *aPrintFrameType) -{ - NS_ENSURE_ARG_POINTER(aPrintFrameType); - *aPrintFrameType = mPrintFrameType; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintFrameType(PRInt16 aPrintFrameType) -{ - mPrintFrameType = aPrintFrameType; - return NS_OK; -} - -/* attribute short printFrameTypeUsage; */ -NS_IMETHODIMP nsPrintOptions::GetPrintFrameTypeUsage(PRInt16 *aPrintFrameTypeUsage) -{ - NS_ENSURE_ARG_POINTER(aPrintFrameTypeUsage); - *aPrintFrameTypeUsage = mPrintFrameTypeUsage; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintFrameTypeUsage(PRInt16 aPrintFrameTypeUsage) -{ - mPrintFrameTypeUsage = aPrintFrameTypeUsage; - return NS_OK; -} - -/* attribute long isCancelled; */ -NS_IMETHODIMP nsPrintOptions::GetIsCancelled(PRBool *aIsCancelled) -{ - NS_ENSURE_ARG_POINTER(aIsCancelled); - *aIsCancelled = mIsCancelled; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetIsCancelled(PRBool aIsCancelled) -{ - mIsCancelled = aIsCancelled; - return NS_OK; -} - - -/* attribute long isCancelled; */ -NS_IMETHODIMP nsPrintOptions::GetPrintSilent(PRBool *aPrintSilent) -{ - NS_ENSURE_ARG_POINTER(aPrintSilent); - *aPrintSilent = mPrintSilent; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPrintSilent(PRBool aPrintSilent) -{ - mPrintSilent = aPrintSilent; - return NS_OK; -} - /* [noscript] voidPtr GetNativeData (in short aDataType); */ NS_IMETHODIMP nsPrintOptions::GetNativeData(PRInt16 aDataType, void * *_retval) { @@ -1136,287 +979,6 @@ NS_IMETHODIMP nsPrintOptions::GetNativeData(PRInt16 aDataType, void * *_retval) return NS_ERROR_NOT_IMPLEMENTED; } -/* attribute nsIPrintSettings printSettings; */ -NS_IMETHODIMP nsPrintOptions::GetPrintSettings(nsIPrintSettings * *aPrintSettings) -{ - NS_ENSURE_ARG_POINTER(aPrintSettings); - *aPrintSettings = mPrintSettingsObj; - return NS_OK; -} - -NS_IMETHODIMP nsPrintOptions::SetPrintSettings(nsIPrintSettings * aPrintSettings) -{ - NS_ENSURE_ARG_POINTER(aPrintSettings); - mPrintSettingsObj = aPrintSettings; - return NS_OK; -} - -/* attribute nsIPrintSettings printSettingsValues; */ -NS_IMETHODIMP nsPrintOptions::GetPrintSettingsValues(nsIPrintSettings * *aPrintSettingsValues) -{ - NS_ENSURE_ARG_POINTER(aPrintSettingsValues); - nsIPrintSettings* printSettingsValues = *aPrintSettingsValues; - if (printSettingsValues == nsnull) { - if (NS_SUCCEEDED(CreatePrintSettings(&printSettingsValues))) { - *aPrintSettingsValues = printSettingsValues; - } else { - return NS_ERROR_FAILURE; - } - } - - printSettingsValues->SetStartPageRange(mStartPageNum); - printSettingsValues->SetEndPageRange(mEndPageNum); - - double dblVal; - GetMarginTop(&dblVal); - printSettingsValues->SetMarginTop(dblVal); - - GetMarginLeft(&dblVal); - printSettingsValues->SetMarginLeft(dblVal); - - GetMarginBottom(&dblVal); - printSettingsValues->SetMarginBottom(dblVal); - - GetMarginRight(&dblVal); - printSettingsValues->SetMarginRight(dblVal); - - printSettingsValues->SetScaling(mScaling); - printSettingsValues->SetPrintBGColors(mPrintBGColors); - printSettingsValues->SetPrintBGImages(mPrintBGImages); - - printSettingsValues->SetPrintRange(mPrintRange); - - PRUnichar* uniChar; - GetTitle(&uniChar); - printSettingsValues->SetTitle(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetDocURL(&uniChar); - printSettingsValues->SetDocURL(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetHeaderStrLeft(&uniChar); - printSettingsValues->SetHeaderStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetHeaderStrCenter(&uniChar); - printSettingsValues->SetHeaderStrCenter(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetHeaderStrRight(&uniChar); - printSettingsValues->SetHeaderStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetFooterStrLeft(&uniChar); - printSettingsValues->SetFooterStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetFooterStrCenter(&uniChar); - printSettingsValues->SetFooterStrCenter(uniChar); - - GetFooterStrRight(&uniChar); - printSettingsValues->SetFooterStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - printSettingsValues->SetPrintFrameTypeUsage(mPrintFrameTypeUsage); - printSettingsValues->SetPrintFrameType(mPrintFrameType); - printSettingsValues->SetPrintSilent(mPrintSilent); - printSettingsValues->SetPrintReversed(mPrintReversed); - printSettingsValues->SetPrintInColor(mPrintInColor); - printSettingsValues->SetPaperSizeUnit(mPaperSizeUnit); - printSettingsValues->SetPaperHeight(mPaperHeight); - printSettingsValues->SetPaperWidth(mPaperWidth); - printSettingsValues->SetOrientation(mOrientation); - printSettingsValues->SetNumCopies(mNumCopies); - - GetPrinterName(&uniChar); - printSettingsValues->SetPrinterName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - GetPrintCommand(&uniChar); - printSettingsValues->SetPrintCommand(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - printSettingsValues->SetPrintToFile(mPrintToFile); - - GetToFileName(&uniChar); - printSettingsValues->SetToFileName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - printSettingsValues->SetPrintPageDelay(mPrintPageDelay); - - return NS_OK; -} - -NS_IMETHODIMP nsPrintOptions::SetPrintSettingsValues(nsIPrintSettings * aPrintSettingsValues) -{ - - NS_ENSURE_ARG_POINTER(aPrintSettingsValues); - - aPrintSettingsValues->GetStartPageRange(&mStartPageNum); - aPrintSettingsValues->GetEndPageRange(&mEndPageNum); - - double dblVal; - aPrintSettingsValues->GetMarginTop(&dblVal); - SetMarginTop(dblVal); - - aPrintSettingsValues->GetMarginLeft(&dblVal); - SetMarginLeft(dblVal); - - aPrintSettingsValues->GetMarginBottom(&dblVal); - SetMarginBottom(dblVal); - - aPrintSettingsValues->GetMarginRight(&dblVal); - SetMarginRight(dblVal); - - aPrintSettingsValues->GetScaling(&mScaling); - aPrintSettingsValues->GetPrintBGColors(&mPrintBGColors); - aPrintSettingsValues->GetPrintBGImages(&mPrintBGImages); - - aPrintSettingsValues->GetPrintRange(&mPrintRange); - - PRUnichar* uniChar; - aPrintSettingsValues->GetTitle(&uniChar); - SetTitle(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetDocURL(&uniChar); - SetDocURL(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetHeaderStrLeft(&uniChar); - SetHeaderStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetHeaderStrCenter(&uniChar); - SetHeaderStrCenter(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetHeaderStrRight(&uniChar); - SetHeaderStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetFooterStrLeft(&uniChar); - SetFooterStrLeft(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetFooterStrCenter(&uniChar); - SetFooterStrCenter(uniChar); - - aPrintSettingsValues->GetFooterStrRight(&uniChar); - SetFooterStrRight(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintFrameTypeUsage(&mPrintFrameTypeUsage); - aPrintSettingsValues->GetPrintFrameType(&mPrintFrameType); - aPrintSettingsValues->GetPrintSilent(&mPrintSilent); - aPrintSettingsValues->GetPrintReversed(&mPrintReversed); - aPrintSettingsValues->GetPrintInColor(&mPrintInColor); - aPrintSettingsValues->GetPaperSizeUnit(&mPaperSizeUnit); - aPrintSettingsValues->GetPaperHeight(&mPaperHeight); - aPrintSettingsValues->GetPaperWidth(&mPaperWidth); - aPrintSettingsValues->GetOrientation(&mOrientation); - aPrintSettingsValues->GetNumCopies(&mNumCopies); - - aPrintSettingsValues->GetPrinterName(&uniChar); - SetPrinterName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintCommand(&uniChar); - SetPrintCommand(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintToFile(&mPrintToFile); - - aPrintSettingsValues->GetToFileName(&uniChar); - SetToFileName(uniChar); - if (uniChar != nsnull) nsMemory::Free(uniChar); - - aPrintSettingsValues->GetPrintPageDelay(&mPrintPageDelay); - SetPrintPageDelay(mPrintPageDelay); - - return NS_OK; -} - - -/* attribute double paperWidth; */ -NS_IMETHODIMP nsPrintOptions::GetPaperWidth(double *aPaperWidth) -{ - NS_ENSURE_ARG_POINTER(aPaperWidth); - *aPaperWidth = mPaperWidth; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperWidth(double aPaperWidth) -{ - mPaperWidth = aPaperWidth; - return NS_OK; -} - -/* attribute double paperHeight; */ -NS_IMETHODIMP nsPrintOptions::GetPaperHeight(double *aPaperHeight) -{ - NS_ENSURE_ARG_POINTER(aPaperHeight); - *aPaperHeight = mPaperHeight; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperHeight(double aPaperHeight) -{ - mPaperHeight = aPaperHeight; - return NS_OK; -} - -/* attribute short PaperSizeUnit; */ -NS_IMETHODIMP nsPrintOptions::GetPaperSizeUnit(PRInt16 *aPaperSizeUnit) -{ - NS_ENSURE_ARG_POINTER(aPaperSizeUnit); - *aPaperSizeUnit = mPaperSizeUnit; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperSizeUnit(PRInt16 aPaperSizeUnit) -{ - mPaperSizeUnit = aPaperSizeUnit; - return NS_OK; -} - -/* attribute short PaperSizeType; */ -NS_IMETHODIMP nsPrintOptions::GetPaperSizeType(PRInt16 *aPaperSizeType) -{ - NS_ENSURE_ARG_POINTER(aPaperSizeType); - *aPaperSizeType = mPaperSizeType; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperSizeType(PRInt16 aPaperSizeType) -{ - mPaperSizeType = aPaperSizeType; - return NS_OK; -} - -/* attribute short PaperData; */ -NS_IMETHODIMP nsPrintOptions::GetPaperData(PRInt16 *aPaperData) -{ - NS_ENSURE_ARG_POINTER(aPaperData); - *aPaperData = mPaperData; - return NS_OK; -} -NS_IMETHODIMP nsPrintOptions::SetPaperData(PRInt16 aPaperData) -{ - mPaperData = aPaperData; - return NS_OK; -} - -/* This has been deprecated */ -NS_IMETHODIMP nsPrintOptions::GetPaperSize(PRInt32 *aPaperSize) -{ - *aPaperSize = mPaperSize; - return NS_OK; -} -/* This has been deprecated */ -NS_IMETHODIMP nsPrintOptions::SetPaperSize(PRInt32 aPaperSize) -{ - mPaperSize = aPaperSize; - return NS_OK; -} - /* nsIPrintSettings CreatePrintSettings (); */ NS_IMETHODIMP nsPrintOptions::CreatePrintSettings(nsIPrintSettings **_retval) { @@ -1427,7 +989,7 @@ NS_IMETHODIMP nsPrintOptions::CreatePrintSettings(nsIPrintSettings **_retval) rv = printSettings->QueryInterface(NS_GET_IID(nsIPrintSettings), (void**)_retval); // ref counts if (NS_FAILED(rv)) return NS_ERROR_FAILURE; - InitPrintSettingsFromPrefs(*_retval); // ignore return value + InitPrintSettingsFromPrefs(*_retval, PR_FALSE, nsIPrintSettings::kInitSaveAll); // ignore return value return rv; } @@ -1469,6 +1031,22 @@ nsresult nsPrintOptions::ReadPrefString(nsIPref * aPref, return rv; } +/** --------------------------------------------------- + * Write PRUnichar* to Prefs and deletes the contents of the string + */ +nsresult nsPrintOptions::WritePrefString(nsIPref* aPref, PRUnichar*& aStr, const char* aPrefId) +{ + if (!aStr) return NS_ERROR_FAILURE; + + nsresult rv = NS_ERROR_FAILURE; + if (aStr) { + rv = aPref->SetUnicharPref(aPrefId, aStr); + nsMemory::Free(aStr); + aStr = nsnull; + } + return rv; +} + nsresult nsPrintOptions::WritePrefString(nsIPref * aPref, const char * aPrefId, nsString& aString) @@ -1490,7 +1068,9 @@ nsresult nsPrintOptions::ReadPrefDouble(nsIPref * aPref, char * str = nsnull; nsresult rv = aPref->CopyCharPref(aPrefId, &str); if (NS_SUCCEEDED(rv) && str) { - sscanf(str, "%6.2f", &aVal); + float f; + sscanf(str, "%f", &f); + aVal = double(f); nsMemory::Free(str); } return rv; @@ -1508,26 +1088,6 @@ nsresult nsPrintOptions::WritePrefDouble(nsIPref * aPref, return aPref->SetCharPref(aPrefId, str); } -void nsPrintOptions::ReadBitFieldPref(nsIPref * aPref, - const char * aPrefId, - PRInt32 anOption) -{ - PRBool b; - if (NS_SUCCEEDED(aPref->GetBoolPref(aPrefId, &b))) { - SetPrintOptions(anOption, b); - } -} - -//--------------------------------------------------- -void nsPrintOptions::WriteBitFieldPref(nsIPref * aPref, - const char * aPrefId, - PRInt32 anOption) -{ - PRBool b; - GetPrintOptions(anOption, &b); - aPref->SetBoolPref(aPrefId, b); -} - //--------------------------------------------------- void nsPrintOptions::ReadInchesToTwipsPref(nsIPref * aPref, const char * aPrefId, @@ -1565,6 +1125,7 @@ void nsPrintOptions::WriteInchesFromTwipsPref(nsIPref * aPref, } } +//--------------------------------------------------- void nsPrintOptions::ReadJustification(nsIPref * aPref, const char * aPrefId, PRInt16& aJust, @@ -1573,14 +1134,14 @@ void nsPrintOptions::ReadJustification(nsIPref * aPref, aJust = aInitValue; nsAutoString justStr; if (NS_SUCCEEDED(ReadPrefString(aPref, aPrefId, justStr))) { - if (justStr.EqualsWithConversion(kRightJust)) { - aJust = kJustRight; + if (justStr.EqualsWithConversion(kJustRight)) { + aJust = nsIPrintSettings::kJustRight; - } else if (justStr.EqualsWithConversion(kCenterJust)) { - aJust = kJustCenter; + } else if (justStr.EqualsWithConversion(kJustCenter)) { + aJust = nsIPrintSettings::kJustCenter; } else { - aJust = kJustLeft; + aJust = nsIPrintSettings::kJustLeft; } } } @@ -1591,19 +1152,117 @@ void nsPrintOptions::WriteJustification(nsIPref * aPref, PRInt16 aJust) { switch (aJust) { - case kJustLeft: - aPref->SetCharPref(aPrefId, kLeftJust); + case nsIPrintSettings::kJustLeft: + aPref->SetCharPref(aPrefId, kJustLeft); break; - case kJustCenter: - aPref->SetCharPref(aPrefId, kCenterJust); + case nsIPrintSettings::kJustCenter: + aPref->SetCharPref(aPrefId, kJustCenter); break; - case kJustRight: - aPref->SetCharPref(aPrefId, kRightJust); + case nsIPrintSettings::kJustRight: + aPref->SetCharPref(aPrefId, kJustRight); break; } //switch } +//---------------------------------------------------------------------- +// Testing of read/write prefs +// This define turns on the testing module below +// so at start up it writes and reads the prefs. +#ifdef DEBUG_rods_X +class Tester { +public: + Tester(); +}; +Tester::Tester() +{ + static NS_DEFINE_CID(kPrintOptionsCID, NS_PRINTOPTIONS_CID); + nsCOMPtr ps; + nsresult rv; + nsCOMPtr printService = do_GetService(kPrintOptionsCID, &rv); + if (NS_SUCCEEDED(rv)) { + rv = printService->CreatePrintSettings(getter_AddRefs(ps)); + } + if (ps) { + ps->SetPrintOptions(nsIPrintSettings::kPrintOddPages, PR_TRUE); + ps->SetPrintOptions(nsIPrintSettings::kPrintEvenPages, PR_FALSE); + ps->SetMarginTop(1.0); + ps->SetMarginLeft(1.0); + ps->SetMarginBottom(1.0); + ps->SetMarginRight(1.0); + ps->SetScaling(0.5); + ps->SetPrintBGColors(PR_TRUE); + ps->SetPrintBGImages(PR_TRUE); + ps->SetPrintRange(15); + ps->SetHeaderStrLeft(NS_ConvertUTF8toUCS2("Left").get()); + ps->SetHeaderStrCenter(NS_ConvertUTF8toUCS2("Center").get()); + ps->SetHeaderStrRight(NS_ConvertUTF8toUCS2("Right").get()); + ps->SetFooterStrLeft(NS_ConvertUTF8toUCS2("Left").get()); + ps->SetFooterStrCenter(NS_ConvertUTF8toUCS2("Center").get()); + ps->SetFooterStrRight(NS_ConvertUTF8toUCS2("Right").get()); + ps->SetPaperName(NS_ConvertUTF8toUCS2("Paper Name").get()); + ps->SetPaperSizeType(10); + ps->SetPaperData(1); + ps->SetPaperWidth(100.0); + ps->SetPaperHeight(50.0); + ps->SetPaperSizeUnit(nsIPrintSettings::kPaperSizeMillimeters); + ps->SetPrintReversed(PR_TRUE); + ps->SetPrintInColor(PR_TRUE); + ps->SetPaperSize(5); + ps->SetOrientation(nsIPrintSettings::kLandscapeOrientation); + ps->SetPrintCommand(NS_ConvertUTF8toUCS2("Command").get()); + ps->SetNumCopies(2); + ps->SetPrinterName(NS_ConvertUTF8toUCS2("Printer Name").get()); + ps->SetPrintToFile(PR_TRUE); + ps->SetToFileName(NS_ConvertUTF8toUCS2("File Name").get()); + ps->SetPrintPageDelay(1000); + struct SettingsType { + const char* mName; + PRUint32 mFlag; + }; + SettingsType gSettings[] = { + {"OddEven", nsIPrintSettings::kInitSaveOddEvenPages}, + {kPrintHeaderStrLeft, nsIPrintSettings::kInitSaveHeaderLeft}, + {kPrintHeaderStrCenter, nsIPrintSettings::kInitSaveHeaderCenter}, + {kPrintHeaderStrRight, nsIPrintSettings::kInitSaveHeaderRight}, + {kPrintFooterStrLeft, nsIPrintSettings::kInitSaveFooterLeft}, + {kPrintFooterStrCenter, nsIPrintSettings::kInitSaveFooterCenter}, + {kPrintFooterStrRight, nsIPrintSettings::kInitSaveFooterRight}, + {kPrintBGColors, nsIPrintSettings::kInitSaveBGColors}, + {kPrintBGImages, nsIPrintSettings::kInitSaveBGImages}, + {kPrintPaperSize, nsIPrintSettings::kInitSavePaperSize}, + {kPrintPaperName, nsIPrintSettings::kInitSavePaperName}, + {kPrintPaperSizeUnit, nsIPrintSettings::kInitSavePaperSizeUnit}, + {kPrintPaperSizeType, nsIPrintSettings::kInitSavePaperSizeType}, + {kPrintPaperData, nsIPrintSettings::kInitSavePaperData}, + {kPrintPaperWidth, nsIPrintSettings::kInitSavePaperWidth}, + {kPrintPaperHeight, nsIPrintSettings::kInitSavePaperHeight}, + {kPrintReversed, nsIPrintSettings::kInitSaveReversed}, + {kPrintInColor, nsIPrintSettings::kInitSaveInColor}, + {kPrintOrientation, nsIPrintSettings::kInitSaveOrientation}, + {kPrintCommand, nsIPrintSettings::kInitSavePrintCommand}, + {kPrinterName, nsIPrintSettings::kInitSavePrinterName}, + {kPrintToFile, nsIPrintSettings::kInitSavePrintToFile}, + {kPrintToFileName, nsIPrintSettings::kInitSaveToFileName}, + {kPrintPageDelay, nsIPrintSettings::kInitSavePageDelay}, + {"Margins", nsIPrintSettings::kInitSaveMargins}, + {"All", nsIPrintSettings::kInitSaveAll}, + {nsnull, 0}}; + + nsString prefix; prefix.AssignWithConversion("Printer Name"); + PRInt32 i = 0; + while (gSettings[i].mName != nsnull) { + printf("------------------------------------------------\n"); + printf("%d) %s -> 0x%X\n", i, gSettings[i].mName, gSettings[i].mFlag); + printService->SavePrintSettingsToPrefs(ps, PR_TRUE, gSettings[i].mFlag); + printService->InitPrintSettingsFromPrefs(ps, PR_TRUE, gSettings[i].mFlag); + i++; + } + } + +} +Tester gTester; +#endif diff --git a/widget/src/xpwidgets/nsPrintOptionsImpl.h b/widget/src/xpwidgets/nsPrintOptionsImpl.h index 8b90ac5b46f3..d4aad962170e 100644 --- a/widget/src/xpwidgets/nsPrintOptionsImpl.h +++ b/widget/src/xpwidgets/nsPrintOptionsImpl.h @@ -50,62 +50,26 @@ protected: nsresult ReadPrefString(nsIPref * aPref, const char * aPrefId, nsString& aString); nsresult WritePrefString(nsIPref * aPref, const char * aPrefId, nsString& aString); + nsresult WritePrefString(nsIPref* aPref, PRUnichar*& aStr, const char* aPrefId); nsresult ReadPrefDouble(nsIPref * aPref, const char * aPrefId, double& aVal); nsresult WritePrefDouble(nsIPref * aPref, const char * aPrefId, double aVal); - typedef enum { - eHeader, - eFooter - } nsHeaderFooterEnum; - - nsresult GetMarginStrs(PRUnichar * *aTitle, nsHeaderFooterEnum aType, PRInt16 aJust); - nsresult SetMarginStrs(const PRUnichar * aTitle, nsHeaderFooterEnum aType, PRInt16 aJust); + nsresult ReadPrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUint32 aFlags); + nsresult WritePrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUint32 aFlags); + const char* GetPrefName(const char * aPrefName, + const nsString& aPrinterName); // Members - nsMargin mMargin; - PRInt32 mPrintOptions; - - // scriptable data members - PRInt16 mPrintRange; - PRInt32 mStartPageNum; // only used for ePrintRange_SpecifiedRange - PRInt32 mEndPageNum; - double mScaling; - PRBool mPrintBGColors; // print background colors - PRBool mPrintBGImages; // print background images - - PRInt16 mPrintFrameTypeUsage; - PRInt16 mPrintFrameType; - PRBool mHowToEnableFrameUI; PRBool mIsCancelled; - PRBool mPrintSilent; - PRInt32 mPrintPageDelay; - nsString mTitle; nsString mURL; - nsString mPageNumberFormat; - nsString mHeaderStrs[3]; - nsString mFooterStrs[3]; - - nsIPrintSettings* mPrintSettingsObj; //weak ref, hold address only - - PRInt16 mPaperData; - PRInt16 mPaperSizeType; - double mPaperWidth; - double mPaperHeight; - PRInt16 mPaperSizeUnit; - - PRInt32 mPaperSize; // this has been deprecated - PRBool mPrintReversed; - PRBool mPrintInColor; // a false means grayscale - PRInt32 mOrientation; // see orientation consts - nsString mPrintCommand; - PRInt32 mNumCopies; - nsString mPrinter; PRBool mPrintToFile; nsString mToFileName; nsCOMPtr mGlobalPrintSettings; + nsCString mPrefName; + static nsFont* sDefaultFont; }; diff --git a/widget/src/xpwidgets/nsPrintSettingsImpl.cpp b/widget/src/xpwidgets/nsPrintSettingsImpl.cpp index c0b1ba8b97d8..a7ed6306cb30 100644 --- a/widget/src/xpwidgets/nsPrintSettingsImpl.cpp +++ b/widget/src/xpwidgets/nsPrintSettingsImpl.cpp @@ -48,30 +48,30 @@ NS_IMPL_ISUPPORTS1(nsPrintSettings, nsIPrintSettings) * @update 6/21/00 dwc */ nsPrintSettings::nsPrintSettings() : + mPrintOptions(0L), mPrintRange(kRangeAllPages), mStartPageNum(1), mEndPageNum(1), mScaling(1.0), - mNumCopies(1), mPrintBGColors(PR_FALSE), mPrintBGImages(PR_FALSE), - mPrintOptions(0L), - mPrintReversed(PR_FALSE), - mPrintInColor(PR_TRUE), - mOrientation(kPortraitOrientation), - mPrintToFile(PR_FALSE), mPrintFrameTypeUsage(kUseInternalDefault), mPrintFrameType(kFramesAsIs), + mHowToEnableFrameUI(kFrameEnableNone), + mIsCancelled(PR_FALSE), + mPrintSilent(PR_FALSE), + mShrinkToFit(PR_FALSE), mPrintPageDelay(500), - mPaperSizeType(kPaperSizeDefined), mPaperData(0), + mPaperSizeType(kPaperSizeDefined), mPaperWidth(8.5), mPaperHeight(11.0), mPaperSizeUnit(kPaperSizeInches), - mPrintSilent(PR_FALSE), - mShrinkToFit(PR_FALSE), - mHowToEnableFrameUI(kFrameEnableNone), - mIsCancelled(PR_FALSE) + mPrintReversed(PR_FALSE), + mPrintInColor(PR_TRUE), + mOrientation(kPortraitOrientation), + mNumCopies(1), + mPrintToFile(PR_FALSE) { NS_INIT_ISUPPORTS(); @@ -591,6 +591,24 @@ NS_IMETHODIMP nsPrintSettings::SetShrinkToFit(PRBool aShrinkToFit) return NS_OK; } +/* attribute wstring paperName; */ +NS_IMETHODIMP nsPrintSettings::GetPaperName(PRUnichar * *aPaperName) +{ + NS_ENSURE_ARG_POINTER(aPaperName); + if (mPaperName.Length()) { + *aPaperName = ToNewUnicode(mPaperName); + } else { + *aPaperName = nsnull; + } + return NS_OK; +} +NS_IMETHODIMP nsPrintSettings::SetPaperName(const PRUnichar * aPaperName) +{ + NS_ENSURE_ARG_POINTER(aPaperName); + mPaperName = aPaperName; + return NS_OK; +} + /* attribute boolean howToEnableFrameUI; */ NS_IMETHODIMP nsPrintSettings::GetHowToEnableFrameUI(PRInt16 *aHowToEnableFrameUI) { diff --git a/widget/src/xpwidgets/nsPrintSettingsImpl.h b/widget/src/xpwidgets/nsPrintSettingsImpl.h index 09eca59f3cd6..d3098e637142 100644 --- a/widget/src/xpwidgets/nsPrintSettingsImpl.h +++ b/widget/src/xpwidgets/nsPrintSettingsImpl.h @@ -27,8 +27,6 @@ #include "nsMargin.h" #include "nsString.h" -class nsIPrintSettings; - //***************************************************************************** //*** nsPrintSettings //***************************************************************************** @@ -76,6 +74,7 @@ protected: nsString mHeaderStrs[3]; nsString mFooterStrs[3]; + nsString mPaperName; PRInt16 mPaperData; PRInt16 mPaperSizeType; double mPaperWidth;