Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
116
gaia/apps/settings/js/panels/root/themes_item.js
Executable file
116
gaia/apps/settings/js/panels/root/themes_item.js
Executable file
|
|
@ -0,0 +1,116 @@
|
|||
/**
|
||||
* This module is used to show/hide themes menuItem based on the number of
|
||||
* current installed themes.
|
||||
*
|
||||
* @module ThemesItem
|
||||
*/
|
||||
define(function(require) {
|
||||
'use strict';
|
||||
|
||||
var AppsCache = require('modules/apps_cache');
|
||||
|
||||
function ThemesItem(element) {
|
||||
this._enabled = false;
|
||||
this._element = element;
|
||||
this._themeCount = 0;
|
||||
this._boundUpdateThemes = this._updateThemes.bind(this);
|
||||
this.init();
|
||||
}
|
||||
|
||||
ThemesItem.prototype = {
|
||||
/**
|
||||
* Set current status of themesItem
|
||||
*
|
||||
* @access public
|
||||
* @param {Boolean} enabled
|
||||
* @memberOf ThemesItem
|
||||
*/
|
||||
set enabled(enabled) {
|
||||
if (this._enabled === enabled) {
|
||||
return;
|
||||
} else {
|
||||
this._enabled = enabled;
|
||||
if (this._enabled) {
|
||||
this._updateThemeSectionVisibility();
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Get current status of themesItem
|
||||
*
|
||||
* @access public
|
||||
* @memberOf ThemesItem
|
||||
*/
|
||||
get enabled() {
|
||||
return this._enabled;
|
||||
},
|
||||
|
||||
/**
|
||||
* Initialization
|
||||
*
|
||||
* @access private
|
||||
* @memberOf ThemesItem
|
||||
* @return {Promise}
|
||||
*/
|
||||
init: function() {
|
||||
var self = this;
|
||||
AppsCache.addEventListener('install', this._boundUpdateThemes);
|
||||
AppsCache.addEventListener('uninstall', this._boundUpdateThemes);
|
||||
return AppsCache.apps().then(function(apps) {
|
||||
apps.some(function(app) {
|
||||
if (self._isThemeApp(app)) {
|
||||
self._themeCount += 1;
|
||||
}
|
||||
});
|
||||
self._updateThemeSectionVisibility();
|
||||
});
|
||||
},
|
||||
|
||||
/**
|
||||
* Check whether this app is theme app
|
||||
*
|
||||
* @param {Object} app
|
||||
* @returns {Boolean}
|
||||
* @memberOf ThemesItem
|
||||
*/
|
||||
_isThemeApp: function(app) {
|
||||
var manifest = app.manifest || app.updateManifest;
|
||||
return manifest.role === 'theme';
|
||||
},
|
||||
|
||||
/**
|
||||
* We have to update theme count based on incoming evt and
|
||||
* decide to show/hide or not.
|
||||
*
|
||||
* @param {Object} evt
|
||||
* @memberOf ThemesItem
|
||||
*/
|
||||
_updateThemes: function(evt) {
|
||||
var app = evt && evt.application;
|
||||
var type = evt.type;
|
||||
|
||||
if (this._isThemeApp(app)) {
|
||||
if (type === 'install') {
|
||||
this._themeCount += 1;
|
||||
} else if (type === 'uninstall') {
|
||||
this._themeCount -= 1;
|
||||
}
|
||||
this._updateThemeSectionVisibility();
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Update theme section visibility based on _themeCount
|
||||
*
|
||||
* @memberOf ThemesItem
|
||||
*/
|
||||
_updateThemeSectionVisibility: function() {
|
||||
this._element.hidden = (this._themeCount < 2);
|
||||
}
|
||||
};
|
||||
|
||||
return function ctor_themesItem(element) {
|
||||
return new ThemesItem(element);
|
||||
};
|
||||
});
|
||||
Loading…
Reference in a new issue