Fixing bug 223111. Making the page-setup settings shrink-to-fit and scaling persist across Mozilla instances. Patch by jblanco@us.ibm.com, and modiefied by me. r=ben, sr=bienvenu, a=asa.

This commit is contained in:
jst%mozilla.jstenback.com 2006-02-07 01:14:46 +00:00
Родитель a1e64427b9
Коммит f0b208edf2
2 изменённых файлов: 38 добавлений и 9 удалений

Просмотреть файл

@ -94,6 +94,8 @@ interface nsIPrintSettings : nsISupports
const unsigned long kInitSaveMargins = 0x01000000; const unsigned long kInitSaveMargins = 0x01000000;
const unsigned long kInitSaveNativeData = 0x02000000; const unsigned long kInitSaveNativeData = 0x02000000;
const unsigned long kInitSavePlexName = 0x04000000; const unsigned long kInitSavePlexName = 0x04000000;
const unsigned long kInitSaveShrinkToFit = 0x08000000;
const unsigned long kInitSaveScaling = 0x10000000;
const unsigned long kInitSaveAll = 0xFFFFFFFF; const unsigned long kInitSaveAll = 0xFFFFFFFF;
/* Print Option Flags for Bit Field*/ /* Print Option Flags for Bit Field*/

Просмотреть файл

@ -62,6 +62,7 @@
#include "nsISimpleEnumerator.h" #include "nsISimpleEnumerator.h"
#include "nsISupportsPrimitives.h" #include "nsISupportsPrimitives.h"
#include "nsGfxCIID.h" #include "nsGfxCIID.h"
#include "stdlib.h"
static NS_DEFINE_IID(kCPrinterEnumerator, NS_PRINTER_ENUMERATOR_CID); static NS_DEFINE_IID(kCPrinterEnumerator, NS_PRINTER_ENUMERATOR_CID);
@ -101,8 +102,10 @@ const char kPrinterName[] = "print_printer";
const char kPrintToFile[] = "print_to_file"; const char kPrintToFile[] = "print_to_file";
const char kPrintToFileName[] = "print_to_filename"; const char kPrintToFileName[] = "print_to_filename";
const char kPrintPageDelay[] = "print_pagedelay"; const char kPrintPageDelay[] = "print_pagedelay";
const char kPrintBGColors[] = "print_bgcolor"; const char kPrintBGColors[] = "print_bgcolor";
const char kPrintBGImages[] = "print_bgimages"; const char kPrintBGImages[] = "print_bgimages";
const char kPrintShrinkToFit[] = "print_shrink_to_fit";
const char kPrintScaling[] = "print_scaling";
const char kJustLeft[] = "left"; const char kJustLeft[] = "left";
const char kJustCenter[] = "center"; const char kJustCenter[] = "center";
@ -578,9 +581,21 @@ nsPrintOptions::ReadPrefs(nsIPrintSettings* aPS, const nsString& aPrefName, PRUi
} }
} }
if (aFlags & nsIPrintSettings::kInitSaveShrinkToFit) {
if (NS_SUCCEEDED(mPrefBranch->GetBoolPref(GetPrefName(kPrintShrinkToFit, aPrefName), &b))) {
aPS->SetShrinkToFit(b);
DUMP_BOOL(kReadStr, kPrintShrinkToFit, b);
}
}
if (aFlags & nsIPrintSettings::kInitSaveScaling) {
if (NS_SUCCEEDED(ReadPrefDouble(GetPrefName(kPrintScaling, aPrefName), dbl))) {
aPS->SetScaling(dbl);
DUMP_DBL(kReadStr, kPrintScaling, dbl);
}
}
// Not Reading In: // Not Reading In:
// Scaling
// ShrinkToFit
// Number of Copies // Number of Copies
return NS_OK; return NS_OK;
@ -798,9 +813,21 @@ nsPrintOptions::WritePrefs(nsIPrintSettings *aPS, const nsString& aPrefName, PRU
} }
} }
if (aFlags & nsIPrintSettings::kInitSaveShrinkToFit) {
if (NS_SUCCEEDED(aPS->GetShrinkToFit(&b))) {
DUMP_BOOL(kWriteStr, kPrintShrinkToFit, b);
mPrefBranch->SetBoolPref(GetPrefName(kPrintShrinkToFit, aPrefName), b);
}
}
if (aFlags & nsIPrintSettings::kInitSaveScaling) {
if (NS_SUCCEEDED(aPS->GetScaling(&dbl))) {
DUMP_DBL(kWriteStr, kPrintScaling, dbl);
WritePrefDouble(GetPrefName(kPrintScaling, aPrefName), dbl);
}
}
// Not Writing Out: // Not Writing Out:
// Scaling
// ShrinkToFit
// Number of Copies // Number of Copies
return NS_OK; return NS_OK;
@ -1092,12 +1119,10 @@ nsresult nsPrintOptions::ReadPrefDouble(const char * aPrefId,
double& aVal) double& aVal)
{ {
NS_ENSURE_STATE(mPrefBranch); NS_ENSURE_STATE(mPrefBranch);
char * str = nsnull; char * str;
nsresult rv = mPrefBranch->GetCharPref(aPrefId, &str); nsresult rv = mPrefBranch->GetCharPref(aPrefId, &str);
if (NS_SUCCEEDED(rv) && str) { if (NS_SUCCEEDED(rv) && str) {
float f; aVal = atof(str);
PR_sscanf(str, "%f", &f);
aVal = double(f);
nsMemory::Free(str); nsMemory::Free(str);
} }
return rv; return rv;
@ -1248,6 +1273,7 @@ Tester::Tester()
ps->SetPrintToFile(PR_TRUE); ps->SetPrintToFile(PR_TRUE);
ps->SetToFileName(NS_ConvertUTF8toUCS2("File Name").get()); ps->SetToFileName(NS_ConvertUTF8toUCS2("File Name").get());
ps->SetPrintPageDelay(1000); ps->SetPrintPageDelay(1000);
ps->SetShrinkToFit(PR_TRUE);
struct SettingsType { struct SettingsType {
const char* mName; const char* mName;
@ -1263,6 +1289,7 @@ Tester::Tester()
{kPrintFooterStrRight, nsIPrintSettings::kInitSaveFooterRight}, {kPrintFooterStrRight, nsIPrintSettings::kInitSaveFooterRight},
{kPrintBGColors, nsIPrintSettings::kInitSaveBGColors}, {kPrintBGColors, nsIPrintSettings::kInitSaveBGColors},
{kPrintBGImages, nsIPrintSettings::kInitSaveBGImages}, {kPrintBGImages, nsIPrintSettings::kInitSaveBGImages},
{kPrintShrinkToFit, nsIPrintSettings::kInitSaveShrinkToFit},
{kPrintPaperSize, nsIPrintSettings::kInitSavePaperSize}, {kPrintPaperSize, nsIPrintSettings::kInitSavePaperSize},
{kPrintPaperName, nsIPrintSettings::kInitSavePaperName}, {kPrintPaperName, nsIPrintSettings::kInitSavePaperName},
{kPrintPlexName, nsIPrintSettings::kInitSavePlexName}, {kPrintPlexName, nsIPrintSettings::kInitSavePlexName},