widget/nsPrintSettingsService.h
author Brindusan Cristian <cbrindusan@mozilla.com>
Tue, 05 Mar 2019 22:42:15 +0200
changeset 520316 be4b780a7783cdf7d3ead37c98917dc0d2e94a1d
parent 505383 6f3709b3878117466168c40affa7bca0b60cf75b
permissions -rw-r--r--
Backed out 5 changesets (bug 1508976, bug 1522581) for android geckoview bustages at /usr/bin/python2.7. CLOSED TREE Backed out changeset 7a6be593b0be (bug 1522581) Backed out changeset c47b37ac1775 (bug 1522581) Backed out changeset 91c31d2a7706 (bug 1508976) Backed out changeset da57df805c56 (bug 1508976) Backed out changeset 4e5d97c93515 (bug 1508976)

/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
 *
 * This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

#ifndef nsPrintSettingsService_h
#define nsPrintSettingsService_h

#include "mozilla/embedding/PPrinting.h"
#include "nsCOMPtr.h"
#include "nsIPrintSettings.h"
#include "nsIPrintSettingsService.h"
#include "nsString.h"
#include "nsFont.h"

/**
 * Class nsPrintSettingsService.  Base class for the platform specific widget
 * subclasses to inherit from.
 */
class nsPrintSettingsService : public nsIPrintSettingsService {
 public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIPRINTSETTINGSSERVICE

  nsPrintSettingsService() {}

  /**
   * method Init
   *  Initializes member variables. Every consumer that does manual
   *  creation (instead of do_CreateInstance) needs to call this method
   *  immediately after instantiation.
   */
  virtual nsresult Init();

 private:
  // Copying is not supported.
  nsPrintSettingsService(const nsPrintSettingsService& x) = delete;
  nsPrintSettingsService& operator=(const nsPrintSettingsService& x) = delete;

 protected:
  virtual ~nsPrintSettingsService() {}

  void ReadBitFieldPref(const char* aPrefId, int32_t anOption);
  void WriteBitFieldPref(const char* aPrefId, int32_t anOption);
  void ReadJustification(const char* aPrefId, int16_t& aJust,
                         int16_t aInitValue);
  void WriteJustification(const char* aPrefId, int16_t aJust);
  void ReadInchesToTwipsPref(const char* aPrefId, int32_t& aTwips,
                             const char* aMarginPref);
  void WriteInchesFromTwipsPref(const char* aPrefId, int32_t aTwips);
  void ReadInchesIntToTwipsPref(const char* aPrefId, int32_t& aTwips,
                                const char* aMarginPref);
  void WriteInchesIntFromTwipsPref(const char* aPrefId, int32_t aTwips);

  nsresult ReadPrefDouble(const char* aPrefId, double& aVal);
  nsresult WritePrefDouble(const char* aPrefId, double aVal);

  /**
   * method ReadPrefs
   * @param aPS          a pointer to the printer settings
   * @param aPrinterName the name of the printer for which to read prefs
   * @param aFlags       flag specifying which prefs to read
   */
  virtual nsresult ReadPrefs(nsIPrintSettings* aPS,
                             const nsAString& aPrinterName, uint32_t aFlags);
  /**
   * method WritePrefs
   * @param aPS          a pointer to the printer settings
   * @param aPrinterName the name of the printer for which to write prefs
   * @param aFlags       flag specifying which prefs to read
   */
  virtual nsresult WritePrefs(nsIPrintSettings* aPS,
                              const nsAString& aPrinterName, uint32_t aFlags);

  const char* GetPrefName(const char* aPrefName, const nsAString& aPrinterName);

  /**
   * method _CreatePrintSettings
   *   May be implemented by the platform-specific derived class
   *
   * @return             printer settings instance
   */
  virtual nsresult _CreatePrintSettings(nsIPrintSettings** _retval);

  // Members
  nsCOMPtr<nsIPrintSettings> mGlobalPrintSettings;

  nsCString mPrefName;
};

#endif  // nsPrintSettingsService_h