qt.js 1.37 KB
Newer Older
Marek Kotewicz's avatar
Marek Kotewicz committed
1 2 3 4
/*
    This file is part of ethereum.js.

    ethereum.js is free software: you can redistribute it and/or modify
Marek Kotewicz's avatar
Marek Kotewicz committed
5
    it under the terms of the GNU Lesser General Public License as published by
Marek Kotewicz's avatar
Marek Kotewicz committed
6 7 8 9 10 11
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.

    ethereum.js is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Marek Kotewicz's avatar
Marek Kotewicz committed
12
    GNU Lesser General Public License for more details.
Marek Kotewicz's avatar
Marek Kotewicz committed
13

Marek Kotewicz's avatar
Marek Kotewicz committed
14
    You should have received a copy of the GNU Lesser General Public License
Marek Kotewicz's avatar
Marek Kotewicz committed
15 16
    along with ethereum.js.  If not, see <http://www.gnu.org/licenses/>.
*/
Marek Kotewicz's avatar
Marek Kotewicz committed
17
/** @file qt.js
Marek Kotewicz's avatar
Marek Kotewicz committed
18 19 20 21 22
 * @authors:
 *   Marek Kotewicz <marek@ethdev.com>
 * @date 2014
 */

Marian Oancea's avatar
Marian Oancea committed
23 24 25 26 27 28 29 30 31
    var QtProvider = function() {
        this.handlers = [];

        var self = this;
        navigator.qt.onmessage = function (message) {
            self.handlers.forEach(function (handler) {
                handler.call(self, JSON.parse(message.data));
            });
        };
32 33
    };

Marian Oancea's avatar
Marian Oancea committed
34 35 36
    QtProvider.prototype.send = function(payload) {
        navigator.qt.postMessage(JSON.stringify(payload));
    };
obscuren's avatar
obscuren committed
37

Marian Oancea's avatar
Marian Oancea committed
38 39 40 41 42
    Object.defineProperty(QtProvider.prototype, "onmessage", {
        set: function(handler) {
            this.handlers.push(handler);
        }
    });
43

Marian Oancea's avatar
Marian Oancea committed
44
module.exports = QtProvider;