/* * Copyright 2016 Resin.io * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ 'use strict'; const electron = require('electron'); module.exports = function() { const self = this; /** * @summary A reference to the current renderer Electron window * @property * @protected * * @description * Since electron only has one renderer view, we can assume the * current window is the one with id == 1. * * We expose this property to `this` for testability purposes. */ this.currentWindow = electron.remote.BrowserWindow.fromId(1); /** * @summary Set operating system window progress * @function * @public * * @description * Show progress inline in operating system task bar * * @param {Number} percentage - percentage * * @example * OSWindowProgressService.set(85); */ this.set = function(percentage) { if (percentage > 100 || percentage < 0) { throw new Error(`Invalid window progress percentage: ${percentage}`); } self.currentWindow.setProgressBar(percentage / 100); }; /** * @summary Clear the operating system window progress bar * @function * @public * * @example * OSWindowProgressService.clear(); */ this.clear = function() { // Passing 0 or null/undefined doesn't work. self.currentWindow.setProgressBar(-1); }; };