]> git.proxmox.com Git - extjs.git/blame - extjs/packages/legacy/modern/src/device/notification/Simulator.js
add extjs 6.0.1 sources
[extjs.git] / extjs / packages / legacy / modern / src / device / notification / Simulator.js
CommitLineData
6527f429
DM
1/**\r
2 * @private\r
3 */\r
4Ext.define('Ext.device.notification.Simulator', {\r
5 extend: 'Ext.device.notification.Abstract',\r
6 requires: ['Ext.MessageBox', 'Ext.util.Audio'],\r
7\r
8 /**\r
9 * @private\r
10 */\r
11 msg: null,\r
12\r
13 show: function() {\r
14 var config = this.callParent(arguments),\r
15 buttons = [],\r
16 ln = config.buttons.length,\r
17 button, i, callback;\r
18\r
19 //buttons\r
20 for (i = 0; i < ln; i++) {\r
21 button = config.buttons[i];\r
22 if (Ext.isString(button)) {\r
23 button = {\r
24 text: config.buttons[i],\r
25 itemId: config.buttons[i].toLowerCase()\r
26 };\r
27 }\r
28\r
29 buttons.push(button);\r
30 }\r
31\r
32 this.msg = Ext.create('Ext.MessageBox');\r
33\r
34 callback = function(itemId) {\r
35 if (config.callback) {\r
36 config.callback.apply(config.scope, [itemId]);\r
37 }\r
38 };\r
39\r
40 this.msg.show({\r
41 title : config.title,\r
42 message: config.message,\r
43 scope : this.msg,\r
44 buttons: buttons,\r
45 fn : callback\r
46 });\r
47 },\r
48\r
49 alert: function() {\r
50 var config = this.callParent(arguments);\r
51\r
52 if (config.buttonName) {\r
53 config.buttons = [config.buttonName];\r
54 }\r
55\r
56 this.show(config);\r
57 },\r
58\r
59 confirm: function() {\r
60 var config = this.callParent(arguments);\r
61 this.show(config);\r
62 },\r
63\r
64 prompt: function() {\r
65 var config = this.callParent(arguments),\r
66 buttons = [],\r
67 ln = config.buttons.length,\r
68 button, i, callback;\r
69\r
70 //buttons\r
71 for (i = 0; i < ln; i++) {\r
72 button = config.buttons[i];\r
73 if (Ext.isString(button)) {\r
74 button = {\r
75 text: config.buttons[i],\r
76 itemId: config.buttons[i].toLowerCase()\r
77 };\r
78 }\r
79\r
80 buttons.push(button);\r
81 }\r
82\r
83 this.msg = Ext.create('Ext.MessageBox');\r
84\r
85 callback = function(buttonText, value) {\r
86 if (config.callback) {\r
87 config.callback.apply(config.scope, [buttonText, value]);\r
88 }\r
89 };\r
90\r
91 this.msg.prompt(config.title, config.message, callback, this.msg, config.multiLine, config.value, config.prompt);\r
92 },\r
93\r
94 beep: function(times) {\r
95 if(!Ext.isNumber(times)) times = 1;\r
96 var count = 0;\r
97 var callback = function() {\r
98 if(count < times) {\r
99 Ext.defer(function() {\r
100 Ext.util.Audio.beep(callback);\r
101 }, 50);\r
102 }\r
103 count++;\r
104 };\r
105\r
106 callback();\r
107 },\r
108\r
109 vibrate: function() {\r
110 //nice animation to fake vibration\r
111 var animation = [\r
112 "@-webkit-keyframes vibrate{",\r
113 " from {",\r
114 " -webkit-transform: rotate(-2deg);",\r
115 " }",\r
116 " to{",\r
117 " -webkit-transform: rotate(2deg);",\r
118 " }",\r
119 "}",\r
120\r
121 "body {",\r
122 " -webkit-animation: vibrate 50ms linear 10 alternate;",\r
123 "}"\r
124 ];\r
125\r
126 var head = document.getElementsByTagName("head")[0];\r
127 var cssNode = document.createElement('style');\r
128 cssNode.innerHTML = animation.join('\n');\r
129 head.appendChild(cssNode);\r
130\r
131 Ext.defer(function() {\r
132 head.removeChild(cssNode);\r
133 }, 400);\r
134 }\r
135});\r