Browse files

Bring over simple touch examples from old repo

  • Loading branch information...
1 parent d657aad commit d8098a9352f25df8a2e2998501184d3d6c0c05e1 @lojjic lojjic committed Aug 8, 2012
Showing with 2,563 additions and 0 deletions.
  1. BIN overlays.xda
  2. +25 −0 overlays/app.html
  3. +34 −0 overlays/app.js
  4. +125 −0 overlays/app/view/Main.js
  5. +64 −0 overlays/app/view/NumbersPicker.js
  6. +50 −0 overlays/app/view/ReplyOptions.js
  7. +49 −0 overlays/app/view/SettingsPanel.js
  8. +20 −0 overlays/metadata/Application
  9. +11 −0 overlays/metadata/resource/Library
  10. +211 −0 overlays/metadata/view/Main
  11. +73 −0 overlays/metadata/view/NumbersPicker
  12. +76 −0 overlays/metadata/view/ReplyOptions
  13. +85 −0 overlays/metadata/view/SettingsPanel
  14. +79 −0 overlays/overlays.xds
  15. BIN routes.xda
  16. +25 −0 routes/app.html
  17. +35 −0 routes/app.js
  18. +34 −0 routes/app/controller/ControllerWithAdvancedRoute.js
  19. +38 −0 routes/app/controller/ControllerWithSimpleRoute.js
  20. +31 −0 routes/app/view/MyContainer.js
  21. +40 −0 routes/metadata/Application
  22. +52 −0 routes/metadata/controller/ControllerWithAdvancedRoute
  23. +66 −0 routes/metadata/controller/ControllerWithSimpleRoute
  24. +11 −0 routes/metadata/resource/Library
  25. +32 −0 routes/metadata/view/MyContainer
  26. +72 −0 routes/routes.xds
  27. BIN tabs.xda
  28. +26 −0 tabs/app.html
  29. +28 −0 tabs/app.js
  30. +51 −0 tabs/app/view/MyTabPanel.js
  31. +13 −0 tabs/metadata/Application
  32. +10 −0 tabs/metadata/resource/Library
  33. +13 −0 tabs/metadata/resource/css
  34. +80 −0 tabs/metadata/view/MyTabPanel
  35. +10 −0 tabs/style.css
  36. +59 −0 tabs/tabs.xds
  37. BIN tabs2.xda
  38. +26 −0 tabs2/app.html
  39. +31 −0 tabs2/app.js
  40. +78 −0 tabs2/app/view/MyTabPanel.js
  41. +17 −0 tabs2/metadata/Application
  42. +11 −0 tabs2/metadata/resource/Library
  43. +13 −0 tabs2/metadata/resource/css
  44. +124 −0 tabs2/metadata/view/MyTabPanel
  45. +52 −0 tabs2/style.css
  46. +59 −0 tabs2/tabs2.xds
  47. BIN tweetlist.xda
  48. +26 −0 tweetlist/app.html
  49. +73 −0 tweetlist/app.js
  50. +49 −0 tweetlist/app/store/TweetStore.js
  51. +42 −0 tweetlist/app/view/TweetList.js
  52. +77 −0 tweetlist/metadata/Application
  53. +10 −0 tweetlist/metadata/resource/Library
  54. +13 −0 tweetlist/metadata/resource/css
  55. +101 −0 tweetlist/metadata/store/TweetStore
  56. +63 −0 tweetlist/metadata/view/TweetList
  57. +1 −0 tweetlist/tweetlist.css
  58. +69 −0 tweetlist/tweetlist.xds
View
BIN overlays.xda
Binary file not shown.
View
25 overlays/app.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+
+<!-- Auto Generated with Sencha Architect -->
+<!-- Modifications to this file will be overwritten. -->
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>overlays</title>
+ <script src="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/sencha-touch-all.js"></script>
+ <link rel="stylesheet" href="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/resources/css/sencha-touch.css">
+ <script type="text/javascript" src="app.js"></script>
+ <script type="text/javascript">
+ if (!Ext.browser.is.WebKit) {
+ alert("The current browser is unsupported.\n\nSupported browsers:\n" +
+ "Google Chrome\n" +
+ "Apple Safari\n" +
+ "Mobile Safari (iOS)\n" +
+ "Android Browser\n" +
+ "BlackBerry Browser"
+ );
+ }
+ </script>
+</head>
+<body></body>
+</html>
View
34 overlays/app.js
@@ -0,0 +1,34 @@
+/*
+ * File: app.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.Loader.setConfig({
+ enabled: true
+});
+
+Ext.application({
+ views: [
+ 'Main',
+ 'SettingsPanel',
+ 'ReplyOptions',
+ 'NumbersPicker'
+ ],
+ name: 'MyApp',
+
+ launch: function() {
+
+ Ext.create('MyApp.view.Main', {fullscreen: true});
+ }
+
+});
View
125 overlays/app/view/Main.js
@@ -0,0 +1,125 @@
+/*
+ * File: app/view/Main.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.view.Main', {
+ extend: 'Ext.Container',
+
+ config: {
+ padding: 20,
+ layout: {
+ type: 'vbox'
+ },
+ items: [
+ {
+ xtype: 'toolbar',
+ docked: 'top',
+ title: 'Overlays Demo',
+ items: [
+ {
+ xtype: 'button',
+ itemId: 'settingsButton',
+ iconCls: 'settings',
+ iconMask: true
+ },
+ {
+ xtype: 'spacer'
+ },
+ {
+ xtype: 'button',
+ itemId: 'replyButton',
+ iconCls: 'reply',
+ iconMask: true
+ }
+ ]
+ },
+ {
+ xtype: 'button',
+ itemId: 'mybutton2',
+ text: 'Choose Two Numbers'
+ },
+ {
+ xtype: 'spacer'
+ },
+ {
+ xtype: 'component',
+ html: 'This demo shows how you can use the different overlay widgets supported by Sencha Touch 2. The button at the top-left shows a Ext.Panel, the button at the top right shows a Ext.ActionSheet, and the button in the middle shows a Ext.picker.Picker.',
+ itemId: 'description',
+ style: 'color:#999'
+ }
+ ],
+ listeners: [
+ {
+ fn: 'onSettingsButtonTap',
+ event: 'tap',
+ delegate: '#settingsButton'
+ },
+ {
+ fn: 'onReplyButtonTap',
+ event: 'tap',
+ delegate: '#replyButton'
+ },
+ {
+ fn: 'onMybutton2Tap',
+ event: 'tap',
+ delegate: '#mybutton2'
+ }
+ ]
+ },
+
+ onSettingsButtonTap: function(button, e, options) {
+ var settings = button.settingsPanel;
+ if (!settings) {
+ settings = button.settingsPanel = Ext.widget('settings');
+ }
+ settings.showBy(button);
+ },
+
+ onReplyButtonTap: function(button, e, options) {
+ var sheet = button.actionSheet;
+ if (!sheet) {
+ sheet = button.actionSheet = Ext.Viewport.add(Ext.widget('replyOptions'));
+ }
+ sheet.show();
+ },
+
+ onMybutton2Tap: function(button, e, options) {
+ var picker = button.numberPicker;
+
+ if (!picker) {
+ picker = button.numberPicker = Ext.Viewport.add({
+ xtype: 'numbersPicker',
+ listeners: {
+ change: function(picker, values) {
+ var n1 = values.number1,
+ n2 = values.number2;
+ Ext.Msg.alert(
+ 'Numbers Selected',
+ 'You chose the numbers ' + n1 + ' and ' + n2 +
+ ', which add up to ' + (n1 + n2) + '.'
+ );
+ }
+ }
+ });
+ }
+
+ picker.setValue({
+ number1: 1,
+ number2: 1
+ });
+
+ picker.show();
+ }
+
+});
View
64 overlays/app/view/NumbersPicker.js
@@ -0,0 +1,64 @@
+/*
+ * File: app/view/NumbersPicker.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.view.NumbersPicker', {
+ extend: 'Ext.picker.Picker',
+ alias: 'widget.numbersPicker',
+
+ config: {
+ useTitles: true,
+ slots: [
+ {
+ xtype: 'pickerslot',
+ data: [
+ {
+ text: 'One',
+ value: 1
+ },
+ {
+ text: 'Two',
+ value: 2
+ },
+ {
+ text: 'Three',
+ value: 3
+ }
+ ],
+ name: 'number1',
+ title: 'Number 1'
+ },
+ {
+ xtype: 'pickerslot',
+ data: [
+ {
+ text: 'One',
+ value: 1
+ },
+ {
+ text: 'Two',
+ value: 2
+ },
+ {
+ text: 'Three',
+ value: 3
+ }
+ ],
+ name: 'number2',
+ title: 'Number 2'
+ }
+ ]
+ }
+
+});
View
50 overlays/app/view/ReplyOptions.js
@@ -0,0 +1,50 @@
+/*
+ * File: app/view/ReplyOptions.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.view.ReplyOptions', {
+ extend: 'Ext.ActionSheet',
+ alias: 'widget.replyOptions',
+
+ config: {
+ items: [
+ {
+ xtype: 'button',
+ text: 'Reply'
+ },
+ {
+ xtype: 'button',
+ text: 'Reply All'
+ },
+ {
+ xtype: 'button',
+ itemId: 'mybutton5',
+ ui: 'decline',
+ text: 'Cancel'
+ }
+ ],
+ listeners: [
+ {
+ fn: 'onMybutton5Tap',
+ event: 'tap',
+ delegate: '#mybutton5'
+ }
+ ]
+ },
+
+ onMybutton5Tap: function(button, e, options) {
+ this.hide();
+ }
+
+});
View
49 overlays/app/view/SettingsPanel.js
@@ -0,0 +1,49 @@
+/*
+ * File: app/view/SettingsPanel.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.view.SettingsPanel', {
+ extend: 'Ext.Panel',
+ alias: 'widget.settings',
+
+ config: {
+ centered: true,
+ width: 240,
+ hideOnMaskTap: true,
+ modal: true,
+ items: [
+ {
+ xtype: 'checkboxfield',
+ label: 'Field'
+ },
+ {
+ xtype: 'checkboxfield',
+ label: 'Field'
+ },
+ {
+ xtype: 'checkboxfield',
+ label: 'Field'
+ },
+ {
+ xtype: 'checkboxfield',
+ label: 'Field'
+ },
+ {
+ xtype: 'checkboxfield',
+ label: 'Field'
+ }
+ ]
+ }
+
+});
View
20 overlays/metadata/Application
@@ -0,0 +1,20 @@
+{
+ "type": "application",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "views": [
+ "Main",
+ "SettingsPanel",
+ "ReplyOptions",
+ "NumbersPicker"
+ ],
+ "name": "MyApp"
+ },
+ "id": "ExtBox1-ext-gen11871",
+ "designerId": "application",
+ "iconCls": "icon-application"
+}
View
11 overlays/metadata/resource/Library
@@ -0,0 +1,11 @@
+{
+ "type": "libraryresource",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "id": "ExtBox1-ext-gen1693",
+ "designerId": "de29e5a6-bd08-42a3-b09f-66170da71af4",
+ "iconCls": "icon-library"
+}
View
211 overlays/metadata/view/Main
@@ -0,0 +1,211 @@
+{
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "Main",
+ "designer|initialView": true,
+ "padding": 20,
+ "layout": "vbox"
+ },
+ "id": "ExtBox1-ext-gen11929",
+ "designerId": "281e6308-e453-443c-ba4e-acb143a7dc36",
+ "cn": [
+ {
+ "type": "toolbar",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyToolbar",
+ "docked": "top",
+ "title": "Overlays Demo"
+ },
+ "designerId": "d66eb8a9-dd6e-4af7-99b5-ad4ac6652433",
+ "cn": [
+ {
+ "type": "button",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton",
+ "itemId": "settingsButton",
+ "iconCls": "settings",
+ "iconMask": true,
+ "text": null
+ },
+ "designerId": "d6defdb2-d4d2-4564-b5f1-57701c37c0fc",
+ "cn": [
+ {
+ "type": "basiceventbinding",
+ "reference": {
+ "name": "listeners",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "onSettingsButtonTap",
+ "fn": "onSettingsButtonTap",
+ "implHandler": [
+ "var settings = button.settingsPanel;",
+ "if (!settings) {",
+ " settings = button.settingsPanel = Ext.widget('settings');",
+ "}",
+ "settings.showBy(button);"
+ ],
+ "name": "tap"
+ },
+ "designerId": "1fe639ff-fad6-4cde-87c9-44c5a43343d7"
+ }
+ ]
+ },
+ {
+ "type": "spacer",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MySpacer"
+ },
+ "designerId": "3f193f42-04da-48d4-bd2e-a5cdd92ecbd9"
+ },
+ {
+ "type": "button",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton1",
+ "itemId": "replyButton",
+ "iconCls": "reply",
+ "iconMask": true,
+ "text": null
+ },
+ "designerId": "2ee25f74-3f3c-49bb-97f8-bd1f7930eb2a",
+ "cn": [
+ {
+ "type": "basiceventbinding",
+ "reference": {
+ "name": "listeners",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "onReplyButtonTap",
+ "fn": "onReplyButtonTap",
+ "implHandler": [
+ "var sheet = button.actionSheet;",
+ "if (!sheet) {",
+ " sheet = button.actionSheet = Ext.Viewport.add(Ext.widget('replyOptions'));",
+ "}",
+ "sheet.show();"
+ ],
+ "name": "tap"
+ },
+ "designerId": "a39f82b5-4ffb-4425-8ef8-72443b1dd91b"
+ }
+ ]
+ }
+ ]
+ },
+ {
+ "type": "button",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton2",
+ "itemId": "mybutton2",
+ "text": "Choose Two Numbers"
+ },
+ "designerId": "340908e7-1b9a-462b-a866-b484c4c14673",
+ "cn": [
+ {
+ "type": "basiceventbinding",
+ "reference": {
+ "name": "listeners",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "onMybutton2Tap",
+ "fn": "onMybutton2Tap",
+ "implHandler": [
+ "var picker = button.numberPicker;",
+ "",
+ "if (!picker) {",
+ " picker = button.numberPicker = Ext.Viewport.add({",
+ " xtype: 'numbersPicker',",
+ " listeners: {",
+ " change: function(picker, values) {",
+ " var n1 = values.number1,",
+ " n2 = values.number2;",
+ " Ext.Msg.alert(",
+ " 'Numbers Selected', ",
+ " 'You chose the numbers ' + n1 + ' and ' + n2 + ",
+ " ', which add up to ' + (n1 + n2) + '.'",
+ " );",
+ " }",
+ " }",
+ " });",
+ "}",
+ "",
+ "picker.setValue({",
+ " number1: 1,",
+ " number2: 1",
+ "});",
+ "",
+ "picker.show();"
+ ],
+ "name": "tap"
+ },
+ "designerId": "e5c66770-5b2f-46d8-96a7-e2b1e101fd37"
+ }
+ ]
+ },
+ {
+ "type": "spacer",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MySpacer1"
+ },
+ "designerId": "96ffca49-0673-4cd0-976a-e34383f7002e"
+ },
+ {
+ "type": "component",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyComponent",
+ "bottom": null,
+ "html": "This demo shows how you can use the different overlay widgets supported by Sencha Touch 2. The button at the top-left shows a Ext.Panel, the button at the top right shows a Ext.ActionSheet, and the button in the middle shows a Ext.picker.Picker.",
+ "itemId": "description",
+ "margin": null,
+ "style": "color:#999",
+ "ui": null
+ },
+ "designerId": "02eff3f5-ee39-4bbb-98cb-5095bbb6d6f7"
+ }
+ ]
+}
View
73 overlays/metadata/view/NumbersPicker
@@ -0,0 +1,73 @@
+{
+ "type": "picker",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "NumbersPicker",
+ "designer|userAlias": "numbersPicker",
+ "useTitles": true
+ },
+ "id": "ExtBox1-ext-gen19322",
+ "designerId": "fbc194ea-09e6-4d07-afef-da0731ce4c57",
+ "cn": [
+ {
+ "type": "button",
+ "reference": {
+ "name": "doneButton",
+ "type": "object"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton6",
+ "text": "Done"
+ },
+ "designerId": "016ca936-94b4-4d8d-b196-fa732c9d43cb"
+ },
+ {
+ "type": "button",
+ "reference": {
+ "name": "cancelButton",
+ "type": "object"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton7",
+ "text": "Cancel"
+ },
+ "designerId": "508d0a65-fb9b-49a1-b074-72fd91ee4af4"
+ },
+ {
+ "type": "pickerslot",
+ "reference": {
+ "name": "slots",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyPickerSlot",
+ "data": "[{\"text\":\"One\",\"value\":1},{\"text\":\"Two\",\"value\":2},{\"text\":\"Three\",\"value\":3}]",
+ "name": "number1",
+ "title": "Number 1"
+ },
+ "designerId": "1308a42d-09d4-45ac-ba75-636b971b162e"
+ },
+ {
+ "type": "pickerslot",
+ "reference": {
+ "name": "slots",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyPickerSlot1",
+ "data": "[{\"text\":\"One\",\"value\":1},{\"text\":\"Two\",\"value\":2},{\"text\":\"Three\",\"value\":3}]",
+ "name": "number2",
+ "title": "Number 2"
+ },
+ "designerId": "73f1841a-57b4-47f8-aa85-344511d2ea73"
+ }
+ ]
+}
View
76 overlays/metadata/view/ReplyOptions
@@ -0,0 +1,76 @@
+{
+ "type": "actionsheet",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "ReplyOptions",
+ "designer|userAlias": "replyOptions"
+ },
+ "id": "ExtBox1-ext-gen15607",
+ "designerId": "2bdc4a32-bcda-47fd-95a9-07446a0d434b",
+ "cn": [
+ {
+ "type": "button",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton3",
+ "text": "Reply"
+ },
+ "designerId": "3db2ff6e-72ca-48bc-b93e-5c8ffe5974c1"
+ },
+ {
+ "type": "button",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton4",
+ "text": "Reply All"
+ },
+ "designerId": "dd7ccb82-56f1-4db0-9cc2-0e0968edee2c"
+ },
+ {
+ "type": "button",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyButton5",
+ "itemId": "mybutton5",
+ "ui": "decline",
+ "text": "Cancel"
+ },
+ "designerId": "d961ddfb-254a-44d7-8463-bcdba7428b4d",
+ "cn": [
+ {
+ "type": "basiceventbinding",
+ "reference": {
+ "name": "listeners",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "onMybutton5Tap",
+ "fn": "onMybutton5Tap",
+ "implHandler": [
+ "this.hide();"
+ ],
+ "name": "tap"
+ },
+ "designerId": "a5e3282e-1fe5-4ff1-8df6-0c3fae010bd0"
+ }
+ ]
+ }
+ ]
+}
View
85 overlays/metadata/view/SettingsPanel
@@ -0,0 +1,85 @@
+{
+ "type": "panel",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "SettingsPanel",
+ "designer|userAlias": "settings",
+ "centered": true,
+ "width": 240,
+ "hideOnMaskTap": true,
+ "modal": true
+ },
+ "id": "ExtBox1-ext-gen13804",
+ "designerId": "bd7651f5-ac9f-4259-911c-9f7b3af04c17",
+ "cn": [
+ {
+ "type": "checkboxfield",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyCheckbox",
+ "label": "Field"
+ },
+ "designerId": "41458950-7a6b-4d22-8151-433abbbf0777"
+ },
+ {
+ "type": "checkboxfield",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyCheckbox1",
+ "label": "Field"
+ },
+ "designerId": "ab3f99c3-f24c-4063-a0f2-218dc618d0ba"
+ },
+ {
+ "type": "checkboxfield",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyCheckbox2",
+ "label": "Field"
+ },
+ "designerId": "1047195d-48e5-4d0a-9371-1541f2d40d8c"
+ },
+ {
+ "type": "checkboxfield",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyCheckbox3",
+ "label": "Field"
+ },
+ "designerId": "dde1d437-740c-4ea3-a9d0-513e01b79beb"
+ },
+ {
+ "type": "checkboxfield",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyCheckbox4",
+ "label": "Field"
+ },
+ "designerId": "37e610eb-197a-40eb-ab58-4a00f95bb682"
+ }
+ ]
+}
View
79 overlays/overlays.xds
@@ -0,0 +1,79 @@
+{
+ "name": "overlays",
+ "settings": {
+ "urlPrefix": "",
+ "spacesToIndent": 4,
+ "exportPath": "",
+ "lineEnding": "LF",
+ "genTimestamps": false,
+ "cacheBust": false,
+ "codeGenFormat": "Class",
+ "senchaIoKey": "",
+ "senchaIoPath": "http://extjs.cachefly.net/designer/IO/",
+ "instantiateStore": true,
+ "saveOnDeploy": false,
+ "appName": "MyApp"
+ },
+ "xdsVersion": "2.0.0",
+ "xdsBuild": 0,
+ "schemaVersion": 1,
+ "upgradeVersion": 210000000495,
+ "framework": "touch20",
+ "topInstanceFileMap": {
+ "281e6308-e453-443c-ba4e-acb143a7dc36": {
+ "paths": [
+ "metadata/view/Main",
+ "app/view/override/Main.js",
+ "app/view/Main.js"
+ ],
+ "className": "Main"
+ },
+ "bd7651f5-ac9f-4259-911c-9f7b3af04c17": {
+ "paths": [
+ "metadata/view/SettingsPanel",
+ "app/view/override/SettingsPanel.js",
+ "app/view/SettingsPanel.js"
+ ],
+ "className": "SettingsPanel"
+ },
+ "2bdc4a32-bcda-47fd-95a9-07446a0d434b": {
+ "paths": [
+ "metadata/view/ReplyOptions",
+ "app/view/override/ReplyOptions.js",
+ "app/view/ReplyOptions.js"
+ ],
+ "className": "ReplyOptions"
+ },
+ "fbc194ea-09e6-4d07-afef-da0731ce4c57": {
+ "paths": [
+ "metadata/view/NumbersPicker",
+ "app/view/override/NumbersPicker.js",
+ "app/view/NumbersPicker.js"
+ ],
+ "className": "NumbersPicker"
+ },
+ "de29e5a6-bd08-42a3-b09f-66170da71af4": {
+ "paths": [
+ "metadata/resource/Library"
+ ],
+ "className": "Library"
+ }
+ },
+ "viewOrderMap": {
+ "view": [
+ "281e6308-e453-443c-ba4e-acb143a7dc36",
+ "fbc194ea-09e6-4d07-afef-da0731ce4c57",
+ "2bdc4a32-bcda-47fd-95a9-07446a0d434b",
+ "bd7651f5-ac9f-4259-911c-9f7b3af04c17"
+ ],
+ "store": [],
+ "controller": [],
+ "model": [],
+ "resource": [
+ "de29e5a6-bd08-42a3-b09f-66170da71af4"
+ ],
+ "app": [
+ "application"
+ ]
+ }
+}
View
BIN routes.xda
Binary file not shown.
View
25 routes/app.html
@@ -0,0 +1,25 @@
+<!DOCTYPE html>
+
+<!-- Auto Generated with Sencha Architect -->
+<!-- Modifications to this file will be overwritten. -->
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>routes</title>
+ <script src="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/sencha-touch-all.js"></script>
+ <link rel="stylesheet" href="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/resources/css/sencha-touch.css">
+ <script type="text/javascript" src="app.js"></script>
+ <script type="text/javascript">
+ if (!Ext.browser.is.WebKit) {
+ alert("The current browser is unsupported.\n\nSupported browsers:\n" +
+ "Google Chrome\n" +
+ "Apple Safari\n" +
+ "Mobile Safari (iOS)\n" +
+ "Android Browser\n" +
+ "BlackBerry Browser"
+ );
+ }
+ </script>
+</head>
+<body></body>
+</html>
View
35 routes/app.js
@@ -0,0 +1,35 @@
+/*
+ * File: app.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.Loader.setConfig({
+ enabled: true
+});
+
+Ext.application({
+ views: [
+ 'MyContainer'
+ ],
+ name: 'MyApp',
+ controllers: [
+ 'ControllerWithAdvancedRoute',
+ 'ControllerWithSimpleRoute'
+ ],
+
+ launch: function() {
+
+ Ext.create('MyApp.view.MyContainer', {fullscreen: true});
+ }
+
+});
View
34 routes/app/controller/ControllerWithAdvancedRoute.js
@@ -0,0 +1,34 @@
+/*
+ * File: app/controller/ControllerWithAdvancedRoute.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.controller.ControllerWithAdvancedRoute', {
+ extend: 'Ext.app.Controller',
+
+ config: {
+ routes: {
+ 'folder/:folder/file/:id': {
+ action: 'showFile',
+ conditions: {
+ ':folder': '[a-zA-Z]+'
+ }
+ }
+ }
+ },
+
+ showFile: function(folder, id) {
+ alert('Route was handled by showFile(' + folder + ', ' + id + ')');
+ }
+
+});
View
38 routes/app/controller/ControllerWithSimpleRoute.js
@@ -0,0 +1,38 @@
+/*
+ * File: app/controller/ControllerWithSimpleRoute.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.controller.ControllerWithSimpleRoute', {
+ extend: 'Ext.app.Controller',
+
+ config: {
+ routes: {
+ 'login': 'showLogin',
+ 'user/:user': 'showUserId'
+ },
+
+ refs: {
+ main: '#mainTabPanel'
+ }
+ },
+
+ showLogin: function() {
+ alert('Route was handled by showLogin()');
+ },
+
+ showUserId: function(user) {
+ alert('Route was handled by showUserId(' + user + ')');
+ }
+
+});
View
31 routes/app/view/MyContainer.js
@@ -0,0 +1,31 @@
+/*
+ * File: app/view/MyContainer.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.view.MyContainer', {
+ extend: 'Ext.Container',
+
+ config: {
+ html: 'Try some of the following route URLs: <br><br><ul><li><a href="#login">#login</a></li><li><a href="#user/12345">#user/12345</a></li><li><a href="#folder/myfolder/file/myfile">#folder/myfolder/file/myfile</a></li>',
+ padding: 40,
+ items: [
+ {
+ xtype: 'toolbar',
+ docked: 'top',
+ title: 'Routes'
+ }
+ ]
+ }
+
+});
View
40 routes/metadata/Application
@@ -0,0 +1,40 @@
+{
+ "type": "application",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "views": [
+ "MyContainer"
+ ],
+ "name": "MyApp",
+ "controllers": [
+ "ControllerWithAdvancedRoute",
+ "ControllerWithSimpleRoute"
+ ]
+ },
+ "id": "ExtBox1-ext-gen1961",
+ "designerId": "application",
+ "iconCls": "icon-application",
+ "cn": [
+ {
+ "type": "fixedfunction",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "launch",
+ "fn": "launch",
+ "implHandler": [
+ ""
+ ]
+ },
+ "designerId": "fb1ebc2a-8980-4efa-95a1-d02efc91dbc6",
+ "iconCls": "icon-launch-function"
+ }
+ ]
+}
View
52 routes/metadata/controller/ControllerWithAdvancedRoute
@@ -0,0 +1,52 @@
+{
+ "type": "controller",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "ControllerWithAdvancedRoute"
+ },
+ "id": "ExtBox1-ext-gen2014",
+ "designerId": "ba3530f9-d987-4e95-b9ab-feeb522494f4",
+ "cn": [
+ {
+ "type": "controllerroute",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "showFile",
+ "fn": "showFile",
+ "designer|params": [
+ "folder",
+ "id"
+ ],
+ "implHandler": [
+ "alert('Route was handled by showFile(' + folder + ', ' + id + ')');"
+ ],
+ "url": "folder/:folder/file/:id"
+ },
+ "designerId": "d2b20497-9266-4c31-80ca-e387a779b960",
+ "cn": [
+ {
+ "type": "routecondition",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "RouteCondition",
+ "param": "folder",
+ "condition": "[a-zA-Z]+"
+ },
+ "designerId": "77b9c709-4d22-4d6e-ad3a-31bc1a761da6"
+ }
+ ]
+ }
+ ]
+}
View
66 routes/metadata/controller/ControllerWithSimpleRoute
@@ -0,0 +1,66 @@
+{
+ "type": "controller",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "ControllerWithSimpleRoute"
+ },
+ "id": "ExtBox1-ext-gen2207",
+ "designerId": "ad3af552-e9cd-48b4-9a25-4527d0f555c9",
+ "cn": [
+ {
+ "type": "controllerroute",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "showLogin",
+ "fn": "showLogin",
+ "implHandler": [
+ "alert('Route was handled by showLogin()');"
+ ],
+ "url": "login"
+ },
+ "designerId": "f4f9ca17-2908-4fc2-aa5d-c8a13c05e4d1"
+ },
+ {
+ "type": "controllerroute",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "showUserId",
+ "fn": "showUserId",
+ "designer|params": [
+ "user"
+ ],
+ "implHandler": [
+ "alert('Route was handled by showUserId(' + user + ')');"
+ ],
+ "url": "user/:user"
+ },
+ "designerId": "2eb1718e-73f5-4713-ba46-7beee0691baf"
+ },
+ {
+ "type": "controllerref",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "main",
+ "ref": "main",
+ "selector": "#mainTabPanel"
+ },
+ "designerId": "a24492b6-a290-4cf2-ad9c-dc8bb8e3ff6e"
+ }
+ ]
+}
View
11 routes/metadata/resource/Library
@@ -0,0 +1,11 @@
+{
+ "type": "libraryresource",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "id": "ExtBox1-ext-gen1690",
+ "designerId": "760b8175-0630-4bbd-a828-389f20615561",
+ "iconCls": "icon-library"
+}
View
32 routes/metadata/view/MyContainer
@@ -0,0 +1,32 @@
+{
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyContainer",
+ "designer|initialView": true,
+ "html": "Try some of the following route URLs: <br><br><ul><li><a href=\"#login\">#login</a></li><li><a href=\"#user/12345\">#user/12345</a></li><li><a href=\"#folder/myfolder/file/myfile\">#folder/myfolder/file/myfile</a></li>",
+ "padding": 40
+ },
+ "id": "ExtBox1-ext-gen14788",
+ "designerId": "7a5ac0d5-75f4-4f9e-83ac-b7a7f8e98f23",
+ "cn": [
+ {
+ "type": "toolbar",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyToolbar",
+ "docked": "top",
+ "title": "Routes"
+ },
+ "designerId": "d8ce19f0-1cdd-4629-b412-dee460200aa8"
+ }
+ ]
+}
View
72 routes/routes.xds
@@ -0,0 +1,72 @@
+{
+ "name": "routes",
+ "settings": {
+ "urlPrefix": "http://localhost/",
+ "spacesToIndent": 4,
+ "exportPath": "",
+ "lineEnding": "LF",
+ "genTimestamps": false,
+ "cacheBust": false,
+ "codeGenFormat": "Class",
+ "senchaIoKey": "",
+ "senchaIoPath": "http://extjs.cachefly.net/designer/IO/",
+ "instantiateStore": true,
+ "saveOnDeploy": false,
+ "appName": "MyApp",
+ "cssPath": ""
+ },
+ "xdsVersion": "2.0.0",
+ "xdsBuild": 0,
+ "schemaVersion": 1,
+ "upgradeVersion": 210000000495,
+ "framework": "touch20",
+ "topInstanceFileMap": {
+ "ba3530f9-d987-4e95-b9ab-feeb522494f4": {
+ "paths": [
+ "metadata/controller/ControllerWithAdvancedRoute",
+ "app/controller/override/ControllerWithAdvancedRoute.js",
+ "app/controller/ControllerWithAdvancedRoute.js"
+ ],
+ "className": "ControllerWithAdvancedRoute"
+ },
+ "ad3af552-e9cd-48b4-9a25-4527d0f555c9": {
+ "paths": [
+ "metadata/controller/ControllerWithSimpleRoute",
+ "app/controller/override/ControllerWithSimpleRoute.js",
+ "app/controller/ControllerWithSimpleRoute.js"
+ ],
+ "className": "ControllerWithSimpleRoute"
+ },
+ "7a5ac0d5-75f4-4f9e-83ac-b7a7f8e98f23": {
+ "paths": [
+ "metadata/view/MyContainer",
+ "app/view/override/MyContainer.js",
+ "app/view/MyContainer.js"
+ ],
+ "className": "MyContainer"
+ },
+ "760b8175-0630-4bbd-a828-389f20615561": {
+ "paths": [
+ "metadata/resource/Library"
+ ],
+ "className": "Library"
+ }
+ },
+ "viewOrderMap": {
+ "view": [
+ "7a5ac0d5-75f4-4f9e-83ac-b7a7f8e98f23"
+ ],
+ "store": [],
+ "controller": [
+ "ba3530f9-d987-4e95-b9ab-feeb522494f4",
+ "ad3af552-e9cd-48b4-9a25-4527d0f555c9"
+ ],
+ "model": [],
+ "resource": [
+ "760b8175-0630-4bbd-a828-389f20615561"
+ ],
+ "app": [
+ "application"
+ ]
+ }
+}
View
BIN tabs.xda
Binary file not shown.
View
26 tabs/app.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+
+<!-- Auto Generated with Sencha Architect -->
+<!-- Modifications to this file will be overwritten. -->
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>tabs</title>
+ <script src="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/sencha-touch-all.js"></script>
+ <link rel="stylesheet" href="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/resources/css/sencha-touch.css">
+ <link rel="stylesheet" href="style.css">
+ <script type="text/javascript" src="app.js"></script>
+ <script type="text/javascript">
+ if (!Ext.browser.is.WebKit) {
+ alert("The current browser is unsupported.\n\nSupported browsers:\n" +
+ "Google Chrome\n" +
+ "Apple Safari\n" +
+ "Mobile Safari (iOS)\n" +
+ "Android Browser\n" +
+ "BlackBerry Browser"
+ );
+ }
+ </script>
+</head>
+<body></body>
+</html>
View
28 tabs/app.js
@@ -0,0 +1,28 @@
+/*
+ * File: app.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.Loader.setConfig({
+ enabled: true
+});
+
+Ext.application({
+ name: 'MyApp',
+
+ launch: function() {
+
+ Ext.create('MyApp.view.MyTabPanel', {fullscreen: true});
+ }
+
+});
View
51 tabs/app/view/MyTabPanel.js
@@ -0,0 +1,51 @@
+/*
+ * File: app/view/MyTabPanel.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.view.MyTabPanel', {
+ extend: 'Ext.tab.Panel',
+
+ config: {
+ tabBar: {
+ docked: 'top'
+ },
+ items: [
+ {
+ xtype: 'container',
+ title: 'Tab 1',
+ cls: [
+ 'card1'
+ ],
+ html: 1
+ },
+ {
+ xtype: 'container',
+ title: 'Tab 2',
+ cls: [
+ 'card2'
+ ],
+ html: 2
+ },
+ {
+ xtype: 'container',
+ title: 'Tab 3',
+ cls: [
+ 'card3'
+ ],
+ html: 3
+ }
+ ]
+ }
+
+});
View
13 tabs/metadata/Application
@@ -0,0 +1,13 @@
+{
+ "type": "application",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "name": "MyApp"
+ },
+ "id": "ExtBox1-ext-gen1763",
+ "designerId": "application"
+}
View
10 tabs/metadata/resource/Library
@@ -0,0 +1,10 @@
+{
+ "type": "libraryresource",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "id": "ExtBox1-ext-gen6078",
+ "designerId": "60e8b8e2-73e4-45e1-aefe-0690953ad498"
+}
View
13 tabs/metadata/resource/css
@@ -0,0 +1,13 @@
+{
+ "type": "cssresource",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "url": "style.css"
+ },
+ "id": "ExtBox1-ext-gen6303",
+ "designerId": "456f258b-85e5-4604-9e1d-ece1258c2af3"
+}
View
80 tabs/metadata/view/MyTabPanel
@@ -0,0 +1,80 @@
+{
+ "type": "tabpanel",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyTabPanel",
+ "designer|initialView": true
+ },
+ "id": "ExtBox1-ext-gen1920",
+ "designerId": "ddedca87-ade6-4cfb-b9b5-9b14fb6c9b09",
+ "cn": [
+ {
+ "type": "tabbar",
+ "reference": {
+ "name": "tabBar",
+ "type": "object"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyTabBar",
+ "docked": "top"
+ },
+ "designerId": "893a58f3-5340-4264-8a07-c6762f02db2f"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "Tab 1",
+ "designer|userClassName": "MyContainer",
+ "cls": [
+ "card1"
+ ],
+ "html": 1
+ },
+ "designerId": "a4404c6e-2bf6-4753-9912-806ac8de9ace"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "Tab 2",
+ "designer|userClassName": "MyContainer1",
+ "cls": [
+ "card2"
+ ],
+ "html": 2
+ },
+ "designerId": "b11c3923-8975-45f9-9e12-871f45c6cd07"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "Tab 3",
+ "designer|userClassName": "MyContainer2",
+ "cls": [
+ "card3"
+ ],
+ "html": 3
+ },
+ "designerId": "edaef7cc-cd49-4b7d-af15-fa231e1ab91b"
+ }
+ ]
+}
View
10 tabs/style.css
@@ -0,0 +1,10 @@
+.card1,
+.card2,
+.card3 {
+ background-color: #376daa;
+ text-align: center;
+ color: #204167;
+ text-shadow: #3F80CA 0 1px 0;
+ font-size: 72px;
+ padding-top: 100px;
+}
View
59 tabs/tabs.xds
@@ -0,0 +1,59 @@
+{
+ "name": "tabs",
+ "settings": {
+ "urlPrefix": "http://localhost/",
+ "spacesToIndent": 4,
+ "exportPath": "",
+ "lineEnding": "LF",
+ "genTimestamps": false,
+ "cacheBust": false,
+ "codeGenFormat": "Class",
+ "senchaIoKey": "",
+ "senchaIoPath": "http://extjs.cachefly.net/designer/IO/",
+ "instantiateStore": true,
+ "saveOnDeploy": false,
+ "appName": "MyApp"
+ },
+ "xdsVersion": "2.0.0",
+ "xdsBuild": 557,
+ "schemaVersion": 1,
+ "upgradeVersion": 210000000495,
+ "framework": "touch20",
+ "topInstanceFileMap": {
+ "ddedca87-ade6-4cfb-b9b5-9b14fb6c9b09": {
+ "paths": [
+ "metadata/view/MyTabPanel",
+ "app/view/override/MyTabPanel.js",
+ "app/view/MyTabPanel.js"
+ ],
+ "className": "MyTabPanel"
+ },
+ "456f258b-85e5-4604-9e1d-ece1258c2af3": {
+ "paths": [
+ "metadata/resource/css"
+ ],
+ "className": "css"
+ },
+ "60e8b8e2-73e4-45e1-aefe-0690953ad498": {
+ "paths": [
+ "metadata/resource/Library"
+ ],
+ "className": "Library"
+ }
+ },
+ "viewOrderMap": {
+ "view": [
+ "ddedca87-ade6-4cfb-b9b5-9b14fb6c9b09"
+ ],
+ "store": [],
+ "controller": [],
+ "model": [],
+ "resource": [
+ "60e8b8e2-73e4-45e1-aefe-0690953ad498",
+ "456f258b-85e5-4604-9e1d-ece1258c2af3"
+ ],
+ "app": [
+ "application"
+ ]
+ }
+}
View
BIN tabs2.xda
Binary file not shown.
View
26 tabs2/app.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+
+<!-- Auto Generated with Sencha Architect -->
+<!-- Modifications to this file will be overwritten. -->
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>tabs2</title>
+ <script src="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/sencha-touch-all.js"></script>
+ <link rel="stylesheet" href="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/resources/css/sencha-touch.css">
+ <link rel="stylesheet" href="style.css">
+ <script type="text/javascript" src="app.js"></script>
+ <script type="text/javascript">
+ if (!Ext.browser.is.WebKit) {
+ alert("The current browser is unsupported.\n\nSupported browsers:\n" +
+ "Google Chrome\n" +
+ "Apple Safari\n" +
+ "Mobile Safari (iOS)\n" +
+ "Android Browser\n" +
+ "BlackBerry Browser"
+ );
+ }
+ </script>
+</head>
+<body></body>
+</html>
View
31 tabs2/app.js
@@ -0,0 +1,31 @@
+/*
+ * File: app.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.Loader.setConfig({
+ enabled: true
+});
+
+Ext.application({
+ views: [
+ 'MyTabPanel'
+ ],
+ name: 'MyApp',
+
+ launch: function() {
+
+ Ext.create('MyApp.view.MyTabPanel', {fullscreen: true});
+ }
+
+});
View
78 tabs2/app/view/MyTabPanel.js
@@ -0,0 +1,78 @@
+/*
+ * File: app/view/MyTabPanel.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('MyApp.view.MyTabPanel', {
+ extend: 'Ext.tab.Panel',
+
+ config: {
+ ui: 'light',
+ defaults: {
+ scrollable: true
+ },
+ tabBar: {
+ docked: 'bottom'
+ },
+ items: [
+ {
+ xtype: 'container',
+ title: 'About',
+ iconCls: 'info',
+ cls: [
+ 'card1'
+ ],
+ html: '<h1>Bottom Tabs</h1><p>Docking tabs to the bottom will automatically change their style. The tabs below are type="light", though the standard type is dark. Badges (like the 4 &amp; Long title below) can be added by setting <code>badgeText</code> when creating a tab/card or by using <code>setBadge()</code> on the tab later.</p>'
+ },
+ {
+ xtype: 'container',
+ title: 'Favorites',
+ badgeText: 4,
+ iconCls: 'favorites',
+ cls: [
+ 'card2'
+ ],
+ html: '<h1>Favorites Card</h1>'
+ },
+ {
+ xtype: 'container',
+ title: 'Downloads',
+ badgeText: 'Text can go here too, but it will be cut off if it is too long.',
+ iconCls: 'download',
+ cls: [
+ 'card3'
+ ],
+ html: '<h1>Downloads Card</h1>'
+ },
+ {
+ xtype: 'container',
+ title: 'Settings',
+ iconCls: 'settings',
+ cls: [
+ 'card4'
+ ],
+ html: '<h1>Settings Card</h1>'
+ },
+ {
+ xtype: 'container',
+ title: 'User',
+ iconCls: 'user',
+ cls: [
+ 'card5'
+ ],
+ html: '<h1>User Card</h1>'
+ }
+ ]
+ }
+
+});
View
17 tabs2/metadata/Application
@@ -0,0 +1,17 @@
+{
+ "type": "application",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "views": [
+ "MyTabPanel"
+ ],
+ "name": "MyApp"
+ },
+ "id": "ExtBox1-ext-gen6655",
+ "designerId": "application",
+ "iconCls": "icon-application"
+}
View
11 tabs2/metadata/resource/Library
@@ -0,0 +1,11 @@
+{
+ "type": "libraryresource",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "id": "ExtBox1-ext-gen7335",
+ "designerId": "9abecb82-6e90-4cc4-9b1a-622fa72c7ad3",
+ "iconCls": "icon-library"
+}
View
13 tabs2/metadata/resource/css
@@ -0,0 +1,13 @@
+{
+ "type": "cssresource",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "url": "style.css"
+ },
+ "id": "ExtBox1-ext-gen4984",
+ "designerId": "060950e7-8c71-4de5-8433-b233981c439f"
+}
View
124 tabs2/metadata/view/MyTabPanel
@@ -0,0 +1,124 @@
+{
+ "type": "tabpanel",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyTabPanel",
+ "designer|initialView": true,
+ "ui": "light",
+ "defaults": "{scrollable: true}"
+ },
+ "id": "ExtBox1-ext-gen1920",
+ "designerId": "ddedca87-ade6-4cfb-b9b5-9b14fb6c9b09",
+ "cn": [
+ {
+ "type": "tabbar",
+ "reference": {
+ "name": "tabBar",
+ "type": "object"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "designer|userClassName": "MyTabBar",
+ "docked": "bottom"
+ },
+ "designerId": "72931c11-7101-464e-958f-c700ef2f5570",
+ "iconCls": "icon-tab-bar"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "About",
+ "iconCls": "info",
+ "designer|userClassName": "MyContainer",
+ "cls": [
+ "card1"
+ ],
+ "html": "<h1>Bottom Tabs</h1><p>Docking tabs to the bottom will automatically change their style. The tabs below are type=\"light\", though the standard type is dark. Badges (like the 4 &amp; Long title below) can be added by setting <code>badgeText</code> when creating a tab/card or by using <code>setBadge()</code> on the tab later.</p>"
+ },
+ "designerId": "6f312e2c-efd6-4fd9-9df4-e924732498f5"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "Favorites",
+ "badgeText": 4,
+ "iconCls": "favorites",
+ "designer|userClassName": "MyContainer1",
+ "cls": [
+ "card2"
+ ],
+ "html": "<h1>Favorites Card</h1>"
+ },
+ "designerId": "f74051b0-d059-4e5b-ac14-e7c1e4326f9a"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "Downloads",
+ "badgeText": "Text can go here too, but it will be cut off if it is too long.",
+ "iconCls": "download",
+ "designer|userClassName": "MyContainer2",
+ "cls": [
+ "card3"
+ ],
+ "html": "<h1>Downloads Card</h1>"
+ },
+ "designerId": "66bad555-8ab3-4f73-b413-dc4360dbbf20"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "Settings",
+ "iconCls": "settings",
+ "designer|userClassName": "MyContainer3",
+ "cls": [
+ "card4"
+ ],
+ "html": "<h1>Settings Card</h1>"
+ },
+ "designerId": "60f21f17-c92c-4297-9fb0-cab6273a42a2"
+ },
+ {
+ "type": "container",
+ "reference": {
+ "name": "items",
+ "type": "array"
+ },
+ "codeClass": null,
+ "userConfig": {
+ "title": "User",
+ "iconCls": "user",
+ "designer|userClassName": "MyContainer4",
+ "cls": [
+ "card5"
+ ],
+ "html": "<h1>User Card</h1>"
+ },
+ "designerId": "b428ee16-5f11-49d8-b4a2-a1caca990dcf"
+ }
+ ]
+}
View
52 tabs2/style.css
@@ -0,0 +1,52 @@
+body {
+ background-color: #333;
+}
+
+.card1,
+.card2,
+.card3,
+.card4,
+.card5 {
+ text-align: center;
+ font-size: 72px;
+ font-weight: bold;
+ color: rgba(0,0,0,.2);
+ text-shadow: rgba(255,255,255,.2) 0 1px 0;
+ padding: 20px;
+}
+
+.card1 {
+ background-color: #ccc;
+}
+.card2 {
+ background-color: #5E99CC;
+}
+.card3 {
+ background-color: #759E60;
+}
+.card4 {
+ background-color: #9C744F;
+}
+.card5 {
+ background-color: #926D9C;
+}
+
+.x-phone .card1,
+.x-phone .card2,
+.x-phone .card3,
+.x-phone .card4,
+.x-phone .card5 {
+ padding: 20px;
+ font-size: 36px;
+}
+.x-phone p {
+ font-size: 16px;
+ line-height: 18px;
+}
+h1 {
+ font-weight: bold;
+}
+p {
+ font-size: 24px;
+ line-height: 30px;
+}
View
59 tabs2/tabs2.xds
@@ -0,0 +1,59 @@
+{
+ "name": "tabs2",
+ "settings": {
+ "urlPrefix": "http://localhost/",
+ "spacesToIndent": 4,
+ "exportPath": "",
+ "lineEnding": "LF",
+ "genTimestamps": false,
+ "cacheBust": false,
+ "codeGenFormat": "Class",
+ "senchaIoKey": "",
+ "senchaIoPath": "http://extjs.cachefly.net/designer/IO/",
+ "instantiateStore": true,
+ "saveOnDeploy": false,
+ "appName": "MyApp"
+ },
+ "xdsVersion": "2.0.0",
+ "xdsBuild": 0,
+ "schemaVersion": 1,
+ "upgradeVersion": 210000000495,
+ "framework": "touch20",
+ "topInstanceFileMap": {
+ "ddedca87-ade6-4cfb-b9b5-9b14fb6c9b09": {
+ "paths": [
+ "metadata/view/MyTabPanel",
+ "app/view/override/MyTabPanel.js",
+ "app/view/MyTabPanel.js"
+ ],
+ "className": "MyTabPanel"
+ },
+ "060950e7-8c71-4de5-8433-b233981c439f": {
+ "paths": [
+ "metadata/resource/css"
+ ],
+ "className": "css"
+ },
+ "9abecb82-6e90-4cc4-9b1a-622fa72c7ad3": {
+ "paths": [
+ "metadata/resource/Library"
+ ],
+ "className": "Library"
+ }
+ },
+ "viewOrderMap": {
+ "view": [
+ "ddedca87-ade6-4cfb-b9b5-9b14fb6c9b09"
+ ],
+ "store": [],
+ "controller": [],
+ "model": [],
+ "resource": [
+ "9abecb82-6e90-4cc4-9b1a-622fa72c7ad3",
+ "060950e7-8c71-4de5-8433-b233981c439f"
+ ],
+ "app": [
+ "application"
+ ]
+ }
+}
View
BIN tweetlist.xda
Binary file not shown.
View
26 tweetlist/app.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+
+<!-- Auto Generated with Sencha Architect -->
+<!-- Modifications to this file will be overwritten. -->
+<html>
+<head>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <title>tweetlist</title>
+ <script src="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/sencha-touch-all.js"></script>
+ <link rel="stylesheet" href="http://extjs.cachefly.net/touch/sencha-touch-2.0.1.1/resources/css/sencha-touch.css">
+ <link rel="stylesheet" href="tweetlist.css">
+ <script type="text/javascript" src="app.js"></script>
+ <script type="text/javascript">
+ if (!Ext.browser.is.WebKit) {
+ alert("The current browser is unsupported.\n\nSupported browsers:\n" +
+ "Google Chrome\n" +
+ "Apple Safari\n" +
+ "Mobile Safari (iOS)\n" +
+ "Android Browser\n" +
+ "BlackBerry Browser"
+ );
+ }
+ </script>
+</head>
+<body></body>
+</html>
View
73 tweetlist/app.js
@@ -0,0 +1,73 @@
+/*
+ * File: app.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.Loader.setConfig({
+ enabled: true
+});
+
+Ext.application({
+ stores: [
+ 'TweetStore'
+ ],
+ views: [
+ 'TweetList'
+ ],
+ name: 'Tweets',
+
+ launch: function() {
+ Ext.util.Format.timeAgoInWords = function(date) {
+ try {
+ var now = Math.ceil(Number(new Date()) / 1000),
+ dateTime = Math.ceil(Number(new Date(date)) / 1000),
+ diff = now - dateTime,
+ str;
+
+ if (diff < 60) {
+ return String(diff) + ' seconds ago';
+ } else if (diff < 3600) {
+ str = String(Math.ceil(diff / (60)));
+ return str + (str == "1" ? ' minute' : ' minutes') + ' ago';
+ } else if (diff < 86400) {
+ str = String(Math.ceil(diff / (3600)));
+ return str + (str == "1" ? ' hour' : ' hours') + ' ago';
+ } else if (diff < 60 * 60 * 24 * 365) {
+ str = String(Math.ceil(diff / (60 * 60 * 24)));
+ return str + (str == "1" ? ' day' : ' days') + ' ago';
+ } else {
+ return Ext.Date.format(new Date(date), 'jS M \'y');
+ }
+ } catch (e) {
+ return '';
+ }
+ };
+ Ext.getStore('TweetStore').load();
+ if (Ext.os.is.Phone) {
+ Ext.create('Tweets.view.TweetList', {
+ fullscreen: true
+ });
+ } else {
+ Ext.Viewport.add({
+ xclass: 'Tweets.view.TweetList',
+ width: 380,
+ height: 420,
+ centered: true,
+ modal: true,
+ hideOnMaskTap: false
+ }).show();
+ }
+
+ }
+
+});
View
49 tweetlist/app/store/TweetStore.js
@@ -0,0 +1,49 @@
+/*
+ * File: app/store/TweetStore.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('Tweets.store.TweetStore', {
+ extend: 'Ext.data.Store',
+
+ config: {
+ pageSize: 5,
+ storeId: 'TweetStore',
+ proxy: {
+ type: 'jsonp',
+ extraParams: {
+ q: 'sencha'
+ },
+ limitParam: 'rpp',
+ url: 'http://search.twitter.com/search.json',
+ reader: {
+ type: 'json',
+ rootProperty: 'results'
+ }
+ },
+ fields: [
+ {
+ name: 'from_user'
+ },
+ {
+ name: 'profile_image_url'
+ },
+ {
+ name: 'text'
+ },
+ {
+ name: 'created_at'
+ }
+ ]
+ }
+});
View
42 tweetlist/app/view/TweetList.js
@@ -0,0 +1,42 @@
+/*
+ * File: app/view/TweetList.js
+ *
+ * This file was generated by Sencha Architect version 2.0.0.
+ * http://www.sencha.com/products/architect/
+ *
+ * This file requires use of the Sencha Touch 2.0.x library, under independent license.
+ * License of Sencha Architect does not include license for Sencha Touch 2.0.x. For more
+ * details see http://www.sencha.com/license or contact license@sencha.com.
+ *
+ * This file will be auto-generated each and everytime you save your project.
+ *
+ * Do NOT hand edit this file.
+ */
+
+Ext.define('Tweets.view.TweetList', {
+ extend: 'Ext.dataview.List',
+
+ config: {
+ emptyText: 'No tweets found matching that search.',