summaryrefslogtreecommitdiffstats
path: root/components/shell/content/setDesktopBackground.js
diff options
context:
space:
mode:
Diffstat (limited to 'components/shell/content/setDesktopBackground.js')
-rw-r--r--components/shell/content/setDesktopBackground.js214
1 files changed, 0 insertions, 214 deletions
diff --git a/components/shell/content/setDesktopBackground.js b/components/shell/content/setDesktopBackground.js
deleted file mode 100644
index 53cc70d..0000000
--- a/components/shell/content/setDesktopBackground.js
+++ /dev/null
@@ -1,214 +0,0 @@
-/* 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/. */
-
-Components.utils.import("resource://gre/modules/AppConstants.jsm");
-
-var Ci = Components.interfaces;
-
-var gSetBackground = {
- _position : AppConstants.platform == "macosx" ? "STRETCH" : "",
- _backgroundColor : AppConstants.platform != "macosx" ? 0 : undefined,
- _screenWidth : 0,
- _screenHeight : 0,
- _image : null,
- _canvas : null,
-
- get _shell()
- {
- return Components.classes["@mozilla.org/browser/shell-service;1"]
- .getService(Ci.nsIShellService);
- },
-
- load: function ()
- {
- this._canvas = document.getElementById("screen");
- this._screenWidth = screen.width;
- this._screenHeight = screen.height;
- if (AppConstants.platform == "macosx") {
- document.documentElement.getButton("accept").hidden = true;
- }
- if (this._screenWidth / this._screenHeight >= 1.6)
- document.getElementById("monitor").setAttribute("aspectratio", "16:10");
-
- if (AppConstants.platform == "win") {
- // Hide fill + fit options if < Win7 since they don't work.
- var version = Components.classes["@mozilla.org/system-info;1"]
- .getService(Ci.nsIPropertyBag2)
- .getProperty("version");
- var isWindows7OrHigher = (parseFloat(version) >= 6.1);
- if (!isWindows7OrHigher) {
- document.getElementById("fillPosition").hidden = true;
- document.getElementById("fitPosition").hidden = true;
- }
- }
-
- // make sure that the correct dimensions will be used
- setTimeout(function(self) {
- self.init(window.arguments[0]);
- }, 0, this);
- },
-
- init: function (aImage)
- {
- this._image = aImage;
-
- // set the size of the coordinate space
- this._canvas.width = this._canvas.clientWidth;
- this._canvas.height = this._canvas.clientHeight;
-
- var ctx = this._canvas.getContext("2d");
- ctx.scale(this._canvas.clientWidth / this._screenWidth, this._canvas.clientHeight / this._screenHeight);
-
- if (AppConstants.platform != "macosx") {
- this._initColor();
- } else {
- // Make sure to reset the button state in case the user has already
- // set an image as their desktop background.
- var setDesktopBackground = document.getElementById("setDesktopBackground");
- setDesktopBackground.hidden = false;
- var bundle = document.getElementById("backgroundBundle");
- setDesktopBackground.label = bundle.getString("DesktopBackgroundSet");
- setDesktopBackground.disabled = false;
-
- document.getElementById("showDesktopPreferences").hidden = true;
- }
- this.updatePosition();
- },
-
- setDesktopBackground: function ()
- {
- if (AppConstants.platform != "macosx") {
- document.persist("menuPosition", "value");
- this._shell.desktopBackgroundColor = this._hexStringToLong(this._backgroundColor);
- } else {
- Components.classes["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService)
- .addObserver(this, "shell:desktop-background-changed", false);
-
- var bundle = document.getElementById("backgroundBundle");
- var setDesktopBackground = document.getElementById("setDesktopBackground");
- setDesktopBackground.disabled = true;
- setDesktopBackground.label = bundle.getString("DesktopBackgroundDownloading");
- }
- this._shell.setDesktopBackground(this._image,
- Ci.nsIShellService["BACKGROUND_" + this._position]);
- },
-
- updatePosition: function ()
- {
- var ctx = this._canvas.getContext("2d");
- ctx.clearRect(0, 0, this._screenWidth, this._screenHeight);
-
- if (AppConstants.platform != "macosx") {
- this._position = document.getElementById("menuPosition").value;
- }
-
- switch (this._position) {
- case "TILE":
- ctx.save();
- ctx.fillStyle = ctx.createPattern(this._image, "repeat");
- ctx.fillRect(0, 0, this._screenWidth, this._screenHeight);
- ctx.restore();
- break;
- case "STRETCH":
- ctx.drawImage(this._image, 0, 0, this._screenWidth, this._screenHeight);
- break;
- case "CENTER": {
- let x = (this._screenWidth - this._image.naturalWidth) / 2;
- let y = (this._screenHeight - this._image.naturalHeight) / 2;
- ctx.drawImage(this._image, x, y);
- break;
- }
- case "FILL": {
- // Try maxing width first, overflow height.
- let widthRatio = this._screenWidth / this._image.naturalWidth;
- let width = this._image.naturalWidth * widthRatio;
- let height = this._image.naturalHeight * widthRatio;
- if (height < this._screenHeight) {
- // Height less than screen, max height and overflow width.
- let heightRatio = this._screenHeight / this._image.naturalHeight;
- width = this._image.naturalWidth * heightRatio;
- height = this._image.naturalHeight * heightRatio;
- }
- let x = (this._screenWidth - width) / 2;
- let y = (this._screenHeight - height) / 2;
- ctx.drawImage(this._image, x, y, width, height);
- break;
- }
- case "FIT": {
- // Try maxing width first, top and bottom borders.
- let widthRatio = this._screenWidth / this._image.naturalWidth;
- let width = this._image.naturalWidth * widthRatio;
- let height = this._image.naturalHeight * widthRatio;
- let x = 0;
- let y = (this._screenHeight - height) / 2;
- if (height > this._screenHeight) {
- // Height overflow, maximise height, side borders.
- let heightRatio = this._screenHeight / this._image.naturalHeight;
- width = this._image.naturalWidth * heightRatio;
- height = this._image.naturalHeight * heightRatio;
- x = (this._screenWidth - width) / 2;
- y = 0;
- }
- ctx.drawImage(this._image, x, y, width, height);
- break;
- }
- }
- }
-};
-
-if (AppConstants.platform != "macosx") {
- gSetBackground["_initColor"] = function ()
- {
- var color = this._shell.desktopBackgroundColor;
-
- const rMask = 4294901760;
- const gMask = 65280;
- const bMask = 255;
- var r = (color & rMask) >> 16;
- var g = (color & gMask) >> 8;
- var b = (color & bMask);
- this.updateColor(this._rgbToHex(r, g, b));
-
- var colorpicker = document.getElementById("desktopColor");
- colorpicker.color = this._backgroundColor;
- };
-
- gSetBackground["updateColor"] = function (aColor)
- {
- this._backgroundColor = aColor;
- this._canvas.style.backgroundColor = aColor;
- };
-
- // Converts a color string in the format "#RRGGBB" to an integer.
- gSetBackground["_hexStringToLong"] = function (aString)
- {
- return parseInt(aString.substring(1, 3), 16) << 16 |
- parseInt(aString.substring(3, 5), 16) << 8 |
- parseInt(aString.substring(5, 7), 16);
- };
-
- gSetBackground["_rgbToHex"] = function (aR, aG, aB)
- {
- return "#" + [aR, aG, aB].map(aInt => aInt.toString(16).replace(/^(.)$/, "0$1"))
- .join("").toUpperCase();
- };
-} else {
- gSetBackground["observe"] = function (aSubject, aTopic, aData)
- {
- if (aTopic == "shell:desktop-background-changed") {
- document.getElementById("setDesktopBackground").hidden = true;
- document.getElementById("showDesktopPreferences").hidden = false;
-
- Components.classes["@mozilla.org/observer-service;1"]
- .getService(Ci.nsIObserverService)
- .removeObserver(this, "shell:desktop-background-changed");
- }
- };
-
- gSetBackground["showDesktopPrefs"] = function()
- {
- this._shell.openApplication(Ci.nsIMacShellService.APPLICATION_DESKTOP);
- };
-}