{ "id": "129686", "key": "ALOY-994", "fields": { "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false }, "project": { "id": "11113", "key": "ALOY", "name": "Alloy", "projectCategory": { "id": "10400", "description": "Tools for developing applications", "name": "Tooling" } }, "fixVersions": [ { "id": "15909", "description": "Alloy 1.5.0", "name": "Alloy 1.5.0", "archived": false, "released": true, "releaseDate": "2014-09-29" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2014-11-26T02:21:26.000+0000", "created": "2014-04-25T17:22:16.000+0000", "priority": { "name": "Medium", "id": "3" }, "labels": [ "qe-manualtest" ], "versions": [], "issuelinks": [ { "id": "39830", "type": { "id": "10000", "name": "Blocks", "inward": "is blocked by", "outward": "blocks" }, "inwardIssue": { "id": "134622", "key": "TIDOC-1827", "fields": { "summary": "Alloy: add documentation for ALOY-994", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "2", "description": "A new feature of the product, which has yet to be developed.", "name": "New Feature", "subtask": false } } } }, { "id": "40159", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "135200", "key": "TISTUD-6826", "fields": { "summary": "Alloy: add Code Completion support for ", "status": { "description": "The issue is open and ready for the assignee to start work on it.", "name": "Open", "id": "1", "statusCategory": { "id": 2, "key": "new", "colorName": "blue-gray", "name": "To Do" } }, "priority": { "name": "High", "id": "2" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } }, { "id": "38890", "type": { "id": "10003", "name": "Relates", "inward": "relates to", "outward": "relates to" }, "inwardIssue": { "id": "132795", "key": "TISTUD-6701", "fields": { "summary": "Update content assist for tag", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "priority": { "name": "Medium", "id": "3" }, "issuetype": { "id": "4", "description": "An improvement or enhancement to an existing feature or task.", "name": "Improvement", "subtask": false } } } } ], "assignee": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "updated": "2014-11-26T02:21:26.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "12326", "name": "XML", "description": "View XML and parsing" } ], "description": "Implement a parser for an tag to provide functionality like that implemented in ALOY-784. Don't remove features enabled by ALOY-784. Will also require a docs update and a sample app.\r\n\r\nPossible implementation:\r\n\r\n{code}\r\n\r\n \r\n \r\n \r\n\r\n{code}\r\n\r\n* - This tag would be valid as a child of Window or TabGroup and should throw a compiler error if placed elsewhere.\r\n* - It would be an empty tag with no valid children (actionBar properties would be set via tag attributes).\r\n* - If both and are present, the last-defined property would win.\r\n* - Because this tag is valid for only Android, there should be no requirement to include the {{platform=\"\"}} attribute. This would match the behavior of the tag.\r\n* - If an ID is supplied, the developer should be able to modify activity.actionBar properties at runtime, such as changing the title, with a reference to {{$.actionbarID.propertyname}}\r\n* - Must support all the properties currently supported by http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.Android.ActionBar", "attachment": [], "flagged": false, "summary": "Add tag to set activity.actionBar properties", "creator": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "subtasks": [], "reporter": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "environment": "Android 3.x, Android 4.x", "closedSprints": [ { "id": 147, "state": "closed", "name": "2014 Sprint 13 Alloy", "startDate": "2014-06-23T14:36:08.509Z", "endDate": "2014-07-04T00:00:00.000Z", "completeDate": "2014-07-07T16:06:44.759Z", "originBoardId": 124 } ], "comment": { "comments": [ { "id": "302543", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "Should also support new properties added in TIMOB-16212", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2014-04-25T17:34:25.000+0000", "updated": "2014-04-25T17:34:25.000+0000" }, { "id": "311630", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "Possible implementation options:\r\n\r\nh3. ActionBar and Menu as separate tags\r\n\r\nOrder shouldn't matter. Both tags are children of Window.\r\n\r\n*Pros:*\r\n\r\n- clear that these are separate controls (which they are at SDK level)\r\n- thus clear that you can use one or the other or both\r\n- simplest to implement within Alloy and easy to document\r\n- likewise relatively simple for developers to implement in their apps\r\n\r\n*Cons:*\r\n\r\n- Seems like extra code\r\n- Visually, the menu is part of the ActionBar, thus is probably conceptually related for many developers\r\n\r\n{code}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}\r\n\r\n\r\nh3. ActionBar properties become properties of the Window, but Menu is a separate tag\r\n\r\n*Pros:*\r\n\r\n- Titles and such are properties of Window on iOS, so putting them as properties for Android makes sense\r\n- Clear that the menu is a separately-added component\r\n\r\n*Cons:*\r\n\r\n- To later change these properties, you need a handle to the Activity. We'll need to define a way for developers to hook into this activity in their controllers -- perhaps $.index.activity would be logical?\r\n- Adds platform-specific properties to a cross-platform tag, which could cause developer confusion\r\n- This would be a bit more difficult to document given that our docs are organized by API and we're adding properties at the Alloy level that aren't there at the SDK level\r\n- Need to account for cases when ti.android.useLegacyWindow is set to true in the tiapp.xml (until the option for lightweight windows is fully removed). Adds an SDK version dependency.\r\n\r\n{code}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}\r\n\r\n\r\nh3. Menu as child of ActionBar\r\n\r\n*Pros:*\r\n\r\n- Probably conceptually clear to developers given that visually, the menu is part of the ActionBar\r\n\r\n*Cons:*\r\n\r\n- Again, we'd need to expose a hook to the activity and menu in the controller so the developer can reset menu items (when a TabGroup is involved and the developer needs different menus on different tabs).\r\n- Maintains the current platform differences for Window titles (e.g. on iOS, title is a property of the Window)\r\n- Would we maintain the tag for situations where a developer doesn't want to set ActionBar properties but does want a menu?\r\n\r\n{code}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}\r\n", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2014-06-30T17:08:35.000+0000", "updated": "2014-06-30T17:10:20.000+0000" }, { "id": "311637", "author": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Seems to me that option #1 would be best, if only because it would give us the ability to add #3 in the future and maintain backwards compatiblity. I don't like #2. Adding APIs to comopnents should be an absolute last resort.", "updateAuthor": { "name": "tlukasavage", "key": "tlukasavage", "displayName": "Tony Lukasavage", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-06-30T17:22:03.000+0000", "updated": "2014-06-30T17:22:03.000+0000" }, { "id": "311638", "author": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "body": "Def. no on #2. \r\n\r\n#1 and #3 both make sense to me.\r\n\r\nI'm assuming you'll generate the onCreate when the activity open event fires and all that...what happens when I want to put stuff in the activity onCreate and such in addition to what you'll auto put in there for me?", "updateAuthor": { "name": "rblalock", "key": "rblalock", "displayName": "Rick Blalock", "active": false, "timeZone": "America/Havana" }, "created": "2014-06-30T17:24:31.000+0000", "updated": "2014-06-30T17:24:31.000+0000" }, { "id": "311640", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "Another possibility, taking future features into account:\r\n\r\nh3. Activity tag with Menu and BottomBar as children\r\n\r\n{code}\r\n\r\n \r\n \t\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n{code}\r\n\r\n", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2014-06-30T17:29:37.000+0000", "updated": "2014-06-30T17:29:37.000+0000" }, { "id": "311641", "author": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "body": "Hell no to #2\r\n\r\nLiking #1\r\n\r\nWould tolerate #3 but will bitz about it to you everyday.\r\n\r\n", "updateAuthor": { "name": "sfeather", "key": "sfeather", "displayName": "Stephen Feather", "active": true, "timeZone": "America/New_York" }, "created": "2014-06-30T17:29:38.000+0000", "updated": "2014-06-30T17:29:38.000+0000" }, { "id": "312022", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "(y) #1", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2014-07-02T07:03:43.000+0000", "updated": "2014-07-02T07:03:43.000+0000" }, { "id": "312262", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "PR https://github.com/appcelerator/alloy/pull/470 \r\n\r\nTest app: https://github.com/skypanther/alloy/blob/ALOY-994/test/apps/testing/ALOY-994 \r\n\r\nFunctional test: run the associated sample app in the Android emulator, Genymotion, or on a device. The app should feature a customized ActionBar with title and subtitle, background image, and icon. Open the menu, choose 'option 2' to open the child window. It also has a customized actionBar. Tap the home icon to close the child window.\r\n\r\n[~fmiao] would you please test before I merge?", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2014-07-03T16:56:59.000+0000", "updated": "2014-07-03T16:56:59.000+0000" }, { "id": "312372", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "Tested on Nexus 4 with provided test app, it works fine! (y)", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2014-07-04T04:40:10.000+0000", "updated": "2014-07-04T04:40:10.000+0000" }, { "id": "312417", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "PR merged", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2014-07-04T13:03:09.000+0000", "updated": "2014-07-04T13:03:09.000+0000" }, { "id": "318359", "author": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified working as expected on Nexus Galaxy 4.3 and Sony Xperia 2.3.4 - Genymotion 2.3.7 and 4.3.\r\n\r\nTiSDK 3.4.0.v20140808101714\r\nAppcelerator Studio 3.3.1.201408080925\r\nAlloy 1.5.0-dev\r\n\r\nNote:\r\nWith the sample code provided, MenuItems are not visible on Android 2.3.X devices. \r\nOn 2.3.X devices, MenuItem has to be set in this way:\r\n{code}\r\n\"MenuItem\":{\r\n\tshowAsAction: Ti.Android.SHOW_AS_ACTION_IF_ROOM\r\n}\r\n{code}\r\n\r\nThis is also valid for Classic Titanium projects when using Menu in the ActionBar. ", "updateAuthor": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-08-13T01:36:49.000+0000", "updated": "2014-08-13T01:38:44.000+0000" }, { "id": "319332", "author": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "body": "Two pull requests:\r\n\r\nhttps://github.com/appcelerator/alloy/pull/513 against the 1_5_X branch\r\nhttps://github.com/appcelerator/alloy/pull/512 against master\r\n\r\nBoth implement the same fix.\r\n\r\nFunctional test\r\n\r\n1. Run the included ALOY\\-994b test app for Android. This app contains a tab group with a customized actionbar and menu. One of the menu options opens a child window, which also has a customized actionbar. The app should run without errors.\r\n2. Run the ALOY\\-994 test app, which sets a customized actionbar with just a window (no tab group)", "updateAuthor": { "name": "skypanther", "key": "skypanther", "displayName": "Tim Poulsen", "active": true, "timeZone": "America/New_York" }, "created": "2014-08-19T19:56:24.000+0000", "updated": "2014-08-19T19:56:24.000+0000" }, { "id": "319423", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "**APPROVED**", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2014-08-20T05:24:01.000+0000", "updated": "2014-08-20T05:24:01.000+0000" }, { "id": "319424", "author": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "body": "PR merged", "updateAuthor": { "name": "fmiao", "key": "fmiao", "displayName": "Feon Sua Xin Miao", "active": true, "timeZone": "America/Vancouver" }, "created": "2014-08-20T05:24:50.000+0000", "updated": "2014-08-20T05:24:50.000+0000" }, { "id": "319538", "author": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Description regarding how to access to the activity property should be changed.\r\n\r\nThis bullet should be removed as accessing to the activity is actually done in a different way.\r\n\r\nSee for example ALOY-994b sample code, in win2.js:\r\n{code}\r\n$.win2.addEventListener('open', function() {\r\n\tif($.win2.activity) {\r\n\t\t$.win2.activity.actionBar.title = \"Child window\";\r\n\t}\r\n});\r\n{code}", "updateAuthor": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-08-20T19:18:23.000+0000", "updated": "2014-08-20T19:19:08.000+0000" }, { "id": "333793", "author": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Verified working as expected with the provided samples.\r\nTiSDK 3.5.0.v20141124092514\r\nCLI 3.4.1-GA\r\nAlloy 1.5.1-GA\r\nAppceleator Studio 3.4.1.201410281743\r\n\r\nAndroid Nexus 5 (Android 5)", "updateAuthor": { "name": "fcasali", "key": "fcasali", "displayName": "Federico Casali", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2014-11-26T01:43:03.000+0000", "updated": "2014-11-26T01:43:03.000+0000" } ], "maxResults": 19, "total": 19, "startAt": 0 } } }