summaryrefslogtreecommitdiffstats
path: root/components/shell/content
diff options
context:
space:
mode:
Diffstat (limited to 'components/shell/content')
-rw-r--r--components/shell/content/setDesktopBackground.js214
-rw-r--r--components/shell/content/setDesktopBackground.xul84
2 files changed, 0 insertions, 298 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);
- };
-}
diff --git a/components/shell/content/setDesktopBackground.xul b/components/shell/content/setDesktopBackground.xul
deleted file mode 100644
index d7d4079..0000000
--- a/components/shell/content/setDesktopBackground.xul
+++ /dev/null
@@ -1,84 +0,0 @@
-<?xml version="1.0"?> <!-- -*- Mode: HTML -*- -->
-
-# 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/.
-
-<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
-<?xml-stylesheet href="chrome://browser/skin/setDesktopBackground.css" type="text/css"?>
-
-<!DOCTYPE dialog SYSTEM "chrome://browser/locale/setDesktopBackground.dtd">
-
-#ifdef XP_MACOSX
-<?xul-overlay href="chrome://browser/content/macBrowserOverlay.xul"?>
-#endif
-
-<dialog xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
- xmlns:html="http://www.w3.org/1999/xhtml"
- windowtype="Shell:SetDesktopBackground"
-#ifndef XP_MACOSX
- buttons="accept,cancel"
-#else
- buttons="accept"
-#endif
- buttonlabelaccept="&setDesktopBackground.title;"
- onload="gSetBackground.load();"
- ondialogaccept="gSetBackground.setDesktopBackground();"
- title="&setDesktopBackground.title;"
- style="width: 30em;">
-
- <stringbundle id="backgroundBundle"
- src="chrome://browser/locale/shellservice.properties"/>
- <script type="application/javascript" src="chrome://browser/content/utilityOverlay.js"/>
- <script type="application/javascript" src="chrome://browser/content/setDesktopBackground.js"/>
- <script type="application/javascript" src="chrome://global/content/contentAreaUtils.js"/>
-
-#ifndef XP_MACOSX
- <hbox align="center">
- <label value="&position.label;"/>
- <menulist id="menuPosition"
- label="&position.label;"
- oncommand="gSetBackground.updatePosition();">
- <menupopup>
- <menuitem label="&center.label;" value="CENTER"/>
- <menuitem label="&tile.label;" value="TILE"/>
- <menuitem label="&stretch.label;" value="STRETCH"/>
- <menuitem label="&fill.label;" value="FILL" id="fillPosition"/>
- <menuitem label="&fit.label;" value="FIT" id="fitPosition"/>
- </menupopup>
- </menulist>
- <spacer flex="1"/>
- <label value="&color.label;"/>
- <colorpicker id="desktopColor"
- type="button"
- onchange="gSetBackground.updateColor(this.color);"/>
- </hbox>
-#endif
- <groupbox align="center">
- <caption label="&preview.label;"/>
- <stack>
- <!-- if width and height are not present, they default to 300x150 and stretch the stack -->
- <html:canvas id="screen" width="1" height="1"/>
- <image id="monitor"/>
- </stack>
- </groupbox>
-
-#ifdef XP_MACOSX
- <separator/>
-
- <hbox align="right">
- <button id="setDesktopBackground"
- label="&setDesktopBackground.title;"
- oncommand="gSetBackground.setDesktopBackground();"/>
- <button id="showDesktopPreferences"
- label="&openDesktopPrefs.label;"
- oncommand="gSetBackground.showDesktopPrefs();"
- hidden="true"/>
- </hbox>
-#endif
-
-#ifdef XP_MACOSX
-#include ../../../base/content/browserMountPoints.inc
-#endif
-
-</dialog>