0

Cambiando preferencias desde addon-sdk

31Ene
en Add-on SDK, Mozilla, Tutoriales

El tutorial que les voy a presentar es muy útil para aquellos desarrolladores que deseen hacerle la vida más fácil a los usuarios, ahorrándole la necesidad peligrosa de cambiar preferencias en el about:config de Firefox.

Vamos a utilizar la API de bajo nivel preferences-service, que nos brindan en el addon-sdk1.12.

Los métodos mas importantes de esta API son:


set(preferencia, value)
Permite establecer un valor a una preferencia.


get(preferencia)
Devuelve el valor de una una preferencia.


getLocalized(preferencia)
Si el valor de la preferencia es una dirección, devuelve el valor definido dentro de la misma.


setLocalized(preferencia, value)
Permite establecer la dirección donde se almacena el valor de la preferencia.

Conociendo esto vamos a pasar a un ejemplo. Vamos a construir un add-on que nos permita activar y desactivar el proxy de Firefox. Primero debemos conocer que la preferencia para esto es network.proxy.type, cuando toma valor 0 significa sin proxy y cuando toma valor 1 significa con el proxy configurado por el usuario.

Para crear la plantilla del add-on haremos lo explicado aquí. Copiamos las imágenes siguientes dentro de la carpeta data, las cuales utilizaremos como botones del widget.

Luego abrimos dentro en la carpeta lib, el fichero main.js y escribimos el siguiente código.

//incluimos la API de los widget
var widgets = require("widget");
//con self podemos acceder al contenido de la carpeta data(las imagenes)
const data = require("self").data;
// incluimos la API de las prefencias
var pref = require("preferences-service");

//creamos el widget
var widget = widgets.Widget({
	id: "btn-proxy",
	label: "Activar/desactivar proxy",
	//ponemos como botón a la imagen verde por defecto
	contentURL: data.url("btn2.png"),

	//al hacer click en el boton
	onClick: function() {
		//especificamos la preferencia a cambiar
		var name = "network.proxy.type";

		//obtenemos el valor actual
		var proxy = pref.get(name);

		//si está seleccionada cualquier opción de proxy excepto sin proxy.
		if(proxy >= 1){

		//ponemos la opción en 0 que significa sin proxy
		pref.set(name,0);

		//cambiamos la imagen del boton a la roja
		widget.contentURL = data.url("btn1.png")

 		//si está seleccionada la opción sin proxy.
		}else if(proxy == 0){
			//ponemos la opción en 1 significa con proxy determinado por el usuario
			pref.set(name,1);

			//cambiamos la imagen del boton a la verde
			widget.contentURL = data.url("btn2.png")
		}
	}
});

El código se explica por si solo. Probamos el add-on con cfx run y listo.

Dejar un comentario

¿Eres humano? Entonces resuelve esta operación: * Límite de tiempo se agote. Por favor, recargar el CAPTCHA por favor.