/**
* The module initializes a ListView displaying all enabled layouts.
* Implementation details please refer to {@link KeyboardEnabledLayoutsCore}.
*
* @module keyboard/enabled_layouts
*/
define(function(require) {
'use strict';
var ListView = require('modules/mvvm/list_view');
/**
* @alias module:keyboard/enabled_layouts
* @class KeyboardEnabledLayoutsCore
* @requires module:modules/mvvm/list_view
* @param {KeyboardContext} context
The kyboard context providing enabled layouts.
* @param {Function} template
The template function used to render a layout.
* @returns {KeyboardEnabledLayoutsCore}
*/
function KeyboardEnabledLayoutsCore(context, template) {
this._enabled = false;
this._listView = null;
this._keyboardContext = context;
this._layoutTemplate = template;
}
KeyboardEnabledLayoutsCore.prototype = {
/**
* The value indicates whether the module is responding. If it is false, the
* UI stops reflecting the updates from the keyboard context.
*
* @access public
* @memberOf KeyboardEnabledLayoutsCore.prototype
* @type {Boolean}
*/
get enabled() {
return this._enabled;
},
set enabled(value) {
this._enabled = value;
if (this._listView) {
this._listView.enabled = this._enabled;
}
},
/**
* @access private
* @memberOf KeyboardAddLayoutsCore.prototype
* @param {HTMLElement} listViewRoot
* @param {ObservableArray} layouts
* @param {Function} layoutTemplate
*/
_initEnabledLayoutListView:
function kepl_initListView(listViewRoot, layouts, layoutTemplate) {
this._listView = ListView(listViewRoot, layouts, layoutTemplate);
},
/**
* @access public
* @memberOf KeyboardEnabledLayoutsCore.prototype
* @param {Array} elements
* Elements needed by this module.
* @param {HTMLElement} elements.listViewRoot
* The root element for the list view displaying the
* installed keyboards.
*/
init: function kepl_onInit(elements) {
var that = this;
this._keyboardContext.init(function() {
that._keyboardContext.enabledLayouts(function(layouts) {
that._initEnabledLayoutListView(
elements.listViewRoot, layouts, that._layoutTemplate);
that.enabled = true;
});
});
}
};
return function ctor_keplCore(context, template) {
return new KeyboardEnabledLayoutsCore(context, template);
};
});