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.

btn2btn1

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//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