diff options
Diffstat (limited to 'components/shell/content')
-rw-r--r-- | components/shell/content/setDesktopBackground.js | 214 | ||||
-rw-r--r-- | components/shell/content/setDesktopBackground.xul | 84 |
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="¢er.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> |