/** * @private */ Ext.define('Ext.device.notification.Simulator', { extend: 'Ext.device.notification.Abstract', requires: ['Ext.MessageBox'], // @private msg: null, show: function() { var config = this.callParent(arguments), buttons = [], ln = config.buttons.length, button, i, callback, msg; //buttons for (i = 0; i < ln; i++) { button = config.buttons[i]; if (Ext.isString(button)) { button = { text: config.buttons[i], itemId: config.buttons[i].toLowerCase() }; } buttons.push(button); } this.msg = Ext.create('Ext.MessageBox'); msg = this.msg; callback = function(itemId) { if (config.callback) { config.callback.apply(config.scope, [itemId]); } }; this.msg.show({ title : config.title, message: config.message, scope : this.msg, buttons: buttons, fn : callback }); }, vibrate: function() { //nice animation to fake vibration var animation = [ "@-webkit-keyframes vibrate{", " from {", " -webkit-transform: rotate(-2deg);", " }", " to{", " -webkit-transform: rotate(2deg);", " }", "}", "body {", " -webkit-animation: vibrate 50ms linear 10 alternate;", "}" ]; var head = document.getElementsByTagName("head")[0]; var cssNode = document.createElement('style'); cssNode.innerHTML = animation.join('\n'); head.appendChild(cssNode); setTimeout(function() { head.removeChild(cssNode); }, 400); } });