diff --git "a/database/tawos/deep/TIMOB_deep-se.csv" "b/database/tawos/deep/TIMOB_deep-se.csv"
new file mode 100644--- /dev/null
+++ "b/database/tawos/deep/TIMOB_deep-se.csv"
@@ -0,0 +1,3916 @@
+"issuekey","created","title","description","storypoint"
+"TIMOB-8075","03/29/2011 17:48:47","Android: While debugger is running, cannot back out and go back into an app","If you debug an Android app, you can't back out of that app and go back into it. It hangs then at the splash screen, and shows both ""Bad Socket"" and ""Connection Refused"" errors in logcat. Logcat: [https://gist.github.com/43b1285ca8743eaaf672] Screencast: [http://screencast.com/t/m0C2c9Ojxo] ",2
+"TIMOB-339","04/15/2011 03:27:30","Android: Missing Icons","Android images need to be copied for some icons. They're not being exposed via android.R. DONE, Refresh, and a few others. UPDATE! What needs to happen is we need to expose whatever system icons via Titanium.Android.R.",3
+"TIMOB-559","04/15/2011 03:31:55","Android: Appversion never taken from tiapp.xml","I found this bug while I created new release for Android Market. appversion is never changed from tiapp.xml file (version tag). I send you patch to correct this, to apply on 1.0.0/android/android.py",3
+"TIMOB-630","04/15/2011 03:33:13","Android: TabGroup stops window being re-shown","start with a standalone window that fires an event, a listener in app.js then closes the window and opens a tabgroup (think logon window) - all good. the tabgroup fires an event which is listened to in app.js which closes the tabgroup and opens the initial window. This fails - the tabgroup goes away, logging shows the original window is being re-built, but it is never shown. It is shown in iPhone. Pseudo code for app.js... {code} var loginWin; var logoutGroup; function makeLoginWindow() { loginWin = window with single button firing LOGIN event; loginWin.open(); } function makeLogoutWindow() { logoutGroup = tabGroup containing one window with... single button firing LOGOUT event; logoutGroup.close(); } makeLoginWindow() addEventListener(LOGIN) { loginWin.close(); makeLogoutWindow(); } addEventListener(LOGOUT) { logoutGroup.close(); makeLoginWindow(); } {code} * Should this work? * Should I raise this sort of thing as a query or ask in the forums in future? ",0
+"TIMOB-664","04/15/2011 03:33:59","Android: Support custom annotation views on maps","{html}
{html}",0
+"TIMOB-933","04/15/2011 03:39:35","iOS: Support image view aspect fill"," See https://developer.appcelerator.com/question/23931/imageview-scaling-mode",0
+"TIMOB-1070","04/15/2011 03:43:09","iOS: Numeric and phone keypads have no return key and can't be easily dismissed on iPhone","{html}
{html}",0
+"TIMOB-1097","04/15/2011 03:43:59","Android: Titlebar is displayed when fullscreen splash screen is used.","{html}
There are a couple of possibly related problems with trying to run a fullscreen application in Android. The first is with the splash screen. There should be a way to have the splash screen display on the whole screen, but this is not the case despite the tiapp.xml configuration in this screenshot which shows both the emulator and the code:
Also, once the app launches, you should be able to open a window fullscreen with no title - this would be necessary for an app to go totally fullscreen:
{html} h5. Test Code {code} in theme.xml {code} h5. Expected behavior The splash screen should be displayed full screen with no title bar h5. Actual behavior The title bar, is displayed. During build the theme.xml gets reset, causing the title bar to be displayed. h5. Work-around There is a workaround posted in community Q and A. out one way to resolve this problem. 1) Create folders \platform\android\res\values (see KitchenSink folder structure) 2) Put in folder ""values"" the file theme.xml modifyed (i.e. ) ",2
+"TIMOB-1242","04/15/2011 03:47:30","iOS: Drag and drop map pin annotations","{html}
MKAnnotationView has support for allowing a map annotation to be draggable (in iOS 4). Boolean property on Annotation object - draggable:true/false Add associated Events - e.g. DragStart & DragEnd etc.
{html}",5
+"TIMOB-1243","04/15/2011 03:47:32","iOS: Label background disappears in tableRow on selection","{html}
Label in a tableRow has a background color set. On tableRow selection the background of the Label disappears regardless of the label colour used.
On deselection the background color of the Label waits for the tableRow selection to fade out completely before redisplaying.
I'm sure this is just a z sorting issue but it looks like the tableRow selection is overriding any text label backgrounds.
{html}",0
+"TIMOB-1244","04/15/2011 03:47:33","Audio Seeking and Buffering","{html}
I would like to have the possibility to control the seek function with the media comp, i also would be glad if i could play with ""buffer"" option to stream better my music.
thank you in advance, my compliments to the great appcelerator team. Andrea
{html}",0
+"TIMOB-1356","04/15/2011 03:50:19","Android: setUrl in AudioPlayer not working","Can't dynamically change the url of the audio player. The streamer.url variable does change, but it seems as if the url is cached somewhere, such that if you play again, the same audio will play (not the updated url). Here's the proof/test code of app.'s to show this bug. http://pastie.org/1051158"">http://pastie.org/1051158",0
+"TIMOB-1444","04/15/2011 03:53:01","iPad - OptionsDialog - fails to display last option / height bug","{html}
Just created a new two button optiondialog on an ipad webview.
when it is shown on the page only the first of the options is shown
{html}",1
+"TIMOB-1476","04/15/2011 03:53:53","iOS: add support for textAlign on button","{html}
add support to be able to align text using textAlign property for a button
{html}",0
+"TIMOB-1480","04/15/2011 03:53:59","Android: Using _ For Assets in Path Prevents Loading","If you try and include a .js, or .css file from a path that starts with _ (e.g. _shared) it fails to load. Remove the underscore and it works. Documenting, it may be a WebKit issue.",1
+"TIMOB-1485","04/15/2011 03:54:04","TiAPI: Unable to set offset when using custom pins on mapview","{html}
So ticket #1197 added support for custom pin images on mapviews, which works awesome. However, there's currently no way to set the centerOffset which means that the top of the image is always aligned with the point on the map. That might work well for some custom pin images, but if I actually use an image of a pin for the custom pin image (imagine that :p) then the offset is wrong. If I zoom in on it I see the head of the pin is attached to the point on the map rather than the base of the pin (which is what should be).
Support for the UITableViewRow initWithStyle:UITableViewCellStyleSubtitle by adding a property named ""subtitle"" to the tableView object.
This would make it easy to create the default title + subtitle tables many apps use.
{html}",0
+"TIMOB-1565","04/15/2011 03:56:11","Android: Ti.Geolocation doesn't work from app.js","{html}
On android (at least the emulator), geolocation services will always appear false when called from app.js.
This Ti.API.warn('Ti.Geolocation.locationServicesEnabled:'+Titanium.Geolocation.locationServicesEnabled); always displays 'false' from app.js, while displaying 'true' from an open window.
{html}",1
+"TIMOB-1573","04/15/2011 03:56:23","Android Market Licensing Service","h5. Implement Android Market Licensing Service, which is available to all paid apps on the Android Market. http://developer.android.com/guide/google/play/licensing/index.html",0
+"TIMOB-1682","04/15/2011 03:59:18","Feature: interactive console","It would be great to have a javascript-based interactive console to your running app along the lines of http://probablyinteractive.com/2010/8/20/ios-interactive-console.html.",1
+"TIMOB-1722","04/15/2011 04:00:30","Android: Implement Dashboard","{html}
iPhone added a dashboard control. We need to support it.
{html}",0
+"TIMOB-1775","04/15/2011 04:01:56","Ti.UI.View center property not implemented on Android, no warning in documentation","{html}
Docs for Ti.UI.View and its fellow view types lists a center property:
center object a dictionary with properties x and y to indicate the center of the views position relative to the parent view
This property is very useful for positioning things under, over, or next to other views, however it appears to be unimplemented on Android.
/* * This code demonstrates the missing center property on Android... * on iPhone shows: ""160, 230"" * on Android shows: ""wtf? null"" */ var window = Titanium.UI.createWindow({ }); var button = Titanium.UI.createButton({ title: ""Where am I?"", width: 200, height: 50 }); button.addEventListener('click', function() { var center = button.center; var msg; Ti.API.info('center: ' + center); if (center) { Ti.API.info('center.x: ' + center.x); Ti.API.info('center.y: ' + center.y); msg = center.x + ', ' + center.y; } else { msg = 'wtf? ' + center; } button.title = msg; }); window.add(button); window.open();
Changing it to check an actual 'View' object makes no difference; View, Button, and Label have all been tested, and there's no sign of a 'center' property implementation in the titanium_mobile/android source tree.
{html}",0
+"TIMOB-1793","04/15/2011 04:02:34","Android: Allow OptionDialog to not Have Radiobuttons","{html}
See Helpdesk 42631 basically provide a configuration option that allows hiding the radiobuttons that appear on the option dialog if possible.
{html}",0
+"TIMOB-1800","04/15/2011 04:02:44","iOS: Analytics causes app crash when no network is available - iphone","{html}
A customer reports that if analytics is enabled and no network (cell or wifi) causes a crash. I cannot reproduce this but at the request of the customer I am logging this ticket so we can investigate further.
{html}",2
+"TIMOB-1847","04/15/2011 04:03:49","iOS: Clear button does not show when paddingRight is used in text field","{html}
Code below shows this. Happens on iPhone and iPad:
var win = Ti.UI.currentWindow; var input1 = Ti.UI.createTextField({
The current script for naming AVDs is based on the download order of the emulators. For instance if you download API 4 and API 8 and run the API 8 emulator. Then later you download the Google API emulator 4. It will launch the API 8 emulator.
If possible, we should also try and detect that the problem exists in their environment and fix the AVDs name to the new solution based on the contents of the AVD configuration file.
{html}",2
+"TIMOB-1902","04/15/2011 04:05:07","iOS: Scrollview can scroll to much on ipad when keyboard is up","{html}
This can be recreated in KS Controls>Text Field>Border Style.
{html}",1
+"TIMOB-2017","04/15/2011 04:08:13","Android: WebView No Longer Fires Click Event","{html}
Bill triaged the problem.
In April you added this code to disallow registering for touch on the WebView:
I'm going to mark this as a regression since I didn't comment on the commit well enough to know if I disabled it on purpose. Will need to check interference with clickable items in a webview and scrolling.
{html}",1
+"TIMOB-2099","04/15/2011 04:10:25","Android: border properties broken for Label","{html}
Adding ""border:1, borderColor:'black'"" to a label works fine on 1.4.1 under iOS, but not on 1.4.2 under Android. Under android, the entire label is blacked out, instead of a border being placed around the label.
{html}",1
+"TIMOB-2122","04/15/2011 04:11:06","Android: Implement Video Recording","{html}{html}",3
+"TIMOB-2126","04/15/2011 04:11:12","Android: Support Scroll Event on Tableview","{html}
Should fire the standard event.
{html} ",0
+"TIMOB-2209","04/15/2011 04:13:36","Android: Re-enable incremental build","Before all of our new changes for stylesheet and RA.java code generation we knew when new Java code was generated so we could skip the javac and dex parts of the APK building process. We need to go back through and make sure to only dex/javac when necessary.",3
+"TIMOB-2363","04/15/2011 04:17:47","Android: Strip debugging symbols from JARs when building for production","It might be a good space saving measure to strip debugging symbols from our JARs when building apps for production mode. The biggest implication this has is not having line numbers in stack traces from production apps.",3
+"TIMOB-2484","04/15/2011 04:20:59","iOS: Httpclient ssl problem without different port","{html}
If I put a port 443 or a different one the connection does not work
{html}",1
+"TIMOB-2527","04/15/2011 04:21:58","Android: App launch/build problem if ampersand in home folder name (windows)","http://developer.appcelerator.com/question/86611/ampersand-in-user-path-prevents-creation-of-avd-windows-vista The user folder (C:\users...) for my profile contains an ampersand (C:\users\tom&jerry\ - real names hidden). This is preventing Titanium from creating the Android AVDs needed to test apps, giving the following error: [TRACE] Error: 'C:\Users\tom' is not recognized as a valid sdcard value. It looks like the command that creates the avd is stripping away part of the string when it tries to create an avd. I've manage to track down a function 'create_avd' in 1.4.0/android/builder.py which I think may be the culprit, but I'm not sure where to go from there. The sdcard has been created, so the problem must be after that point. There are a multitude of methods for renaming the user folder, none of which are straight forward (registry edits, etc.). I'm hoping someone can tell me a way of making Titanium function with this, albeit rare and idiotic, usage case. Does anyone have any suggestions?",5
+"TIMOB-2600","04/15/2011 04:24:05","iOS: invalid method (createTabGroup) passed to UIModule at app.js","{html}
When i build for simulator everything works as expected, but when i build for device it installs onto the phone, then when i open the application the errors below appear and the app locks on the splash screen. I've really tried everything and it looks like a couple of other people have experienced similar issues:
[WARN] attempted to load: TiUITabGroupProxy [ERROR] Script Error = invalid method (createTabGroup) passed to UIModule at app.js (line 1). [ERROR] application received error: invalid method (createTabGroup) passed to UIModule at app.js (line 1) [DEBUG] application booted in 275.932014 ms
This issue has just started and i'm struggling to move past it, i've done the following and it's still causing the issue:
Uninstalled titanium from my system, user folder, application support folder etc
Reinstalled everything
Removed build folder
Created a new user account on my mac
Repeated above steps
Created new project etc
I've attached my app.js which seems to be in order, i also created a new project and replaced the app.js in that project and it seemed to run ok, but i cannot find any reason why my app.js wouldn't run...
please help, i've spent 2 whole days trying things now!!!!!
{html}",1
+"TIMOB-2646","04/15/2011 04:25:45","Android: Support passing customized launch params to Android emulator","Developers would like to have the ability to add custom launch parameters to the android emulator such as setting a HTTP proxy. Here is one example of the parameters they would like to be able to include: {code} # start the emulator emulator_cmd = [ self.sdk.get_emulator(), '-avd', avd_name, '-port', '5560', '-sdcard', self.sdcard, '-logcat', ""'*:d *'"", '-no-boot-anim', # '-http-proxy', # 'http://127.0.0.1:8888', '-partition-size', '128' # in between nexusone and droid ] {code} Reference HD Tickets: http://appc.me/c/APP-364571 http://appc.me/c/EPH-39417-198",3
+"TIMOB-2653","04/15/2011 04:25:57","Android: Complex/autogenerated remote image URLs fail, whereas simple URLs succeed","h2. Problem A complex url to an image, used in an imageView do not render. The issues is not present in 1.4.3 (21Nov). h2. Test case The following code will cause an exception: {code:lang=javascript|title=app.js} var window = Titanium.UI.createWindow({ backgroundColor:'red' }); var graph = Titanium.UI.createImageView({ top: 20, image: 'http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150' // image: 'http://developer.appcelerator.com/assets/img/sprites.png' }); window.add(graph); window.open(); {code} When the commented/uncommented image lines are toggled, the app works without a problem. h2. Logs {code:lang=none|title=logcat} 449 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 449 AndroidRuntime D CheckJNI is ON 449 AndroidRuntime D --- registering native functions --- 60 ActivityManager I Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.appcelerator.testing10/.Testing10Activity } 60 ActivityManager I Start proc com.appcelerator.testing10 for activity com.appcelerator.testing10/.Testing10Activity: pid=455 uid=10041 gids={1015, 3003} 449 AndroidRuntime D Shutting down VM 455 TiApplication I (main) [0,0] checkpoint, app created. 455 TiApplication I (main) [402,402] Titanium 1.8.1 (2012/01/27 17:31 a24502a) 455 TiFastDev D (main) [110,512] Enabling Fastdev on port 51023 455 TiFastDev D (main) [8,520] sent tokens successfully 455 TiFastDev D (main) [1,521] Fastdev session handshake succesful. 455 TiApplication I (main) [4,525] Titanium Javascript runtime: v8 455 TiApplication W (main) [47,572] activity stack is emtpy, unable to get current activity 455 TiRootActivity I (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 455 TiApplication W (main) [116,116] activity stack is emtpy, unable to get current activity 455 TiApplication W (main) [1,117] activity stack is emtpy, unable to get current activity 455 TiApplication W (main) [0,117] activity stack is emtpy, unable to get current activity 60 NotificationService W Object died trying to hide notification android.app.ITransientNotification$Stub$Proxy@4500b128 in package com.appcelerator.testing10 60 ActivityManager W setProcessForeground called on unknown pid: 427 455 TiApplication E (KrollRuntimeThread) [1083,1200] APP PROXY: ti.modules.titanium.app.AppModule@44fccf38 455 TiAssetHelper D Fetching ""app.js"" with Fastdev... 455 TiUIImageView E (main) [524,1724] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc |def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiUIImageView E at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiUIImageView E at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:95) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiUIImageView E at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiUIImageView E at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiUIImageView E at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiUIImageView E at org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiUIImageView E at org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiUIImageView E at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiUIImageView E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiUIImageView E at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiUIImageView E at android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiUIImageView E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:99) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference E (main) [123,1847] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.peekBounds(TiDrawableReference.java:628) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:461) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:95) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiDrawableReference E at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiDrawableReference E at org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiDrawableReference E at org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiDrawableReference E at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiDrawableReference E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiDrawableReference E at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiDrawableReference E at android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiDrawableReference E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:99) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [54,1901] Could not open stream for drawable, therefore bounds checking could not be completed 455 TiDrawableReference W (main) [5,1906] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [95,2001] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz |abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,33333 3,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleAdd(TiViewProxy.java:538) 455 TiDrawableReference E at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:271) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:95) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 455 TiDrawableReference E at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 455 TiDrawableReference E at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 455 TiDrawableReference E at org.appcelerator.titanium.TiBaseActivity.onCreate(TiBaseActivity.java:344) 455 TiDrawableReference E at org.appcelerator.titanium.TiLaunchActivity.onCreate(TiLaunchActivity.java:117) 455 TiDrawableReference E at org.appcelerator.titanium.TiRootActivity.onCreate(TiRootActivity.java:46) 455 TiDrawableReference E at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 455 TiDrawableReference E at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 455 TiDrawableReference E at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 455 TiDrawableReference E at android.app.ActivityThread.access$2300(ActivityThread.java:125) 455 TiDrawableReference E at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:99) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [12,2013] Could not open stream to get bitmap 455 TiRootActivity I (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.testing10.Testing10Activity@44f7a570 60 ActivityManager I Displayed activity com.appcelerator.testing10/.Testing10Activity: 3686 ms (total 3686 ms) 455 TiUIImageView D (main) [398,398] Retrying bitmap decode: 1/5 455 TiUIImageView E (main) [1,399] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|de f|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [34,433] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [210,643] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz |abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,33333 3,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [7,650] Could not open stream to get bitmap 455 TiUIImageView D (main) [282,932] Retrying bitmap decode: 2/5 455 TiUIImageView E (main) [1,933] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|de f|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [39,972] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [93,1065] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz |abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,33333 3,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,1070] Could not open stream to get bitmap 455 TiUIImageView D (main) [254,1324] Retrying bitmap decode: 3/5 455 TiUIImageView E (main) [1,1325] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|d ef|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [4,1329] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [154,1483] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,1488] Could not open stream to get bitmap 455 TiUIImageView D (main) [254,1742] Retrying bitmap decode: 4/5 455 TiUIImageView E (main) [1,1743] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|d ef|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [3,1746] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [114,1860] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,1865] Could not open stream to get bitmap 455 TiUIImageView D (main) [255,2120] Retrying bitmap decode: 5/5 455 TiUIImageView E (main) [0,2120] URISyntaxException for url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|d ef|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E java.net.URISyntaxException: Illegal character in query at index 122: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15, 12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiUIImageView E at java.net.URI$Helper.validateQuery(URI.java:458) 455 TiUIImageView E at java.net.URI$Helper.parseURI(URI.java:360) 455 TiUIImageView E at java.net.URI$Helper.access$100(URI.java:302) 455 TiUIImageView E at java.net.URI.(URI.java:87) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:715) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiUIImageView E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiUIImageView E at android.os.Handler.handleCallback(Handler.java:587) 455 TiUIImageView E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiUIImageView E at android.os.Looper.loop(Looper.java:123) 455 TiUIImageView E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiUIImageView E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiUIImageView E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiUIImageView E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiUIImageView E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiUIImageView E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [5,2125] Bitmap bounds could not be determined. If bitmap is loaded, it won't be scaled. 455 TiDrawableReference E (main) [102,2227] Problem opening stream with url http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xy z|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150: http://chart.apis.google.com/chart?chco=666666,555555,444444,3333 33,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E java.io.FileNotFoundException: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15,12,10,26&chdl=xyz|abc|def|ghi|jkl&a mp;chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 455 TiDrawableReference E at org.apache.harmony.luni.internal.net.www.protocol.http.HttpURLConnectionImpl.getInputStream(HttpURLConnectionImpl.java:1162) 455 TiDrawableReference E at java.net.URL.openStream(URL.java:653) 455 TiDrawableReference E at org.appcelerator.titanium.util.TiFileHelper.openInputStream(TiFileHelper.java:172) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getInputStream(TiDrawableReference.java:671) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:238) 455 TiDrawableReference E at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:467) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:724) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView.access$500(TiUIImageView.java:53) 455 TiDrawableReference E at ti.modules.titanium.ui.widget.TiUIImageView$3.run(TiUIImageView.java:771) 455 TiDrawableReference E at android.os.Handler.handleCallback(Handler.java:587) 455 TiDrawableReference E at android.os.Handler.dispatchMessage(Handler.java:92) 455 TiDrawableReference E at android.os.Looper.loop(Looper.java:123) 455 TiDrawableReference E at android.app.ActivityThread.main(ActivityThread.java:4627) 455 TiDrawableReference E at java.lang.reflect.Method.invokeNative(Native Method) 455 TiDrawableReference E at java.lang.reflect.Method.invoke(Method.java:521) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 455 TiDrawableReference E at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 455 TiDrawableReference E at dalvik.system.NativeStart.main(Native Method) 455 TiDrawableReference W (main) [4,2231] Could not open stream to get bitmap 455 TiUIImageView E (main) [15,2246] Max retries reached, giving up decoding image source: http://chart.apis.google.com/chart?chco=666666,555555,444444,333333,222222&cht=p&chd=t:36,15 ,12,10,26&chdl=xyz|abc|def|ghi|jkl&chdlp=b&chf=c,s,ffffff|bg,s,ffffff&chl=36%|15%|12%|10%|26%&chs=288x150 {code} ",3
+"TIMOB-2662","04/15/2011 04:26:19","android SDK > 1.5.0 ""Compiling Javascript Resources"" each time","With SDK older than 1.5.0, when Ti developer ""Launch"" button is clicked, application is immediately displaying in the emulator: {code} [INFO] Building test for Android ... one moment [INFO] Copying project resources.. [INFO] Tiapp.xml unchanged, skipping class generation [INFO] Manifest unchanged, skipping Java build [INFO] Re-launching application ... test [INFO] Relaunched test ... Application should be running. {code} With 1.5.0 & 1.5.1 each time I get a ""compiling Android Resources"": {code} [INFO] Building test for Android ... one moment [INFO] Titanium SDK version: 1.5.1 (12/16/10 16:25 16bbb92) [INFO] Copying project resources.. [INFO] Tiapp.xml unchanged, skipping class generation [INFO] Compiling Javascript Resources ... [INFO] Compiling Android Resources... This could take some time {code}",3
+"TIMOB-2705","04/15/2011 04:27:30","App names containing ""Titanium"" break the iPhone build","{html}
If the (case-sensitive) string ""Titanium"" appears is used in a project name, the Xcode project files (*.pbxproj) get mangled and can't be built from the Titanium Developer GUI.
I can reproduce this reliably with the following versions: Titanium Developer 1.2.2 Titanium Mobile SDK 1.1.0 Mac OS X 10.6.5 Xcode 3.2.3
Details for reproducing:
When I create a new Mobile project from Titanium Developer, called ""Hello Titanium"", building the app throws an error because the named Xcode target doesn't exist. (I found that in build/iphone/build/build.log)
$ xcodebuild -list
Information about project ""Hello Titanium"": Targets: Hello HelloTitanium (Active) Hello HelloTitanium-iPad Build Configurations: Debug (Active) Release If no build configuration is specified ""Release"" is used.
""some titanium in lowercase"" => ""some titanium in lowercase""
{html}",1
+"TIMOB-2733","04/15/2011 04:28:04","Android: Getting Error at Rebuilding after changing tiapp.xml.","Hi, I am developing Android application using Titanium. Earlier i was using {{Titanium.Platform.displayCaps.platformHeight}} and i tried solution provided here: http://developer.appcelerator.com/question/91631/titaniumplatformdisplaycapsplatformheight-runtime-error Now i am getting following error {code} [INFO] Detected tiapp.xml change, forcing full re-build... [ERROR] Error in compiler. , [Errno 13] Permission denied: 'D:\\Test\\TestApp\\build\\android\\bin\\assets\\Resources\\Thumbs.db'; Traceback (most recent call last): File ""C:\Documents and Settings\All Users\Application Data\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1548, in s.build_and_run(False,avd_id) File ""C:\Documents and Settings\All Users\Application Data\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1296, in build_and_run self.copy_project_resources() File ""C:\Documents and Settings\All Users\Application Data\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 549, in copy_project_resources shutil.copy(path, dest) File ""C:\Documents and Settings\All Users\Application Data\Titanium\modules\win32\python\1.0.0\lib\shutil.py"", line 85, in copy copyfile(src, dst) File ""C:\Documents and Settings\All Users\Application Data\Titanium\modules\win32\python\1.0.0\lib\shutil.py"", line 52, in copyfile fdst = open(dst, 'wb') IOError: [Errno 13] Permission denied: 'D:\\Test\\TestApp\\build\\android\\bin\\assets\\Resources\\Thumbs.db' {code} Suggest Something ASAP. Regards, Rahul",3
+"TIMOB-2760","04/15/2011 04:28:52","need to be able to ref adb from either /tools or /platform-tools subdir","{html}
as it stands users have to make a symlink in /tools to /platform-tools/adb
{html}",3
+"TIMOB-2783","04/15/2011 04:29:26","iOS: Need more methods to manipulate localnotification ","{html}
Local notification created for iOS can not be manipulate after the application has been closed and re opened. It's really a need, per exemple, to be able to cancel one, or modify another..
We need some tools to retrieve and manipulate them.
If a user clicks ""Don't Allow"" when an app asks for additional information, evt.success and hasPermission will still return ""true"" for this permission, when they should return false. This false positive only occurs in iOS, in my testing.
Sample Code Demonstrating Problem
The following sample code demonstrates the problem.
Use the following steps to reproduce in sample code: 1. Click ""Connect with Facebook"" 2. Sign in 3. Click ""Don't Allow""
/** * Function that logs the user into Facebook, and makes sure they have * granted us the ""user_checkins"" permission. */ function checkIfUserIsLoggedIntoFacebook() { // if user hasn't logged in yet, don't do anything // (they need to click the ""Connect with Facebook"" button) if (Titanium.Facebook.isLoggedIn() === false) { } // if the user hasn't given us the permissions we want, request them. else if (!Titanium.Facebook.hasPermission(""user_checkins"")) { Titanium.Facebook.requestPermission(""user_checkins"", function (evt) { if (evt.success) { alert('Permission GRANTED'); } else { alert(""Permission DENIED""); } }); } // otherwise, we should be good to go else { alert('Permission ALREADY GRANTED'); } } /** * Add a login event listener so we can check if we have all the permissions * we want. */ Titanium.Facebook.addEventListener('login', function (evt) { if (evt.success) { checkIfUserIsLoggedIntoFacebook(); } }); // create our window var win = Ti.UI.createWindow({ backgroundColor: '#fff' }); win.add(Ti.Facebook.createLoginButton({ apikey: '645bf1d897d1fa8dc93ed45bc37edc04', secret: '49d146f85b8429438262380b85f2ebac', style: 'wide' })); win.open();
Tested On
Tested on CI build 1.6.0 from January 8th, 2010. BROKEN on iPhone Simulator, 4.2 WORKS on Android Simulator APIs 2.2
All platforms tested with clean builds from both Titanium Mobile 1.5.1 and 1.6.0 (pulled January 8th, 2011). BROKEN on iPhone Simulator 4.2 BROKEN on iPod Touch 4.2 WORKS on Android Simulator 2.2 WORKS in browser (hitting the URL)
Sample Code
var win = Titanium.UI.createWindow({ backgroudColor: '#333' }); var statusLabel = Titanium.UI.createTextArea({ top: 10, right: 10, left: 10, bottom: 45 }); win.add(statusLabel); function runRequest() { var xhr = Titanium.Network.createHTTPClient(); xhr.onload = function () { statusLabel.value = this.responseText; //Ti.API.info(this.responseText); }; xhr.onerror = function (e) { statusLabel.value = e.error; Ti.API.error(e.error); }; statusLabel.value = 'Waiting for response...'; xhr.open('GET', 'https://acomsx1.cos.agilent.com/QueryOpenNotificationsCount'); xhr.send(); } var refresh = Ti.UI.createButton({ title: 'Refresh', bottom: 10, left: 10, right: 10, height: 25 }); refresh.addEventListener('click', runRequest); win.add(refresh); win.open(); runRequest();
{html}",2
+"TIMOB-2908","04/15/2011 04:32:37","iOS: Switch - Disable animation on init and allow developer to disable for setValue","When loading a switch with a value set to 'true' the switch shows an animation going from 'off' to 'on'. Users would like a property added to the switch object of 'animate' as a boolean value, to turn off the animation on-load if the value of the switch is preset to true. Reference ticket: http://developer.appcelerator.com/helpdesk/view/67301",2
+"TIMOB-2951","04/15/2011 04:33:37","iOS Feature Request: Add a byte() Method to Titanium.Filesystem","{html}
User is trying to read a binary blob file. Specifically this users is trying to read the last 128 bytes from the data within the blob.
var ansi = Ti.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory,'4THDS-05.DRK');
Ti.API.info('Native = ' + ansi.nativePath); var content = ansi.read(); var sauce = content.getByte(content.size-128); Ti.API.info('SAUCE = ' + sauce);</code>
{html}",0
+"TIMOB-3060","04/15/2011 04:35:49","iOS: Modal Window Animated False","If a modal window is opened with animated:false, it will be opened without animation but will close with animation. Example code: {code:js} var win = Titanium.UI.createWindow({ backgroundColor:'#fff' }); var button = Ti.UI.createButton({title:'open', width:200, height:50}); win.add(button); button.addEventListener('click', function(){ var win2 = Ti.UI.createWindow({backgroundColor:'#ccc'}); var button2 = Ti.UI.createButton({title:'close', width:200, height:50}); win2.add(button2); button2.addEventListener('click', function(){ win2.close(); //win2.close({animted:false}); }); win2.open({modal:true, animated:false}); }); win.open(); {code}",1
+"TIMOB-3162","04/15/2011 04:38:25","Android: Ti.API.log doesn't work with one argument only","{html}
I used Ti.API.log with one argument in an external JS file wrongly. It works on iPhone and a message is printed as info log. But on Android, it fails without error message and scripts after the log line are not executed.
{html}",0.5
+"TIMOB-3180","04/15/2011 04:38:57","Android: JAVA_HOME not recognized when launching some Android applications","Googled and found that spaces in the Java paths would create complications: http://developer.appcelerator.com/question/34701/error-jdk-version-javac-is-not-recognized-as-an-internal-or-external-command-testing-on-android We moved the JDK location to C:\Java\java-jdk-folder and it appeared to work fine after updating JAVA_HOME and the Path environment variables to the new location.",3
+"TIMOB-3186","04/15/2011 04:39:00","Android: Persistent internal compiler error","h2. Error Message: {code} [INFO] Compiling Javascript Resources ... [ERROR] Error in compiler. , 'utf8' codec can't decode byte 0x8e in position 324: unexpected code byte; Traceback (most recent call last): File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1548, in s.build_and_run(False,avd_id) File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\builder.py"", line 1307, in build_and_run compiler.compile() File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\compiler.py"", line 239, in compile js_contents = self.make_function_from_file(fullpath, pack=False) File ""C:\ProgramData\Titanium\mobilesdk\win32\1.5.1\android\compiler.py"", line 183, in make_function_from_file file_contents = codecs.open(path,'r',encoding='utf-8').read() File ""C:\ProgramData\Titanium\modules\win32\python\1.0.0\lib\codecs.py"", line 618, in read return self.reader.read(size) File ""C:\ProgramData\Titanium\modules\win32\python\1.0.0\lib\codecs.py"", line 424, in read newchars, decodedbytes = self.decode(data, self.errors) UnicodeDecodeError: 'utf8' codec can't decode byte 0x8e in position 324: unexpected code byte {code} h2. Version Info: * Titanium Mobile 1.5.1 * Android SDK r8 and r9 h2. Repo Steps: * Create a new titanium project * Add attached BigInt.js to the /Resources directory * Recompile *Error occurs here* * Remove BigInt.js from /Resources directory * Recompile *Compiler error still occurs* It appears that the entire titanium mobile project is trashed from this point and will not recompile again. Edit: fixed the formatting",3
+"TIMOB-3199","04/15/2011 04:39:17","Android: GridView support","{html}
Hi, I would like to see support of GridView in Titanium. Currently the only way to do something similar is to emulate it with a TableView and internal views, but this brings performance, usability problems and a non-native experience.
Something like
// create grid view var gridView = Titanium.UI.Android.createGridView({ data:data });
would be desirable.
{html}",0
+"TIMOB-3200","04/15/2011 04:39:18","Android: Add radio button group support","*Summary:* We should add a radio button group like feature on all platforms (Android, iOS, and Windows) where a horizontal layout of buttons are displayed, but only one option can be selected at a time. On Android and Windows, this is a built-in UI component that we should use. https://developer.android.com/guide/topics/ui/controls/radiobutton On iOS, this should be implemented via a {{UISegmentedControl}}. https://developer.apple.com/design/human-interface-guidelines/ios/controls/segmented-controls *Recommend Solution:* Should be implemented in Titanium similar to {{Ti.UI.TabbedBar}}... https://docs.appcelerator.com/platform/latest/#!/api/Titanium.UI.TabbedBar The idea is that the Titanium developer creates the ""group"" view, but does not have access to the individual buttons within the group. This will help make it more portable between Android and iOS. The radio buttons will be created via a creation-only ""labels"" property, which is assigned an array of strings, just like how it works with {{Ti.UI.TabbedBar}} and {{Ti.UI.ButtonBar}}. We should also support an ""index"" property to indicate which button is selected and the ""click"" event when a button has been clicked on. This is how it's implemented in {{Ti.UI.TabbedBar}} as well. The layout should be horizontal by default. Especially since iOS' {{UISegmentedControl}} can only be displayed horizontally. Vertical layout support would be nice, but it is only natively supported on Android and Windows. *Future:* We may also want to support the ""Choice Chips"" feature as shown in Google's material design below. New {{Chip}} and {{ChipGroup}} Java classes have been added to Google's Support Library version 28. This could be implemented via the view's ""style"" property in the future. https://material.io/design/components/chips.html ",13
+"TIMOB-3214","04/15/2011 04:39:39","iOs 1.6.0 - iPad - Modal FormSheet BUG","{html}
Hi, I'm currently use an window in modal, in modalStyle:Ti.UI.iPhone.MODAL_PRESENTATION_FORMSHEET, opened with flip animation. On 1.5.2 this works correctly, but in 1.6.0 this modal takes all height of screen and hide the current window.
{html}",0
+"TIMOB-3221","04/15/2011 04:39:50","Facebook.authorize not firing on Android with 1.6.0","{html}
Nothing happens on the Android emulator when firing the authorize call. (Same code works on iOS)
At this moment, the only Picker-event is the change-event. A user, however, can click on a row. If he does so, a blue selection bar appears. But there is no way to detect that event. Could you add a 'select'-event so that we can write an event-handler for this behavior?
{html}",0
+"TIMOB-3286","04/15/2011 04:41:19","Android: Support service constants","{html}
Is it possible to add support for the constants for services for better control over the instances through Ti.Android.Service and the start event handler?
I'm finding my Android background service is getting cleared up when the device is running low on memory. I guess the alternative is support for foreground services.
{html}",1
+"TIMOB-3375","04/15/2011 04:43:29","TiAPI: Implement several missing Ti.Media.AudioPlayer features","*Problem description* Ti.Media.AudioPlayer is lacking several features. Because of this, developing an audio player with the current API is not possible. For example, Ti.Media.Sound has a duration property, which isn't available in Ti.Media.AudioPlayer. *Proposed fixes (available in linked repositry)* - ADD duration read-only property - ADD time property (for seeking) - ADD volume property - ADD next/prev and seeking remote control events - FIX play/pause remote controls don't work when using background audio - FIX changing the URL doesn't work (unless you stop first) - FIX progress events only fire for the first URL Also suggested on http://stackoverflow.com/q/35157844/4626813 - Expose contentType header to be send when retrieving the file/stream",0
+"TIMOB-3408","04/15/2011 04:43:55","iOS: Expose Ti.UI.Label.textAlign ""justify""","Please put this into the next release. Allows for prettier text aligning in Labels.",2
+"TIMOB-3425","04/15/2011 04:45:01","iOS: Titanium.Media.createItem does not exist","{html}
I tried to call the method however I get an error in 1.6.1, 1.6.0 and 1.5.1 telling me that the method doesn't exist. Still no luck after emptying build folder and forcing full rebuild. So it's impossible to save and deserialize media data picked from the library at the moment.
Here is the relevant part of the crash log:
*** Terminating app due to uncaught exception 'XXX', reason: 'invalid method (createItem) passed to MediaModule'
{html}",1
+"TIMOB-3427","04/15/2011 04:45:04","Ti API: Provide EXIF data interface","As Exif data is stored in photo files created using the device camera, it can be exploited to simplify apps as the information does not need to be implemented/duplicated using the DB. Hence, propose that access to the data be considered for inclusion in a future release. This functionality is available for iOS from version 4.0, according to http://developer.appcelerator.com/helpdesk/view/63941. This request also raised for Android.",3
+"TIMOB-3432","04/15/2011 04:45:08","iOS: Clear app url from App Arguments on resume","{html}
A helpdesk ticket encounter a problem while coming back to the app after it has been in the background (multitasking).
If the app is opened from being close, Ti.App.getArguments().url return nothing, and if it is opened again from backgrounding, it also returns nothing. This is fine, but when the app is launched from Safari (for example: app://), getArguments().url returns ""app://"" (or whatever the name of the app is) as expected. If the app is placed in the background again and reopened normally, the same url appears as if it was opened through safari.
More details and sample app.js in helpdesk ticket 76659.
{html}",1
+"TIMOB-3491","04/15/2011 04:45:49","Android: support font-style strike line-through","{html}
Requesting suport for line-through decoration of text. Also known as strike/strikethrough. Example
{html}",0
+"TIMOB-3492","04/15/2011 04:45:50","Android: Context menu","h1. Feature Support Android Context Menu h2. Relies On The context menu feature relies on [TIMOB-1653]",0
+"TIMOB-3529","04/15/2011 04:46:20","Android: Ti.Properties do not accept ""undefined"" as value","This is feature request to allow ""undefined"" to be set as part of Ti.Properties, specifically the setBool and getBool. This works fine on iOS but does not on Android. Currently getBool accepts ""true"", ""false"" and ""null"". There is a http://support.appcelerator.com/tickets/BUQ-42972-167/homepage ticket asking for this.",1
+"TIMOB-3541","04/15/2011 04:46:28","iOS: Implement Composite Layout Behavior Spec","Implementation of the new (Composite) Behavior Spec for IOS. ",8
+"TIMOB-3569","04/15/2011 04:46:46","Titanium.UI.iPhone.SystemButton does not exist","Sometimes it does, other times not... ditto for {{SystemButtonStyle}}. (iPhone emulator) Restarting Titanium developer and deleting the build folder brought it back. But...",2
+"TIMOB-3588","04/15/2011 04:46:58","Android: Geolocation displays error alert for Current location","{html}
Steps to Reproduce 1. Launch KitchenSink 2. Run Phone > Geolocation 3. Go back and then go back into geolocation again
{html}",1
+"TIMOB-3887","05/03/2011 16:12:58","Android: Image taken in portrait orients itself to landscape ","# phone > camera > camera basic # in portrait, take an image, then hit okay and look at resulting image results: image is landscape expected: should reflect users orientation when image was taken notes: not seen when using landscape orientation to take image",5
+"TIMOB-4041","05/10/2011 21:56:44","Android: Add ""separatorStyle"" property to Ti.UI.ListView","Users have requested the ability to eliminate the Separator in a tableview so when they are using backgroundImages for the TableViewRow there is no break in between the rows. See screenshot: http://screencast.com/t/5lDQUpCyHpxv Setting the tableView seperatorColor to 'transparent' shows the table backgroundColor. Sample project is attached. The API should match iOS as closely as possible, so we are moving the existing iOS* constants into the top level UI namespace, and keeping the existing separatorStyle property that iOS uses. The valid styles should be: Ti.UI.TableViewSeparatorStyle.NONE Ti.UI.TableViewSeparatorStyle.SINGLE_LINE In the future we can also implement custom separator drawables by passing them to this property (Android only)",5
+"TIMOB-4063","05/12/2011 19:08:40","Android: TabGroup: most events not do not fire (only focus works)","Environment: * TiStudio Preview * Android 2.3.3 * Titanium SDK (all versions) The following code demonstrates that only the focus event is fired for tabGroups: {code} Titanium.UI.setBackgroundColor('#000'); var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1' }); win1.add(label1); var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2' }); win2.add(label2); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); label1.addEventListener(""click"", function(){ Ti.API.info(""label1 click event fired!""); }); tabGroup.addEventListener(""click"", function(){ Ti.API.info(""tabGroup click event fired!""); }); tabGroup.addEventListener(""dblclick"", function(){ Ti.API.info(""tabGroup dblclick event fired!""); }); tabGroup.addEventListener(""doubletap"", function(){ Ti.API.info(""tabGroup doubletap event fired!""); }); tabGroup.addEventListener(""focus"", function(){ Ti.API.info(""tabGroup focus event fired!""); }); tabGroup.addEventListener(""swipe"", function(){ Ti.API.info(""tabGroup swipe event fired!""); }); {code}",2
+"TIMOB-4162","05/20/2011 13:26:04","Android: Debugger: Breakpoint hits prior to value change when condition is set","Steps to Reproduce: 1. Run Debug test 1014 and 1015 from http://wiki.appcelerator.org/display/tp/Debugger+Test+Plan Actual Result: Frames 1-7 is not being displayed in the debug window Expected Result: Call frames in the debug window should be: 9 call frames: frame[0] : [Eval script] [app.js:24] frame[1]-frame[7] : [Eval script] [app.js:28] frame[8] : [Top-level script] [app.js:53] Workaround: Click Resume twice",3
+"TIMOB-5626","05/24/2011 07:08:32","MobileWeb: Event 'selected' doesn't work with textArea.","Event 'selected' not works with textArea object. The label should be appear when the text in the textField is selected. {code:JavaScript} win = Ti.UI.currentWindow; ta = Ti.UI.createTextArea({ width: 200, height: 100, top: 10, left: 10, value: 'textArea' }) ta.addEventListener('selected', function(){ var label = Ti.UI.createLabel({ text: 'selected works', backgroundColor:'red', top: 150 }) win.add(label); }) win.add(ta); {code}",3
+"TIMOB-4244","05/25/2011 07:10:33","iOS: Enable searchBar to animate cancel button","When a searchBar is NOT attached to a tableView, instead attached to a view on the window, the cancel button isn't animated. Nor does there seem to be a property to enable it. The cancel button IS animated when a searchBar is attached to a tableView. On the Q&A site, there is this: [http://developer.appcelerator.com/question/67231/searchbar-animate-cancel-button] Hidayet Dogan, looked at the source and wrote: {code:title=iphone/Classes/TiUISearchBar.m (about line 70)} Change: [search setShowsCancelButton:[TiUtils boolValue:value]]; to [search setShowsCancelButton:[TiUtils boolValue:value] animated:YES]; {code} Could be a configurable option, I suppose, but having it match the tableView searchBar would probably make sense. The latter is not configurable.",1
+"TIMOB-4274","06/01/2011 09:46:13","iOS: searchHidden value does not stay when window containing scroll view is blurred/focused","The use of searchHidden:true is losing its value in that once a window containing a table with this property is blurred, on return the search is displayed. Code example below: {code:lang=javascript|title=app.js} Titanium.UI.setBackgroundColor('#fff'); var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1' }); var tab1 = Titanium.UI.createTab({ title:'Tab 1', window:win1 }); var data = [{ title:'row 1' }]; var s1 = Titanium.UI.createSearchBar(); var tb = Ti.UI.createTableView({ data:data, search:s1, searchHidden:true }); win1.add(tb); var win2 = Titanium.UI.createWindow({ title:'Tab 2' }); var tab2 = Titanium.UI.createTab({ title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ text:'I am Window 2' }); win2.add(label2); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); {code}",3
+"TIMOB-4371","06/04/2011 02:26:34","Android: webview content height and width too large","Since 1.7.0, webview content on Android is way too long and wide by default. This leads to a webview where you can scroll way too much to the right and the bottom with no more content being visible inside the webview. On 1.6.3 the height and width of a webview was properly adopted to the text length and the width/height properties. Here's an example code snippet you can run: app.js: {code} Titanium.UI.setBackgroundColor('black'); var win = Titanium.UI.createWindow(); var webview = Titanium.UI.createWebView({ html:""This is some text inside a webview...it's not very long, but demonstrates what it should"", height:150, width:300, autoDetect:[], scalesPageToFit:false, backgroundColor:""white"", left:10, top:100, color:""black"" }); win.add(webview); win.open(); {code} On 1.6.3 this will look just fine, no scrollbars appear in the webview. Since 1.7.0 you will get a webview where you can scroll vertically and horizontally way beyond the size / length of the visible text. ",1
+"TIMOB-4388","06/06/2011 12:04:31","Implement getPressure in Android view","Can you expose the getPressure value on android devices: http://developer.android.com/reference/android/view/MotionEvent.html#getPressure%28int%29 ",2
+"TIMOB-4341","06/07/2011 08:28:44","2nd instance of application run from a separate process causes NullPointerException","The latest version of the Urban Airship SDK supports a new notification handling process, whereby the PushService can be configured to run in a separate process. When it is configured in that manner it creates a 2nd instance of the application which in turn results in the OnCreate method of TiApplication being called a 2nd time. The result is a NullPointerException occurring somewhere in that method. The workaround for now is to configure the PushService to run within the current application process, but UA recommends running it in a separate process to conserve memory. The following excerpt is from the Urban Airship documentation on how to resolve this issue: Process Management It is possible to run the push service either in your application process or as a separate stand-alone process. We recommend that most applications run it in a separate process. The primary benefit to this approach is that it allows the service to run with a relatively small memory footprint even if your application is resource intensive. In a low memory situation the OS can kill a backgrounded application's main process without disrupting the service. To run the service in a separate process, simply add the ""android:process"" attribute to the service element and provide a name for the process. If the name starts with a colon, the process will be private to your application: Note that when the service runs in a separate process it will create a separate instance of the application when the service is started. This means that your application's onCreate() method will be called again in another context. For most applications this is not an issue, but if the onCreate method invokes any code that should only be called once (such as analytics code that changes state outside of the application) you will want to ensure that it only runs in one of the processes. The following sample illustrates a method for determining which process your application is running within: public class MyApplication extends Application { public void onCreate() { // the main process for this application is named for the package // if this is the default process, run some special code if (isProcess(context.getPackageName()) { //run default process operations here } } private boolean isProcess(String processName) { Context context = getApplicationContext(); ActivityManager actMgr = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List appList = actMgr.getRunningAppProcesses(); for (RunningAppProcessInfo info : appList) { if (info.pid == android.os.Process.myPid() && processName.equals(info.processName)) { return true; } } return false; } } ",1
+"TIMOB-4644","06/15/2011 19:01:05","iOS: New properties of Titanium.UI.View beginning with ""get"" always link to main object","New properties of Titanium.UI.View beginning with ""get"" always link to main object {code} var myApp = {}; myApp.ui = {}; myApp.ui.createMyView = function() { var v = Ti.UI.createView({}); v.getSomething = function() { return 100; }; v._getSomething = function() { return 100; }; v.getFood = 200; return v; }; var myView = myApp.ui.createMyView(); alert(myView.getSomething); // [object TiUIView], shold be function alert(myView.getSomething()); // nothing, shold be ""100"" alert(myView._getSomething()); // ""100"" - OK alert(myView.getFood); // [object TiUIView], shold be 200 {code}",3
+"TIMOB-4467","06/21/2011 08:48:32","Platform inconsistencies around custom fonts","The handling of custom fonts is inconsistent across platforms. For iOS it requires a custom Info.plist setting - also, to my knowledge, fonts have to be placed at the top level Resource directory to be usable. For Android, fonts must be placed in Resources/fonts. There's not clear guidance on either platform on how to use these fonts in JavaScript. Consistent handling and documentation on proper use is needed for custom fonts.",1
+"TIMOB-5538","06/27/2011 06:35:55","MobileWeb: Constants FACE_UP, FACE_DOWN, UPSIDE_PORTRAIT don't returned in orientationchange.orientation of Ti.Gesture module","Constants FACE_UP, FACE_DOWN, UPSIDE_PORTRAIT don't returned in orientationchange.orientation of Ti.Gesture module. ",3
+"TIMOB-4510","06/27/2011 18:48:09","Force full re-build discrepancy between Android and iOS - Android requires modified tiapp.xml","Android requires that tiapp.xml is modified (touched) to force a full rebuild, whereas iOS checks for files in the build/iphone directory. To demonstrate this, follow these steps: * cd $PROJECT/build/android * touch ../../tiapp.xml * rm -rf * (delete all files and folders within build/android) * launch app with the following code: {code:lang=javascript} Ti.UI.backgroundColor = ""white""; var win = Ti.UI.createWindow({ exitOnClose: true }); var prod_button = Ti.UI.createButton({ width:81, height:21, top:125, left:150, title:'View Online', font:{fontSize:10,fontWeight:'bold'} }); win.add(prod_button); win.open(); {code} * after successful app launch, replace code above (does not contain maps) with the code below (contains maps) * do *not* touch tiapp.xml * cd $PROJECT/build/android * rm -rf * (delete all files and folders within build/android) * launch app {code:lang=javascript} Ti.UI.backgroundColor = ""white""; var win = Ti.UI.createWindow({ exitOnClose: true }); var mapview = Ti.Map.createView({ mapType: Ti.Map.STANDARD_TYPE, region:{latitude:33.74511, longitude:-84.38993, latitudeDelta:0.5, longitudeDelta:0.5}, animate:true, regionFit:true, userLocation:true }); win.add(mapview); win.open(); {code} The app does not launch, nothing is output to logcat, but the following ""Application Installer"" console errors occur: {code} [INFO] logfile = /home/appcel/Titanium Studio Workspace/testing7/build.log [DEBUG] /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py simulator testing7 /opt/android-sdk /home/appcel/Titanium Studio Workspace/testing7 com.testing.testing7 6 WVGA800 [INFO] Building testing7 for Android ... one moment [INFO] Titanium SDK version: 1.7.1 (06/17/11 00:13 1293a6d...) [DEBUG] Waiting for device to be ready ... [TRACE] adb devices returned 1 devices/emulators [DEBUG] Device connected... (waited 0 seconds) [DEBUG] waited 0.004323 seconds on emulator to get ready [DEBUG] /opt/android-sdk/platform-tools/adb -e shell ls /data/app/com.testing.testing7*.apk [DEBUG] com.testing.testing7 installed? True [INFO] Fastdev server running, deploying in Fastdev mode [INFO] Copying project resources.. [TRACE] COPYING MODIFIED FILE: /home/appcel/Titanium Studio Workspace/testing7/Resources/app.js => /home/appcel/Titanium Studio Workspace/testing7/build/android/bin/assets/Resources/app.js [TRACE] Generating Java Classes [DEBUG] detected module analytics, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-analytics.jar [DEBUG] detected module android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] adding required library: titanium.jar [DEBUG] adding required library: ti-commons-codec-1.3.jar [DEBUG] adding required library: smalljs.jar [DEBUG] adding required library: jaxen-1.1.1.jar [DEBUG] detected module ui, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module app, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module api, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-api.jar [DEBUG] detected module filesystem, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-filesystem.jar [DEBUG] detected module media, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module json, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-json.jar [DEBUG] detected module locale, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-locale.jar [INFO] Force including all modules... [DEBUG] detected module android.calendar, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-calendar.jar [DEBUG] detected module media.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module database, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-database.jar [DEBUG] detected module android.optionmenu, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.clipboard, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.iphone, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.activityindicator, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module bump, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-bump.jar [DEBUG] adding required library: bump-api.jar [DEBUG] detected module geolocation, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-geolocation.jar [DEBUG] detected module yahoo, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-yahoo.jar [DEBUG] detected module network, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module xml, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-xml.jar [DEBUG] detected module utils, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-utils.jar [DEBUG] detected module titanium.stream, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module kroll, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium.codec, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module accelerometer, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-accelerometer.jar [DEBUG] detected module facebook, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-facebook.jar [DEBUG] detected module network.socket, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module contacts, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-contacts.jar [DEBUG] detected module app.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module app.properties, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module android.notificationmanager, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] detected module gesture, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-gesture.jar [DEBUG] detected module map, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-map.jar [DEBUG] detected module platform, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-platform.jar [DEBUG] unknown module = ui.iphone.tableviewcellselectionstyle [DEBUG] unknown module = ui.iphone.tableviewstyle [DEBUG] unknown module = ui.iphone.systembuttonstyle [DEBUG] unknown module = ui.currentwindow.app.window [DEBUG] Detecting modules in /home/appcel/Titanium Studio Workspace/testing7/modules [DEBUG] Detecting modules in /home/appcel/.titanium/modules [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/Testing7AppInfo.java [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/AndroidManifest.xml [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/Testing7Application.java [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/Testing7Activity.java [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/.classpath [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/.project [TRACE] Generating /home/appcel/Titanium Studio Workspace/testing7/build/android/default.properties [TRACE] Skipping copying gitignore -> .gitignore because already exists [DEBUG] detected module analytics, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-analytics.jar [DEBUG] detected module android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] adding required library: titanium.jar [DEBUG] adding required library: ti-commons-codec-1.3.jar [DEBUG] adding required library: smalljs.jar [DEBUG] adding required library: jaxen-1.1.1.jar [DEBUG] detected module ui, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module app, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module api, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-api.jar [DEBUG] detected module filesystem, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-filesystem.jar [DEBUG] detected module media, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module json, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-json.jar [DEBUG] detected module locale, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-locale.jar [INFO] Force including all modules... [DEBUG] detected module android.calendar, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-calendar.jar [DEBUG] detected module media.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-media.jar [DEBUG] detected module database, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-database.jar [DEBUG] detected module android.optionmenu, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.clipboard, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.iphone, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module ui.activityindicator, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-ui.jar [DEBUG] detected module bump, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-bump.jar [DEBUG] adding required library: bump-api.jar [DEBUG] detected module geolocation, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-geolocation.jar [DEBUG] detected module yahoo, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-yahoo.jar [DEBUG] detected module network, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module xml, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-xml.jar [DEBUG] detected module utils, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-utils.jar [DEBUG] detected module titanium.stream, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module kroll, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module titanium.codec, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/titanium.jar [DEBUG] detected module accelerometer, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-accelerometer.jar [DEBUG] detected module facebook, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-facebook.jar [DEBUG] detected module network.socket, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-network.jar [DEBUG] detected module contacts, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-contacts.jar [DEBUG] detected module app.android, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module app.properties, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-app.jar [DEBUG] detected module android.notificationmanager, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-android.jar [DEBUG] detected module gesture, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-gesture.jar [DEBUG] detected module map, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-map.jar [DEBUG] detected module platform, path = /home/appcel/.titanium/mobilesdk/linux/1.7.1/android/modules/titanium-platform.jar [INFO] Compiling Javascript Resources ... [DEBUG] Processing Android resource drawables [DEBUG] Detecting modules in /home/appcel/Titanium Studio Workspace/testing7/modules [DEBUG] Detecting modules in /home/appcel/.titanium/modules [DEBUG] app stylesheet => /home/appcel/Titanium Studio Workspace/testing7/build/android/gen/com/testing/testing7/ApplicationStylesheet.java [DEBUG] copying app icon: /home/appcel/Titanium Studio Workspace/testing7/build/android/bin/assets/Resources/appicon.png [ERROR] Exception occured while building Android project: [ERROR] Traceback (most recent call last): [ERROR] File ""/home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py"", line 1947, in [ERROR] s.build_and_run(False, avd_id, debugger_host=debugger_host) [ERROR] File ""/home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py"", line 1740, in build_and_run [ERROR] self.manifest_changed = self.generate_android_manifest(compiler) [ERROR] File ""/home/appcel/.titanium/mobilesdk/linux/1.7.1/android/builder.py"", line 811, in generate_android_manifest [ERROR] shutil.copy(iconpath, dest_icon) [ERROR] File ""/usr/lib/python2.6/shutil.py"", line 88, in copy [ERROR] copyfile(src, dst) [ERROR] File ""/usr/lib/python2.6/shutil.py"", line 52, in copyfile [ERROR] fsrc = open(src, 'rb') [ERROR] IOError: [Errno 2] No such file or directory: u'/home/appcel/Titanium Studio Workspace/testing7/build/android/bin/assets/Resources/appicon.png' {code} * no improvement is observed when the app is relaunched any number of times * once the tiapp.xml file is touched, a ""Detected tiapp.xml change, forcing full re-build..."" message is output to the console, and the app is launched as expected ",3
+"TIMOB-4521","06/29/2011 09:26:10","Android: Natively Compiled JS Modules","h1. Feature Support natively compiled JavaScript modules like we do on iOS. h2. Example Module The following steps create a compiled module that you could distribute as a zip on iOS. Once implemented, the same process would work on Android. 1. Create a new module for Android: titanium create --platform=android --type=module --name=jsmod --id=ti.jsmod --android=/path/to/android-sdk 2. Drop the below in assets/ti.jsmod.js: {code:title=assets/ti.jsmod.js} exports.createBox = function() { return Ti.UI.createView({ width: 100, height: 100, backgroundColor: 'red' }); }; {code} 3. Drop the below in example/app.js: {code:title=example/app.js} var window = Ti.UI.createWindow({ backgroundColor: 'white' }); window.add(require('ti.jsmod').createBox()); window.open(); {code} 4. Enjoy your luscious red rectangle h2. Workaround Until this feature is available, you can always distribute just the JS file. Developers can utilize it in its un-compiled state, although your code isn't protected from prying eyes. h3. Associated Helpdesk Ticket http://appc.me/c/APP-487811",2
+"TIMOB-4609","07/06/2011 18:06:47","SDK switch causes build errors in TiStudio","Mirror for TISTUD-472 for time/progress tracking on Mobile. Issue is with build scripts/project template.",1
+"TIMOB-4730","07/20/2011 12:30:11","Android 3.2 Simulator behavior on windows is very poor (not launched at all or useless emulator launched)","1.update your sdk install to include 3.2 2.target 3.2 as the run config and launch the emulator results: we see 2 things occur 1.time out with no emulator launched 2. emulator launches, but is useless (half the screen renders, buttons do not work etc) fwiw, lion and 10.6.8 work as expected Also, as per Don this is not a studio or TIMOB issue",2
+"TIMOB-10281","07/20/2011 18:33:39","Android: Intermittent debugger variable fails to stay expanded","1. Import debug_test into TiStudio (attached) 2. From TiStudio go to debug view 3. In the breakpoint window, right-click to Import Breakpoints... 4. Browse to breakpoint-4013.bkpt (attached)_ 5. Run in debug 6. Click 'App event/timer' button (breakpoint hits: app.js:131) 7. Expand 'e' variable 8. Expand 'x' property of 'e' 9. Hightlight 'e' (select in variables pane) 10. Resume (breakpoint hits: app.js:135) Actual: Intermittently, after step 10 the disclosure triangle will collapse unexpectedly on the 'x' property of 'e'. See screen shot. Expected: Both 'x' and 'e' values are fully expanded. ",1
+"TIMOB-4884","07/22/2011 10:38:01","toImage() on device with retina display is pixellated (captured at half resolution)","If you call {{var a = view.toImage()}} on a view, and set an ImageView to that blob i.e. {{imageView.image = a}} on an Iphone with retina display, then the image is displayed at normal resolution and thus is pixelated on an iPhone 4. There is a very simple fix to this already out there in the wild, see [https://github.com/iamyellow/titanium_mobile/|https://github.com/iamyellow/titanium_mobile/commit/b7ac93e257339e60510a88a5767455f6b1120034#iphone/Classes/TiViewProxy.m] I would recommend that change is made to all appropriate UI controls which have a toImage() method. {code:javascript|title=app.js} var win = Titanium.UI.createWindow({ backgroundColor: '#FFF' }); var sourceView = Titanium.UI.createView({ width: 155, left: 5, height: 240, borderWidth: 1, borderColor: '#000' }); sourceView.add(Titanium.UI.createLabel({ text: 'Here is some nice smooth antialised text', font: { fontSize: 20 } })); var targetView = Titanium.UI.createImageView({ width: 155, right: 5, height: 240, borderWidth: 1, borderColor: '#000' }); var btn = Titanium.UI.createButton({ title: 'Copy image to target on right', width: 300, height: 30, bottom: 10 }); btn.addEventListener('click', function() { targetView.image = sourceView.toImage(); }); win.add(btn); win.add(targetView); win.add(sourceView); win.open(); {code} Please remember this issue is only visible when using an iOS 4 Retina Device.",0
+"TIMOB-4800","07/26/2011 18:26:38","Ti.UI.backgroundColor/Ti.UI.backgroundImage not translucent","h3. Setting background on Root Window 1) Create project in TiStudio and replace app.js with {code:JavaScript} Ti.UI.backgroundColor = '#f00'; Ti.UI.backgroundImage = 'KS_nav_ui.png'; var win = Ti.UI.createWindow(); win.open(); {code} (or use attached Resources folder) 2) Launch application Expected: Image appears with a red background. Actual: Only image appears. (See screen shot) Note: Talked to Jon Alter about this. He says it isn't a major issue because he doesn't see a circumstance where someone would set the background this way. It is a parity issue. Setting the background this way works as expected on iOS devices. h3. Setting background on a view. Verify image is shown with a red background. Also verify background color changes when the state of the view changes (ex: focused, selected). {code:JavaScript} var win = Ti.UI.createWindow({ backgroundColor: 'white', layout: 'vertical' }); var colorView = Ti.UI.createView({ width: 400, height: 400, focusable: true, backgroundColor: 'blue', backgroundImage: 'background.png', backgroundSelectedColor: 'red', backgroundFocusedColor: 'yellow', backgroundDisabledColor: 'black' }); win.add(colorView); var disableButton = Ti.UI.createButton({ title: 'Enable/Disable View', width: 150 }); disableButton.on('click', function() { colorView.enabled = !colorView.enabled; }); win.add(disableButton); win.open(); {code} ",2
+"TIMOB-4865","08/01/2011 19:12:44","iOS: imageAsCropped rotates image","imageAsCropped seems to be rotating the image 90 degrees when applied. Before Crop: http://support-admin.appcelerator.com/files/cf1c121c-b9ae-11e0-8901-12313b1264a1/Before_crop.PNG After Crop: http://support-admin.appcelerator.com/files/cf110d22-b9ae-11e0-8901-12313b1264a1/After_crop.PNG Repro Code: {code:javascript} var win = Ti.UI.createWindow(); var currPic = null; var takePic = Ti.UI.createButton({ zIndex: 1000, width: ""90%"", height: 40, title: ""Take picture"" }); var imgView = null; takePic.addEventListener(""click"", function() { if (currPic !== null) { var croppedImg = currPic.imageAsCropped({ x: 0, y: 0, width: currPic.width, height: currPic.height }); imgView.image = croppedImg; } else { Ti.Media.requestCameraPermissions(takePhoto); } }); win.add(takePic); win.open(); function takePhoto(e) { if (!e.success) { Ti.API.error(""No camera permissions granted""); return; } Ti.Media.showCamera({ success: function(event) { takePic.title = ""Crop image""; var image = event.media; var width = image.width / 5; var height = image.height / 5; currPic = image; imgView = Ti.UI.createImageView({ zIndex: 0, width: width, height: height, image: image, top: 40 }); win.add(imgView) }, cancel: function() {}, error: function(error) {}, saveToPhotoGallery: false, mediaTypes: [Ti.Media.MEDIA_TYPE_PHOTO] }); } {code}",5
+"TIMOB-4979","08/10/2011 15:54:11","Android: Expose ""dragstart"" and ""dragend"" event on ScrollView (Parity)","API 11 recently exposed the onDragEvent listener in View, which would allow us to reach parity by exposing the dragStart and dragEnd events on Titanium.UI.ScrollView. http://developer.android.com/reference/android/view/View.html#onDragEvent(android.view.DragEvent)",5
+"TIMOB-5010","08/15/2011 12:18:52","Latest version of Java unusable for building Android projects","1) Download and install latest Java JDK 7 http://www.oracle.com/technetwork/java/javase/downloads/java-se-jdk-7-download-432154.html 2) Create a new Android project and launch to emulator Results: build.log has the following contents Logfile initialized [INFO] logfile = C:\Users\alan\My Documents\Titanium Studio Workspace\Hello\build.log [DEBUG] C:\ProgramData\Titanium\mobilesdk\win32\1.8.0.v20110811101746\android\builder.py simulator Hello C:\Users\alan\android-sdk C:\Users\alan\My Documents\Titanium Studio Workspace\Hello com.appcelerator.hello 17 WVGA854 [INFO] Building Hello for Android ... one moment [ERROR] JDK version 1.7.0 detected, but 1.6 is required ",3
+"TIMOB-5303","08/19/2011 03:01:07","Android: UI view size property values incorrect","h2. Problem The view's size property values are intended to reflect the rendered dimensions. However, if these properties are queried too soon after rendering has completed, the old values will be output. The advice of querying property values within a window open event listener does not work. h2. Test case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ // fullscreen: false, // once fixed, please check with this line uncommented backgroundColor:'red' }); var view = Ti.UI.createView({ backgroundColor:'blue', width:'50', height:50 }); win.add(view); Ti.API.info(""*** Before window open - view.size.width = 50 ***""); Ti.API.info(""view.size w x h: "" + view.size.width + "" x "" + view.size.height); // incorrect view.width = 100; win.addEventListener('open', function(){ Ti.API.info(""*** Window open - view.size.width = 100 ***""); Ti.API.info(""view.size w x h: "" + view.size.width + "" x "" + view.size.height); // incorrect }); Ti.Gesture.addEventListener('orientationchange', function(){ Ti.API.info(""*** orientationchange - view.size.width = 200 ***""); view.width = 200; Ti.API.info(""view.size w x h: "" + view.size.width + "" x "" + view.size.height); // incorrect }); win.open(); {code} h2. Logs {code:lang=none} 1454 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 1454 AndroidRuntime D CheckJNI is ON 60 InputManagerService W Got RemoteException sending setActive(false) notification to pid 1430 uid 10044 1454 AndroidRuntime D --- registering native functions --- 60 ActivityManager I Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.appcelerator.testing10/.Testing10Activity } 60 ActivityManager I Start proc com.appcelerator.testing10 for activity com.appcelerator.testing10/.Testing10Activity: pid=1461 uid=10044 gids={1015, 3003} 1454 AndroidRuntime D Shutting down VM 1454 AndroidRuntime I NOTE: attach of thread 'Binder Thread #3' failed 1461 TiApplication I (main) [0,0] checkpoint, app created. 1461 TiApplication I (main) [536,536] Titanium 1.8.0.1 (2011/12/22 13:09 fbdc96f) 1461 TiFastDev D (main) [164,700] Enabling Fastdev on port 58902 1461 TiFastDev D (main) [10,710] sent tokens successfully 1461 TiFastDev D (main) [1,711] Fastdev session handshake succesful. 1461 TiApplication I (main) [8,719] Titanium Javascript runtime: v8 1461 TiApplication W (main) [68,787] activity stack is emtpy, unable to get current activity 1461 TiRootActivity I (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 1461 TiApplication W (main) [119,119] activity stack is emtpy, unable to get current activity 1461 TiApplication W (main) [1,120] activity stack is emtpy, unable to get current activity 1461 TiApplication W (main) [1,121] activity stack is emtpy, unable to get current activity 1461 TiApplication E (KrollRuntimeThread) [937,1058] APP PROXY: ti.modules.titanium.app.AppModule@44eb3110 1461 TiAssetHelper D Fetching ""app.js"" with Fastdev... 1461 TiAPI I *** Before window open - view.size.width = 50 *** 1461 TiAPI I view.size w x h: 0 x 0 1461 TiAPI I *** Window open - view.size.width = 100 *** 1461 TiAPI I view.size w x h: 0 x 0 1461 TiRootActivity I (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.testing10.Testing10Activity@44e76478 60 ActivityManager I Displayed activity com.appcelerator.testing10/.Testing10Activity: 3359 ms (total 3359 ms) 60 WindowManager I Setting rotation to 1, animFlags=1 60 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/1 nav=3/1 orien=2 layout=34 uiMode=17 seq=70} 1461 TiAPI I *** orientationchange - view.size.width = 200 *** 1461 TiAPI I view.size w x h: 100 x 50 60 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=71} 60 WindowManager I Setting rotation to 0, animFlags=0 60 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=72} 1461 TiAPI I *** orientationchange - view.size.width = 200 *** 1461 TiAPI I view.size w x h: 200 x 50 {code} h2. Discussions See Q/A topic: http://developer.appcelerator.com/question/124426/how-does-dimensions-work#216821 h2. Workaround Using setTimeout allows the size values to be updated to reflect the re-rendered view. ",0.5
+"TIMOB-5162","08/29/2011 16:02:14","iOS: Ti.Database.ResultSet fieldCount is a property beginning in 3.3.0. Update Anvil, KS, etc.","iOS incorrectly has fieldCount as a function fieldCount(). In addition: * The DB tests must be updated to catch mistakes like this going forward, if possible, and also test correct values * The documentation for Ti.Database.ResultSet must be updated",3
+"TIMOB-5233","09/08/2011 11:20:15","Android: Splash screen stretched on the app launch if device in landscape","h5.Problem Splash screen is stretched if window orientation mode is locked up, when launching the app in landscape mode. h5.Target Environment {noformat} Titanium SDK: Mobile 1.7.2 Platform OS: Android Version: 2.1 {noformat} h5.Repro sequence {code:title=app.js} var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); win1.orientationModes = [ Titanium.UI.PORTRAIT]; var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win1.add(label1); win1.open(); {code}",0.5
+"TIMOB-5253","09/09/2011 20:45:54","iOS: Extra Border seen in default button on iPad","When a button with no specific style is created, it always has an ""extra border"" on the bottom. This is visible on iPad. Sample Code {noformat} Titanium.UI.setBackgroundColor('black'); var window = Titanium.UI.createWindow({ title:'Hello', backgroundColor:'black' }); var button = Ti.UI.createButton({ width:150, height:50, title:'My Button', top:200, left:100 }); window.add(button); window.open(); {noformat}",0
+"TIMOB-5301","09/18/2011 10:28:48","iOS: iPad Table View w/ Cuts Text Field Off Screen","h1. Problem A table view with a text field doesn't size properly to account for the keyboard in portrait orientation. This will be easier to see in practice, so please take a look at the example. h2. Example Perform the following steps: 1. Drop the following code in an app.js, and run it in the iPad simulator. 2. The app automatically focuses the last text field in the table view, popping up the keyboard. 3. Verify that you can see the text field, and everything looks as it should. 4. Now scroll to the top of the table view. 5. Try to scroll back down so the last text field is visible. The height of the table view is such that you cannot keep the text field on screen. {code:title=app.js} var win = Ti.UI.createWindow({ title: 'Focus Test', backgroundColor: '#fff' }); var rows = []; for (var i = 0; i < 20; i++) { var row = Ti.UI.createTableViewRow({ height: 40 }); row.add(row.textField = Titanium.UI.createTextField({ value: 'Last row focused; Scroll up, and then try to scroll back down.', color: '#000', top: 5, right: 10, bottom: 5, left: 10, borderStyle: Titanium.UI.INPUT_BORDERSTYLE_ROUNDED })); rows.push(row); } win.add(Ti.UI.createTableView({ data: rows })); win.addEventListener('open', function() { rows[rows.length - 1].textField.focus(); }); win.open(); {code}",1
+"TIMOB-5378","09/26/2011 20:05:31","iOS: showCamera leaves a black background if saveToPhotoGallery or allowEditing are true","If you use showCamera and have either allowEditing or saveToPhotoGallery set to true the screen will be black after taking a picture, after the camera disappears. Step 1: run the code below on device Step 2: click on the window Step 3: take a picture Step 4: notice the camera view disappears but the window is still all black Step 5: repeat the above steps with 1.7.2 and it will work fine (not leave a black background) {code:title=app.js} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); win.open(); win.addEventListener('click', function(e) { Titanium.Media.showCamera({ // allowEditing : true, saveToPhotoGallery : true, mediaTypes : [Ti.Media.MEDIA_TYPE_VIDEO, Ti.Media.MEDIA_TYPE_PHOTO], success : function(event) { alert('success'); }, cancel : function() { alert('cancel'); }, error : function() { alert('error'); } }); }); {code} h4. Associated Helpdesk Ticket http://appc.me/c/APP-821739",1
+"TIMOB-5436","10/05/2011 03:03:15","iOS: Expose SystemAlert","h1. Feature Not all sounds that an app plays are media, so we should expose the SystemAlert through the Media module. This will let developers choose the most appropriate way to play a sound. h2. Example Usage {code:title=app.js} var systemAlert = Ti.Media.createSystemAlert({ url: 'bad.wav' }); for (var i = 0; i < 10; i++) { systemAlert.play(); var until = new Date().getTime() + 300; while (until > new Date().getTime()) {} } {code} h2. Example Implementation {code:title=TiMediaSystemAlertProxy.h} #import ""TiProxy.h"" #import ""TiUtils.h"" #import @interface TiMediaSystemAlertProxy : TiProxy { NSURL* url; TiFile *tempFile; SystemSoundID sound; } @property (nonatomic,readonly) NSURL *url; -(void)play:(id)args; @end {code} {code:title=TiMediaSystemAlertProxy.m} #import ""TiMediaSystemAlertProxy.h"" @implementation TiMediaSystemAlertProxy #pragma mark Proxy Lifecycle -(id)init { return [super init]; } -(void)_destroy { if (sound) { AudioServicesDisposeSystemSoundID(sound); } RELEASE_TO_NIL(url); [super _destroy]; } #pragma mark System Sound -(NSURL*)url { return url; } -(void)setUrl:(id)url_ { RELEASE_TO_NIL(url); if ([url_ isKindOfClass:[NSString class]]) { url = [[TiUtils toURL:url_ proxy:self] retain]; if ([url isFileURL]==NO) { // we need to download it and save it off into temp file NSData *data = [NSData dataWithContentsOfURL:url]; NSString *ext = [[[url path] lastPathComponent] pathExtension]; tempFile = [[TiFile createTempFile:ext] retain]; // file auto-deleted on release [data writeToFile:[tempFile path] atomically:YES]; RELEASE_TO_NIL(url); url = [[NSURL fileURLWithPath:[tempFile path]] retain]; } } else if ([url_ isKindOfClass:[TiBlob class]]) { TiBlob *blob = (TiBlob*)url_; //TODO: for now we're only supporting File-type blobs if ([blob type]==TiBlobTypeFile) { url = [[NSURL fileURLWithPath:[blob path]] retain]; } } else if ([url_ isKindOfClass:[TiFile class]]) { url = [[NSURL fileURLWithPath:[(TiFile*)url_ path]] retain]; } if (sound) { AudioServicesDisposeSystemSoundID(sound); } AudioServicesCreateSystemSoundID((CFURLRef)url, &sound); } -(void)play:(id)args { if (url == nil) return; AudioServicesPlayAlertSound(sound); } @end {code} h2. Android Implementation I'm not sure what the corresponding feature on Android would be.",8
+"TIMOB-5438","10/05/2011 08:26:32","Android: Add compiler warning when using maps with Non-Google APIs SDK","Currently, we don't provide a clear error message if the developer attempts to use the Google Maps APIs in their Titanium application with a ""vanilla"" Android SDK version. It would be good to put in some kind of compiler warning to let the developer know that they are trying to run a Maps-enabled application on an Android flavor that does not support it.",3
+"TIMOB-5466","10/07/2011 03:03:19","iOS: Expose Current Window of Tab in Tab Group","h1. Feature Expose a currentWindow feature for a tab so that developers can access the visible window on the tab's stack. h2. Expected Behavior Whenever a window is opened on the tab, currentWindow would point to the newly opened window. The same applies to whenever you close a window: through clicking a back button, programmatically calling tab.close(someWindow), or tapping the tab's button. h2. Why This Is Necessary The end goal of this is to be able to pop back to the root window of a tab group, cleaning up and closing each window along the way. By exposing currentWindow, we give developers access to data we have internally already. h2. Why Name It ""currentWindow""? For parity with Ti.UI.currentWindow. h2. Sample Implementation {code:title=TiUITabProxy.m} -(id)currentWindow { return [current window]; } {code} h2. Sample Documentation {code:title=Tab.yml} ... - name: window description: the root level tab window. all tabs must have at least one root level tab window. type: Titanium.UI.Window - name: currentWindow description: The currently visible window in the tab; the window that was last opened in this tab. type: Titanium.UI.Window permission: read-only ... {code} h2. Sample Consuming Code Drop the following in an app.js. Touch ""S1: Touch Me"" and a series of windows will be popped on to the tab's stack. Then hit ""S2: Touch Me"", and the code will utilize the new currentWindow property to cascade back to the root window. {code:title=app.js} function openWindowOnStack(i) { var win = Ti.UI.createWindow({ title: 'Window ' + i, rightNavButton: Ti.UI.createButton({ title: 'S2: Touch Me' }) }); win.rightNavButton.addEventListener('click', function() { popToRoot(); }); win.addEventListener('open', function() { Ti.API.info('Opened: ' + tab.currentWindow.title); if (i < 4) { openWindowOnStack(i + 1); } }); win.addEventListener('close', function(evt) { Ti.API.info('Closed: ' + evt.source.title); if (evt.source.cascadeClose && !tab.currentWindow.rootWindow) { tab.currentWindow.cascadeClose = true; tab.close(tab.currentWindow, { animated: false }); } }); tab.open(win); } function popToRoot() { tab.currentWindow.cascadeClose = true; tab.close(tab.currentWindow, { animated: false }); } var outer = Ti.UI.createWindow({ title: 'Root Window', rightNavButton: Ti.UI.createButton({ title: 'S1: Touch Me' }), rootWindow: true }); outer.rightNavButton.addEventListener('click', function() { openWindowOnStack(0); }); var tabGroup = Ti.UI.createTabGroup(); var tab = Ti.UI.createTab({ window: outer }); tabGroup.addTab(tab); tabGroup.open(); {code}",0
+"TIMOB-5749","10/13/2011 12:37:16","Android: AndroidManifest.xml not properly created when using Ti.Geolocation events","Using the code below, the appropriate entries are not added to the AndroidManifest.xml file to allow for using location services. {code:lang=javascript} var win = Ti.UI.createWindow(); win.open(); var locationAdded = false; var handleLocation = function(e) { if (!e.error) { Ti.API.info(e.coords); } }; var addHandler = function() { if (!locationAdded) { Ti.Geolocation.addEventListener('location', handleLocation); locationAdded = true; } }; var removeHandler = function() { if (locationAdded) { Ti.Geolocation.removeEventListener('location', handleLocation); locationAdded = false; } }; Ti.Geolocation.accuracy = Ti.Geolocation.ACCURACY_BEST; Ti.Geolocation.preferredProvider = Ti.Geolocation.PROVIDER_GPS; if (Ti.Geolocation.locationServicesEnabled) { addHandler(); var activity = Ti.Android.currentActivity; activity.addEventListener('destroy', removeHandler); activity.addEventListener('pause', removeHandler); activity.addEventListener('resume', addHandler); } else { alert('Please enable location services'); } {code} The expected values of {code:lang=xml} {code} are absent from the generated AndroidManifest.xml. If you add the following line of code into the above code, the AndroidManifest.xml generates just fine. {code:lang=javascript} Ti.Geolocation.getCurrentPosition(function(e) {}); {code}",3
+"TIMOB-5812","10/19/2011 11:52:21","iOS: Support UIMenuController","!http://i.stack.imgur.com/yQKL4.png! Would be a useful feature to have. Already need it for so much. This is something that should be built-in.",8
+"TIMOB-5823","10/19/2011 13:03:42","iOS: Support building to device, directly to the device, skipping iTunes","When building to device, it would be good to build directly to the device rather then building, then having to sync via iTunes. Here is a good jumping off point: http://stackoverflow.com/questions/5010062/xcodebuild-simulator-or-device For those people who wish to sync to iTunes, we will inject a fake ""device ID"" that represents iTunes Sync and this will revert to using the existing mechanism.",8
+"TIMOB-5799","10/19/2011 13:37:50","Android: Child element does not respect opacity of parent","h3. Original test case. A child element attached to a parent with an opacity of 0 is still visible, but should be hidden. {code} var win = Ti.UI.createWindow({ title: ""Window"", backgroundColor: ""#FFF"" }); var view = Ti.UI.createView({ width: 50, height: 50, left: 0, top: 0, backgroundColor: ""transparent"", opacity: 0 }); var img = Ti.UI.createImageView({ image: ""KS_nav_ui.png"", width: 40, height: 40, left: 0, top: 0 }); view.add(img); win.add(view); win.open(); {code} h3. Child and Parent View w/ sliders to control opacity. Try adjusting the opacity of the parent and child views. The child's opacity should be properly composited with that of the parent. As you lower the opacity of the parent, the child should also become more transparent. But if you only lower the child's opacity, the parent should not be affected. {code} var win = Ti.UI.createWindow({ layout: 'vertical', backgroundColor: 'white' }); var parent = Ti.UI.createView({ backgroundColor: ""blue"", width: 200, height: 200 }); win.add(parent); var child = Ti.UI.createView({ backgroundColor: ""black"", width: '50%', height: '50%' }); parent.add(child); function createOpacitySlider(title, view) { var container = Ti.UI.createView({ width: '75%', height: 75, layout: 'horizontal' }); container.add(Ti.UI.createLabel({ text: title, left: 5 })); var slider = Ti.UI.createSlider({ min: 0, max: 100, value: 100 }); container.add(slider); slider.addEventListener('change', function(e) { view.opacity = e.value / 100; }); return container; } win.add(createOpacitySlider('Parent', parent)); win.add(createOpacitySlider('Child', child)); win.open(); {code}",3
+"TIMOB-5817","10/20/2011 02:18:34","Android: keyboard type set as number pad permits input of non-numeric values","h2. Problem New minor version of Titanium SDK has a new look of numeric keyboard. The problem is that it allows input of non-numeric values. h2. Test case How to reproduce the issue: run this example with 1.7.4 version of Titanium SDK, click on text field and type ""*"" or ""#"" symbol. You'll see that they are present in text field, while they shouldn't be present. Compile and run same example with 1.7.3 SDK version and try to do same thing. You'll see that you can't input ""*"" or ""#"" symbols (or any other that is not a number). {code} var win = Ti.UI.createWindow({ modal: true, backgroundColor: '#000' }); var textField = Ti.UI.createTextField({ width: 200, keyboardType: Ti.UI.KEYBOARD_NUMBER_PAD }); win.add(textField); win.open(); {code} Also, it would be nice if there was key in this new keyboard that would minimize keyboard (if that is possible).",3
+"TIMOB-6998","10/21/2011 21:21:17","Tooling: iOS - Xcode build fails for project using a module, when directory exists in the Resources directory with same name as project","h2. Problem Xcode build fails for project when directory exists in the Resources directory with same name as project. This issue *only* occurs for projects with modules. h2. Discussion and Workaround Q&A: [http://developer.appcelerator.com/question/119869/ios] h2. Steps to reproduce 1. Create a Titanium mobile project named ""NameConflict"" 2. Create a directory inside Resources also named ""NameConflict"" 3. Create a JS file inside of the newly created directory 4. Add a module to the tiapp.xml file and place the module inside the project 5. Try to build... in Xcode 3.2.6 you'll get a ""SystemExit: 1"" and in Xcode 4.2 you'll get a ""SystemExit: 65""",5
+"TIMOB-6922","10/23/2011 14:15:03","Android: Network - HTTPClient cannot retrieve non-ascii data","h2. Problem When loading some JSON file (UFT-8) from the web and displaying the data, the Non-Ascii-chars text is garbled. See attached screenshot of this problem on 1.7.2 Note that this works fine on iPhone. The Kitchen Sink Demo of XHR has the same problem. It works on the iPhone but fails on Android. h2. Test case {code:lang=javascript|title=app.js} Ti.UI.setBackgroundColor('#ddd'); var win = Ti.UI.createWindow({}); var loadDataButton = Ti.UI.createButton({ title: ""Let's load UTF-8 from the web!"", width: 260, top: 50, height: 40 }); win.add(loadDataButton); loadDataButton.addEventListener('click', function() { var test1 = loadFromWeb(""http://crossplattformvergleich.dnsalias.org/test.js""); /* file contains in UTF8: { ""result"" : ""áäüÖßÉ?"" } and a comment */ var test2 = loadFromWeb(""http://crossplattformvergleich.dnsalias.org/test2.js""); /* this is a 36-byte file. Appears as 0 bytes on android */ }); function loadFromWeb(url) { var asyncRequest = Ti.Network.createHTTPClient(); asyncRequest.timeout = 30*1000; asyncRequest.open(""GET"", url); asyncRequest.onload = loadCallback; asyncRequest.send(); } function loadCallback() { alert(this.responseText); } win.open(); {code} h2. Discussions Q&A: [problem fetching uft-8 content on android|http://developer.appcelerator.com/question/126712/problem-fetching-uft-8-content-on-android#comment-101538] ",2
+"TIMOB-5837","10/24/2011 07:03:39","Tooling: Adding a module requires a clean build","Currently when a new 3rd party module is added to the code and TiApp.xml file, the user must also do a clean build rather then Titanium detecting that the newly requested module is available and including it automatically",2
+"TIMOB-5884","10/26/2011 10:22:05","iOS: Add support for adding custom URL schemes to Info.plist","On some of my projects, I needed to add additional URL schemes to my iOS applications. Right now that involves manually editing the build/iphone/Info.plist file. With this change I can just make a new property on tiapp.xml and it automatically adds the custom url scheme on the next build. Github push request [https://github.com/appcelerator/titanium_mobile/pull/591]",5
+"TIMOB-5882","10/27/2011 05:17:45","iOS: Add Android Style Picker On iPhone","Titanium currently allows the option to force Android to use an iOS-style ""spinner"" picker. Would it be possible to also allow an option to force iOS to use an Android-style ""flat"" picker? An example use-case for this is when wanting a picker mechanism as part of the layout of a screen (kind of like how an HTML form has a dropdown list), or in any case where the iOS picker's size (216px/pt tall) is too large for the desired UX. Setting this override could use the existing useSpinner option (and default to true on iOS), or replace the useSpinner property with probably a more flexible ""spinnerStyle"" property with options like ""system default"", ""android"", and ""iphone"". The default would be, obviously ""system default"", while the other two options would provide overrides for their opposite platform (ie - setting style:""iphone"" on an iPhone would simply use the default, but setting style:""android"" on an iPhone would trigger the override).",0
+"TIMOB-5892","10/27/2011 18:57:53","iOS: needs to handle thrown exceptions (revisiting)","Bad news! iOS does not forward exceptions properly to the JSCore system, meaning that unhandled exceptions result in crashes. What we need to do is catch exceptions from Kroll invokes (and potentially on other threads via the uncaught exception handler...) and forward them to the JSCore system so that they can be caught on the user side (although if they're uncaught, we need to figure out what to do about that, and how JS responds.) Could be handed off.",0
+"TIMOB-5895","10/28/2011 13:09:03","iOS 7: Setting a tableview row header incorrectly inserts a blank headerTitle","h3.Problem Setting a row's header property as '' now inserts a blank headerTitle. This causes a much bigger gap than usual in grouped tableviews (see attachment). Problem exists only with iOS5. On iOS4 everything works as expected and there is no extra gap. h3.Reproducible Steps 1. Execute the test case h3.Sample Code {code} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); var rows = [ {title: 'Row 1'}, {title: 'Row 2'}, {header: '', title: 'Row 3'}, {title: 'Row 4'}, {title: 'Row 1'}, {title: 'Row 2'}, {header: '', title: 'Row 3'}, {title: 'Row 4'} ]; var tableview = Ti.UI.createTableView({ style: Ti.UI.iPhone.TableViewStyle.GROUPED }); tableview.setData(rows); win1.add(tableview); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} h3.Associated HelpDesk Ticket http://appc.me/c/APP-139179",1
+"TIMOB-6995","11/03/2011 10:29:50","Tooling: builder.py + iOS - current directory alias passed as project argument causes i18n directory to be omitted from package","h2. Problem Passing a ""dot"" to denote the current directory (and possibly all relative paths) as an argument to {{builder.py}} causes the {{i18n/}} directory in the root of the project to be omitted from the package. It should work with both relative and absolute project paths h2. Test case The following (using an absolute path as the third argument) builds the project correctly for distribution: {code} $ builder.py ""distribute"" ""5.0"" ""/Users/dawconsdwitservices/Documents/Titanium Studio Workspace/internacionalization"" ""com.appcelerator.internacionalization"" ""internacionalization"" ""F3AAB07B-9197-48F7-A128-77F18BD9CD3D"" ""Appcelerator Distribution Group"" ""/Users/dawconsdwitservices/adhoc"" ""universal"" {code} The following (using ""dot"" as the third argument) causes the {{i18n/}} folder in the root of the project to be omitted from the package. {code} $ cd /Users/dawconsdwitservices/Documents/Titanium Studio Workspace/internacionalization $ builder.py ""distribute"" ""5.0"" ""."" ""com.appcelerator.internacionalization"" ""internacionalization"" ""F3AAB07B-9197-48F7-A128-77F18BD9CD3D"" ""Appcelerator Distribution Group"" ""/Users/dawconsdwitservices/adhoc"" ""universal"" {code} h2. Discussions Helpdesk: [APP-473421|http://support.appcelerator.com/tickets/APP-473421/tickets] h2. Workaround Use an absolute path ",5
+"TIMOB-5989","11/04/2011 09:12:55","Android: Button's image attribute behaves the same as the backgroundImage attribute","h4.Problem The button's image attribute does not work as described in documentation ""the image to display on the button to the left of the title"". Image scales to fill the entire button background. h6.Titanium API - Image property http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.Button-object h6.Tested on Android Emulator v2.2 & Android LG Ally device v2.2.1 h6.Repro sequence {code:title=app.js} var win1 = Titanium.UI.createWindow({ title:'Win 1', backgroundColor:'#fff' }); var button = Titanium.UI.createButton({ top: 60, title : 'Hello', width : '140', height : '40', //backgroundImage : 'button.png', image: 'button.png', //backgroundLeftCap:12, //backgroundTopCap:12, //textAlign: Titanium.UI.TEXT_ALIGNMENT_RIGHT }); win1.add(button); win1.open(); {code} h6.Associated HD ticket APP-379158",2
+"TIMOB-5996","11/04/2011 12:48:25","Android: Modify ScrollableView.removeView() to support integer indexes","h1. Feature On iOS, ScrollableView's ""removeView"" method accepts either a view or an index to a view. Android only supports passing in a view. h2. Solution We need to either remove the undocumented feature from iOS, or add it to Android and to the documentation. h2. How To Reproduce Drop the following in an app.js. If you get a modal error screen or an error in the log, the feature is not present. If you don't, then everything is working as it should. {code:title=app.js} Ti.UI.createScrollableView({ views: [ Ti.UI.createView() ] }).removeView(0); {code}",1
+"TIMOB-6038","11/07/2011 11:36:09","Android: Ti.App.Properties - Cannot retrieve property value set in tiapp.xml ","1. Include the following code into app.js: Titanium.UI.setBackgroundColor('white'); var win = Titanium.UI.createWindow(); var text = '' + Ti.App.Properties.getString('appstate'); alert(text); win.open(); 2. Add the following line to tiapp.xml: DEV 3. Run the app for Android Result: See null in the alert dialog Expected: Should see DEV in the alert dialog Note: This bug is already fixed for iOS -> http://jira.appcelerator.org/browse/TIMOB-4696",0.5
+"TIMOB-6060","11/08/2011 09:04:10","iOS: Blurring Textfield in Modal Window Doesn't Dismiss Keyboard","When using the MODAL_PRESENTATION_FORMSHEET modal style, iOS by default does not dismiss the keyboard even when text fields are blurred. iOS 4.3 and later allows us to override this, but this property is not currently exposed. This will be an iOS-only property on the Ti.UI.Window class, and will not apply to Android. In the mean time, MODAL_PRESENTATION_PAGESHEET is perfectly sufficient. (Not a bug, but leaving old comments) h1. Problem When blurring a text field in a modal window, the keyboard doesn't go away. h2. Reproduction Drop the following in an app.js, and click in the text field. It automatically blurs itself after gaining focus. If you change ""modal: true"" to ""modal: false"", the keyboard will properly hide itself. {code:title=app.js} var win = Ti.UI.createWindow({ backgroundColor: '#fff' }); var textField = Ti.UI.createTextField({ value: '1. Touch Me', height: 34, top: 10, left: 10, right: 10, borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED }); textField.addEventListener('focus', function () { Ti.API.info('blurring'); textField.blur(); Ti.API.info('blurred'); }); win.add(textField); win.open({ modal: true, modalStyle: Ti.UI.iPhone.MODAL_PRESENTATION_FORMSHEET }); {code}",5
+"TIMOB-6860","11/14/2011 11:46:53","Tooling: Android build process requires ""Google APIs"" even if ""Ti.Map.createView"" only occurs in comments","h2. Problem For a Titanium mobile project on Android, if Titanium sees that you're using a Ti.Map.createView in your project, running on the emulator will fail unless your run configuration indicates use of one of the ""Google APIs"" Android API. I assume it is scanning the source js files for this. That's fine. The problem is that if the only place you have the text ""Ti.Map.createView"" is in a comment (// comment), Titanium does the same thing, and fails to install with the message, {{Package com.testing.testing9 requires unavailable shared library com.google.android.maps; failing!}}. I have to think that there are other things like that too. Titanium's build process should not detect things like this that are in comments, thus triggering the ""Google APIs"" requirement. I do not know if this affects iOS as well. h2. Test case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ layout:'vertical', exitOnClose:true, navBarHidden:true }); var label = Ti.UI.createLabel({ color:'white', text:'Hello World', width:'auto' }); win.add(label); // some day add a Ti.Map.createView to this win.open(); {code} h2. Logs {code} 403 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 403 AndroidRuntime D CheckJNI is ON 403 AndroidRuntime D --- registering native functions --- 87 PackageParser D Scanning package: /data/app/vmdl28961.tmp 87 PackageManager D Scanning package com.testing.testing9 87 PackageManager E Package com.testing.testing9 requires unavailable shared library com.google.android.maps; failing! 87 PackageManager W Package couldn't be installed in /data/app/com.testing.testing9-1.apk 403 AndroidRuntime D Shutting down VM 403 AndroidRuntime I NOTE: attach of thread 'Binder Thread #3' failed {code} ",3
+"TIMOB-6245","11/20/2011 23:43:13","Android: Animations provided to Window.open() and close() on Lightweight windows aren't being applied","animation properties or proxy given to open() or close() methods on a LW window are not supported currently in 1.8. FROM DUPLICATE TIMOB-11790: Note: Heavyweight windows are addressed in TIMOB-10302. h3. Issue Animations on opening a lightweight window are not working. h3. Steps to Reproduce 1. Run the sample code below {noformat} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); win.open(); win.addEventListener('click', function(){ var win1 = Ti.UI.createWindow({ backgroundColor: 'red', left: 320 }); var slide_it_left = Titanium.UI.createAnimation(); slide_it_left.left = 0; slide_it_left.duration = 300; win1.open(slide_it_left); }); {noformat} 2. No animation occurs. The new window is stuck at position 320. ",3
+"TIMOB-6288","11/22/2011 18:21:43","Android (and mobileweb): Move simplejson and mako out of Android-specific folders to make them generally available","Our Mobile Web team needs simplejson, and it's packaged under support/android. There shouldn't be a need for mobileweb to depend on android (i.e., if someone builds the sdk with {{scons mobileweb=true}} they won't even get android.)",0
+"TIMOB-6292","11/23/2011 11:43:05","iOS: Update jscore to iOS 5.0 version (JSCore-903)","Ticket for tracking the update of JSCore to the version shipping with iOS 5.0 (JSCore-903) and documenting the process.",3
+"TIMOB-6423","12/01/2011 15:10:11","Android: Build should accept an alias password","The ADT supports packaging an apk using a specific keystore/password and a key/password. It appears that we require both the keystore and alias passwords to be the same. When I run the builder.py script using the correct keystore password, but use a alias with a different password, the script hangs.",3
+"TIMOB-6438","12/02/2011 13:53:52","iOS : TableView - When running QTS on an iOS device 5.0+, after finishing a test and navigating back to the main list of tests, one cannot run any other tests without terminating the app","Steps to reproduce: Grab the QTS app from git@github.com:appcelerator/titanium_mobile_tests_internal.git 1. Launch the app on an iOS device running iOS 5+ 2. Once the app is running, press any table view row (you don't have to run the test) 3. Navigate back to the main table view with all the tests 4. Press a new table view row Expected result: Able to run tests one after the other Actual result: Pressing the new table view row doesn't launch any new tests",0
+"TIMOB-6463","12/05/2011 14:49:29","iOS:JavaScript Object is incorrectly garbage collected.","Javescript object has been incorrectly garbage collected in some case. h4. Repro Steps. 1. Build a project based on the following code snippet and run the project. 2. Touch the first row textfield then continuously click the ""next"" buttons on the keyboardToolbar for more than 4 times. Expected Result: You should be able to move the focus to the next textfield by clicking the ""next"" button. Actual Result: The buttons on the toolbar get frozen and you can not switch the focus. {code} Titanium.UI.setBackgroundColor('#000'); var datasource=[],textFieldArray=[],table,rowId=1,textFieldId= 0; var win1 = Titanium.UI.createWindow({ title:'Window', barColor:'#808080', }); var scrollView = Ti.UI.createScrollView({ top:0, bottom:0, right:0, left:0, contentWidth:320, contentHeight:'auto', layout:'vertical', backgroundColor:'#fff' }); for (i = 0; i <=12; i++) { var row = createRows(rowId); scrollView.add(row); rowId++; } win1.add(scrollView); function createRows(_rowId) { var flexSpace = Titanium.UI.createButton({ systemButton:Titanium.UI.iPhone.SystemButton.FLEXIBLE_SPACE }); var navButtons = Titanium.UI.createButtonBar({ labels:['Previous','Next'], backgroundColor:'#000', top:100, style:Titanium.UI.iPhone.SystemButtonStyle.BAR, height:25, width:'auto' }); var done = Titanium.UI.createButton({ systemButton:Titanium.UI.iPhone.SystemButton.DONE }); var inputTextField = Titanium.UI.createTextField({ color : '#ff7c00', top : 5, height : 50, textAlign : 'right', width : '25%', hintText : '', left : '65%', right : '8%', keyboardToolbar : [navButtons,flexSpace,done], keyboardToolbarColor : '#898989', returnKeyType : Titanium.UI.RETURNKEY_DEFAULT, borderStyle : Titanium.UI.INPUT_BORDERSTYLE_ROUNDED, keyboardType : Titanium.UI.KEYBOARD_NUMBER_PAD, font : { fontSize : 20, fontColor : '#ff7c00', fontWeight : 'bold', fontFamily : 'Helvetica Neue' } }); inputTextField.rowId=_rowId; textFieldId = textFieldId + 1; inputTextField.id = textFieldId; textFieldArray.push(inputTextField); //prevent inputTextField from being GCed due to a bug. // inputTextField.addEventListener( // 'blur', function(e) { // }); navButtons.addEventListener('click', function(e) { max = textFieldArray.length; if(e.index ===0) { /*Prev Tab*/ if( inputTextField.id ===1) { done.fireEvent('click'); } else { var rowIndex=inputTextField.rowId-1; Ti.API.info(""change focus of row: ""+ rowIndex ); changeFocus(rowIndex,0,textFieldArray); } } else { /*Next Tab*/ if(inputTextField.id === max) { done.fireEvent('click'); } else { var rowIndex=inputTextField.rowId + 1; Ti.API.info(""change focus of row: ""+ rowIndex ); changeFocus(rowIndex,1,textFieldArray) ; } } }); done.addEventListener('click', function() { for(i=0,j=textFieldArray.length;i {code} The formatting and scaling are thrown off entirely, as shown in the attached image file. Removing *anyDensity=false* or disabling gpu rendering resolves the issue, but requires the developer to use 'dp' notation everywhere even if they don't plan to support multiple densities. h2. basic code to reproduce {code} var win = Ti.UI.createWindow({ backgroundColor: '#fff' }); win.open(); {code} With *anyDensity=false* in the tiapp.xml android manifest, this will generate the attached screenshot on a Galaxy nexus running 4.0. If *anyDensity=false* is removed from the manifest, you will get the expected white background covering the whole screen for the window.",1
+"TIMOB-6845","12/22/2011 10:40:21","Android: Ti should include only the used features/libs into a new app","h4. PROBLEM DESCRIPTION For iOS, when you create a new mobile project in Titanium Studio and run it on device, the ipa file it generates is well over 4MB. h4. STEPS TO REPRODUCE 1. Create new mobile project 2. Compile it to device 3. Check the size of the app. h4. ACTUAL RESULTS App bigger than 4MB, even if it's an almost empty app. h4. EXPECTED RESULTS Ti only adding the needed functionality, according to the namespaces used in the app. ",3
+"TIMOB-6946","12/31/2011 07:40:35","Tooling: standardize the location of build.log","Currently the {{build.log}} file is in the project root for Android and {{project/build/iphone/build/}} for iPhone. Could we standardize them, by creating them in, for example, the {{build}} folder, and naming them {{-build.log}}? There may be a better location and naming convention, but hopefully you can see that this would be cleaner and more intuitive than the current situation. ",5
+"TIMOB-7025","01/06/2012 10:39:56","iOS: CommonJS - JavaScript module require()d by a url-based Window can't see Ti.Network","h2. Problem A CommonJS (JavaScript) module which is require()d by a url-based Window (a window created with the 'url' property) from inside of that window's 'open' event tries to access Ti.Network.online, but instead a runtime error is produced: {code} [ERROR] Script Error = Result of expression 'Ti.Network' [undefined] is not an object. {code} Please see the attached project (code repeated at the bottom of this description). It's a 5-step process to expose this error. The attached code has been minimized down from an actual project, so while it may look weird and seem to contain unnecessary steps, keep in mind that this is an excerpt from a real project with a real problem. I have reduced it down to the bare minimum necessary to reproduce the problem. The normal workaround of adding a reference to ""Ti.Network"" in app.js does *not work* in this case. Another problem that is evident in the example: - In app.js, you shouldn't have to reference ""Ti.App"" to get past the use of Ti.App in deep.js, but without that line in app.js, you get the same ""undefined"" error on Ti.App. The problem does *not occur on Android*...the app works fine. h2. Steps to Reproduce - Unzip the attached project and run it to the iPhone simulator. - Look at the console log. - Right after ""** trying Network"", you will see this error {code} [ERROR] Script Error = Result of expression 'Ti.Network' [undefined] is not an object. {code} h2. Expected Result The app should run without error and give the console message ""** Network is there!"". h2. Testcase Code {code:lang=javascript|title=app.js} var Sequencer=require('Sequencer'); Sequencer.SetML('deep',require('deep')); Ti.App; // without this here, the Ti.App in deep.js crashes. Ti.Network; // this workaround doesn't work. var w1=Ti.UI.createWindow({url:'win1.js'}); w1.Sequencer=Sequencer; w1.open(); {code} {code:title=Sequencer.js} Ti.API.info('** Loading Sequencer'); exports.ML={}; exports.SetML=function(Prop,Val) { exports.ML[Prop]=Val; }; exports.GetML=function() { return exports.ML; }; {code} {code:title=deep.js} exports.RegisterWindowLoadEvent=function(TheWindow,OnLoadEvent) { Ti.App.CurrentWindow=TheWindow; Ti.App.CurrentWindow.addEventListener('open',OnLoadEvent); }; {code} {code:title=win1.js} var Sequencer=Ti.UI.currentWindow.Sequencer; deep=Sequencer.GetML().deep; deep.RegisterWindowLoadEvent(Ti.UI.currentWindow,MainWinLoad); function MainWinLoad() { Ti.API.info('** MainWinLoad'); Ti.API.info('** step 1'); var Killer=require('win2'); Ti.API.info('** step 2'); } {code} {code:title=win2.js} Ti.API.info('** trying Network'); if (Ti.Network.online) Ti.API.info('** Network is there!'); Ti.API.info('** done trying Network'); {code} ",0
+"TIMOB-7087","01/10/2012 18:33:15","MobileWeb: Ti.Blob implementation","Need to implement Ti.Blob. Extends Evented. Need to investigate binary data support in browsers. Might try using canvas? Be sure to also test setting the ""data"" property of a WebView.",3
+"TIMOB-7124","01/12/2012 00:30:39","Android: Tab icons are not being shown when are in density folders","Problem: Images in density folders will not show if you re-install the app without rebuilding AND you didn't set ti.android.fastdev property to false. This property is true by default. Note that this bug affect Emulators and Devices. Steps to reproduce: 1. Download and import the attached project, change line 49 in app.js in the test project to 'KS_nav_views.png' (Since the other image isn't included in the proj) 2. Launch emulator/device (uninstall the app if already installed). 3. Install and run the app 4. Observe the tab1 image is showing up correctly. 5. Now uninstall the app from emulator/device, and reinstall/run the app via Titanium Studio's play button. (DO NOT rebuild). ",2
+"TIMOB-7143","01/12/2012 16:00:11","Android: KitchenSink - Platform > Sockets > Connecting Socket - Connect without setting field causes crash","In KitchenSink, Platform > Sockets > Connecting Socket, pressing Connect when the module first loads causes crash. This is not a new behavior, and is a general Android issue. Steps to Reproduce: 1. Launch KitchenSink. 2. Run Platform > Sockets > Connecting Socket. 3. Press 'Connect'. Expected Result: Runtime error. Actual Result: Crash.",0.5
+"TIMOB-7152","01/12/2012 17:09:44","iOS: Memory Leak: Objects created in a Ti.UI.tabGroup are not released when the tabGroup is closed","h3. Problem Objects created in a Ti.UI.tabGroup are not released when the tabGroup is closed. h3. Reproducible steps: 1. Run the code below. 2. Use the instruments application to monitor the memory 3. Click on Open tabgroup button 4. Click on close button Please see TiUITabproxy on the category. It is never released from the memory. h3. Expected behavior: Customer wants to release the memory of a tab. h3. Tested with the next specs: Simulator iPhone 4 Version of the device: 5.0.1 Titanium Studio, build: 1.0.8.201112291658 Titanium SDK: 1.8.0.1 h3.More info: Please see the video attached. h3. Code: {Code} function createTabGroup() { var colors = ['#ff9966', '#99ff66', '#6699ff', '#66ffff', '#ffff66']; function openWindowOnStack(i) { var win = Ti.UI.createWindow( { title : 'Window ' + i, backgroundColor : colors[i] }); win.addEventListener('open', function(evt) { Ti.API.info('Opened: ' + evt.source.title); if(i < 4) { setTimeout(function() { openWindowOnStack(i + 1); }, 500); } }); win.addEventListener('close', function(evt) { Ti.API.info('Closed: ' + evt.source.title); trackClosedWindow(tab1, evt.source); }); openInTab(tab1, win); } var navButton = Ti.UI.createButton( { title : 'Open Windows' }); var outer = Ti.UI.createWindow( { title : 'Root Window', backgroundColor : '#d0d0d0', rightNavButton : navButton }); outer.rightNavButton.addEventListener('click', function() { openWindowOnStack(0); }); function trackClosedWindow(thistab, window) { var windows = thistab.windows || []; for(var w = windows.length - 1; w >= 0; w--) { if(windows[w] == window) { windows[w] = null; windows.splice(w, 1); break; } } thistab.windows = windows; } function closeAllInTab(thistab) { var windows = thistab.windows || []; for(var w = 0; w < windows.length; w++) { windows[w].close(); windows[w] = null; } thistab.windows = windows = []; } function openInTab(thistab, window) { var windows = thistab.windows || []; windows.push(window); thistab.open(window); thistab.windows = windows; } var tabGroup = Ti.UI.createTabGroup(); var tab1 = Ti.UI.createTab( { window : outer, title : 'Touch Me' }); tabGroup.addTab(tab1); var button2 = Ti.UI.createButton( { title : 'close', height : 35, width : 200 }); outer.add(button2); button2.addEventListener('click', function(e) { outer.remove(button2); outer.rightNavButton = null; button2 = null; navButton = null; closeAllInTab(tab1); tabGroup.removeTab(tab1); tab1.window = null; tab1 = null; tabGroup.tabs = null; tabGroup.close(); tabGroup = null; outer.close(); outer = null; Ti.API.info('Closed tab group'); }); return tabGroup; } var win1 = Ti.UI.createWindow( { backgroundColor : '#fff', title : ""Home"" }); var button1 = Ti.UI.createButton( { title : 'Open tabgroup', height : 35, width : 200 }); button1.addEventListener('click', function(e) { var tabGroup1 = createTabGroup(); tabGroup1.open(); Ti.API.info('Opened tab group'); }); win1.add(button1); win1.open(); {Code} h3. Helpdesk APP-443889 ",1
+"TIMOB-7233","01/16/2012 15:35:17","Android: evalJS and evalFile methods deprecated in TiContext","h3.Issue One of the General changes while porting modules to our current SDK 1.8.0.1 was remove TiContext. h6.Customer's remarks Inside my Android module, I have to execute some JavaScript statements in the current context. I was using TiContext to do that in pre-1.8.0.1 versions of SDK. Since TiContext is deprecated where in 1.8.0.1 Android module SDK can I find evalJS() and evalFile() methods? h6.General changes {noformat} TiContext is being replaced, and any implementation utilizing TiContext will take a performance / stability hit compared to using the desired API's directly. In most of the places where TiContext is used as an argument, the TiContext argument can be removed entirely or replaced with an Activity reference. {noformat} h6.evalJS and evalFile methods migrated {code:title=TiContext.java} public Object evalFile(String filename) throws IOException { return evalFile(filename, null, -1); } public Object evalJS(String src) { if (krollBridge == null) { Log.e(LCAT,""on evalJS, evaluator is null and shouldn't be""); } return krollBridge.evalJS(src); } {code} h6.References https://wiki.appcelerator.org/display/guides/Android+Module+Porting+Guide+for+1.8.0.1 ",3
+"TIMOB-7249","01/17/2012 06:53:32","Android: Intent - getData(), getAction(), and getType() do not work","h2. Problem When deciding how an app should handle an incoming Android Intent, knowing the type, action, and data values that were sent with the Intent are critical. If your app only handles one very specific Intent, this is OK, but if you have an app that handles images, URIs, video,, etc... you need to know these values. Right now when an Intent is received via Intent Filter in Titanium, the following lists the values/errors you will get for the data, type, and action functions and properties of an Intent: * {{getData()}} always equals {{null}} * {{getType()}} and {{getAction()}} always throw this exception, despite the fact that logic and documentation dictates that these functions do not require arguments: {code}Uncaught Error: Requires property name as first argument{code} * The {{data}} property always returns {{null}} * The {{action}} and {{type}} properties always return {{undefined}} h2. Proposed Solution The above listed functions and properties need to return the appropriate values for {{data}}, {{type}}, and {{action}} so that developers will know what to do with the Android Intent that they are receiving. Like I said, if you are handling only one type of data as dictated by your Intent Filter, you are OK. But if you plan to handle images, video, etc... and you need to read them from Ti.Android.EXTRA_STREAM, you have no way of knowing which type of Intent you are receiving. Also, I believe the implementation of {{getAction()}} and {{getType()}} need to change so that they do not require a parameter. h2. Test Case {code:javascript} var win = Ti.UI.createWindow({ backgroundColor: '#fff', fullscreen: false, exitOnClose: true }); win.addEventListener('open', function(e) { var intent = Ti.Android.currentActivity.getIntent(); var iname = Ti.Android.EXTRA_STREAM; if (intent && intent.hasExtra(iname)) { Ti.API.info(intent.getAction()); Ti.API.info(intent.getData()); Ti.API.info(intent.getType()); } else { Ti.API.info('No extra named ""' + iname + '"" found in Intent'); } }); win.open(); {code} It will also be necessary to add an intent filter to a custom AndroidManifest.xml to get this test case to receive intents. The only below needs to go in the main activity and will receive all image share intents. You can easily trigger an image share intent by long clicking on an image in the android gallery then select 'share' from the intent list. Then just select your test case app from the list. {code:xml} {code}",0.5
+"TIMOB-7259","01/17/2012 10:58:26","Android: Gesture - orientation change fires on app start when initial orientation is landscape","h2. Problem If initial orientation of the emulator is landscape, two orientationchange events are fired when re-orienting to portrait. Thereafter, it works as expected. The same does not happen when initial orientation is portrait. h2. Test case * set emulator to landscape (CTRL+F11) * launch app with code below {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ title: 'Rotate device to test', backgroundColor: 'white', orientationModes: [ Titanium.UI.PORTRAIT, Titanium.UI.UPSIDE_PORTRAIT, Titanium.UI.LANDSCAPE_LEFT, Titanium.UI.LANDSCAPE_RIGHT ], fullscreen: false, // same results regardless of whether its a heavyweight window exitOnClose: true }); Ti.Gesture.addEventListener('orientationchange',function(e){ Titanium.API.info(""orientation changed = "" + Ti.Gesture.orientation + "", is portrait? "" + e.source.isPortrait() + "", is landscape? "" + e.source.isLandscape()); }); win.open(); {code} h2. Logs {code:lang=none} 421 AndroidRuntime D >>>>>>>>>>>>>> AndroidRuntime START <<<<<<<<<<<<<< 421 AndroidRuntime D CheckJNI is ON 422 TiApplication I (main) [0,0] checkpoint, app created. 421 AndroidRuntime D --- registering native functions --- 422 TiApplication I (main) [399,399] Titanium 2.0.0 (2012/03/01 14:01 0ccdf63) 422 TiFastDev D (main) [276,675] Enabling Fastdev on port 46158 422 TiFastDev D (main) [21,696] sent tokens successfully 422 TiFastDev D (main) [1,697] Fastdev session handshake succesful. 422 TiApplication I (main) [24,721] Titanium Javascript runtime: v8 422 TiRootActivity I (main) [0,0] checkpoint, on root activity create, savedInstanceState: Bundle[mParcelledData.dataSize=204] 61 ActivityManager I Starting activity: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 cmp=com.appcelerator.testing10/.Testing10Activity } 421 AndroidRuntime D Shutting down VM 421 AndroidRuntime I NOTE: attach of thread 'Binder Thread #3' failed 422 TiApplication E (KrollRuntimeThread) [1126,1126] APP PROXY: ti.modules.titanium.app.AppModule@44fc8058 422 TiAssetHelper D Fetching ""app.js"" with Fastdev... 61 ActivityManager I Starting activity: Intent { cmp=com.appcelerator.testing10/org.appcelerator.titanium.TiActivity (has extras) } 422 TiRootActivity I (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.testing10.Testing10Activity@44f60a88 422 TiUIView D (main) [440,440] Nativeview is null 422 TiUIView D (main) [44,484] Nativeview is null 61 InputManagerService W Got RemoteException sending setActive(false) notification to pid 401 uid 10040 61 NotificationService W Object died trying to hide notification android.app.ITransientNotification$Stub$Proxy@4509fef8 in package com.appcelerator.testing10 61 ActivityManager W setProcessForeground called on unknown pid: 401 61 ActivityManager I Displayed activity com.appcelerator.testing10/.Testing10Activity: 14070 ms (total 3531 ms) 61 ActivityManager I Displayed activity com.appcelerator.testing10/org.appcelerator.titanium.TiActivity: 701 ms (total 701 ms) 61 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=2 layout=34 uiMode=17 seq=27} 422 TiAPI I orientation changed = 2, is portrait? false, is landscape? true 61 WindowManager I Setting rotation to 0, animFlags=0 61 ActivityManager I Config changed: { scale=1.0 imsi=310/260 loc=en_US touch=3 keys=2/1/2 nav=3/1 orien=1 layout=34 uiMode=17 seq=28} 422 TiAPI I orientation changed = 1, is portrait? true, is landscape? false {code} ",1
+"TIMOB-7270","01/17/2012 17:59:26","Report classes used during building for device or production","A useful data point is to find out what classes and modules fall under heavy use and which don't. During the build process for iOS, this information is indirectly gleaned in generating USE_TI_ compiler flags. If Titanium Studio could relay this information back to the cloud, we could have a better idea on what classes we could safely remove or which classes has the best ROI in terms of code fixes.",5
+"TIMOB-7301","01/19/2012 13:49:19","Android: JSS with import and js with include files not working","h3. Actual behavior Working with an app.js with an include an app.jss with a require, and adding labels to the window, those are not getting the styles dictated by the jss files h3. Expected behavior Jss working as used to work on 1.7.6 with the same structure h3. Files {code:title=app.js|borderStyle=solid} var gt = {}; gt.ui={}; Ti.include('/incs/incs.js'); gt.ui.makeWin = function(){ var win1 = Titanium.UI.createWindow({ backgroundColor:'#fff', navBarHidden:true }); var label1 = gt.ui.makeLabel('label1'); var label2 = gt.ui.makeLabel('label2'); win1.add(label1); win1.add(label2); return win1; }; var win = gt.ui.makeWin(); win.open(); {code} {code:title=app.jss|borderStyle=solid} @import 'lay/style.jss'; #label2 { color:'#f0f'; text:'I am Window 2'; fontSize:40; textAlign:'center'; height:80; width:'auto'; } {code} {code:title=incs/incs.js|borderStyle=solid} Ti.API.info('Including the inc file'); gt.ui.makeLabel = function(id) { var label = Titanium.UI.createLabel({ id:id, className:'button' }); return label; }; {code} {code:title=lay/style.jss|borderStyle=solid} #label1 { color:'#f00'; top:0; text-align:'center'; text:'I am label 1'; height:40; width:'auto'; } .button { background-color:'#00f'; } {code}",5
+"TIMOB-7311","01/20/2012 10:15:03","iOS: Change Ti.Network.BonjourService/BonjourBrowser to take a Ti.Network.Socket.TCP object","In order to correctly deprecate (and remove) `Ti.Network.TCPSocket` which has been deprecated since the introduction of better sockets in 1.7.0, without disrupting the ability to use these features, the Bonjour code needs to be updated to take `Ti.Network.Socket.TCP` objects. This should not be a difficult task, although we will need to make developers aware of the change prior to release.",8
+"TIMOB-7319","01/20/2012 14:04:33","Ti API: Label, TextArea support add method on iOS only","See related Q&A Item: http://developer.appcelerator.com/question/130925/about-textaress-methodadd Need to define which controls can/should accept children and which cannot or should not.",1
+"TIMOB-7333","01/23/2012 11:58:02","Allow specification of arbitrary AVD in build/launch scripts","Related to TISTUD-998, right now in Studio you can select (some of) the properties of an AVD (Run->Run Configurations->Titanium Android Emulator) but this isn't configurable enough for some cases (although you can modify an AVD created by Studio in the {{android}} tools, as long as it has the right name). It would be nice to have the feature to select a pre-existing AVD in the run configurations, so that you can use an existing AVD without having Studio create a new one for you. It appears to require build script modifications allowing for the specification of an arbitrary AVD.",2
+"TIMOB-7334","01/23/2012 12:20:25","iOS: EXC_BAD_ACCESS (SIGSEGV) crash while parsing xml","EXC_BAD_ACCESS (SIGSEGV) crash while parsing xml. Occurs 1 times out of 10. Steps to Reproduce: 1. Create new project. 2. Replace app.js with attached app.js. 3. Run app. 4. Press 'load' until app crashes. Expected Result: App should not crash. Actual Result: App crashes. Crash logs attached.",0.5
+"TIMOB-7664","01/23/2012 15:38:06","iOS: Allow for custom Info.plist values via tiapp.xml","It would be great if we didn't have to create our own Info.plist file to override common values. We can already specify android manifest parameters in tiapp.xml. Examples: I need an app with a shorter name for the Home screen (Bundle Display Name) I would like to have a custom url scheme (URL Schemes array) I want to specify all my icon files for a universal app (Icon files) Since Info.plist is an XML file anyway, it seems like the same logic that went into the Android Manifest section of tiapp.xml could be applied here. This would be something *really great* to have in 1.9 to bring parity between iOS & Android.",3
+"TIMOB-7365","01/24/2012 16:25:43","Android: Ti.Media.AudioPlayer.getUrl not exposed as method","Both getUrl, setUrl work on iOS, but only setUrl works on Android. I believe this is just a typo, note missing @Kroll.method annotation: @Kroll.getProperty public String getUrl() { return TiConvert.toString(getProperty(TiC.PROPERTY_URL)); } @Kroll.setProperty @Kroll.method public void setUrl(String url) { if (url != null) { setProperty(TiC.PROPERTY_URL, resolveUrl(null, TiConvert.toString(url))); } ",0.5
+"TIMOB-7368","01/24/2012 16:48:47","Tooling: titanium.py create does not add platform tiapp.xml tags as expected","When 'titanium.py create' is run from the command line, the created project does not contain platform tag information in tiapp.xml file, as would be expected. Note: When the new project is imported into studio, the tags are added based on the presence of the platform-specific Resources sub-folder (i.e., Project/Resources/android). This seems unexpected, but this is how it works as of now. Steps to Reproduce: 1. Run 'titanium.py create' from the terminal using the following arguments: {code} dhydeMBPLion:~ dhyde$ /Users/dhyde/Library/Application\ Support/Titanium/mobilesdk/osx/1.8.1.v20120123161633/titanium.py create --platform=iphone --type=project --dir=/Users/dhyde/Downloads --name=TagTest --id=com.appcelerator.tagtest {code} 2. Inspect tiapp.xml in the new project folder. Expected Result: Deployment target tags would be present. {code} truetruetruetruefalse {code} Actual Result: No deployment targets exist.",5
+"TIMOB-7391","01/24/2012 18:16:02","Android: Ti.Geolocation.locationServicesEnabled is always false","Ti.Geolocation.locationServicesEnabled always return false even when the Use wireless networks and Use GPS satellites are checked. alert('Please enable location services') h4. Repro Steps Run the below code in the android device {code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); if (Ti.Geolocation.locationServicesEnabled) { //Ti.Geolocation.purpose = 'Get your current location'; } else { alert('Please enable location services'); } win.open(); {\code} ",0.5
+"TIMOB-7393","01/25/2012 06:25:14","As a developer, I want to be able to pass arbitrary arguments to the Android emulator","This is a blocker issue for TISTUD-623. ""When a run/debug configuration is created, we need the ability to pass additional command-line arguments to the android emulator. Specifically, the -scale argument in order to use skins whose full scale causes them to be larger than the screen you are running on. For example, I am using the Motorola MD860 skin for the Atrix 4G whose screen is 960 pixels high. The resulting emulator window is some 1200 pixels high but my screen is only 900 pixels high. If you run the AVD from the AVD Manager, it offers the option to run with a particular screen size which uses the -scale argument. We need the capability to do this in Studio. I would recommend simply adding an extensible option to specify any additional command line arguments. The standard Eclipse launch configurator allows this on the configuration's Target tab but that appears to be disabled in Studio."" I believe we are not allowed to pass arbitrary arguments to the emulator. I could not find a duplicate issue, but if one exists, please mark this as such.",1
+"TIMOB-7412","01/25/2012 16:22:38","Android: V8/Rhino: Animation: Setting animation on a lightweight window makes the window color go transparent","Steps To Reproduce: 1. Run the attached code: {code} Ti.UI.setBackgroundColor('white'); var win = Ti.UI.createWindow({ backgroundColor: 'black' }); var fromColor = '#2d6e32'; var toColor = '#35883b'; var v = Ti.UI.createView({ width: '100dp', height: '100dp', backgroundColor: fromColor }); var b = Ti.UI.createButton({ title: 'Animate', bottom: '10dp', left: '10dp' }); b.addEventListener('click', function() { v.animate({ backgroundColor: toColor, duration: 500 }); }); var b1 = Ti.UI.createButton({ title: 'Reset', bottom: '10dp', right: '10dp' }); b1.addEventListener('click', function() { v.backgroundColor = toColor; v.backgroundColor = fromColor; }); var v1 = Ti.UI.createView({ width : '50dp', height: '50dp', backgroundColor: 'white' }); win.add(v); win.add(b); win.add(b1); win.add(v1); win.open(); {code} 2. Click Animate Actual Result: The window background color became transparent Expected Result: The window background color should stay black Note: Existed in 1.8.0.1 and works in 1.7.5",2
+"TIMOB-7605","01/25/2012 21:00:34","iOS: httpClient file transfers appear to be cached in 1.8.0.1","I'm writing a file-syncing app which requires transfer certain files multiple times into folders to then display the resulting html. This means that some files - like css, js, icon images, etc. - get transferred multiple times. This worked like a charm on 1.7.5. When I upgraded to 1.8.0.1, the SDK now only transfers the file once. The call to httpClient.send appears to work - no error gets thrown, all the callbacks fire as expected - but the actual file that is requested never gets saved where it is told to save. We're using the standard way of transferring files, where 'assetrowsresult' is the results from the database of the source and destination paths of files to be moved: c.open('GET', assetrowsresult.fieldByName('source')); c.file = Titanium.Filesystem.getFile(basepath(current_project) + assetrowsresult.fieldByName('dest')); c.send(); Again, this worked fine in 1.7.5 ... so something changed. I'd be happy just knowing how to turn the cache off for transfers if such a switch exists.",0
+"TIMOB-7424","01/26/2012 10:37:48","Android: Push Notification: Android 3.0+ is not getting notifications when the application has quit","Steps To Reproduce: 1. Run the attached application 2. Launch the application 3. Enable Push 4. Go to UrbanAirship and send a push notification to the APID 5. Force Quit the application 6. Send again Actual: The push is not received Expected: Should receive the push Note: Works on Nexus s (2.3.6)",2
+"TIMOB-7458","01/27/2012 16:35:15","Tooling: api.jsca is generated with invalid xml tags resulting in content assist disparities","Using content assist, in the studio editor, Ti.Media.videoPlayer.repeatMode and other sdk properties have incomplete content assist property descriptions. The api.jsca file in the sdk has invalid tags for these properties in 1.8.0.1 and 1.8.1. Screenshot attached. The xml tags were correct and the properties were properly described in content assist using sdk 1.7.5. Screenshot attached. Steps to Reproduce: 1. Open studio. 2. Create a new project. 3. Select sdk 1.8.0.1 or 1.8.1. 4. In the app.js file, type: {code:title=app.js} var videoPlayer = Ti.Media.createVideoPlayer(); videoPlayer {code} 5. Open content assist. If it is not open by pressing cntrl + space. 6. Next to videoPlayer, type .repeatMode (e.g., videoPlayer.repeatMode) 7. Click on the content assist description for the property. Expected Result: Property description should be fully populated with descriptive elements (i.e., other properties). Part of the description should read: 'Defaults to Titanium.Media.VIDEO_REPEAT_MODE_NONE.' Actual Result: There are holes in the description. Part of the description reads: 'Defaults to .'",1
+"TIMOB-7467","01/30/2012 10:14:16","iOS: Map Annotation Memory Leak","h4. PROBLEM DESCRIPTION User added and removed annotations from the map, it was releasing the TiMapAnnotationProxy but not the TiMapPinAnnotationView. It kept them ""Living"" and continued to add to their live bytes instead of moving the old ones into ""Transitory"". h4. ACTUAL BEHAVIOR TiMapPinAnnotationView is not being released. h4. EXPECTED BEHAVIOR TiMapPinAnnotationView should be released when not needed. h4. TEST CASE {code} var win = Ti.UI.createWindow({ title:'Map' }), map = Ti.Map.createView({ region:{ latitude:36, latitudeDelta:5, longitude:-93, longitudeDelta:5 }, toggled:false, userLocation:false }), toggleAnnos = function(e){ var lat = 31, lng = (e.source.toggled ? -98 : -89), annos = []; for(i=0;i<10;i++){ annos.push({latitude:lat,longitude:lng}); lat++; if(e.source.toggled){ lng++; }else{ lng--; } } e.source.removeAllAnnotations(); e.source.addAnnotations(annos); e.source.toggled = !e.source.toggled; }; win.add(map); win.open(); map.addEventListener('regionChanged',toggleAnnos); {code} h4. COMMUNITY DISCUSSION http://developer.appcelerator.com/question/131291/map-annotation-memory-leak ",8
+"TIMOB-7486","01/31/2012 15:08:53","iOS - on modal window orientation misplaces children","h3. The Problem: When the window changes orientation, if it's modal, it's children end up behind the nav bar. h3. Code Sample: {code} var win = Ti.UI.createWindow({ orientationModes:[ Titanium.UI.PORTRAIT, Titanium.UI.UPSIDE_PORTRAIT, Titanium.UI.LANDSCAPE_LEFT, Titanium.UI.LANDSCAPE_RIGHT ] }); var view = Ti.UI.createView({ backgroundColor:'white' }); var label = Ti.UI.createLabel({ top:0, height:10, text:'lalalalala' }); view.add(label); win.add(view); win.open({modal:true}); {code} h3. To Reproduce: Run the code above in app.js and rotate the device/simulator h3. Behavior: - What happens: View with the label with text ""lalalala"" ends up under the navbar and invisible to the user - What has to happen: View containing the label has to resize accordingly",0.5
+"TIMOB-7536","02/03/2012 10:32:28","when using titanium ""create"" from command line to create a new ios module it fails to correctly configure titanium.xcconfig file for OSX lion","when using titanium ""create"" from command line to create a new ios module it fails to correctly configure titanium.xcconfig The TITANIUM_SDK is incorrect for OSX lion it should have a ~ in front of the path.",1
+"TIMOB-7555","02/06/2012 14:26:55","iOS: Titanium.UI.Button: touchmove event fails to fire","Button touchmove event fails to fire. Steps to Reproduce: 1. Run code. {code:title=app.js} var win = Ti.UI.createWindow({backgroundColor:'white'}); var button = Ti.UI.createButton({width:'200',height:'200'}); button.addEventListener('touchmove',function(){ Ti.API.info('touchmove fired'); }); button.addEventListener('touchstart',function(){ Ti.API.info('touchstart fired'); }); button.addEventListener('touchend',function(){ Ti.API.info('touchend fired'); }); button.addEventListener('touchcancel',function(){ Ti.API.info('touchcancel fired'); }); button.addEventListener('click',function(){ Ti.API.info('click fired'); }); button.addEventListener('dblclick',function(){ Ti.API.info('dblclick fired'); }); win.add(button); win.open(); {code} 2. Press button, move, and release. Expected Result: Console should output three event types: 'touchstart', 'touchmove', 'touchend'. Actual Result: No 'touchmove' is printed.",0
+"TIMOB-7559","02/06/2012 16:36:11","iOS: CommonJS require: undeclared variable referenced from module fails to generate error","Undeclared variables referenced from a module fail to generate an error. Android does generate the error. Screenshot attached. The undeclared variable can then be used in further logic, such as adding it to a window. Screenshot attached. If an undeclared variable is used in the module itself, there is an error. If an undeclared variable is returned from an exports function-call, there is an error. If an undeclared variable is defined as a return value in an exports function, but the function is never called, there is no error. If an undeclared variable is returned from an exports function-call and assigned to a new variable outside the module, there is no error, and the variable can continue to be used. Steps to Reproduce: 1. Run Code (also attached): {code:title=app.js} var undeclaredVar = require('Module').getUndeclaredVar(); Ti.UI.createWindow().add(undeclaredVar); {code} {code:title=Module.js} exports.getUndeclaredVar = function() { return undeclaredVar; }; {code} Expected Result: Runtime error indicating undeclared variable. Actual Result: No runtime error.",2
+"TIMOB-7560","02/06/2012 16:52:12","Android: Invalid package names do not produce meaningful error messages.","If an invalid app id is created, Android compilation phase just gives a generic ""Error generating R.java from manifest"" error message. A meaningful error message should be displayed. Example invalid app ids: com com.123 1com.com",5
+"TIMOB-7562","02/06/2012 18:27:26","iOS: Titanium.UI.View: view with layout property set to horizontal or vertical does not display children","When the layout property of a View is set to 'vertical' or 'horizontal', children do not display. Works on Android. Tested on Views and Windows using Labels, TextFields, and Buttons. Steps to Reproduce: 1. Run Code: {code:title=app.js} var win = Ti.UI.createWindow({ backgroundColor:'red', layout:'horizontal' }); var left = Ti.UI.createLabel({ title:'Left', backgroundColor:'blue', color:'black', width:'50%', height:'100%' }); var right = Ti.UI.createLabel({ title:'Right', backgroundColor:'green', color:'black', width:'50%', height:'100%' }); win.add(left); win.add(right); win.open(); {code} Expected Result: There should be a blue bar and a green bar (two labels in a horizontal layout). Screenshot attached. Actual Result: Red background (only the window background). Screenshot attached.",0
+"TIMOB-7564","02/06/2012 18:46:44","iOS: user should be able to run the app on device directly inside the Studio","User should be able to run the app directly on real iOS device from inside the Titanium Studio. Current procedure involve creating a binary for iTunes and then use Xcode (set up with the correct provisioning profile and certificates) to actually run the app on the device, making it a long procedure.",5
+"TIMOB-8472","02/08/2012 13:29:18","Android: setting backgroundImage of TableViewRow to null or empty string crashes app","h6.Problem Setting the backgroundImage property of a TableViewRow to null crashes the app with a NullPointerException/force close. Setting backgroundImage to an empty string locks up the app (which will eventually crash if you keep clicking or try to back out). h6.Rationale This is a problem because we have the need to apply a background image to a row, and then at some point later remove that background image completely. h6.Tested on Droid Razr 2.3.5 Android 2.2 emulator h6.Runtime engines V8/Rhino h6.Reproduction steps 1. Drop the following app.js code into a new project - initially, the row has no background image (property no specified) 2. click the row once...a background image appears (and the caption changes) 3. click the row again...a Force Close messaage appears on the screen, and a NullPointerException appears in the console if you repeat the test with the ""1st test"" line commented out and the ""2nd test"" line uncommented, the app will freeze (nothing new appears in the console window) and then crash if you click the row again or try to ""back"" out. h6.Repro sequence {code} var win1 = Ti.UI.createWindow({ backgroundColor:'black' }); var TheListBox=Ti.UI.createTableView({width:'auto'}); var BIRow=Ti.UI.createTableViewRow({color:'white', title:'No background image...click to toggle'}); TheListBox.appendRow(BIRow); win1.open(); win1.add(TheListBox); BIRow.addEventListener('click',ToggleBI); function ToggleBI() { if (!BIRow.backgroundImage) { BIRow.backgroundImage='appicon.png'; BIRow.title='Titanium background image...click to toggle'; } else { BIRow.backgroundImage=null; // 1st test...NullPointerException //BIRow.backgroundImage=''; // 2nd test...lockup/freeze...crash on next click BIRow.title='No background image...click to toggle'; } } {code} h6.Console output {noformat} cation: (main) [34,34] Titanium 1.8.1 (2012/01/27 17:31 a24502a) 03-31 22:59:19.411 5847 5847 I TiApplication: (main) [52,86] Titanium Javascript runtime: v8 03-31 22:59:19.411 5847 5855 D dalvikvm: Trying to load lib /data/data/com.appcelerator.test/lib/libstlport_shared.so 0x4051cf58 03-31 22:59:19.411 5847 5855 D dalvikvm: Added shared lib /data/data/com.appcelerator.test/lib/libstlport_shared.so 0x4051cf58 03-31 22:59:19.411 5847 5855 D dalvikvm: No JNI_OnLoad found in /data/data/com.appcelerator.test/lib/libstlport_shared.so 0x4051cf58, skipping init 03-31 22:59:19.411 5847 5855 D dalvikvm: Trying to load lib /data/data/com.appcelerator.test/lib/libkroll-v8.so 0x4051cf58 03-31 22:59:19.419 5847 5855 D dalvikvm: Added shared lib /data/data/com.appcelerator.test/lib/libkroll-v8.so 0x4051cf58 03-31 22:59:19.442 5847 5847 W TiApplication: (main) [38,124] activity stack is emtpy, unable to get current activity 03-31 22:59:19.442 5847 5847 I TiRootActivity: (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 03-31 22:59:19.513 5847 5847 W TiApplication: (main) [70,70] activity stack is emtpy, unable to get current activity 03-31 22:59:19.513 5847 5847 W TiApplication: (main) [1,71] activity stack is emtpy, unable to get current activity 03-31 22:59:19.513 5847 5847 W TiApplication: (main) [0,71] activity stack is emtpy, unable to get current activity 03-31 22:59:19.716 5847 5855 E TiApplication: (KrollRuntimeThread) [201,272] APP PROXY: ti.modules.titanium.app.AppModule@405ac7e0 03-31 22:59:19.864 5847 5847 D dalvikvm: GC_EXTERNAL_ALLOC freed 490K, 45% free 3304K/5959K, external 2741K/2773K, paused 36ms 03-31 22:59:19.911 5847 5847 I TiRootActivity: (main) [0,0] checkpoint, on root activity resume. activity = com.appcelerator.test._1bestpracticesActivity@40594d48 03-31 22:59:19.942 509 722 W InputManagerService: Starting input on non-focused client com.android.internal.view.IInputMethodClient$Stub$Proxy@4092bfd8 (uid=10035 pid=890) 03-31 22:59:19.950 509 801 I gralloc : Allocated 0x660072 size 6488161 03-31 22:59:19.997 509 604 I ActivityManager: Displayed com.appcelerator.test/._1bestpracticesActivity: +743ms 03-31 22:59:21.122 509 509 I gralloc : Allocated 0x660072 size 6488161 03-31 22:59:23.349 509 603 I AlarmManager: sending alarm Alarm{4067a338 type 0 com.android.vending} 03-31 22:59:23.771 1836 1838 D dalvikvm: GC_CONCURRENT freed 149K, 45% free 4022K/7239K, external 2357K/2773K, paused 1ms+1ms 03-31 22:59:23.825 1836 1836 D Finsky : [1] 5.onFinished: Installation state replication succeeded. 03-31 22:59:24.458 509 603 I AlarmManager: sending alarm Alarm{40bd1650 type 0 com.google.android.gsf} 03-31 22:59:24.481 897 4041 I EventLogService: Aggregate from 1333254564412 (log), 1333254564412 (data) 03-31 22:59:25.872 509 600 D BatteryTempPolicy: updateBatteryTemp temperature = 310, Threshhold = 3 03-31 22:59:25.880 258 495 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.880 256 283 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.880 254 291 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.880 258 584 E NetlinkListener: ignoring non-kernel netlink multicast message 03-31 22:59:25.911 664 664 D StatusBarPolicy: handleBatteryUpdate 03-31 22:59:30.997 890 890 D dalvikvm: GC_EXPLICIT freed 527K, 49% free 4499K/8775K, external 8803K/10851K, paused 76ms 03-31 22:59:36.005 2207 2207 D dalvikvm: GC_EXPLICIT freed 15K, 38% free 4178K/6663K, external 2357K/2773K, paused 75ms 03-31 22:59:40.989 2281 2281 D dalvikvm: GC_EXPLICIT freed 8K, 44% free 3173K/5575K, external 2357K/2773K, paused 57ms 03-31 22:59:46.005 2082 2082 D dalvikvm: GC_EXPLICIT freed 299K, 42% free 3443K/5895K, external 2357K/2773K, paused 72ms 03-31 22:59:49.552 5847 5886 W TiAnalyticsSvc: (Thread-13) [29641,29641] Analytics Service Started 03-31 22:59:49.575 5847 5886 I TiAnalyticsSvc: (Thread-13) [26,29667] Network unavailable, can't send analytics 03-31 22:59:49.575 5847 5886 W TiAnalyticsSvc: (Thread-13) [0,29667] Stopping Analytics Service 03-31 22:59:54.606 4351 4351 D dalvikvm: GC_EXPLICIT freed 11K, 42% free 3131K/5379K, external 2357K/2773K, paused 58ms 03-31 22:59:59.630 2191 2191 D dalvikvm: GC_EXPLICIT freed 163K, 47% free 4043K/7559K, external 2357K/2773K, paused 78ms 03-31 22:59:59.997 509 603 I AlarmManager: sending alarm Alarm{40d99778 type 1 android} 03-31 23:00:05.075 2216 2216 D dalvikvm: GC_EXPLICIT freed 17K, 44% free 3042K/5379K, external 2357K/2773K, paused 24ms 03-31 23:00:10.099 2226 2226 D dalvikvm: GC_EXPLICIT freed 6K, 44% free 3022K/5379K, external 2357K/2773K, paused 42ms 03-31 23:00:10.552 5847 5855 W TypeConverter: jsValueToJavaObject returning null 03-31 23:00:10.552 5847 5847 D AndroidRuntime: Shutting down VM 03-31 23:00:10.552 5847 5847 W dalvikvm: threadid=1: thread exiting with uncaught exception (group=0x4001e560) 03-31 23:00:10.560 5847 5847 E TiApplication: (main) [20975,50642] Sending event: exception on thread: main msg:java.lang.NullPointerException; Titanium 1.8.1,2012/01/27 17:31,a24502a 03-31 23:00:10.560 5847 5847 E TiApplication: java.lang.NullPointerException 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiBaseTableViewItem.setBackgroundFromProxy(TiBaseTableViewItem.java:182) 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:213) 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:84) 03-31 23:00:10.560 5847 5847 E TiApplication: at ti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(TiTableView.java:210) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.AbsListView.obtainView(AbsListView.java:1435) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.ListView.makeAndAddView(ListView.java:1824) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.ListView.fillSpecific(ListView.java:1365) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.ListView.layoutChildren(ListView.java:1651) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.AbsListView.onLayout(AbsListView.java:1286) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.View.layout(View.java:7184) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.ViewRoot.performTraversals(ViewRoot.java:1180) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.view.ViewRoot.handleMessage(ViewRoot.java:1914) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.os.Handler.dispatchMessage(Handler.java:99) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.os.Looper.loop(Looper.java:130) 03-31 23:00:10.560 5847 5847 E TiApplication: at android.app.ActivityThread.main(ActivityThread.java:3859) 03-31 23:00:10.560 5847 5847 E TiApplication: at java.lang.reflect.Method.invokeNative(Native Method) 03-31 23:00:10.560 5847 5847 E TiApplication: at java.lang.reflect.Method.invoke(Method.java:507) 03-31 23:00:10.560 5847 5847 E TiApplication: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 03-31 23:00:10.560 5847 5847 E TiApplication: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 03-31 23:00:10.560 5847 5847 E TiApplication: at dalvik.system.NativeStart.main(Native Method) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: FATAL EXCEPTION: main 03-31 23:00:10.591 5847 5847 E AndroidRuntime: java.lang.NullPointerException 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiBaseTableViewItem.setBackgroundFromProxy(TiBaseTableViewItem.java:182) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:213) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiTableViewRowProxyItem.setRowData(TiTableViewRowProxyItem.java:84) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at ti.modules.titanium.ui.widget.tableview.TiTableView$TTVListAdapter.getView(TiTableView.java:210) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.AbsListView.obtainView(AbsListView.java:1435) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.ListView.makeAndAddView(ListView.java:1824) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.ListView.fillSpecific(ListView.java:1365) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.ListView.layoutChildren(ListView.java:1651) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.AbsListView.onLayout(AbsListView.java:1286) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at org.appcelerator.titanium.view.TiCompositeLayout.onLayout(TiCompositeLayout.java:382) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1254) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1130) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.LinearLayout.onLayout(LinearLayout.java:1047) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.widget.FrameLayout.onLayout(FrameLayout.java:338) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.View.layout(View.java:7184) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.ViewRoot.performTraversals(ViewRoot.java:1180) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.view.ViewRoot.handleMessage(ViewRoot.java:1914) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.os.Looper.loop(Looper.java:130) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:3859) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at java.lang.reflect.Method.invokeNative(Native Method) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at java.lang.reflect.Method.invoke(Method.java:507) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:840) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:598) 03-31 23:00:10.591 5847 5847 E AndroidRuntime: at dalvik.system.NativeStart.main(Native Method) 03-31 23:00:10.599 509 783 W ActivityManager: Force finishing activity com.appcelerator.test/._1bestpracticesActivity 03-31 23:00:10.708 509 526 D dalvikvm: GC_EXTERNAL_ALLOC freed 1343K, 36% free 9055K/14023K, external 10065K/10188K, paused 85ms 03-31 23:00:10.724 509 526 W ApplicationContext: Unable to create files directory 03-31 23:00:10.747 509 526 I gralloc : Allocated 0x61663d64 size 2103800684 03-31 23:00:11.099 509 524 W ActivityManager: Activity pause timeout for HistoryRecord{40a2c3d8 com.appcelerator.test/._1bestpracticesActivity} 03-31 23:00:11.099 509 524 I ActivityManager: No longer want amep.games.af_final:remote (pid 4351): hidden #21 03-31 23:00:11.122 890 890 D ActivitityRenderTarget: onResume 03-31 23:00:11.177 890 5830 W IMGSRV : eglglue.c:778: InitContext: ignoring buffer type CBUF_TYPE_PDS_VERT_SECONDARY_PREGEN_BUFFER 03-31 23:00:11.192 509 515 I gralloc : Allocated 0x660072 size 6488161 03-31 23:00:11.294 509 873 I gralloc : Allocated 0x660072 size 6488161 03-31 23:00:11.349 509 722 I gralloc : Allocated 0x660072 size 6488161 03-31 23:00:11.356 509 820 W ActivityManager: Scheduling restart of crashed service amep.games.af_final/com.appenda.AppNotify in 5000ms 03-31 23:00:11.599 509 524 I ActivityManager: No longer want com.motorola.im.service (pid 4333): hidden #21 03-31 23:00:11.622 509 827 W ActivityManager: Scheduling restart of crashed service com.motorola.im/.service.RemoteImService in 14734ms 03-31 23:00:11.731 509 526 I gralloc : Allocated 0x61663d64 size 2103800684 {noformat} h6.API docs http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.UI.TableViewRow.backgroundImage-property.html ",1
+"TIMOB-7584","02/08/2012 18:48:03","Android: opening a new window, background color is briefly displayed before objects are added to the screen","h2. Problem When opening a new window, the background color of the new window is displayed for a brief moment and then objects are drawn and added to the screen. This is happening from 1.8.0.1 - it's not reproducible on 1.7.5. Opening the new window on 1.8.0.1 with V8 is still overall faster than on 1.7.5 (around 4-5 times faster, something around 120ms against 500ms). h2. Steps to reproduce The behavior is noticeable especially on the emulator (since is less reactive). {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ navBarHidden : true, backgroundColor : 'green', }); function createNewWin() { var win2 = Ti.UI.createWindow({ navBarHidden : true, backgroundColor : 'black', }); for( i = 0; i < 20; i++) { var view = Ti.UI.createView({ backgroundColor : 'blue', }); win2.add(view); } return win2; } var button = Ti.UI.createButton({ title : 'Open New Win', width : 150, height : 60, top : 20 }); win.add(button); button.addEventListener('click', function() { var win3 = createNewWin(); win3.open(); }); win.open(); {code} h2. Link Ticket related: http://support-admin.appcelerator.com/display/APP-175314",3
+"TIMOB-7586","02/09/2012 10:41:56","iOS: image saved to filesystem using toImage() loses it's transparency","h2. Problem Saving an image to the filesystem using toImage() method, does not keep the transparent property of the image h2. Steps to reproduce See attached code {code:lang=javascript|title=app.js} var window = Ti.UI.createWindow({ backgroundColor:'#ff0' }); var view = Ti.UI.createImageView({ image:'KS_nav_ui.png', // var view = Ti.UI.createView({ backgroundColor:'transparent', borderWidth:2, borderColor:'#f00', width:100, height:100, top:10 }); window.add(view); var image = Ti.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, 'tst.png'); image.write(view.toImage()); var img = Ti.UI.createImageView({ width:200, height:200, bottom:10, image:image.nativePath }); window.add(img); window.open(); {code} h2. Link Ticket : http://support-admin.appcelerator.com/display/APP-785915",1
+"TIMOB-8346","02/09/2012 13:46:29","iOS: ""open"" event fires multiple times at startup, plus whenever focused when using NavigationGroup","h2.Problem The ""open"" event of a window fires 3 times when first opened, then whenever the window re-receives focus (when navigating back to it using a NavigationGroup), the ""open"" event fires again. h2.Expected Result The ""open"" event should only fire once...when it is first opened, period. And it should not fire when the window re-receives focus. h2.Steps to Reproduce # drop the following app.js code into a new project # build with SDK 1.8.1 # run in the iPhone simulator. You will see: {code} [INFO] One moment, building ... [INFO] Titanium SDK version: 1.8.1 (01/27/12 17:31 a24502a) [INFO] iPhone Device family: iphone [INFO] iPhone SDK version: 5.0 [INFO] iPhone simulated device: iphone [INFO] Launching application in Simulator [INFO] Launched application in Simulator (3.78 seconds) [INFO] Found 5.0 patch installed [INFO] Application started [INFO] NavGroupFocusTest/1.0 (1.8.1.a24502a) [INFO] rootWin OPEN fired [INFO] rootWin OPEN fired [INFO] rootWin OPEN fired {code} # Say to yourself: ""Why did OPEN fire 3 times?!?!?!?!?!"" # click the ""open new window"" button and watch the console log. You will see: {code} [INFO] 2nd wind {code} # click the ""back"" button and watch the console log. You will see: {code} [INFO] rootWin FOCUSED [INFO] rootWin OPEN fired {code} # Say to yourself: ""Why did OPEN fire again?!?!?!?!?!"" Repeat steps 5, 6, and 7 and continue to get the same result until you're bored with this game. h2.Testcase {code:title=app.js} var rootWin = Ti.UI.createWindow(); rootWin.addEventListener('focus', function() { Ti.API.info(""rootWin FOCUSED""); }); rootWin.addEventListener('open', function() { Ti.API.info(""rootWin OPEN fired""); }); var btnOpenWin = Ti.UI.createButton({ title : ""open new window"", width : 200, height : 35 }); btnOpenWin.addEventListener('click', function() { var win2 = Ti.UI.createWindow(); ng.open(win2, {animated:true}); Ti.API.info(""2nd wind""); }); rootWin.add(btnOpenWin); ng = Ti.UI.iPhone.createNavigationGroup({window:rootWin}); var NavBase = Ti.UI.createWindow(); NavBase.add(ng); NavBase.open(); // this opens the ""root"" window, automatically {code} In a larger project, sometimes when you go ""back"" to the main window, no events fire at all (no focus, no open). I would expect the focus event to fire each time. Just something to keep in mind while you're looking into the code, as I haven't been successful in reproducing this in a small testcase. ",1
+"TIMOB-7607","02/09/2012 17:25:32","iOS: Status Bar disappears when video is closed in landscape/portrait mode","h5. Expected When the video is closed in landscape/portrait mode, Status bar should be visible. h5. Actual Currently its not visible. Below is attached the sample app.js, and screen shots to explain the issue. h5. Test Code {code} var win = Ti.UI.createWindow({ backgroundColor:'#fff', top: 0, left: 0, width: '100%', height: '100%', zIndex: 10, }); var bTSOStream = Ti.UI.createButton({ width: 150, height: 30, color: 'blue', title: 'Live-Stream', font: {fontSize:14,fontFamily:'Helvetica Neue'}, left: 0, top: 0, }); bTSOStream.addEventListener('click', function(e){ var wStream = Ti.UI.createWindow({ fullscreen: true, orientationModes: [Titanium.UI.PORTRAIT, Titanium.UI.LANDSCAPE_RIGHT, Titanium.UI.LANDSCAPE_LEFT], backgroundColor: '#000', }); wStream.open(); var vpStream = Ti.Media.createVideoPlayer({ contentURL: 'http://movies.apple.com/media/us/ipad/2010/tours/apple-ipad-video-us-20100127_r848-9cie.mov', backgroundColor: '#111', movieControlMode: Titanium.Media.VIDEO_CONTROL_DEFAULT, //scalingMode: Titanium.Media.VIDEO_SCALING_MODE_FILL , scalingMode: Titanium.Media.VIDEO_SCALING_ASPECT_FIT, fullscreen: true, }); var ignoreFullscreenEvent = false; vpStream.addEventListener('naturalSizeAvailable', function(e){ ignoreFullscreenEvent = true; }); vpStream.addEventListener('fullscreen', function(e){ if(!ignoreFullscreenEvent){ wStream.close(); } ignoreFullscreenEvent = false; }); wStream.add(vpStream); }); win.add(bTSOStream); win.open(); {code}",1
+"TIMOB-8100","02/10/2012 04:05:24","iOS: barImage hides nav buttons after window transition","In window with a navbar that has a barImage and nav buttons (such as a rightNavButton), if we go to a child window and then back the nav buttons will be hidden by the barImage (but are still there and react to the touch). STEPS TO REPRODUCE: * Put the app.js (code below and attached) and navbar.png (attached) in the Resources directory * Run the code in the iOS simulator * Click on the ""Open Window 2"" button * Click on the back button to return to window 1 The right nav button will now be hidden (although you can still click it) app.js example code follows. {code} var win1 = Ti.UI.createWindow({ title : 'Window 1', barImage : 'navbar.png' }); var navButton = Ti.UI.createButton({ title : 'rightNavButton' }); navButton.addEventListener('click', function(e) { Ti.UI.createAlertDialog({ message : 'nav button clicked' }).show(); }); win1.rightNavButton = navButton; win1.titleControl = Ti.UI.createLabel({text : 'Title Control'}); var button = Ti.UI.createButton({ width : 200, height : 50, title : 'Open Window 2' }); button.addEventListener('click', function(e) { tabGroup.activeTab.open(win2); }); win1.add(button); var win2 = Ti.UI.createWindow({ title : 'Window 2' }); var tab1 = Ti.UI.createTab({ title : 'Tab 1', window : win1 }); var tabGroup = Ti.UI.createTabGroup(); tabGroup.addTab(tab1); tabGroup.open(); {code} Possibly related to: http://developer.appcelerator.com/question/131672/rightnavbutton-and-leftnavbutton-not-displaying-in-181 ",2
+"TIMOB-8326","02/10/2012 07:39:52","Android: Regression: TableView no longer responds to touch events (touchstart, touchmove, touchend, touchcancel)","h2.Problem TableView does not respond to touch events (touchstart, touchmove, touchend, touchcancel). This is a regression, as this worked fine in 1.7.5 and the 1.8.0.v... continuous build from September. This also works fine in iOS. Only Android is affected. h2.Test Case # drop the following app.js code into a new project # build with SDK 1.8.1 # run on the Android 2.2 emulator # press and hold any row. *No touchstart event occurs.* # while still holding the row, move the mouse around a little. *No touchmove event occurs.* # let go of the row. *No touchend event occurs.* {code:title=app.js} var win1=Ti.UI.createWindow({ backgroundColor:'#fff', exitOnClose:true, layout:'vertical', navBarHidden:false, backgroundColor:'black' }); var TopLabel=Ti.UI.createLabel({text:'Last row will only be half visible when scrolled', color:'black', left:0, right:0, height:25, backgroundColor:'yellow'}); win1.add(TopLabel); var MyListbox=Ti.UI.createTableView({backgroundColor:'black'}); for (var i=1; (i <= 10); i++) MyListbox.appendRow(Ti.UI.createTableViewRow({title:'Row '+i})); Ti.API.info('adding EventListener for touchstart'); MyListbox.addEventListener('touchstart',TchStart); function TchStart(evt) { Ti.API.info('TchStart'); } Ti.API.info('adding EventListener for touchmove'); MyListbox.addEventListener('touchmove',TchMove); function TchMove(evt) { Ti.API.info('TchMove'); } Ti.API.info('adding EventListener for touchend'); MyListbox.addEventListener('touchend',TchEnd); function TchEnd(evt) { Ti.API.info('TchEnd'); } Ti.API.info('adding EventListener for touchcancel'); MyListbox.addEventListener('touchcancel',TchCancel); function TchCancel(evt) { Ti.API.info('TchCancel'); } Ti.API.info('adding EventListener for click'); MyListbox.addEventListener('click',LBClick); function LBClick(evt) { Ti.API.info('LBClick'); } win1.add(MyListbox); win1.open(); {code} ",3
+"TIMOB-7616","02/10/2012 14:12:28","iOS: Titanium.UI.WebView: iOS5: evalJS causes app freeze and deadlock warning","iOS 5.0 apps running SDK 1.9.0 beta freeze with deadlock warning: [WARN] Timing out waiting on main thread. Possibly a deadlock? in TiThreadPerformOnMainThread (TiBase.m:213) Regression. Works in 1.8.1. Steps to Reproduce: 1. Run WebViewTest project. Attached. Expected Result: App should display an alert indicating html javascript function call. Actual Result: App freeze with deadlock warning. Note: Test case exists in titanium_mobile_tests_internal/FeatureTest/WebView/WebViewModule => TIMOB 4885",0
+"TIMOB-7624","02/10/2012 18:56:37","Android: Ti.API - enable logging methods to accept either an array of strings or a string","h2. Problem To bring parity with iOS to the [Titanium.API|http://developer.appcelerator.com/apidoc/mobile/latest/Titanium.API-module] logging methods, enable them to accept arrays of strings in addition to the existing string arguments.",1
+"TIMOB-7627","02/13/2012 07:20:59","iOS: UI - Email/SMS Dialog does not change orientation properly","h3.Issue When you create a window and set win.orientationModes = [Titanium.UI.PORTRAIT]; or set it in Tiapp.xml. Then create an emailDialog or SMSDialog and open that window. If you proceed to rotate the device into LANDSCAPE the window itself rotates into LANDSCAPE but the statusbar and keyboard remain in PORTRAIT. h6.Expected behavior The keyboard and statusBar rotate accordingly. Used to work in 1.7.x - as seen in the screenshots. h6.Tested on iPhone 4 iOS simulator 5 TiSDK 1.7 > OK TiSDK 1.8 > Fail TiSDK 1.9 > Fail h6.Steps to reproduce 1) Run code below 2) Click ""Email"" button 3) Select a field from Email dialog - the keyboard shows up. 4) Rotate device 5) Misbehavior appears suddenly. h6.Repro sequence {code:title=app.js} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); var button = Ti.UI.createButton({ title:'Email', height:40 }); button.addEventListener('click', function(){ var emailDialog = Ti.UI.createEmailDialog(); emailDialog.open(); }); win1.add(label1); win1.add(button); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} h6.Additional info If the window is locked doesn't seems to work either. Locked the orientation on iOS: {code:title=Tiapp.xml} Ti.UI.PORTRAITTi.UI.PORTRAITTi.UI.UPSIDE_PORTRAITTi.UI.LANDSCAPE_LEFTTi.UI.LANDSCAPE_RIGHT {code}",1
+"TIMOB-7642","02/13/2012 19:07:37","iOS: Memory Leak when local html file is used in a WebView","Memory is not being released when a webview, with a local HTML file, is added to a window and then removed from it. But this does not happen when a remote URL is used. Below is the sample code and the local HTML file has been attached. *Sample Code* {noformat} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var webview = null; var btnAdd = Ti.UI.createButton({ title : 'Add', top : 0, left : 0, height : 50, width : 100 }); btnAdd.addEventListener('click', function() { webview = Ti.UI.createWebView({ url : 'local_webview.html', // url : 'http://www.google.com', height : 200, bottom : 10 }); win.add(webview); }); var btnRemove = Ti.UI.createButton({ title : 'Remove', top : 0, right : 0, height : 50, width : 100 }); btnRemove.addEventListener('click', function() { win.remove(webview); webview = null; }); win.add(btnAdd); win.add(btnRemove); win.open(); {noformat} *STEPS TO REPRODUCE* - Drop the above sample code into app.js and copy the attached 'local_webview.html' to Resources folder. - Start the application and open Instruments to profile it. - Click the 'Add' button and then the 'Remove' button. - Search for 'proxy' in instruments and it can be seen that webview proxies are not released even if memory warnings are simulated. *EXPECTED BEHAVIOR* Proxies related to webview should be released. *OBSERVED BEHAVIOR* Memory is not being freed. *OTHER OBSERVATIONS* Memory is being freed when a remote URL (uncomment the line with google.com and comment out the line with local_webview.html) is used.",2
+"TIMOB-7643","02/14/2012 09:37:28","Android: Implement the UI Composite Layout Behavior Spec","Spec: https://wiki.appcelerator.org/display/spe/UI+Composite+Layout+Behavior+Spec Detailed QE Test Case: https://wiki.appcelerator.org/display/tp/UI+Composite+Layout+Behavior+Test+Case",5
+"TIMOB-7644","02/14/2012 10:08:01","iOS: Memory is not being released when a tab is removed from tabGroup","Memory is not being released when a tab is removed from a tabGroup on iOS using 'removeTab'. *Sample Code* {noformat} // create tab group var tabGroup = Titanium.UI.createTabGroup(); // create base UI tab and root window var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'Remove Tab1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); label1.addEventListener('click', function() { tabGroup.removeTab(tab1); label1 = win1 = tab1 = null; }); win1.add(label1); // create controls tab and root window var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // add tabs tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {noformat} *STEPS TO REPRODUCE* - Drop the above sample code into app.js. - Start the application and open Instruments to profile it. - Click the 'Remove Tab1' label. - Search for 'proxy' in instruments and it can be seen that tab proxy(along with window and label proxies inside tab1) are not released even if memory warnings are simulated. *EXPECTED BEHAVIOR* Proxies related to tab and elements inside it should be released. *OBSERVED BEHAVIOR* Memory is not being freed.",0.5
+"TIMOB-7645","02/14/2012 10:32:31","Tooling: Update SDK version number to 2.0","Titanium Mobile is still reporting the SDK version as 1.9. Studio is now restricting UI elements for ACS based on an anticipated version # of 2.0. Until the SDK version # is updated, the UI elements will not appear.",0
+"TIMOB-7652","02/14/2012 12:20:54","Tooling: Add ""clean"" option to titanium build scripts","Based on ticket TISTUD-1180, it seems odd that Titanium Studio knows how to ""clean"" a build, especially since it doesn't know how to do the build itself. From here: https://wiki.appcelerator.org/display/guides/Titanium+Command+Line+Interface, it seems that a ""titanium clean --platform=p1,p2"" command (or if omitted, cleans all platforms) would be good, as then Studio does not need to internalize a very platform-specific function.",1
+"TIMOB-7657","02/14/2012 16:37:39","Android: Permissions failure in android.calendar Drillbit test","Looks like the android.calendar test recently started failing due to missing permissions, log: {code} Permission Denial: opening provider com.android.providers.calendar.CalendarProvider2 from ProcessRecord{423b2048 20514:org.appcelerator.titanium.testharness/10082} (pid=20514, uid=10082) requires android.permission.READ_CALENDAR or android.permission.WRITE_CALENDAR {code}",1
+"TIMOB-7660","02/14/2012 20:47:40","iOS: Moving rows between sections & hard crash","Moving rows between sections causing crashes. See attached examples. Repro steps at the top of each attached file. Some other tickets referencing this issue: https://jira.appcelerator.org/browse/TIMOB-2655 https://jira.appcelerator.org/browse/TIMOB-2117 https://jira.appcelerator.org/browse/TIMOB-5430 Let me know if there's any other info I can provide.",1
+"TIMOB-7659","02/15/2012 00:37:13","iOS: backgroundSelectedImage does not scale in iPod 2nd gen","The backgroundSelectedImage property doesn't scale in iPod 2nd gen. You can only see a cropped image. The image scales fine in iPod 3rd gen. h4. Repro Steps 1. Run the below code. 2. In iPod 2nd gen the images will not scale {code} var win=Ti.UI.createWindow({ backgroundColor: 'white' }); var button = Titanium.UI.createButton({ backgroundImage:'appsS.png', backgroundSelectedImage:'appsP.png', top: Titanium.Platform.displayCaps.platformHeight*0.5, width: Titanium.Platform.displayCaps.platformHeight * 0.13, height: Titanium.Platform.displayCaps.platformHeight * 0.16 }); button.addEventListener('click',function(e){ Titanium.API.info(""You clicked the button""); }); win.add(button); win.open(); {code}",1
+"TIMOB-7661","02/15/2012 10:16:44","Coverage: Fix error in coverage generation script","Currently the coverage.py script is failing whenever it is run without arguments, which impedes us from automating and getting metrics about API docs and the APIs themselves.",0.5
+"TIMOB-7700","02/16/2012 17:16:00","Android: Enable searchBar to animate cancel button","From the original iOS issue: When a searchBar is NOT attached to a tableView, instead attached to a view on the window, the cancel button isn't animated. Nor does there seem to be a property to enable it. The cancel button IS animated when a searchBar is attached to a tableView. iOS now has an optional argument in setShowCancel, of setShowCancel(BOOL,{animated:true}) wherein the cancel button is animated in its hiding. If Android offers something similar, we probably should support it for parity's sake.",1
+"TIMOB-7786","02/22/2012 20:35:03","Android: Typos in Ti.Codec exception messages","In decodeNumber(), the exception code has mistakenly said ""encodeNumber"" instead of ""decodeNumber"". Also, the ""source"" parameter is referred to as ""src"" instead of ""source"".",1
+"TIMOB-8293","02/24/2012 02:51:35","iOS: Subsequently setting the html property of a webview does not show the changed html but shows blank content","h2. Problem In our app we create one instance of Ti.UI.WebView and reuse it for showing html content which is stored in a sql db. As the user navigates to different entries within a messages list, the new selected content is pushed into the webview by asigning the value to the html property of the webview. The first time the value is set, the content shows up as expected. If the value is set the second time the webview shows up empty. h2. Test case Create a fresh mobile project and replace the default app.js with the following code: {code:lang=javascript|title=app.js} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); // // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var button1 = Titanium.UI.createButton({ title:'open webview window', width:220, height:40 }); win1.add(button1); var winwebview = Titanium.UI.createWindow({ title:'Window with webview', backgroundColor:'#fff' }); var webview = Titanium.UI.createWebView({ }); winwebview.add(webview); var counter = 0; button1.addEventListener('click',function(e) { counter++; webview.html = '
Counter is: ' + counter + '
'; tab1.open(winwebview,{animated:true}); }); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} # Build an run the app in simulator. # Tap on the button ""open webview window"". # The webview shows the line ""Counter is: 1"". # Navigate back to Tab 1 and tap again on the button ""open webview window"". # The webview should show the line ""Counter is: 2"", but the webview shows up empty. With Titaniums SDK 1.8.0.1 and 1.8.1 this works as expected. ",1
+"TIMOB-7806","02/24/2012 13:44:25","Tooling: Bundle ACS (and potentially MQTT) module binaries with the MobileSDK ","We need to bundle the new ACS module alongside the MobileSDK. Android may also require a second MQTT module that the ACS module will depend on. A brief overview for how this should work: * The ACS (and MQTT) modules will be provided as zip binaries by the Modules team, preferably living under something like support/common * {{site_scons/package.py}} will need to be updated so those zips are extracted and live in the ""modules"" top level directory of the MobileSDK zip. This will ensure that when the MobileSDK zip is extracted, the modules are installed in the system directory as well h3. Testing 1. Download the two ti.* modules attached to this ticket (ignore bogus.zip). 2. Copy these two zips into titanium_mobile/support/module/packaged 3. Run scons to build the SDK. 4. Extract the SDK zip in dist/ and verify the file structure in modules/ matches as described in this ticket (see comments). ",0.5
+"TIMOB-7816","02/25/2012 19:37:42","Android: Ignore files that start with ._","On a Mac, some editors will generate a ._ file. When you compile an Android app, the android/compiler.py's make_function_from_file() function will error saying: {code} UnicodeDecodeError: 'utf8' codec can't decode byte 0xb0 in position 37: invalid start byte {code} Just need to ignore ._ files.",3
+"TIMOB-7824","02/27/2012 11:20:35","iOS: Autoupdate plist with custom font info","Currently iOS requires developers using custom fonts to manually update the Info.plist generated during a project build (or have a custom Info.plist). We should be able to automate this process rather than require it to be done by hand. h4. Testing ---- Create a project with custom fonts and build without updating the Info.plist, to see if the font loads.",5
+"TIMOB-7833","02/27/2012 19:16:16","Tooling: Add support for a ""common"" CommonJS module installation folder","With our current module system, modules must either be installed into a project or in the system Titanium folder. In both cases, modules are platform-specific compiled binaries (a static lib for iOS, shared lib for Android). It would be nice to allow pure Javascript / CommonJS modules in a common place that could simply be distributed as JS files, for example a {{common}} or {{commonjs}} folder under the system Titanium directory that would be analogous to today's {{iphone}} and {{android}} directories.",1
+"TIMOB-7862","03/02/2012 07:56:43","iOS: UIPopover background color","Previous to 5.0 there was no way to customize the UIPopover background color. From reading the docs and around the web since 5.0 people have been doing it. References: https://developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverController_class/Reference/Reference.html#//apple_ref/occ/instp/UIPopoverController/popoverBackgroundViewClass https://developer.apple.com/library/ios/#documentation/uikit/reference/UIPopoverBackgroundView_class/Reference/Reference.html#//apple_ref/occ/cl/UIPopoverBackgroundView http://stackoverflow.com/questions/5974439/customizing-the-uipopovercontroller-view-background-and-border-color http://stackoverflow.com/questions/8490261/change-color-navigation-controller-in-a-popover",1
+"TIMOB-7865","03/02/2012 11:45:48","Android: XML - On V8, parsing xml multiple times crashes the phone","Details: When running the app.js in SDK build 2.0.0.v20120302093154 for V8, the app will eventually crash and GC will be continuously called. See attachment 2.0_logcat.txt. And when running the app.js in SDK build 1.8.2 for V8, I get a out of memory exception. See attachment 1.8.2_logcat.txt. However, the app.js does not crash when running on Rhino for both builds. Steps to reproduce: 1. Create new project. 2. Replace app.js with attached app.js. 3. Run app. 4. Press 'load' until app crashes. Actual: App crashes. See attachments. Expected: The app should not crash.",0.5
+"TIMOB-7897","03/06/2012 13:50:48","Android: Memory leak by windows not properly cleaning up after close.","Windows appear to be leaking memory by not properly cleaning up after they have been closed. This only affects ""heavy"" windows that have their own activity. h3. Test Case: Opening a window and adding many child views. Run the application and click the button to open a window. Wait for an alert dialog to popup telling you its okay to back out now. Hit the back button to close out the window. Repeat this process. Expected: Memory usage should peak and remain steady. Actual: Memory usages constantly rises until out of memory crash occurs. {code:javascript} function mainViews() { var newWin = Ti.UI.createWindow({ navBarHidden: true }); Ti.API.info('****** mainViews function has started ******'); var views =[]; var view = null; for (var i=0; i < 500; i++) { view = Ti.UI.createView(); views.push(view); newWin.add(view); } newWin.open(); alert(""You may click back now.""); Ti.API.info('Titanium views created and added to array'); Ti.API.info('****** mainViews function has stopped ******'); } var win = Ti.UI.createWindow({ backgroundColor: ""white"" }); var button = Ti.UI.createButton({ title: ""create 5k views"" }); button.addEventListener(""click"", function(e) { mainViews(); Ti.API.info('Available memory: ' + Ti.Platform.availableMemory); }); win.add(button); win.open(); {code}",1
+"TIMOB-7948","03/09/2012 11:15:52","Android: Invalid column visibility when querying events in Ti.Android.Calendar","Here is the sample app from our Calendar TDoc that shows the error. The error seems to happen when {{getEventsInYear}} is called {code} var calendars = []; var selectedCalendarName; var selectedCalendarId; var pickerData = []; var win = Ti.UI.createWindow({ backgroundColor: 'white', exitOnClose: true, fullscreen: false, layout: 'vertical', title: 'Calendar Demo' }); var scrollView = Ti.UI.createScrollView({ backgroundColor: '#eee', height: 500, top: 20 }); var label = Ti.UI.createLabel({ backgroundColor: 'white', text: 'Click on the button to display the events for the selected calendar', textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER, top: 20 }); scrollView.add(label); var selectableCalendars = Ti.Android.Calendar.selectableCalendars; for (var i = 0, ilen = selectableCalendars.length; i < ilen; i++) { calendars.push({ name: selectableCalendars[i].name, id: selectableCalendars[i].id }); pickerData.push( Ti.UI.createPickerRow({ title: calendars[i].name }) ); if(i === 0){ selectedCalendarName = selectableCalendars[i].name; selectedCalendarId = selectableCalendars[i].id; } } var selectableCalendars = null; if(!calendars.length){ label.text = 'No calendars available. Select at least one in the native calendar before using this app'; } else { label.text = 'Click button to view calendar events'; var picker = Ti.UI.createPicker({ top:20 }); picker.add(pickerData); win.add(picker); picker.addEventListener('change', function(e){ for (var i = 0, ilen = calendars.length; i < ilen; i++) { if(calendars[i].name === e.row.title){ selectedCalendarName = calendars[i].name; selectedCalendarId = calendars[i].id; } } }); var button = Ti.UI.createButton({ title: 'View events', top: 20 }); win.add(button); button.addEventListener('click', function(e){ label.text = 'Generating...'; var currentYear = new Date().getFullYear(); var consoleString = ''; function print(s) { if (consoleString.length) { consoleString = consoleString + '\n'; } consoleString = consoleString + s; } var calendar = Ti.Android.Calendar.getCalendarById(selectedCalendarId); function printReminder(r) { var typetext = '[method unknown]'; if (r.method == Ti.Android.Calendar.METHOD_EMAIL) { typetext = 'Email'; } else if (r.method == Ti.Android.Calendar.METHOD_SMS) { typetext = 'SMS'; } else if (r.method == Ti.Android.Calendar.METHOD_ALERT) { typetext = 'Alert'; } else if (r.method == Ti.Android.Calendar.METHOD_DEFAULT) { typetext = '[default reminder method]'; } print(typetext + ' reminder to be sent ' + r.minutes + ' minutes before the event'); } function printAlert(a) { print('Alert id ' + a.id + ' begin ' + a.begin + '; end ' + a.end + '; alarmTime ' + a.alarmTime + '; minutes ' + a.minutes); } function printEvent(event) { if (event.allDay) { print('Event: ' + event.title + '; ' + event.begin.toLocaleDateString() + ' (all day)'); } else { print('Event: ' + event.title + '; ' + event.begin.toLocaleDateString() + ' ' + event.begin.toLocaleTimeString()+ '-' + event.end.toLocaleTimeString()); } var reminders = event.reminders; if (reminders && reminders.length) { print('There is/are ' + reminders.length + ' reminder(s)'); for (var i = 0; i < reminders.length; i++) { printReminder(reminders[i]); } } print('hasAlarm? ' + event.hasAlarm); var alerts = event.alerts; if (alerts && alerts.length) { for (var i = 0; i < alerts.length; i++) { printAlert(alerts[i]); } } var status = event.status; if (status == Ti.Android.Calendar.STATUS_TENTATIVE) { print('This event is tentative'); } if (status == Ti.Android.Calendar.STATUS_CONFIRMED) { print('This event is confirmed'); } if (status == Ti.Android.Calendar.STATUS_CANCELED) { print('This event was canceled'); } } var events = calendar.getEventsInYear(currentYear); if (events && events.length) { print(events.length + ' event(s) in ' + currentYear); print(''); for (var i = 0; i < events.length; i++) { printEvent(events[i]); print(''); } } else { print('No events'); } label.text = consoleString; }); } win.add(scrollView); win.open(); {code} Also make sure you add READ_CALENDAR and WRITE_CALENDAR permissions to your tiapp.xml: {code} {code} And finally, here is the trace: {code} /CursorWrapperInner(31255): Cursor finalized without prior close() E/DatabaseUtils(31274): Writing exception to parcel E/DatabaseUtils(31274): java.lang.IllegalArgumentException: Invalid column visibility E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.computeProjection(SQLiteQueryBuilder.java:588) E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.buildQuery(SQLiteQueryBuilder.java:403) E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:347) E/DatabaseUtils(31274): at android.database.sqlite.SQLiteQueryBuilder.query(SQLiteQueryBuilder.java:291) E/DatabaseUtils(31274): at com.android.providers.calendar.CalendarProvider2.handleInstanceQuery(CalendarProvider2.java:1015) E/DatabaseUtils(31274): at com.android.providers.calendar.CalendarProvider2.query(CalendarProvider2.java:840) E/DatabaseUtils(31274): at android.content.ContentProvider$Transport.query(ContentProvider.java:178) E/DatabaseUtils(31274): at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:112) E/DatabaseUtils(31274): at android.os.Binder.execTransact(Binder.java:338) E/DatabaseUtils(31274): at dalvik.system.NativeStart.run(Native Method) E/TiJSError(31255): (main) [141129,172202] ----- Titanium Javascript Runtime Error ----- E/TiJSError(31255): (main) [0,172202] - In pullRequests/1591.js:135,27 E/TiJSError(31255): (main) [0,172202] - Message: Uncaught Error: Invalid column visibility E/TiJSError(31255): (main) [0,172202] - Source: var events = calendar.getEventsInYear(currentYear); E/V8Exception(31255): Exception occurred at pullRequests/1591.js:135: Uncaught Error: Invalid column visibility {code}",1
+"TIMOB-7967","03/12/2012 20:49:12","Android: Replace Node.text with Node.textContent","For MobileWeb parity in 2.0, we need to deprecate the current {{Node.text}} property in our XML API, and rename it to {{textContent}}. We won't be fully implementing {{textContent}} from the DOM3 spec as it requires read-write access, and the traversal rules are slightly different than our current implementation. This is mainly for source level equivalence, until we have time to implement it properly.",1
+"TIMOB-7968","03/12/2012 20:50:28","iOS: Replace Node.text with Node.textContent","For MobileWeb parity in 2.0, we need to deprecate the current {{Node.text}} property in our XML API, and rename it to {{textContent}}. We won't be fully implementing {{textContent}} from the DOM3 spec as it requires read-write access, and the traversal rules are slightly different than our current implementation. This is mainly for source level equivalence, until we have time to implement it properly.",1
+"TIMOB-8077","03/14/2012 07:03:24","iOS: TableView - setContentInsets not working correctly, values assigned are not always respected","When using many or complex rows in a table view, in connection with a pull to refresh UI, the table does not always stay stuck down (with things like a reloading message showing). To reproduce, do the following: - Run the following code on device (simulator works fine) - Scroll down the table a bit. - scroll back up and try to do a pull to refresh a few times. The result: The table will not always stay ""pulled down"" by 60. sometimes it will, but more often it will be around 5. If however you pull down and hold the table down for about a second before releasing, it seems to work correctly. The code to re-create this issue is in the kitchen sink, I just am having it run with more rows to make the issue more clear... the issue is also clear when using more complex row layouts. {code} var win = Ti.UI.createWindow(); function formatDate() { var date = new Date(); var datestr = date.getMonth()+'/'+date.getDate()+'/'+date.getFullYear(); if (date.getHours()>=12) { datestr+=' '+(date.getHours()==12 ? date.getHours() : date.getHours()-12)+':'+date.getMinutes()+' PM'; } else { datestr+=' '+date.getHours()+':'+date.getMinutes()+' AM'; } return datestr; } var data = []; for(i=0; i<600; i++) { data.push({title:""Row ""+i}); } var lastRow = 4; var tableView = Ti.UI.createTableView({ data: data }); win.add(tableView); var border = Ti.UI.createView({ backgroundColor:""#576c89"", height:2, bottom:0 }); var tableHeader = Ti.UI.createView({ backgroundColor:""#e2e7ed"", width:320, height:60 }); // fake it til ya make it.. create a 2 pixel // bottom border tableHeader.add(border); var arrow = Ti.UI.createView({ backgroundImage:""../images/whiteArrow.png"", width:23, height:60, bottom:10, left:20 }); var statusLabel = Ti.UI.createLabel({ text:""Pull to reload"", left:55, width:200, bottom:30, height:""auto"", color:""#576c89"", textAlign:""center"", font:{fontSize:13,fontWeight:""bold""}, shadowColor:""#999"", shadowOffset:{x:0,y:1} }); var lastUpdatedLabel = Ti.UI.createLabel({ text:""Last Updated: ""+formatDate(), left:55, width:200, bottom:15, height:""auto"", color:""#576c89"", textAlign:""center"", font:{fontSize:12}, shadowColor:""#999"", shadowOffset:{x:0,y:1} }); var actInd = Titanium.UI.createActivityIndicator({ left:20, bottom:13, width:30, height:30 }); tableHeader.add(arrow); tableHeader.add(statusLabel); tableHeader.add(lastUpdatedLabel); tableHeader.add(actInd); tableView.headerPullView = tableHeader; var pulling = false; var reloading = false; function beginReloading() { // just mock out the reload setTimeout(endReloading,2000); } function endReloading() { // simulate loading for (var c=lastRow;c -65.0 && offset < 0) { pulling = false; var t = Ti.UI.create2DMatrix(); arrow.animate({transform:t,duration:180}); statusLabel.text = ""Pull down to refresh...""; } }); tableView.addEventListener('scrollEnd',function(e) { if (pulling && !reloading && e.contentOffset.y <= -65.0) { reloading = true; pulling = false; arrow.hide(); actInd.show(); statusLabel.text = ""Reloading...""; tableView.setContentInsets({top:60},{animated:true}); arrow.transform=Ti.UI.create2DMatrix(); beginReloading(); } }); win.open(); {code}",2
+"TIMOB-7987","03/14/2012 09:49:09","MobileWeb : Gradients - Various browsers support gradient backgrounds while others do not (e.g. Safari on iOS >= 5.0 does while Safari on iOS < 5.0 does not)","*Note this may not be a Titanium specific issue because obviously not all browsers support the same features* Steps to reproduce 1. Launch the sample app provided once on an iOS device with OS >= 5.0 and once on iOS device < 5.0 Actual result: Gradient backgrounds are shown on the buttons in iOS 5.0+, while they are not in iOS < 5.0 (Also not on Galaxy Tab 10.1 OS 3.0) Expected result: Gradient backgrounds are shown in both browsers",0
+"TIMOB-7995","03/14/2012 10:57:20","MobileWeb: Button: button selection only highlights the text and not the button","Steps to Reproduce: 1. Run the Button Module test TIMOB-6644 2. Click on the No image button Actual: Selection only highlights the text Expected: Should highlight the button",3
+"TIMOB-8048","03/15/2012 19:40:44","Android: removeEventListener does not work for the CI Builds","removeEventListener does not work on android, when used to remove and eventlistener on 'focus' event. Run the code below. Do the following: open app alert comes up - clear it click on Win 2's tab click on Win 1's tab Observed behavior: alert comes up again (the event listener wasn't removed during the call to onFocus ()). Expected behavior: the second alert should not come up (the event listener should have been removed during the call to onFocus()) Thinking that maybe it was because I was calling removeEventListener() from within the event listener function, I also added a button that should remove the event listener from the window. It doesn't work either. {code} var tabGroup = Ti.UI.createTabGroup(); var win1 = Ti.UI.createWindow({ backgroundColor: '#fff', title: 'Win 1' }); tabGroup.addTab(Ti.UI.createTab({ window: win1, title: win1.title })); var win2 = Ti.UI.createWindow({ backgroundColor: '#666', title: 'Win 2' }); tabGroup.addTab(Ti.UI.createTab({ window: win2, title: win2.title })); var onFocus = function () { alert('[focus] size: ' + win1.size.width + ', ' + win1.size.height); win1.removeEventListener ('focus', onFocus); } win1.addEventListener('focus', onFocus); var btn1 = Titanium.UI.createButton({ width: 200, height: 50, title: 'Click me', }); btn1.addEventListener('click', function(e) { win1.removeEventListener ('focus', onFocus); }); win1.add(btn1); tabGroup.open(); {code} ",2
+"TIMOB-8505","03/16/2012 10:22:16","Android: Module build.xml no longer compiles C++ source code in the ""jni"" directory","Marshall's post on using native libraries in an Android module (http://developer.appcelerator.com/blog/2011/01/titanium-and-the-android-ndk.html) states that you need to place C++ source files in the jni directory of the module project and they will be compiled into .so files and included in the module. This is not the case in version 1.8.2 of the SDK -- the build.xml file under TITANIUM_HOME/mobilesdk/osx/1.8.2/modules/android never looks in that directory. To get the described behavior, the following targets can be added to the module's build.xml file: {code:xml} {code} Ideally, these targets would be part of the SDK's build.xml. In the meantime, it would be good to update the blog post to indicate that it is out of date.",1
+"TIMOB-8066","03/16/2012 14:51:42","Android: xhdpi density folder for extra large screens is not working ","Adding res-notlong-port-xhdpi"" and other related xhdpi folders to android -> images folder does not work as the image is not taken from those folders. As per the Android Developer website, I tried to create a 640 x 960 resolution avd to test this issue for xhdpi. To test: 1. Create an AVD for 640 x 960 resolution for titanium to run on. (This link explains the resolution needed for different densities: http://developer.android.com/guide/practices/screens_support.html) *You might have to edit the already created AVD to appropriate resolution since Titanium creates a new AVD by itself (unless there is another way)* 2. Create any default app with res-long-port-xhdpi, res-long-land-xhdpi, res-notlong-port-xhdpi, res-notlong-land-xhdpi folders under android and add differen images to these folder to differentiate easily. (See Screenshot for the folder structure) 3. Run the app with the desired AVD. The starting screen image that appears is not of xhdpi but of mdpi folder. Please clarify about this issue. *Note: You would also need to set the tool-api-level and some other properties as below since the xhdpi has been added to android after api level 8.* {noformat} 8 {noformat} ",2
+"TIMOB-8076","03/19/2012 09:19:04","Android: V8: GC lag can cause crash on older devices","On older devices like Droid 2, GC lag cause result in a crash when: 1) alot of object are created resulting in high memory allocation on the java side 2) said objects are available for cleanup (no reference maintained in JS) 3) GC has not scanned yet due to the memory overhead on the V8 side not causing enough pressure on the GC We need a way to notify V8 that we are running low on memory so that a GC occurs sooner than V8 would normally do on it's own. A ticket has been linked that provides a fail case for this issue (original test case in ticket - not the one attached in the comments)",5
+"TIMOB-8094","03/19/2012 17:18:52","Android: App crashes on the device while uploading images, Memory issues","The app uses camera to click pictures, and upload to their server. Before uploading they perform image compression and resizing. Ti.imagefactory module is used for these purposes. The pictures are high resolution images, taken by a 8MP camera on the Motorola Droid X. The issue arises, when he uploads more than 1 image or multiple similar images or displaying the image in imageview. He gets ""Unable to load bitmap.Not enough memory.bitmap size exceeds VM budget."" error on the device. You can see the crash log here {code}03-19 10:32:54.837: E/dalvikvm-heap(3474): 5752604-byte external allocation too large for this process. 03-19 10:32:54.916: E/GraphicsJNI(3474): VM won't let us allocate 5752604 bytes 03-19 10:32:54.916: D/dalvikvm(3474): GC_FOR_MALLOC freed 0K, 47% free 9431K/17479K, external 11586K/13634K, paused 73ms 03-19 10:32:54.923: E/TiDrawableReference(3474): (main) [1277,430400] Unable to load bitmap. Not enough memory: bitmap size exceeds VM budget 03-19 10:32:54.923: E/TiDrawableReference(3474): java.lang.OutOfMemoryError: bitmap size exceeds VM budget 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.nativeCreate(Native Method) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.createBitmap(Bitmap.java:507) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.createBitmap(Bitmap.java:474) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.graphics.Bitmap.createScaledBitmap(Bitmap.java:379) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.view.TiDrawableReference.getBitmap(TiDrawableReference.java:558) 03-19 10:32:54.923: E/TiDrawableReference(3474): at ti.modules.titanium.ui.widget.TiUIImageView.setImage(TiUIImageView.java:736) 03-19 10:32:54.923: E/TiDrawableReference(3474): at ti.modules.titanium.ui.widget.TiUIImageView.processProperties(TiUIImageView.java:849) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.KrollProxy.setModelListener(KrollProxy.java:641) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.realizeViews(TiViewProxy.java:464) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.handleGetView(TiViewProxy.java:456) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.getOrCreateView(TiViewProxy.java:434) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.handleToImage(TiViewProxy.java:716) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.proxy.TiViewProxy.handleMessage(TiViewProxy.java:303) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.os.Handler.dispatchMessage(Handler.java:95) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.dispatchMessage(TiMessenger.java:318) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.dispatchPendingMessages(TiMessenger.java:303) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger$2.getResult(TiMessenger.java:188) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.sendBlockingMessage(TiMessenger.java:215) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.common.TiMessenger.sendBlockingRuntimeMessage(TiMessenger.java:143) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.kroll.KrollProxy.fireSyncEvent(KrollProxy.java:417) 03-19 10:32:54.923: E/TiDrawableReference(3474): at org.appcelerator.titanium.TiBaseActivity.onRestart(TiBaseActivity.java:830) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.Instrumentation.callActivityOnRestart(Instrumentation.java:1139) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.Activity.performRestart(Activity.java:3865) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.Activity.performResume(Activity.java:3876) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2191) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2228) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:994) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.os.Handler.dispatchMessage(Handler.java:99) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.os.Looper.loop(Looper.java:123) 03-19 10:32:54.923: E/TiDrawableReference(3474): at android.app.ActivityThread.main(ActivityThread.java:3806) 03-19 10:32:54.923: E/TiDrawableReference(3474): at java.lang.reflect.Method.invokeNative(Native Method) 03-19 10:32:54.923: E/TiDrawableReference(3474): at java.lang.reflect.Method.invoke(Method.java:507) 03-19 10:32:54.923: E/TiDrawableReference(3474): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 03-19 10:32:54.923: E/TiDrawableReference(3474): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 03-19 10:32:54.923: E/TiDrawableReference(3474): at dalvik.system.NativeStart.main(Native Method) 03-19 10:32:54.923: I/TiUIHelper(3474): (main) [8,430408] view does not have parent, calling layout {code} Created sample apps, using the ti.imagefactory module, but could not reproduce this issue. Also tested the code on Motorola Droid3, LG OptimusV but still could not reproduce the issue. ",3
+"TIMOB-8113","03/20/2012 11:25:42","Android: Ti.UI.WebView doesn't seem to load pages that try to open a new window","*Code* * app.js {code} var win = Ti.UI.createWindow(); var webview = Titanium.UI.createWebView({ url: 'index.html' }); win.add(webview); win.open(); {code} * index.html {code} Click to load Google in a new window. Click to load Google in the same window. {code} *Expected behavior* When you click on either of the two links, it should load up Google. *Actual behavior* What actually happens, is that the first link doesn't seem to do anything, only the second one seems to work. *Notes* -Only tested on a HTC Sensation and Samsung Galaxy S2, both giving me the same result. -Same result, whether I use the Rhino or V8 engine. -When testing the same code on the iOS simulator, both links seem to work fine. -The issue is 'target=""_blank""' without this, it seems to work fine. -HD ticket: http://support-admin.appcelerator.com/display/APP-257637",3
+"TIMOB-8127","03/20/2012 15:31:37","iOS: You can't call the Facebook Authorization from a Dialog (not even with app events)","h4. Problem Description Customer adds a Facebook.authorize(); from an app, without any results. h4. Actual Results The function never goes and logs into facebook. h4. Expected results The app should be able to login into fb h4. Test Case 1. Create a new mobile project 2. Add the code in the example to a button 3. Run it {code} wishToShareViaFacebook.addEventListener('click', function(e){ if (e.index == 0) { if (Titanium.Facebook.loggedIn) { var data = { link: ""www.jokwear.com"", name: ""Great Apparel, Great Message"", message: ""Check out JokWear!"", caption: ""Follow your favourite athletes, support other athletes"", picture: ""http://jokwear.com/images/joklogo.gif"", description: ""JokWear is a clothing brand that not only touts excellent fabric but also a social movement that you can achieve anything you set your mind to."", test: [ {foo:'Encoding test', bar:'Durp durp'}, 'test' ] }; Titanium.Facebook.requestWithGraphPath('me/feed', data, 'POST', showRequestResult); } else { Titanium.Facebook.authorize(); } } }); {code} h4. Extra info There is a bug where platform didn't want to launch the FB authorize from a dialog, since it's bad practice to get a dialog from a dialog. So, we recommended the customer to add an app event catching this, closing the dialog and then adding the other dialog. It's not runnning. The customer creates a small function doing a setTimeout, and that way, the function it's called properly within the if. ",1
+"TIMOB-8136","03/20/2012 22:38:08","iOS: Coverflow - @2x images don't have a very clear retina display","h6.Issue Images in the carrousel don't have a very clear retina display. It does show the @2x image but there's not much difference in the quality of the image. h6.Tested on iPhone 4 iOS simulator retina h6.Current behavior Same image is shown both in the coverflow and in an imageview, the rendered final image shows differently. h6.Steps to reproduce Import Resources.zip into a Studio project. Attached ZIP. ",2
+"TIMOB-8158","03/21/2012 10:58:13","iOS: Ti.UI.iPad.DocumentViewer add a property to reference the 'done' button","There doesn't seem to be a way to reference the 'done' button of a Ti.UI.iPad.DocumentViewer object. In other words, the customer would like to be able to call the 'done' button programmatically, something like DocumentViewer.close(); Currently there is no way of doing this. HD ticket: http://support-admin.appcelerator.com/display/APP-658343",0
+"TIMOB-8173","03/21/2012 18:46:22","iOS: Rejection for use of deprecated UDID property","We have had reports of two Apple rejections today for Titanium apps submitted for clients using an older 2.0 CI build and 1.8.2. The rejection is based on the use of deprecated UDID property. Was confirmed by a Titanium developer with at least one other native dev who got rejected: https://twitter.com/#!/steipete/status/182640647113687040 This seems to be a very recent occurrence, so little data is available at this time. This will require investigation and validation, along with a measured approach at dealing with moving totally over to the new UDID generation mechanism.",2
+"TIMOB-8185","03/22/2012 10:47:49","iOS: TextField loses focus if resized","h2. Problem TextField in a TableViewRow loses focus if it has been resized after being focused h2. Code and steps to reproduce {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ title:'pippo', backgroundColor:'white' }); function addRow(addTextArea) { var row = Ti.UI.createTableViewRow({height:200}); var $tTF = Ti.UI.createTextField({ height: 30, top : 30, width: 100, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_ROUNDED }); $tTF.addEventListener('focus',function(_e){ Ti.API.error(""focus ""+_e.source.height); Ti.API.error(_e); _e.source.animate({height: _e.source.height*2}); }); row.add($tTF); row.selectionStyle = Ti.UI.iPhone.TableViewCellSelectionStyle.NONE; row.className = 'control'; return row; } // create table view data object var data = []; for (var x=0;x<1;x++) { if (x==1){ data[x] = addRow(true); } else { data[x] = addRow(); } } var tableView = Ti.UI.createTableView({ data:data, style: Titanium.UI.iPhone.TableViewStyle.GROUPED }); win.addEventListener('focus', function() { Ti.API.info('window focus fired'); }); win.add(tableView); win.open(); {code} To reproduce: - Run the app and click the textField: textField is animated increasing in height. Result: focus on textField is lost. h2. Additional notes Ticket associated: http://support-admin.appcelerator.com/display/APP-995689/conversation/read_all",5
+"TIMOB-8231","03/23/2012 11:59:05","TiAPI: investigate addition of action bar","Investigate the addition of the action bar feature that was introduced by Android. Can this be done in a cross platform way (should it be platform specific)? Where should this live namespace wise, what should the feature set be, etc.",5
+"TIMOB-8241","03/23/2012 12:23:31","Core: Define Java coding standards","Define a document that outlines all Java coding standards any Java written for Appcelerator (internal or community contributions) should adhere to. This should represent more than syntax, but general design approaches and process flow. This document will be focused on language only. Platform Specific information will be contained inside another document.",5
+"TIMOB-8243","03/23/2012 12:34:01","Android: ScrollView - If a view is added to a scrollview, the view will not fill the screen","Steps to reproduce: 1. Run the following code on Android: {code} //Create a Ti.UI.View with scroll view and do not put any content var win = Ti.UI.createWindow(); win.backgroundColor = 'white'; var label = Ti.UI.createLabel({ text: 'View Size is: ', top: 20, left: 10, height: Ti.UI.SIZE, width: Ti.UI.SIZE, color: 'black' }); var scrollView = Titanium.UI.createScrollView({ contentHeight:'auto', contentWidth:'auto', showVerticalScrollIndicator:true, showHorizontalScrollIndicator:true }); var view = Ti.UI.createView(); var view2 = Ti.UI.createView({ backgroundColor:'red' }) scrollView.add(view2); win.addEventListener('postlayout', function layoutHandler(e) { win.removeEventListener('postlayout', layoutHandler); label.text = 'ScrollView\'s height and width: ' + scrollView.size.height + 'x' + scrollView.size.width + '\n' + 'Screen\'s height and width: ' + win.size.height + 'x' + win.size.width; win.addEventListener('postlayout', layoutHandler); }); win.add(scrollView); win.add(view); view.add(label); win.open(); {code} Actual: A white view appears. Expected: A red view should fill the screen similarly to iOS. See attachments",2
+"TIMOB-8301","03/25/2012 18:29:45","Android: Unable to create mapview","The user is having a tabbedview application. And he is trying to access mapview, by calling the Ti.map.createview. I dont have the complete code sample, but the mapview snippet, and the crash log. Here is the code {code} to setup tabs: app.tabs.stores = Ti.UI.createTab({ title:'Stores', icon:'/images/nav_icons/stores.png', tabIndex:nextTabIndex++ }); app.tabs.stores.window = gs.presenter.createStoreLocator(app.tabs.stores,{hideTabs:false}).window; tabGroup.addTab(app.tabs.stores); later, in the presenter: MapView = Ti.Map.createView({ regionFit:true, userLocation:false, visible:false }); mapView = MapView; mapView.left = 321; mapView.top = 45; // 44 (search) mapView.height = viewHeight; mapView.width = gs.ui.screenWidth; mapView.addEventListener('regionChanged', regionChanged); mapView.addEventListener('click', annotationClick); window.add(mapView); {code} i have attached the crash log.",2
+"TIMOB-8302","03/25/2012 19:11:43","Android: official support for Holo Themes ","h2. Request description Customer is asking for supporting officially Holo Themes: http://developer.android.com/design/style/themes.html h2. Additional notes Ticket request: http://support-admin.appcelerator.com/display/APP-839258 ",5
+"TIMOB-8303","03/26/2012 09:28:50","iOS: Text Field/Area needs hasText method","h2. Problem TextField and TextArea hasText() method not functioning. h2. Test Case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ backgroundColor : 'white', exitOnClose : true, fullscreen : false, layout : 'vertical', title : 'hasText Demo' }); var textField = Ti.UI.createTextField({ color: '#336699', backgroundColor:'#eee', top: 10, left: 10, width: 250, height: 60, borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED }); win.add(textField); var textArea = Ti.UI.createTextArea({ borderStyle: Ti.UI.INPUT_BORDERSTYLE_ROUNDED, backgroundColor:'#eee', color: '#336699', top: 10, left: 10, width: 250, height: 200 }); win.add(textArea); win.open(); textField.addEventListener('change', function(e){ Ti.API.info('hasText? ' + e.source.hasText()); }); textArea.addEventListener('change', function(e){ Ti.API.info('hasText? ' + e.source.hasText()); }); {code}",0.5
+"TIMOB-8306","03/26/2012 12:20:43","Android: Upgrade V8 to 3.9.24","We should upgrade to a newer version of V8. One of the main new features that has been implemented is incremental GC. This also exposes some additional API that can help us better tune the GC. Targeting V8 version 3.9.24 (3.9 stable branch).",3
+"TIMOB-8308","03/26/2012 12:40:01","Android: Javascript array [] seems to have some inconsistence behavior compared to iOS","*Code* Attached with this ticket. *Expected behavior* When you tap on the button, DDMS should show the following in the output: {code} [INFO] print_object > [object Object] [INFO] object data: [object Object] [INFO] object data.screen_name: bhushan,bhaskar,deore [INFO] object data.screen_name[0]: bhushan {code} *Actual behavior* What it actually prints out is the following: {code} INFO/TiAPI(4756): print_object > {screen_name=[Ljava.lang.Object;@40576ad0, idea_title=[Ljava.lang.Object;@40576b18} INFO/TiAPI(4756): object data: [object Object] INFO/TiAPI(4756): object data.screen_name: undefined {code} *Notes* -As you can see, it doesn't even print out 'object data.screen_name[0]', since the array itself seems to be 'undefined'. -The expected behavior is what I get from the iOS simulator's output. -Only tested on the iOS simulator and HTC Sensation 4G running 2.3.x. -Marked as a parity issue, not sure if this is correct, please edit the ticket as appropriate. -HD ticket: http://support-admin.appcelerator.com/display/APP-927227",1
+"TIMOB-8314","03/26/2012 16:26:27","iOS: Close event is not firing when closing a window","h4. Problem description I have a NavigationGroup, and two windows. Intermittently, when the second window is closed, the first window goes comatose (won't respond to any clicks). h4. Actual results the window is not throwing the close event when closing. h4. Expected results the window should throw the close event when closing h4. Test case 1. Create a mobile project 2. Add this three files {code:title=app.js|borderStyle=solid} var FirstWindow=Ti.UI.createWindow({ url:'MOMain.js', layout:'vertical', navBarHidden:false }); Ti.App.NavGroup=Ti.UI.iPhone.createNavigationGroup({window:FirstWindow}); var NavBase=Ti.UI.createWindow(); NavBase.add(Ti.App.NavGroup); NavBase.open(); // this opens the ""root"" window, which is FirstWindow, automatically {code} {code:title=MOMain.js|borderStyle=solid} var MainWin=Ti.UI.currentWindow; function OnFocus(evt) { if (evt.source == MainWin) { Ti.App.CurrentWindow=MainWin; } } MainWin.title='Here is something'; Ti.App.CurrentWindow=MainWin; MainWin.addEventListener('focus',OnFocus); function SetupButtonClick() { var SecondWin=Ti.UI.createWindow({ url:'MOSetup.js', layout:'vertical', navBarHidden:false }); Ti.App.NavGroup.open(SecondWin,{animated:true}); } var SetupButton=Ti.UI.createButton({width:200, height:100, title:'Hit Me'}); SetupButton.addEventListener('click',SetupButtonClick); MainWin.add(SetupButton); {code} {code:title=MOMain.js|borderStyle=solid} var Win2=Ti.UI.currentWindow; function HandleiPhoneCloseEvent() { if (Ti.App.DevelopmentMode) Ti.API.info('# Window HandleiPhoneCloseEvent fired'); Win2.removeEventListener('close',HandleiPhoneCloseEvent); Win2=null; // attempt to release the window's memory } Win2.title='Window 2'; Ti.App.CurrentWindow=Win2; Win2.addEventListener('close',HandleiPhoneCloseEvent); // catches the iPhone NavGroup back button close {code} 3. Run the app 4. Click on the ""Hit Me"" button 5. Click the navgroup's back button 6. Try to click on the ""Hit Me"" button again h4. Extra info This seems to be timing dependent, so you may have to repeat the 2 clicks several times. I can make it happen in under 30 seconds...usually within 5 seconds. My best reproduction comes by waiting 2.5 seconds before clicking the back button. If you have trouble reproducing this, vary the time between seeing the second window and clicking the back button (faster and then slower). After some investigation, I can see that the 'close' event of the second window never fires when the problem occurs (neither does the focus event of the first window). This seems to point to a serious flaw. In a larger app, the failure occurs 80% of the time. Our app is totally dead in the water because of this, and we need to release it soon. Can you please take a look into this? Please note that I've reduced this down about as far as possible, while still demonstrating the error. Removing any of the references to Ti.App or removing any of the event listeners hides the problem, but all of my apps are dependent on these.",3
+"TIMOB-8362","03/27/2012 13:08:24","Android: Ti.UI.createScrollView sizing incorrectly in a vertical layout","h2.Problem Setting Ti.UI.createScrollView.height to Ti.UI.SIZE causes the scrollView to take up the entire screen. If navBarHidden:true is set in app.js, a scrollView whose contents are minor will now scroll. This did not occur in Android 2.2. h2.Steps to Reproduce # Make a project with the below app.js. # Run in Android 4.0 emulator You will see that most of the screen (excluding the custom navbar) is red. If you click and drag, you will see it scroll even though the components are very minor. One other point of interest, I added a label at the bottom of the window, but it is not visible since the scrollview wants to take up the entire parent. {code:title=Bar.java|borderStyle=solid} var win = Ti.UI.createWindow({ backgroundColor: '#7B6700', exitOnClose:true, layout:'vertical', navBarHidden:true }); var NavBarView = Ti.UI.createView({height: '25dp', top:0, backgroundColor: 'green', width:'100%'}); var View1 = Ti.UI.createScrollView({left:'3dp', right:'3dp', height: Ti.UI.SIZE, showVerticalScrollIndicator:true, scrollType:'vertical', layout:'vertical', backgroundColor: 'red', showHorizontalScrollIndicator:false, touchEnabled: true }); var button = Ti.UI.createButton({title: 'Click', width: '100dp', height: '50dp' }); button.addEventListener('click', ButtonClick); function ButtonClick(e) { Ti.API.info('View1 height: ' + View1.size.height); } Label1 = Ti.UI.createLabel({text:'Label 1'}); View1.add(button); win.add(NavBarView); win.add(View1); win.add(Label1); win.open(); {code}",3
+"TIMOB-8332","03/27/2012 14:14:58","Android: tableView textField focus is lost while typing","h2. Problem description TableView textField loses focus when typing in. h2. Steps to reproduce Create a tableView and a tableViewRow with a textField. Click on the textField and start typing some text Result: after the first character, focus on the textField is lost. {code:lang=javascript|name=app.js} var win = Ti.UI.createWindow({ backgroundColor:'black' }); var data = []; var tableview; var row = Ti.UI.createTableViewRow({ clickName: 'row' }); var textfield = Titanium.UI.createTextField({ width: '80%', height: 80, color: '#000', returnKeyType: Titanium.UI.RETURNKEY_DONE, enableReturnKey: true, keyboardType: Titanium.UI.KEYBOARD_ASCII, autocorrect: false, hintText: 'Enter text Field', textAlign: 'left', clearOnEdit: false, borderStyle: Titanium.UI.INPUT_BORDERSTYLE_ROUNDED, clearButtonMode: Titanium.UI.INPUT_BUTTONMODE_ONFOCUS, leftButtonMode: Titanium.UI.INPUT_BUTTONMODE_ALWAYS }); textfield.font = { fontSize: '15sp', fontFamily: 'Arial' }; textfield.autocorrect = true; textfield.borderStyle = Titanium.UI.INPUT_BORDERSTYLE_NONE; row.add(textfield); data = [row]; tableview = Titanium.UI.createTableView({ data: data, rowBackgroundColor: 'white', }); win.add(tableview); win.open(); {code} h2. Additional notes Ticket associated: http://support-admin.appcelerator.com/display/APP-682796",3
+"TIMOB-8342","03/27/2012 21:47:28","Android: keyDispatchingTimedOut when trying to resume an app from background to foreground","*Code* I personally would say majority of Titanium Android apps, but for this ticket, please try it with the KitchenSink app. *Expected behavior* When you put an app into the background, and bring it back into the foreground, it should work perfectly fine. *Actual behavior* The app seems to show a black background for 1-2 seconds and then restarts. *Steps to reproduce* I can reproduce this issue 3 out of 5 times, by doing the following: *1.* If you have the KitchenSink app open in memory from before, kill it. We want to make sure we start from a clean slate. *2.* Make sure you have your USB cable connected to your laptop and phone. *3.* Run the KitchenSink app, wait for it to load and press the home button (don't press the back button, but instead the home button!) *4.* Run a few other apps in the background, I ran 'Gmail', 'Contacts', 'Internet', 'Peep', 'Places', 'Stocks' and 'Market'. It's important that you press the home button and NOT the back button! (NOTE if it doesn't work for you the first time, try opening more or even less apps, it might make a difference, depending on the device's specs). *5.* Once you have some apps running in the background, make sure you are back on the main home screen. *6.* Press the power button (lock your screen, turn the screen off, but don't power the device off!) *7.* Unplug the USB cable. *8.* Unlock your phone. *9.* Press on the KitchenSink app icon. *10.* Expect to see a black background for a second or two and then it will restart the app. *11.* If you don't, repeat from step 1. *Notes* -Different apps behave differently. The KitchenSink app, for example, seems to show a black background for 1-2 seconds and then restart the whole app. Other apps, such as Mister (from Google Play), actually shows a black screen and never continues to do anything else. The Jiffy Lube app, restarts and has the loading screen image visible as the background border. -KitchenSink was packaged with a 2.0 CI build. -Mister on Google Play is packaged with a 1.9.0.v20120209110134 build. -Jiffy Lube on Google Play is packaged with the 1.8.2 build. -If it doesn't work the first time, please keep trying for a while. Sometimes it takes a few tries, before you can reproduce this issue. Also try to restart your device, so all other apps are unloaded from memory. Try to open a few more apps, or maybe even less apps, it should eventually be reproducible. -Only tested on a HTC Sensation 4G, running Android 2.3.x.",1
+"TIMOB-8368","03/28/2012 16:17:42","iOS: soft keyboard behavior during orientation change is now different across handheld devices","Description: While writing bug TIMOB-8363 we checked the behavior of this iOS feature on a variety of devices and found new behavior but unique in all of them. For the 4.0.2 device, the keyboard is not rendered correctly during rotation (see TIMOB 8363) On 4.3.5 when starting with the soft keyboard on screen, on orientation change, the keyboard animates off-screen then is redrawn after the UI has handled the orientation change. This occurred on both portrait to landscape and landscape to portrait orientation changes. On iPod 5.1 the same behavior like on iPod 4.3.5, but this occurs only when making a portrait to landscape orientation change. For landscape to portrait orientation changes, the soft keyboard does not leave the screen during the orientation change, it simply rotates with the other UI elements. Steps to reproduce: 1) Using SDK 2.0.0.v20120328000206 build and install KS 2) Bring up the soft KB 3) Rotate the device Result: All devices show unique behavior, but in general there is a KB redraw. The older behavior was that the KB stayed on screen and rotated with the UI. Expected: The KB stays on screen and rotates with the UI. Notes: Does not occur with 1.8.2",1
+"TIMOB-8383","03/28/2012 17:47:11","iOS: Feature to add a property to detect if keyboard is being displayed or not","It has been requested to add a new feature to check if soft keyboard on the device is displayed or not. ",1
+"TIMOB-8414","03/29/2012 11:37:16","Android: Debugger - On V8, JNIUtil error messages appear when debugging with breakpoints","Steps to reproduce: 1. Unzip and import attachment 2. From https://wiki.appcelerator.org/display/tp/Debugger+Test+Plan, execute test case 1013 Actual: After step 9, the following error messages appear: {code} E/JNIUtil ( 398): !!! Unable to convert unknown Java object class 'org.appcelerator.kroll.KrollRuntime$1' to Js value !!! E/JNIUtil ( 398): !!! Unable to convert unknown Java object class 'org.appcelerator.kroll.KrollRuntime$1' to Js value !!! E/JNIUtil ( 398): !!! Unable to convert unknown Java object class 'org.appcelerator.kroll.KrollRuntime$1' to Js value !!! {code} Even though these error messages appear, it does not seem to affect the debugger i.e. the debugger does not terminate and I am still getting expected results from the debugger test plan. Expected: Error messages should not appear. Note: * The error messages do not appear in 1.8.2 * Only tested in v8. Did not test in rhino. * The error messages appear only when using breakpoints.",0.5
+"TIMOB-8417","03/29/2012 12:17:54","iOS: Textfield in a scrollview scrolls if bluetooth keyboard is connected to iPad","h3. Code h1. Please test on the iPad device {noformat} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var field = Ti.UI.createTextField({ hintText: 'password', color:'#666', width:'94%', left: '3%', top: 140, width: '50%', height: 45, borderRadius:0, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_BEZEL, passwordMask: true }); var scroll = Ti.UI.createScrollView({ left: 11, top: 12, width: 433, height: 390, contentHeight:'auto', contentWidth: 'auto', }); scroll.add(field); win.add(scroll); win.open(); {noformat} h3. Expected Behavior Clicking on the textField should not scroll it up when a bluetooth keyboard is connected to the iPad. h3. Actual Behavior On connecting the keyboard and clicking on the textfield, the textfield scrolls up as if the soft keyboard is present.",1
+"TIMOB-8418","03/29/2012 12:35:59","iOS: AudioPlayer is failing for some mp3, even if are in a supported format/encoding.","h4. Problem Description This doesn't seem to work for me, the mp3 plays fine via a web browser though. The code is correct so internally it doesn't like the file format. Is there a reason for this or something I can do (including encoding the audio differently) so that it's compatible. 90% of the audio files I encode all work, it's only a small number that don't and they are encoded the same way always. Replacing the audio file with something else works fine. This is the last stumbling block to release my app. h4. Actual Results One file it's working, one it's not. EVen if they are encoded in the same way. h4. Expected results Similar encoded mp3 files should play just fine h4. Test Case 1. Create a new mobile Project 2. Add this code {code} var win = Ti.UI.createWindow(); var vurl = ""http://www.voxsci.com/turtle2.mp3""; Ti.API.info(vurl); var streamer = Titanium.Media.createAudioPlayer({ allowBackground: true, url:vurl, preload:true }); streamer.start(); Ti.API.info(""Audio started""); win.open(); {code} 3. If you change the vurl to ""http://www.voxsci.com/turtle1.mp3"", it will work just fine. h4. Extra info I checked the files, they are similar: Mono, 44100hz, 32 bits float and they work in browser and audacity. ",2
+"TIMOB-9153","03/29/2012 14:37:17","Android: Deployment: Android Emulator intermittently fails to launch app after timed out","Emulator launches and fails to load app with timed out log: [INFO] logfile = /Users/dhyde/Documents/Titanium Studio 2.0.0 Workspace/NewProject/build.log [INFO] Building NewProject for Android ... one moment [INFO] Titanium SDK version: 2.0.0 (03/28/12 18:32 7c5487f) [ERROR] Timed out waiting for emulator to be ready, you may need to close the emulator and try again Steps to Reproduce: 1. Create project, launch on emulator. Expected Result: App should launch. Actual Result: Intermittently app does not install. Timed out error.",2
+"TIMOB-8425","03/29/2012 14:53:48","iOS: Textfield in scrollview does not slide back to original position on blur","h3. Code Test this code in landscape orientation {noformat} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var formboxLeft = Ti.UI.createView({ backgroundImage:'bg-white-box--with-shadow.png', left: 20, top: 265, width: 460, height: 420, }); var field = Ti.UI.createTextField({ hintText: 'password', color:'#666', width:'94%', left: '3%', top: 140, width: '50%', height: 45, borderRadius:0, borderStyle:Titanium.UI.INPUT_BORDERSTYLE_BEZEL, passwordMask: true }); var scroll = Ti.UI.createScrollView({ left: 11, top: 12, width: 433, height: 390, contentHeight:'auto', contentWidth: 'auto', }); scroll.add(field); formboxLeft.add(scroll); win.add(formboxLeft); win.open(); {noformat} h3. Expected Behavior Clicking on the textfield should bring up the keyboard and on textfield blur (keyboard down), the textfield should scroll back to original position h3. Actual Behavior Textfield does not scroll back to original position and there is a gap that can be seen between the textfield and the border of the scrollview.",1
+"TIMOB-8428","03/29/2012 16:23:11","iOS: Project does not rebuild when new modules are added to tiapp.xml","Noted by Jeff H during a demo. Note that these steps _do_ appear to work for me, so I'm not sure if this was fixed already, or if there is a nuance I'm missing in the reproduction case. # Build an iOS project # Edit app.js to require the module # Add a new module to the project and edit the tiapp.xml manually to add the module # Rebuild the project. The app fails to run because it can't find the module. Doing a ""Project > Clean"" fixes it. In speaking with Steven, it appears that platform needs to keep track of the last time the tiapp.xml was touched to know if it needs to do a rebuild.",5
+"TIMOB-8431","03/29/2012 17:50:21","iOS: 4.3: KitchenSink: Base UI > Views > Map View: mapview annotation view does not appear","When KitchenSink > UI > Views > Map View is run, the annotation view (white box with title and subtitle) is not displayed on mapview load. However, clicking the annotation pin will correctly display the annotation view. Otherwise, the annotation view correctly displays on mapview load on the iPad3 5.1 and iPad/iPhone Simulator 5.0. This is a regression, as it works on iPad/iPhone Simulator 4.3 using SDK 1.8.2. This is not directly related to https://jira.appcelerator.org/browse/TIMOB-5305, as the bug is fixed on the iPad 4.3 device and simulator. Steps to Reproduce: 1. Run KitchenSink > UI > Views > Map View on iOS. Expected Result: Annotation view should be visible. Actual Result: Annotation view not visible.",1
+"TIMOB-8437","03/30/2012 08:14:28","Android: TextField layout bug on tablet","h6.Issue When using the texfield on android tablet in the following way, the background of the textfield and its cursor becomes invisible. Modal property true should cause the issue. h6.Tested on Droid Razr 2.3.5 > non affected Asus Transformer Tf101 with honeycomb(3.1) > affected h6.Repro sequence {code} /** * @author Carlo Blanco Benitez */ var win = Ti.UI.createWindow({ backgroundImage:'guide_fond_notice.png',//backgroundImage attached navBarHidden:true, exitOnClose:true, //modal:true,//having modal enabled backgroundColor:'black', top:'0dp', left:'0dp', right:'0dp', bottom:'0dp' }); var wrapper = Ti.UI.createView({ top:'0dp', left:'0dp', right:'0dp', bottom:'0dp' }); win.add(wrapper); var textField = Ti.UI.createTextField({ color:'black', width:'100dp', height:'50dp', returnKeyType: Titanium.UI.RETURNKEY_SEARCH, autocorrect:false }); wrapper.add(textField); win.open(); {code} ",3
+"TIMOB-8439","03/30/2012 10:05:24","Android: Unable to get any results when pulling events by date range","h6.Issue Exception is thrown as Android is unable to get any results when pulling events by date range h6.Tested on sdk-version: 2.1.0.v20120329000337 h6.Runtime engines Same thing happens with V8 and Rhino. h6.Device Galaxy Tab 7 Plus model GT-P6210 Android version 3.2 Kernel 2.6.36-P6210UEKJC-CL567728 se.infra@SEI-20 #3 h6.Repro sequence {code} // this sets the background color of the master UIView (when there are no windows/tab groups on it) Titanium.UI.setBackgroundColor('#000'); var win = Titanium.UI.createWindow({ title:'Calendar', backgroundColor:'#fff' }); win.open(); var startDate = new Date(); startDate.setFullYear(startDate.getFullYear()-1,0,1); Ti.API.info('startDate: '+startDate); var endDate = new Date(); endDate.setFullYear(endDate.getFullYear()+1,0,1); Ti.API.info('endDate: '+endDate); function showCalendars(calendars) { for (var i = 0; i < calendars.length; i++) { Ti.API.info(calendars[i].name); Ti.API.info(JSON.stringify(calendars[i])); } } Ti.API.info('ALL CALENDARS:'); showCalendars(Ti.Android.Calendar.allCalendars); Ti.API.info('SELECTABLE CALENDARS:'); showCalendars(Ti.Android.Calendar.selectableCalendars); var out = []; Ti.API.info('TRY TO GET EVENTS IN ALL CALENDARS:'); var calendars = Ti.Android.Calendar.allCalendars Ti.API.info(JSON.stringify(calendars)); for (var i=0; i < calendars.length; i++) { Ti.API.info(JSON.stringify(calendars[i])); try { var cal_events = calendars[i].getEventsBetweenDates(startDate,endDate); for (var j=0; j < cal_events.length; j++) { out.push(cal_events[j]); }; } catch(err) { Ti.API.error(""ERROR ""+err); } }; Ti.API.info('TRY TO GET EVENTS IN SELECTABLE CALENDARS:'); var calendars = Ti.Android.Calendar.selectableCalendars Ti.API.info(JSON.stringify(calendars)); for (var i=0; i < calendars.length; i++) { Ti.API.info(JSON.stringify(calendars[i])); try { var cal_events = calendars[i].getEventsBetweenDates(startDate,endDate); for (var j=0; j < cal_events.length; j++) { out.push(cal_events[j]); }; } catch(err) { Ti.API.error(""ERROR ""+err); } }; Ti.API.info('ALL THE EVENTS:'); Ti.API.info(JSON.stringify(out)); {code} h6.Console output {code} 03-30 10:49:38.935: I/TiApplication(23751): (main) [98,98] Titanium 2.1.0 (2012/03/29 00:04 ac3852d) 03-30 10:49:38.945: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.955: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.960: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.975: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:38.995: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.010: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.025: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.035: D/dalvikvm(23751): GC_CONCURRENT freed 281K, 6% free 6505K/6919K, paused 1ms+1ms 03-30 10:49:39.040: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.055: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.075: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.080: D/dalvikvm(23751): Trying to load lib /data/data/info.rborn.calendar/lib/libstlport_shared.so 0x4079b9e0 03-30 10:49:39.080: I/TiApplication(23751): (main) [146,244] Titanium Javascript runtime: v8 03-30 10:49:39.080: D/dalvikvm(23751): Added shared lib /data/data/info.rborn.calendar/lib/libstlport_shared.so 0x4079b9e0 03-30 10:49:39.080: D/dalvikvm(23751): No JNI_OnLoad found in /data/data/info.rborn.calendar/lib/libstlport_shared.so 0x4079b9e0, skipping init 03-30 10:49:39.080: D/dalvikvm(23751): Trying to load lib /data/data/info.rborn.calendar/lib/libkroll-v8.so 0x4079b9e0 03-30 10:49:39.090: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.090: I/TiRootActivity(23751): (main) [0,0] checkpoint, on root activity create, savedInstanceState: null 03-30 10:49:39.095: D/dalvikvm(23751): Added shared lib /data/data/info.rborn.calendar/lib/libkroll-v8.so 0x4079b9e0 03-30 10:49:39.105: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.120: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.140: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.140: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.140: I/LiveWallpaper(2895): Engine.onVisibilityChanged() - false 03-30 10:49:39.140: I/SurfaceFlinger(2698): id=1870 Removed com.android.launcher/com.android.launcher2.Launcher idx=2 Map Size=3 03-30 10:49:39.150: I/SurfaceFlinger(2698): id=1870 Removed com.android.launcher/com.android.launcher2.Launcher idx=-2 Map Size=3 03-30 10:49:39.390: E/TiApplication(23751): (KrollRuntimeThread) [298,298] APP PROXY: ti.modules.titanium.app.AppModule@407b5cd0 03-30 10:49:39.485: I/TiAPI(23751): startDate: Sat Jan 01 2011 10:49:39 GMT+0100 (CET) 03-30 10:49:39.485: I/TiAPI(23751): endDate: Tue Jan 01 2013 10:49:39 GMT+0100 (CET) 03-30 10:49:39.485: I/TiAPI(23751): ALL CALENDARS: 03-30 10:49:39.495: I/TiAPI(23751): My calendar 03-30 10:49:39.495: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.495: I/TiAPI(23751): dan.tamas.tst@gmail.com 03-30 10:49:39.495: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.495: I/TiAPI(23751): dan tamas 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.500: I/TiAPI(23751): test 1 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.500: I/TiAPI(23751): test 1 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.500: I/TiAPI(23751): test 2 03-30 10:49:39.500: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.500: I/TiAPI(23751): SELECTABLE CALENDARS: 03-30 10:49:39.505: I/TiAPI(23751): My calendar 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.505: I/TiAPI(23751): dan.tamas.tst@gmail.com 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.505: I/TiAPI(23751): dan tamas 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.505: I/TiAPI(23751): test 1 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.505: I/TiAPI(23751): test 1 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.505: I/TiAPI(23751): test 2 03-30 10:49:39.505: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.505: I/TiAPI(23751): TRY TO GET EVENTS IN ALL CALENDARS: 03-30 10:49:39.515: I/TiAPI(23751): [{""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""},{""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""},{""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""},{""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""}] 03-30 10:49:39.515: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.520: W/TiEvent(23751): (KrollRuntimeThread) [132,430] unable to get any results when pulling events by date range 03-30 10:49:39.520: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.525: W/TiEvent(23751): (KrollRuntimeThread) [4,434] unable to get any results when pulling events by date range 03-30 10:49:39.525: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.525: W/TiEvent(23751): (KrollRuntimeThread) [2,436] unable to get any results when pulling events by date range 03-30 10:49:39.525: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.530: W/TiEvent(23751): (KrollRuntimeThread) [3,439] unable to get any results when pulling events by date range 03-30 10:49:39.530: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.530: W/TiEvent(23751): (KrollRuntimeThread) [3,442] unable to get any results when pulling events by date range 03-30 10:49:39.535: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.535: W/TiEvent(23751): (KrollRuntimeThread) [3,445] unable to get any results when pulling events by date range 03-30 10:49:39.535: I/TiAPI(23751): TRY TO GET EVENTS IN SELECTABLE CALENDARS: 03-30 10:49:39.540: I/TiAPI(23751): [{""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""},{""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""},{""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""},{""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""},{""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""}] 03-30 10:49:39.540: I/TiAPI(23751): {""hidden"":false,""id"":""1"",""selected"":true,""name"":""My calendar""} 03-30 10:49:39.545: W/TiEvent(23751): (KrollRuntimeThread) [8,453] unable to get any results when pulling events by date range 03-30 10:49:39.545: I/TiAPI(23751): {""hidden"":false,""id"":""2"",""selected"":true,""name"":""dan.tamas.tst@gmail.com""} 03-30 10:49:39.545: W/TiEvent(23751): (KrollRuntimeThread) [3,456] unable to get any results when pulling events by date range 03-30 10:49:39.545: I/TiAPI(23751): {""hidden"":false,""id"":""3"",""selected"":true,""name"":""dan tamas""} 03-30 10:49:39.550: W/TiEvent(23751): (KrollRuntimeThread) [3,459] unable to get any results when pulling events by date range 03-30 10:49:39.550: I/TiAPI(23751): {""hidden"":false,""id"":""4"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.550: W/TiEvent(23751): (KrollRuntimeThread) [3,462] unable to get any results when pulling events by date range 03-30 10:49:39.550: I/TiAPI(23751): {""hidden"":false,""id"":""5"",""selected"":true,""name"":""test 1""} 03-30 10:49:39.555: W/TiEvent(23751): (KrollRuntimeThread) [3,465] unable to get any results when pulling events by date range 03-30 10:49:39.555: I/TiAPI(23751): {""hidden"":false,""id"":""6"",""selected"":true,""name"":""test 2""} 03-30 10:49:39.560: W/TiEvent(23751): (KrollRuntimeThread) [2,467] unable to get any results when pulling events by date range 03-30 10:49:39.560: I/TiAPI(23751): ALL THE EVENTS: 03-30 10:49:39.560: I/TiAPI(23751): [] 03-30 10:49:39.590: D/dalvikvm(23751): GC_FOR_ALLOC freed 246K, 6% free 6610K/6983K, paused 13ms 03-30 10:49:39.590: I/dalvikvm-heap(23751): Grow heap (frag case) to 7.996MB for 1536016-byte allocation 03-30 10:49:39.620: D/dalvikvm(23751): GC_FOR_ALLOC freed <1K, 5% free 8109K/8519K, paused 12ms 03-30 10:49:39.620: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.645: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.645: D/dalvikvm(23751): GC_CONCURRENT freed 1K, 5% free 8108K/8519K, paused 1ms+1ms 03-30 10:49:39.645: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.645: W/CursorWrapperInner(23751): Cursor finalized without prior close() 03-30 10:49:39.670: D/dalvikvm(23751): GC_FOR_ALLOC freed 14K, 5% free 8094K/8519K, paused 12ms 03-30 10:49:39.670: I/dalvikvm-heap(23751): Grow heap (frag case) to 8.630MB for 682256-byte allocation 03-30 10:49:39.690: D/dalvikvm(23751): GC_FOR_ALLOC freed 0K, 6% free 8760K/9223K, paused 12ms 03-30 10:49:39.725: D/dalvikvm(23751): GC_CONCURRENT freed 0K, 6% free 8760K/9223K, paused 1ms+1ms 03-30 10:49:39.730: I/TiRootActivity(23751): (main) [0,0] checkpoint, on root activity resume. activity = info.rborn.calendar.CalendartestActivity@407f22c8 03-30 10:49:39.735: D/WindowManager(2827): addWindowToListInOrder() : current mSkipWidgetFocus='true' 03-30 10:49:39.740: I/SurfaceFlinger(2698): id=1872(1) createSurface 0x40514 for pid 23751 (1x1),2 flag=0, info.rborn.calendar/info.rborn.calendar.CalendartestActivity 03-30 10:49:39.745: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.750: I/WindowManager(2827): Putting input method here! 03-30 10:49:39.750: D/WindowManager(2827): w.mAttrs.token=ActivityRecord{40decca0 info.rborn.calendar/.CalendartestActivity} 03-30 10:49:39.750: D/WindowManager(2827): w.mToken=AppWindowToken{41ae2ef8 token=ActivityRecord{40decca0 info.rborn.calendar/.CalendartestActivity}} 03-30 10:49:39.750: D/WindowManager(2827): Desired input method target: Window{40ba9a60 info.rborn.calendar/info.rborn.calendar.CalendartestActivity paused=false} 03-30 10:49:39.750: D/WindowManager(2827): Current focus: Window{40ba9a60 info.rborn.calendar/info.rborn.calendar.CalendartestActivity paused=false} 03-30 10:49:39.750: D/WindowManager(2827): Last focus: Window{40ba9a60 info.rborn.calendar/info.rborn.calendar.CalendartestActivity paused=false} 03-30 10:49:39.750: D/WindowManager(2827): IM target client: com.android.internal.view.IInputMethodClient$Stub$Proxy@41040b20 03-30 10:49:39.750: D/WindowManager(2827): IM target client binder: android.os.BinderProxy@41066c90 03-30 10:49:39.750: D/WindowManager(2827): Requesting client binder: android.os.BinderProxy@41066c90 03-30 10:49:39.750: D/CLIPBOARD(4466): Hide Clipboard dialog at Starting input: finished by someone else... ! 03-30 10:49:39.750: W/CPUclock(2827): mDVFSUpperLock.release() 03-30 10:49:39.750: D/CLIPBOARD(2827): Hide Clipboard dialog inside hideSoftInput() ! 03-30 10:49:39.750: D/CLIPBOARD(2827): Hide Clipboard dialog inside windowGainedFocus() ! 03-30 10:49:39.750: D/WindowManager(2827): token=AppWindowToken{41ae2ef8 token=ActivityRecord{40decca0 info.rborn.calendar/.CalendartestActivity}} 03-30 10:49:39.750: I/WindowManager(2827): Placing input method @10 03-30 10:49:39.765: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.765: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.765: I/ActivityManager(2827): Displayed info.rborn.calendar/.CalendartestActivity: +1s156ms 03-30 10:49:39.765: D/CLIPBOARD(23751): Hide Clipboard dialog at Starting input: finished by someone else... ! 03-30 10:49:39.770: D/KeyguardViewMediator(2827): setHidden false 03-30 10:49:39.770: D/TabletStatusBar(2886): lights on {code}",2
+"TIMOB-8455","03/30/2012 14:08:48","Android: Email Dialog - Email View does not appear on Kindle Fire","Description: While testing Email Dialog, I noticed that after picking an image email view does not appear. Does not occur on 1.8.2. Spets: 1. Run KitchenSink 2. Go to Base UI-Views-Email Dialog 3. Pick an image Expected result: Email view should appear Actual result: Email view is not shown",1
+"TIMOB-8459","03/30/2012 15:28:19","Android: KitchenSinkNook - Photo Gallery - After selecting an image from the photo gallery, it is not displayed","Steps to reproduce: 1. Launch KS Nook on the Kindle Fire 2. Navigate to Miscellaneous > Photo Gallery 3. Choose a photo Actual result: A gray image view is displayed Expected result: The image is displayed in the image view *Note* works in 1.8.2 Log is attached",1
+"TIMOB-8465","03/30/2012 22:45:33","Android: Activities don't get correctly handled if first opening a Window and then a TabGroup ","h2. Problem description The app opens a window for login - then opens a tabGroup. Android activities are no longer handled correctly. h2. Steps to reproduce See location for the project in the comments. Attaching logs relative to successful and failing case. Successful scenario: The first window is not included in a tab group. Click on on ""connect with facebook"" - then click the 'buy' button and click the ""facebook friends"" button (window i snow included in a tabGroup). Facebook friends are displayed. Failure scenario: Click on login with buddy beers and use the credentials: - test case added below h2. Additional notes login window when you start the app is 'ui/login/start.js' ; tabgroup is in 'ui/common.js' ; facebook api are invoked in 'ui/send/person_via_faceboook.js' and in 'lib/webservice.js' ",1
+"TIMOB-8470","03/31/2012 21:18:49","Android: Picker in scrollView not working","h6.Issue Picker in scrollView not working. h6.Tested on Android Emulator 2.2 Droid Razr 2.3.5 h6.Runtime Engines Rhino / V8 h6.Steps to reproduce 1. Run code below 2. Click the picker h6.Expected behavior See fully operational Pickers whose options render on screen h6.Repro sequence {code} Titanium.UI.setBackgroundColor('#000'); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var win5 = Titanium.UI.createScrollView({ contentHeight:'auto', left:15, right:5 ,layout:'vertical' }); var names = ['Joanie', 'Mickey', 'Jean-Pierre', 'Gustav', 'Raul', 'Mimi', 'Emily', 'Sandra', 'Carrie', 'Chachi']; var verbs = ['loves', 'likes', 'visits', 'loathes', 'waves to', 'babysits', 'accompanies', 'teaches', 'announces', 'supports', 'knows', 'high-fives']; var rows1 = []; for (var i = 0; i < names.length; i++) { rows1.push(Ti.UI.createPickerRow({title: names[i]})); } var rows2 = []; for (i = 0; i < verbs.length; i++) { rows2.push(Ti.UI.createPickerRow({title: verbs[i]})); } var rows3 = []; for (i = (names.length -1); i >=0; i--) { rows3.push(Ti.UI.createPickerRow({title: names[i]})); } var column1 = Ti.UI.createPickerColumn( { rows: rows1, font: {fontSize: ""12""} }); var column2 = Ti.UI.createPickerColumn( { rows: rows2, font: {fontSize: ""12""} }); var column3 = Ti.UI.createPickerColumn( { rows: rows3, font: {fontSize: ""12""} }); var picker = Ti.UI.createPicker({ useSpinner: true, visibleItems: 7, type : Ti.UI.PICKER_TYPE_PLAIN, top: 20, height: '200', columns: [ column1, column2, column3 ] }); picker.addEventListener('change', function(e) { Ti.API.info(e.selectedValue[0] + "" "" + e.selectedValue[1] + "" "" + e.selectedValue[2]); }); win5.add(picker); win1.add(win5); win1.open(); {code} ",1
+"TIMOB-8484","04/02/2012 10:14:18","iOS: Ti.UI.Window not restoring correctly after a youtube-in-app view exits","*Code* http://pastebin.com/NXYbpfRH *Expected behavior* When you run the app, watch the YouTube video, it should return without messing up any UI. *Actual behavior* Once the video has finished, it actually shows the status bar overlapping the window. *Steps to reproduce* 1) Click ""Watch YouTube Video"" 2) Click on webview to play Youtube video while holding device in PORTRAIT orientation 3) While video is loading, turn device to LANDSCAPE. You will notice that status bar moves to the PORTRAIT orientation. 4) While video is playing in LANDSCAPE, return device to PORTRAIT orientation (you will notice that statusbar is in proper position). 5) Return device to LANDSCAPE orientation, and end video by clicking ""Done"". 6) The Youtube player will close and the window will reopen with window's navbar underneath the status bar. *Notes* -Only happens on a device, I tried with an iPhone 3GS running 5.0.1. -HD ticket: http://support-admin.appcelerator.com/display/APP-333237",3
+"TIMOB-8492","04/02/2012 16:40:30","Android: Impossible to lock the app in Landscape mode","h4. Problem Description Have been trying to setup a tab app to be locked in landscape mode via tiapp.xml (modifying the android manifest): {code} {code} h4. Actual Results The tabbed app doesn't show in landscape h4. Expected results The tabbed app showing in landscape mode. h4. Test Case. 1. Create a new mobile Project 2. Replace the default android manifest section in the tiapp.xml with this: {code} {code} 4. Run h4. HD Discussion http://support-admin.appcelerator.com/display/APP-654753",2
+"TIMOB-8513","04/04/2012 10:03:42","iOS: Tableview shifting after 1.8.2 update","h4. Problem Description I have a tableview in a window. If I open that window using tab1.open(theWindow), the tableview appears as it should. BUT if I close that window using tab1.close(theWindow) and open it again later using the same tab1.open(theWindow), the tableview quickly shifts up to it's position. It is almost like it is animating 20px when the window is opened. I am NOT using any animations. Sample code below h4. Actual Results After the first time, the tableview appears animated. h4. Expected results Tableview without animation h4. Test Case 1. Create new mobile project. 2. Paste this code {code} //create main window var window1 = Titanium.UI.createWindow({ navBarHidden:true,tabBarHidden:true }); //create and add button to open window 2 var btn = Ti.UI.createButton({height:100,width:100}); window1.add(btn); //create window 2 for tableview var window2 = Titanium.UI.createWindow({ navBarHidden:true,tabBarHidden:true }); //create back button to go back to main menu var backBtn = Titanium.UI.createButton({height:30,width:50,top:10,left:10}); //create search bar var search = Titanium.UI.createSearchBar({ showCancel:false }); //create data for tableview var theData = [ { title:""One"", hasChild:true }, { title:""Two"", hasChild:true }, { title:""Three"", hasChild:true }, { title:""Four"", hasChild:true }, { title:""Five"", hasChild:true } ]; //create tableview var menu = Ti.UI.createTableView({ height:405, top:55, data:theData, search:search }); //add menu and back button to window 2 window2.add(menu); window2.add(backBtn); //Set up the Tab Group var tabGroup = Titanium.UI.createTabGroup(); var tab1 = Titanium.UI.createTab({ title:'window1', window: window1 }); //Add and open tabgroup tabGroup.addTab(tab1); tabGroup.open(); //button click events btn.addEventListener('click',function(){tab1.open(window2);}) backBtn.addEventListener('click',function(){tab1.close(window2);}) {code}",2
+"TIMOB-8621","04/04/2012 12:11:48","Android: Error creating Module projects with new installation of SDK r18 and Google APIs r8","When creating an Android module project, the process ends in error: {code} [ERROR] Couldn't find the Google APIs r8 add-on directory {code} 1. Create a new module project using titanium, for example: {code} dhydeMBPSnowLeopard:~ dhyde$ ""/usr/bin/python"" ""/Library/Application Support/Titanium/mobilesdk/osx/2.0.1.v20120407201726/titanium.py"" ""create"" ""--type=module"" ""--id=com.appcelerator.mymodule"" ""--name=MyModule"" ""--dir=/var/folders/Jt/Jte2czQvFoaxMh25z-WDKE+++TM/-Tmp-/module_temp8018343781039291630.tmp"" ""--platform=android"" ""--sdk=/Users/dhyde/Documents/android/android-sdk-macosx"" {code} Expected Result: Module project should be created.",0.5
+"TIMOB-8515","04/04/2012 15:07:08","Android: runtime error in ti/window.js","A client has encounter a problem in the window.js file in the SDK. I have not been able to reproduce it. There is a ""delete account"" button than when pressed, it will fire a global app event. Ti.App.fireEvent(); This event will close all the open windows, except the ""BaseWindow"" (heavyweight window in declared in app.js), including the one where the button is. The button is in a lightweight window that sits on top of the BaseWindow. After the windows are closed, a lightweight window (login window) opens on top of the BaseWidow (in place of the previously closed one). And this is where they're seeing this runtime error. ",3
+"TIMOB-8517","04/04/2012 15:43:57","iOS: Add Ti.Geolocation.ACCURACY_HIGH / ACCURACY_LOW","iOS needs to support the two new ""common"" geolocation accuracy settings, by aliasing them to existing properties: {{Ti.Geolocation.ACCURACY_HIGH}} {{Ti.Geolocation.ACCURACY_LOW}}",0
+"TIMOB-8549","04/05/2012 11:34:17","Android: Memory Managment Issue","*Code* http://pastie.org/3732988 *Steps to reproduce* Run the app inside the emulator/device, load up ddms, watch the heap size increase. *Expected behavior* The code is creating and releasing Ti objects, so it should allocate and deallocate memory over time. *Actual behavior* It actually keeps building up and gradually increases the heap size, it doesn't seem to go down a lot, it mainly increases. *Notes* -You might have to run this for a few minutes, in order to replicate this behavior. -The app is opening a new window, and releases it. So you will see the window going back and forth, which is the expected behavior. It will automatically open/close the window over time. You should only have to observe the 'heap size' and 'allocated' in ddms. -Only tested on the emulator. -HD ticket: http://support-admin.appcelerator.com/display/APP-341636",5
+"TIMOB-8558","04/05/2012 14:05:22","iOS: Transport.py is not working in CI ","h4. Problem Description I've been running into issues with the 2.X CI builds and transport.py. Due to how we handle builds, I need to use transport.py for all submissions and ad hoc builds. Any of the 2.X or Master builds have this build issue. h4. Actual Results The build via transport.py is failing. h4. Expected Results The build via transport.py working just fine h4. Test Case 1. Create a new Titanium project targeting a 2.X CI build 2. Run the transport.py process as usual 3. Open in xcode and try to run in the simulator h4. Extra info When xcode tries to compile you will get the below error [TRACE] app property, ti.ui.defaultunit : system [INFO] wrote Resources/stylesheet.plist Traceback (most recent call last): File ""titanium/iphone/compiler.py"", line 7, in import os, sys, re, shutil, time, run, sgmllib, codecs, tempfile File ""/Users/benjamin/Dev/Projects/Ti/myTravel/test/build/iphone/titanium/iphone/run.py"", line 2, in from tools import ensure_dev_path ImportError: No module named tools Command /bin/sh failed with exit code 1 I tried this again today using the below build version. h4. HD Discussion http://support-admin.appcelerator.com/display/APP-522817 ",2
+"TIMOB-8563","04/06/2012 06:47:20","BlackBerry: Support ability to create new blackberry project in Titanium Studio","Work with the studio team to integrate project creation ",2
+"TIMOB-8565","04/06/2012 07:05:04","BlackBerry: Extend the ndk classes to create the shell application"," Extend the ndk classes to create our shell application that will contain the app.js and the kroll and v8 runtimes (equiv. android/titanium/.project) - learn what is needed to create the blackberry shell app to contain the app.js as resource - Create actual classes extending the classes in the ndk, they will form the titanium library - Do the minimum to get the app up and loading the js file, leave the rest stubbed out with TODOs - create file templates for the shell app - link with libV8 and Kroll",2
+"TIMOB-8566","04/06/2012 07:10:17","BlackBerry: Build v8 on the QNX ndk as static lib","Possibly create wrappers for the v8",3
+"TIMOB-8569","04/06/2012 07:17:13","BlackBerry: Integrate unit tests","need more info from Vishal, drillbit vs module tests?",20
+"TIMOB-8570","04/06/2012 07:22:02","BlackBerry: Run on simulator and device","minimum BB10 for demo",5
+"TIMOB-8594","04/06/2012 07:46:58","BlackBerry: Full support for builder script","Implement all targets",20
+"TIMOB-8598","04/06/2012 07:49:35","BlackBerry: Setup and test guide","Guide for QE/developers to setup and test the Blackberry port of Titanium SDK using KitchenSink Should be placed on a separate page in this space: https://wiki.appcelerator.org/display/PEBKBRY/Home",2
+"TIMOB-8610","04/06/2012 17:09:35","Android: Tab.open(windowName) doesn't open a new window inside the Tab container","In android tab.open(windowName) doesn't open a new window inside the tab container. It works fine in iOS. h4. tab.open(windowName) works in iOS and h4. tab.add(windowName); h4. windowName.open(); h4. works fine in android I have commented it in the app.js file as well. Please find it attached. h4. Repo Steps 1. Run the attached app.js file. 2. Click the window 1 and you can see the new window is opening outside the tab container.",2
+"TIMOB-8612","04/09/2012 10:08:39","iOS: Problem getting responseText/headers from onerror response","h3. Problem The HTTPClient does not seem to be able to get the responseText/headers from the server in onerror response(the console shows everything I print in the example below as null). h3. Code {noformat} var xhr = Titanium.Network.createHTTPClient({ 'timeout': 5000 }); xhr.onerror = function() { if (this.status == 401) { //auth challenge required var guid = xhr.getResponseHeader('X-Challenge-GUID'); Titanium.API.info('Server gave GUID challenge of: ""' + guid + '""'); Titanium.API.info('TEST FOO: ' + xhr.getResponseHeader('X-Custom-Header')); Titanium.API.info('TEST BAR: ' + this.getResponseHeader('Cache-Control')); Titanium.API.info('TEST BLA: ' + xhr.responseText); Titanium.API.info('TEST BOO: ' + this.responseText); } } xhr.open(""GET"", url); xhr.send(); {noformat} The getResponseHeader is responding as null. The onload method works fine but on trying to get the data from onerror ""null"" is returned. h3. Related Community Ticket http://developer.appcelerator.com/question/50501/problem-getting-responsetextheaders-from-error-response ",0
+"TIMOB-8627","04/09/2012 15:41:41","iOS: Refine Obj-C, Obj-C++ coding standards","iOS currently has some [coding standards|https://wiki.appcelerator.org/display/pe/Coding+Standards] available, with an uncrustify (to beautify source) in [tidevtools|https://github.com/billdawson/tidevtools]. We need to evaluate the uncrustify (and manually written instructions) for: * Correctness * Completeness * Consistency * Tabs vs. spaces (we need to standardize on one!) These standards should apply to Objective-C and Objective-C++ only, but may require some preliminary drafts for C and C++ style. This ticket is *not* for establishing design patterns or workflow (unlike the broad scope of TIMOB-8241, which is being narrowed.) Part of this ticket is also deciding how to enforce code formatting (i.e. coerce all submitters to make their source conform to the standard).",0
+"TIMOB-8653","04/10/2012 15:10:10","Tooling: Separate SDK from the Platform","This task comprises a few high level tasks: * The SDK should live as it's own standalone component, with it's own git repository * The SDK and Platform should be able to have their own release cycles, and the SDK should be able to work with multiple versions of the Platform",5
+"TIMOB-8658","04/10/2012 15:52:45","Android: Switch search order of folders/environment variables in androidsdk.py","I accidentally updated my ANDROID_SDK environment variable to a bad value, and suddenly Studio was unable to find my Android platforms, even though I had a correct SDK specified in preferences. Digging into the code, I see that we pass a specific directory to search to avd.py, by androidsdk.py/find_sdk() defers to ANDROID_SDK before utilizing ""supplied"". It seems we should respect the passed-in directory first before defaulting to backup options like environment variables.",2
+"TIMOB-8662","04/10/2012 16:41:03","Tooling: Write a CLI specification","Write a CLI specification that covers: * CLI workflow * Argument naming and value standards * Initial set of CLI commands * Initial set of CLI arguments * External CLI APIs (for CLI modules) The target list of commands should contain: * Validation of project (module+app) creation arguments per platform * Project creation - modules + apps * Project migration between Titanium SDK versions * Per-platform setup * Environment / project validation * Build project (APK, IPA, deployable web app in MobileWeb) * Publish (may be type of build) * Obfuscation/minification * Optional Lint * Emulator/Simulator launch * Deploy project (to a device, to an emulator) * Debugger / REPL Other requirements that were gathered: * Studio needs standardized logging and errpr message parsing * Standard interfaces to basic commands across platforms * Have a list of command capabilities / implementations per platform ",5
+"TIMOB-8665","04/10/2012 17:26:53","Android: INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES when installing different app with same app id","When an android app is installed, and that app is already installed using a different deploy type (i.e., production vs. testing), or a different app is installed with the same app id, there is an error INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES logged to the console. I would expect the script to fail with a meaningful error message (and Titanium Studio to have an error prompt if necessary) indicating an app with the same app id and a different certificate is already installed on device, remove this app to continue installation. Steps to Reproduce (Scenario 1): 1. Create a new Android project. 2. Distribute for production and install to device. 3. Deploy again to device from studio. Steps to Reproduce (Scenario 2): 1. Create a new Android project. 2. Install to device in development mode. 3. Create another Android project with the same app id. 4. Deploy second app to device. Expected Result: Script fails with meaningful error message, studio prompts error if necessary. Actual Result: Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] logs to console, difficult to know exactly what the problem is.",3
+"TIMOB-8681","04/11/2012 13:33:27","Core: Define C/C++ coding standards","Define a document that outlines all C/C++ coding standards any C/C++ written for Appcelerator (internal or community contributions) should adhere to. This should represent more than syntax, but general design approaches and process flow. This document will be focused on language only. Platform Specific information will be contained inside another document.",5
+"TIMOB-8695","04/11/2012 18:44:36","Android: Database Install fails to install from applicationDataDirectory","The documentation doesn't state that its impossible to run Ti.Database.install(Ti.Filesystem.applicationDataDirectory, 'mydb'); However not matter what you do, it is impossible, further more its a little frustrating as many a database strategy will involve remote files and source files that can be used for later purposes. I can see no reason why the command has to default to the Resources directory. Could there be some clarification on what you can and can't do. And if currently, you can't install from the appDataDirectory, can i suggest it goes high up on the roadmap. this will cost days of developers time a) figuring out what works and doesn't work, then having to write a very long process in evaluating and inserting data, when its not necessary. At the moment you can write to the DB storage space on iOS, it mainly affects android, but I think the SDK should allow for this behaviour. ",5
+"TIMOB-8714","04/13/2012 02:07:59","Android: 'focus' events are not correctly handled for windows in a tabGroup","h2. Problem description 'Focus' events might not correctly handled when associated to a window set in tabGroup and with the url property h2. Steps to reproduce h3. Steps - Create a tabGroup with 2 windows. - Set the url property for each window and define 'focus' event listener in the two 'win1.js' and 'win2.js' files. - Don't set event listeners in the app.js Result: 'focus' event listeners ae not triggered on Android (on iOS works fine). h3. Code {code:lang=javascript} // app.js var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff', url:'win1.js' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Win 1', window:win1 }); var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff', url:'win2.js' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Win 2', window:win2 }); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); {code} {code:lang=javascript} // win1.js var win1 = Ti.UI.currentWindow; win1.addEventListener('focus',function(e){ alert('test win1'); }); {code} {code:lang=javascript} // win2.js var win2 = Ti.UI.currentWindow; win2.addEventListener('focus',function(e){ alert('test win2'); }); {code} h2. Additional notes: Customer ticket : http://support-admin.appcelerator.com/display/APP-221687/conversation/read_all",1
+"TIMOB-8718","04/13/2012 12:28:52","Core: Compare possible CLI technologies","In order to select the appropriate tool for the new CLI, we need to perform a side-by-side evaluation for the following proposed technologies: * node.js (TIMOB-8640) * Python 2.7.x (TIMOB-8715) * Python 3.2.x (TIMOB-8715) * Ruby (no ticket, proposed) * Java + RHINO (no ticket, hat tip to cbarber for the suggestion) Advantages, disadvantages, etc. of each of these technologies is documented in their specific tickets and via meeting notes being compiled by Marshall. Note that one of the suggestions proposed in the node.js meeting was to create a pluggable {{git}}-like infrastructure, so that the command {{titanium xxx}} would call out to a {{titanium-xxx}} script, which could be in any scripting language (or a compiled tool). This evaluation may recommend this approach if we believe multiple technologies are appropriate for different tasks. These are the high level tests we should use in judging any solution: * Subprocess / Child process APIs ([ipc side-by-side comparison|https://gist.github.com/2583397]) ** A test that executes a short-lived process and collects it's results ** A test that executes a long-lived process and collects it's stdout / stderr output and reprints that output in real time * Logging APIs ([log side-by-side comparison|https://gist.github.com/2581199]) ** A test that creates a simple unified logger with a base string format and configures certain log levels as visible ** A test that associates multiple loggers with various system components * Compression (zip) APIs ([zip side-by-side comparison|https://gist.github.com/2572795]) ** A test that opens a ZIP file, scans the contents, and extracts one of the files for processing ** A test that creates a new ZIP file using a mix of normal files, deep paths, and symlinks * Javascript AST parsing / manipulation: *NOTE:* This is now part of a separate technology evaluation. See TIMOB-8947 for discussion relating to AST. We have been delivered the requirement for a single AST for the product, and it is assumed that CLI tooling will call out to this rather than have an AST. ** A test that parses a simple Javascript file, and reports back an AST ** A test that does minor manipulation of the AST, and transforms back to JS Each test should include performance metrics over many runs, and information about external module(s) used along with versions.",3
+"TIMOB-8729","04/13/2012 17:40:23","Android: TextField: Text is not visible, and view appears to redraw before keyboard is displayed","In TextField cannot see any texts that is being typed in and the cursor blinks outside the text field. For a second previous view is shown Steps to reproduce 1:Install and run the app 2: Tap inside the text field 3:type in word {code} var window = Ti.UI.createWindow({ backgroundColor: 'blue' }); var textField = Ti.UI.createTextField({ backgroundColor: '#fff', height: 30, top: 20, left: 20, right: 20 }); window.add(textField); window.open(); {code} Actual result: Could not see the text typed in,on focus the window returns to the previous view for a second. Expected result:should be able to see the text and the cursor should blink inside the text field *Note : this is not a regression bug,it goes back to 1.8.2* ",5
+"TIMOB-8730","04/13/2012 18:08:07","Android: When invoking other intent from the app, the pause event is not being triggered ","h4. Problem Description If we call another app or activity in the android app, the pause event is not being fired. h4. Actual Results Event is not fired h4. Expected Results The event pause should be fired. h4. Test case 1. Create mobile project. 2. Paste this into the app.js {code} if(Ti.Platform.osname == 'iphone') { // WORKING FOR iPHONE // do nothing } else { // event listeners for android // NOT WORKING Ti.Android.currentActivity.addEventListener('create',function(){Ti.API.info('Create call')}); Ti.Android.currentActivity.addEventListener('destroy',function(){Ti.API.info('Destroy call')}); Ti.Android.currentActivity.addEventListener('pause',function(){Ti.API.info('Pause call')}); Ti.Android.currentActivity.addEventListener('resume',function(){Ti.API.info('Resume call')}); Ti.Android.currentActivity.addEventListener('start',function(){Ti.API.info('Start call')}); Ti.Android.currentActivity.addEventListener('stop',function(){Ti.API.info('Stop call')}); } Ti.Platform.openURL('tel://911'); {code}",1
+"TIMOB-8743","04/16/2012 14:33:18","Android: Intermittent 'force close' issue","*Issue* -The app randomly 'force quits' when launched, I personally don't seem to be able to reproduce this (yet). -What one of the users reported back: ""I launch and it's basically frozen...the small black ""app name"" bar appears at the top but nothing happens...now finally after minutes (3-5) got the error message ""sorry! Activity APPNAME (in application APPNAME is not responding...force close...wait...report"" -Attached are the log files. App source code can also be attached, if required. *Notes* -Name of the actual app has been removed and replaced with 'APPNAME'.",2
+"TIMOB-8745","04/16/2012 14:44:03","Android: Intermittent app 'freeze' issue","*Issue* -The app randomly freezes when it's on the loading screen. -Comments: ""User reported a hanging login (loading bar went to full green, but then nothing happened) directly after a force-close and relaunch. Log attached."" -Attached is the log file. App source code can also be attached, if required. *Notes* -Name of the actual app has been removed and replaced.",3
+"TIMOB-8772","04/17/2012 16:50:20","Android: Alignment Issues on Android, layout appears broken","8 Buttons are added to the window, and have a background image. When they are aligned together in a line, it appears broken. It looks continuous on iOS. I have attached images to explain this. Also have included the code sample. {code} var win = Titanium.UI.createWindow({ backgroundColor:'white', title:'window', barColor:'#ff7b01', top:0 }); var arr = ['5d', '1m', '3m', '6m', 'YTD', '1yr', '2yr', '4yr']; for(var i=0;i. A TabGroup tab instance. Each tab includes a button and one or more windows, which holds the ""contents"" of the tab. Users can select a tab by clicking on the tab button. In iOS, this actually is more of a combination of UITabBarItem and UINavigationController meant to go into a tab group. Android does not have a navigationController concept, so it depends on what Blackberry provides. https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UITabBarItem_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UITabBarItem https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UINavigationController_Class/Reference/Reference.html#//apple_ref/doc/c_ref/UINavigationController ",5
+"TIMOB-8850","04/20/2012 13:54:32","Core: Create a new Titanium Unit Test Harness","Problem Statement: ""Titanium needs a standalone unit test system for testing the various peices of the platform, including: Core functionality, UI tests, and high level CLI tests. The existing unit test driver, Drillbit, was written on Titanium Desktop, which has been turned over to the open source community. We need to re-evaluate the base technology based on the new CLI work."" Drillbit components: * Platform-specific test harness application * Test APIs * Command Line Interface * UI interface ",0
+"TIMOB-8851","04/20/2012 13:57:10","Core: Write a specification for the new Unit Test Harness","We need to write a specification for these components of our new Unit Test Harness: * CLI interface * Unit test APIs that cover basic assertions, and UI testing * Test Results output (JSON) for collection by CI This task is evolving with data found from prototyping and integration.",5
+"TIMOB-8867","04/23/2012 16:58:30","iOS: Update default tiapp.xml to reflect changes to iOS-specific properties","See TIDOC-585 and TIMOB-7664",5
+"TIMOB-8898","04/26/2012 12:18:59","Android: Support FILL behavior on contentWidth/contentHeight property of scroll view","{code} var win = Ti.UI.createWindow({ backgroundColor:'white' }); var scrollView = Ti.UI.createScrollView({ top:10, left:5, layout:'vertical', scrollType: 'vertical', contentHeight:Ti.UI.FILL // contentWidth:'auto' }); var things = [ 'item1', 'item2', 'item3', 'item4', 'item5', 'item6' ]; for (var i = 0; i < things.length; i++) { var view = Ti.UI.createView({ height: 140, width: 90, top: 10, left: 10, backgroundColor: '#CCC' }); scrollView.add(view); }; win.add(scrollView); win.open(); {code} Expected results: The contentHeight should be the size of the scroll view (which prevents it from scrolling) Actual results: The contentHeight follows SIZE behavior and is scrollable since the children's height is bigger than the scroll view height",1
+"TIMOB-8926","04/30/2012 10:26:35","Blackberry: Implement proper packaging of blackberry mobile sdk","Add building of libtibb.ca in the scons script and package it properly in the resulting zip file, also remove any unnecessary files from the zip",5
+"TIMOB-8996","05/04/2012 13:12:27","BlackBerry: Complete remaining issues from code review","See pull request: #18 1. void TiUIBase::setTiMappingProperties(const TI_PROPERTY* prop, int propertyCount) prop should be props since it's a pointer to an array of prop objects -- 2. TiUIBase::setParametersFromObject(Local obj) Local propValue; + Handle propString; + TiObject* foundProp; 3 last lines, It's cleaner to declare variables inside the smallest scope they are to be used in and also helps prevent referencing them outside of their scope. In this case the declarations should be inside the for -- 3. int NativeContainerObject::initialize() add protection agains multiple invocations -- 4. if((args.Length()!=2)||(!args[0]->IsString())||(!args[1]->IsFunction())) This line is definitely worth a comment. How come args[0] needs to be a string and args[1] needs to be a function? reminds me of perl :S -- 5. blackberry/tibb/TiUIObject.cpp • createXXXX_ methods out of 14 lines of code in the functions, only 1 really differs. It'd be nice to have a way of abstrating that to remove code duplication which would be a maintenance nightmare as i also forsee many many such functions being created for all the UI controls we need to implement Similarly the associtated classes look very bare and very much alike, is there actual value in having all these look alike classes? Maybe the actual question is can we avoid them? -- 6. VALUE_MODIFY TiPropertyMapObject::onValueChange(Handle oldValue, Handle newValue) the 3 lines inside the the ifs are the same in all cases, they should be rolled into a helper function. -- 7. we should review the logical separation of classes with regards to cascades awareness, separation into folders -- 8. review error handling strategy - run it by appcelerator -- 9. class TiEventContainer please add spaces around the = sign for consistency with the rest of the code. The formatter doesn't enforce it here. There is at least another instance of that in TiEvent.h -- 10. blackberry/tibb/TiUIBase.h description comment references TiCascadesApp when it should be TiUIBase -- 11. embed class TiInternalEventListener inside TiV8EventContainer? To reenforce it's internalness",5
+"TIMOB-9102","05/06/2012 02:45:04","iOS: getVisible() / getEnabled() functions could return null value","h2. Problem description Boolean functions like getVisible() or getEnabled() can return null value h2. Code sample {code} var win = Ti.UI.createWindow({ exitOnClose:true }); var view = Ti.UI.createView({ top:0, left:0, width: 10, height:10 }); var button = Ti.UI.createButton({ title:'Click Me!' }); button.addEventListener('click', function(e) { alert(view.getVisible()); view.setVisible(!view.getVisible()); }); win.add(button); win.add(view); win.open(); {code} Result: After running the sample code, click on the button to execute view.getVisible(), which return value 'null'. Expected result: If the property was never defined by the user, then the default value should be returned. ",5
+"TIMOB-9007","05/06/2012 08:11:30","iOS: UI.Switch - does not display if value is not set when rendered","h2. Problem Unless the [Titanium.UI.Switch.value|http://docs.appcelerator.com/titanium/2.0/index.html#!/api/Titanium.UI.Switch-property-value] property has been set, the switch does not render on iOS. This is not necessary for Android, so adding the parity label to this ticket. h2. Test Case {code:lang=javascript|title=app.js} var win = Ti.UI.createWindow({ backgroundColor: 'white', layout: 'vertical' }); function printSwitchProperties(obj){ var props = ['enabled', 'value']; for (var p in props){ Ti.API.info('Switch property ' + props[p] + ': '+ obj[props[p]]); } } var basicSwitch = Ti.UI.createSwitch({ // value:true // uncomment to display switch }); win.add(basicSwitch); printSwitchProperties(basicSwitch); basicSwitch.addEventListener('change',function(e){ printSwitchProperties(e.source); }); win.open(); {code} ",1
+"TIMOB-9028","05/07/2012 18:06:33","CLI: ""build"" command for Android apps","Port the Python-based Android builder.py to Node.js. Portions of this has already been completed. h3. Build Process * Validate command line arguments and tiapp.xml settings (TIMOB-14973) * fire ""build.pre.construct"" event * create Builder object * fire ""build.pre.compile"" event * Detect if need to force rebuild (TIMOB-14974) * Init the build/android directory and files (TIMOB-14976) * if not --build-only ** make sure adb server is running (adb lib does this for us) ** wait for the emulator/device to boot ** detect if app is already installed (adb lib does this for us) * Compile resources (TIMOB-14977) * determine Google APIs are required (true unless not build only and building for emulator running non-Google API AVD) * if building for emulator and using Ti.Map.MapView, make sure the emulator is running Google APIs (TIMOB-5438 Compiler Warning When Using Maps with Non-Google APIs SDK) (TIMOB-6860 Tooling: Android build process requires ""Google APIs"" even if ""Ti.Map.createView"" only occurs in comments) * generate build/android/bin/assets/index.json with contents of build/android/bin/assets * generate jss stylesheet => build/android/gen//ApplicationStylesheet.java * generate aidl * process build/android/res/*.xml for all i18n strings ** support app.xml to localize app name (TIMOB-2824 Android: App name localization) * handle splash screen * generate build/android/res/values/theme.xml * Create android.manifest (TIMOB-14978) * remove duplicate res in xml files??? * Build Java files and run dexer (TIMOB-14979) * if not --build-only and not package build, push deploy.json to emulator/device ** wait for sdcard *** gracefully handle timeouts (TIMOB-11827 Android: Installing an app to Android with 4.2 version takes long time) * Package and sign app (TIMOB-14980) * fire ""build.post.compile"" event * fire ""build.finalize"" event ---- h3. Hooks * Package Hook (TIMOB-14981) * Run Hook (TIMOB-14982) ---- h3. Misc * logcat * wait for emulator * delete unused support/android/templates/AppUserData.java * when subprocessing Java-based tools (android, etc), override ""_JAVA_OPTIONS"" environment variable (TIMOB-14322 CLI: Setting _JAVA_OPTIONS global variable breaks building of project) * convert default ""dark"" splash screen to a red-based one (TIMOB-4517 Android: default.png file is a gray image, should be the red default image) * TIMOB-11120 Android: Expose a way for users to exclude js files from being encrypted * TIMOB-339 Android: Missing Icons * TIMOB-13311 Android: CLI: possibility to build apk for beta release (like ios adhoc) (should be resolved with build profiles) * remove dependency on old Android SDKs (TIMOB-13983 Android: Titanium should use the latest stable Android SDK and NDK and not depend on 2.2 API 8)",8
+"TIMOB-9089","05/09/2012 22:41:40","iOS: Update SBJSON to latest","Currently iOS ships with two distinct versions of the {{SBJSON}} library - one which is compatible with (and has been modified for) Titanium since the early pre-0.9 release cycle, and a more modern, maintained version which ships for compatibility with the Facebook module. We need to remove the older SBJSON library, update the latest version with the relevant parsing abilities from our managed SBJSON implementation, and clean code to make the code base more unified, consistent, and remove cruft.",0
+"TIMOB-9111","05/11/2012 13:28:30","TiAPI: Ti.Utils.base64encode behaves different between Android and iOS/Android","h3. Problem The result of Ti.Utils.base64encode is different between iOS and Android. On iOS there are newline characters included when the string is long enough, on Android the newline characters are stripped out (which is the correct way to do base64 UTF8 encoding). Please see the attached screenshot explaining the issue. h3. Sample Code {noformat} (function() { var win = Ti.UI.createWindow({backgroundColor:'white'}); win.open(); var shortString = 'ABCDEFGHIJ1234567890ABCDEFGHIJ12|psndemo2|abcd:1'; var longString = 'ABCDEFGHIJ1234567890ABCDEFGHIJ12|psndemo2|abcd:12345678901234567890'; var tiBase64ShortResult = Ti.Utils.base64encode(shortString); var tiBase64LongResult = Ti.Utils.base64encode(longString); tiBase64ShortResult = String(tiBase64ShortResult); tiBase64LongResult = String(tiBase64LongResult); // BUG #2: Run this code in iOS and Android and compare the results // On iOS we get newline characters. On Android the newline characters are stripped out. // The correct behavior for UTF8 base64 encoding is to strip out the newline characters. // Android's implementation is correct. tiBase64ShortResult = tiBase64ShortResult.replace(/\r\n/g,""***NEWLINE***""); tiBase64LongResult = tiBase64LongResult.replace(/\r\n/g,""***NEWLINE***""); var alertDialog = Titanium.UI.createAlertDialog( { title: 'Result', message: 'short: ' + tiBase64ShortResult + '\nlong: ' + tiBase64LongResult, buttonNames: ['OK','Cancel'] }); alertDialog.show(); })(); {noformat}",5
+"TIMOB-9139","05/15/2012 10:44:52","Android: Tooling: How to set the deploytype ","h4. Problem Description When you do a deployment for distribution, you will think that the deploytype in analytics will switch to production. But it's not happening with some projects. A customer is not getting analytics from his app, and he reported it, the people in the Cloud replied that he didn't set the app to be in prod: The second issue, for the other app GUID 473b9203-836a-4d48-ac13-2993873efa2c, the problem is that the user is using deploytype:test, and analytics only shows up for deploytype:production. When I asked the client to do for production (i.e., deploy it to the Market), he already did that, as the attached image shows. h4. Actual Results App is not set for production in the deploytype. h4. Expected results If you build an app for distribution in the market, the deploytype should be production. h4. Extra info See attached image. ",3
+"TIMOB-9143","05/16/2012 08:25:22","BlackBerry: Implement BB Application Menu (Crosscut Menu)","On BB10 devices swiping from the top of the screen will display a menu bar of action items it is used to control not often use actions that apply (crosscut) across the entire app. See https://developer.blackberry.com/cascades/reference/bb__Application.html#function-swipedown https://developer.blackberry.com/cascades/documentation/ui/navigation/menus.html Look at NativeWindowObject.cpp to see how to do ActionItems",2
+"TIMOB-9144","05/16/2012 08:26:37","BlackBerry: Implement BB push","registerForPushNotifications() for starting point BB push should be available after R6 release early in July. To see an overview of the BB10 push system see http://developer.blackberry.com/cascades/documentation/device_comm/push/index.html Java Based Server Side SDK http://developer.blackberry.com/devzone/develop/platform_services/push_overview.html To enable ASC some server side work is require. Make sure to give the ASC/360 teams early heads before working on this task. ",8
+"TIMOB-9158","05/16/2012 16:12:12","Blackberry: Update the tibbapp project to work with the R4 release of Cascades","- remove extra libs from common.mk - adjust paths to R4 ndk for default detection in blackberryndk.py - And other things that might not work",3
+"TIMOB-9164","05/17/2012 10:20:30","Blackberry: [Studio integration] regenerate the bar-descriptor file at packaging time","the bar-descriptor file needs to be updated everytime we package to pick up potential changes to the tiapp.xml file",8
+"TIMOB-9203","05/23/2012 09:23:31","BlackBerry: Handle JavaScript exceptions in runtime","Currently the Titanium runtime haults JS execution prints information to the stdout during an exception and then the Cascades message loop is entered. This should be changed to shutdown the app and return an error code. Pull request: https://github.com/Macadamian/titanium_mobile/pull/66 ",3
+"TIMOB-9204","05/23/2012 09:35:36","BlackBerry: Bring API doc up to date","Updating API doc is now part of the patch cycle. However, some components added in the past have not been reflected in API doc: - ImageView - TextField - ActivityIndicator (maybe, check it out) This task is to add past work to the API doc.",2
+"TIMOB-9219","05/24/2012 07:18:58","BlackBerry: Refactoring event handler implementation","Add event handler embedded class for each native controllers, which will be responsible for handling QT cascade events.",5
+"TIMOB-9286","05/25/2012 18:12:36","Android: Animation code review","The current state of Android animation APIs and its limitations/bugs needs a review to address various animation issues.",5
+"TIMOB-9306","05/30/2012 08:31:17","Blackberry: add a universal logging mechanism for tibb","Need to add a universal logger to the framework. May use exceptions and stop the app in debug mode and only log in release mode. Also go over all existing qDebug and printf to update them to use the new logger. The logger will also need to do some locking to ensure that logging from concurrent threads doesn't result in logs cut and merged in the middle.",5
+"TIMOB-9366","06/04/2012 12:51:56","Android: Add ""radial"" support to view ""backgroundGradient"" property","Android's radial gradient shader only supports a single point circle radial gradient. The Titanium radial gradient follows what is specified in the HTML Canvas specification and is also the native behavior on iOS. We should investigate a way to implement our own radial gradient that follows the HTML Canvas specification or wait for Android to expose this type of gradient in the future. It has been implemented in Skia, so it is possible this will be added in a future API level. ",3
+"TIMOB-9378","06/05/2012 08:39:47","BlackBerry: Add script to create and install debug token","[Tatyana] A note to myself: this task is a necessary step to be able to deploy an app to a device. This could be added to the devicemanagement.py script. {noformat} blackberry/devicemanagement.py createDebugToken --store-pass --csj-pin --csj-file (--device-pin | --device-pin-list ) --debug-token-bar-file --device --device-password password for keystore and device PIN associated with CSJ file input CSJ file for registration device PIN in hex without the '0x' (e.g. 50F2D211) file containing a list of device PINs debug token file hostname or the IP address of the target device or simulator {noformat} This is an example of what the script should do: {noformat} blackberry-debugtokenrequest -register -storepass 123456 -csjpin 729759 client-RDK-584232624.csj client-PBDT-584232624.csj blackberry-debugtokenrequest -storepass 123456 -devicepin 29AFDEBD dt.bar blackberry-deploy -installDebugToken dt.bar 169.254.0.1 -password 1234 {noformat}",2
+"TIMOB-9398","06/05/2012 14:52:28","Blackberry: Get standard JS keywords to work in V8","things like the following don't currently work in V8: var v = new String('bla bla'); // v is undefined after executing that line var i = parseInt('5'); // TypeError: parseInt not a member of #error These are just 2 examples, many more likely have the same behavior. ",5
+"TIMOB-9403","06/05/2012 16:12:16","Android: Map - Add centerOffset property to Ti.Map.Annotation","This is the parity ticket for Android to see if such functionality can be ported over. ------ Add centerOffset property to a custom annotation to be able to set a x & y offset to the image of the annotation. Right now the center of the annotation is the center of the image size. This makes that some images appear not to be in their proper place at certain zoom levels. Reference to official documentation: http://developer.apple.com/library/ios/#documentation/MapKit/Reference/MKAnnotationView_Class/Reference/Reference.html#//apple_ref/doc/uid/TP40008207 I have already coded the feature and I open this ticket in order to get the pull request accepted.",2
+"TIMOB-9454","06/07/2012 21:10:58","BlackBerry: Complete Layout Handling of UI View","Part of this task need to clean left and top properties from inherited classes that don't need to override the default implementation. One such occurence is in NativeListViewObject",5
+"TIMOB-9481","06/11/2012 12:12:10","iOS: cancelLocalNotification on iOS is broken","In 'bg.js' of kitchensink, notifications cannot be cancelled using 'id' passed as userinfo dictionary to the notification. {panel:title=bg.js} {code} var notification = Ti.App.iOS.scheduleLocalNotification({ alertBody:""Kitchen Sink was put in background"", alertAction:""Re-Launch!"", userInfo:{id:""1""}, sound:""pop.caf"", date:new Date(new Date().getTime() + 3000) // 3 seconds after backgrounding }); // we cancel our notification if we don't want it to continue // notification.cancel(); //this works!!!! Ti.App.iOS.cancelLocalNotification(""1"");// this does not work. {code} This is fixed by Pedro and the fix is available here. https://gist.github.com/48a765c50f64aa7c47ed",3
+"TIMOB-9488","06/11/2012 16:38:20","MobileWeb: Focus event in tabgroup not being fired","h4. Problem Description Tabgroup's focus event is not working as with iOS. h4. Actual Results The focus event is never fired h4. Expected results The focus event should fire. h4. Testcase 1. Create new mobile Project. 2. Paste app.js: {code} Titanium.UI.setBackgroundColor('#000'); // create tab group var tabGroup = Titanium.UI.createTabGroup(); var win = Titanium.UI.createWindow({ backgroundColor:'white', title:'window', barColor:'#ff7b01', top:0, navBarHidden:false }); /* win.addEventListener('focus',function(){ alert('focus'); }); */ var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 2', window:win }); var titleImage = Ti.UI.createView({ width:94, height:24, backgroundImage:'/images/header/ing_logo_header.png', }); win.titleControl = titleImage; //win.open(); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); tabGroup.addEventListener('focus',function(){ alert('focus tabs fired') }); tabGroup.addEventListener('click',function(){ alert('click fired') }); {code} 3. Test this code in iOS, compare with this code in MobileWeb. ",3
+"TIMOB-9552","06/14/2012 12:26:08","Android: Emulator: Not recognized by adb, unable to install to Emulator.","When Android emulator deployed, adb fails to recognize the emulator. This is intermittent issue, it effect all emulator versions. This is not an regression it occurred in 2.0.2 Step to reproduce: 1) Create default project. 2) Right Click, Select ""Run As"", Select ""Run Configurations..."" 3) Select ""Titanium Android Emulator"" 4) Select platform Android API: ""Google API Android 4.0.3"" 5) Apply and Run. Expected Result: adb should recognized the emulator or if this occur then studio should be provide error correction to handle the error properly. Actual Result: adb doesn't recognize the emulator. Studio fails to notified to developer of the failure and App never installed. ",13
+"TIMOB-9606","06/18/2012 09:31:41","TiAPI: Allow configuration of the default unit (pixels, dpi, etc.)","Titanium provides universal unit support by allowing the developer to specify unit types when specifying absolute layout parameters ( ie: width, height, left, etc.). if the developer specifies a layout parameter without specifying a unit, the system selects the default unit type ( currently pixels ). The developer must explicitly specify the layout type for unit types that are not the default pixel unit. example: width: ""123dp"" or width: ""123mm"" Rarely do application developers create applications that mix units. Therefore devleopers must append to every unit specification the unit type if they do not want to use the default pixels. Causing the following issues: - reduces the efficiency of the developer, - increases the probability of user created bugs in the application code. - increases the size of the executing code, - decreases the performance do to the increased code execution size. Adding a default unit override would resolve these issues allowing the developer to set the number and omit the unit type. ",5
+"TIMOB-9658","06/20/2012 09:37:26","BlackBerry: Add JavaScript bootstrapping to framework","Some of the Titanium implementation can be done using JavaScript so we need to provide a way to run our own bootstrapping .js files before we load app.js. There is possibly a lot of JavaScript code we can reuse from the android directory. The method I suggest is to package the .js files into the .bar file. The files should be put into a new folder called ""framework"" that is next to, not inside, the ""assets"" folder. The ""assets"" and ""framework"" folders should be separate so we don't have conflicts. The only complication would be that the require() and include() functions might need a flag to know whether the app has been bootstrapped or not (ie read from ""framework"" if bootstrapping and ""assets"" if not). A flag may not be sufficient if things are done asynchronously so the other solution would be to check if the file calling the require/include is in ""framework"" or ""assets"" and make sure to load the file from the same directory. There should be one file called boostrap.js that will include/require the other files, as needed.",5
+"TIMOB-9665","06/20/2012 15:23:17","Blackberry: fix property enumeration on JS object created by the framework","calling toString() on an object created by the Ti framework fails. We think that the property enumeration doesn't enumerate the inherited properties. ",1
+"TIMOB-9682","06/20/2012 23:59:20","Android: Packaging:No warning displayed for default system value of 'ti.ui.defaultunit'.","It is not a regression.It exists as far as 1.8.2 While packaging the app,when the value of ti.ui.defaultunit is 'abc' - Expected - Display warning during packaging, use default system value Actual - No warnings are displayed while packaging. Logs generated while packaging are attached with the bug.",3
+"TIMOB-9742","06/23/2012 15:59:09","iOS: Facebook - On iPod 3rd Gen (4.0.2), Facebook login dialog gets dismissed after it launches","Steps to reproduce: 1. Import KS from Samples pane in TiStudio 2. Install KS to iPod 3. Go to Mashups > Facebook > Login/Logout 4. Press Login with Facebook button Actual: Facebook login dialog gets dismissed once it launches. Expected: Facebook login dialog should not be dismissed once it is launched. Note: * This is *not a regression.* This still occurs in 2.0.2.GA * Facebook login *still works as expected* on ipod (4.3.5) and iphone 4 (5.1)",1
+"TIMOB-9859","07/02/2012 13:19:20","Android: increase AVD storage size to reduce [FAILED_INSUFFICIENT_STORAGE] errors","h2. Expected results: I should be able to build and install more than a few Ti apps to an Android emulator. h2. Actual results: Due to defaults defined in builder.py, I can fit only a couple of Ti apps before the emulator runs out of storage space. This results in a [FAILED_INSUFFICIENT_STORAGE] error. I can delete other apps to free space. However, if I need to work on multiple apps, I end up having to delete/install frequently. h2. Fix In builder.py (in my version, line 491) increase the partition size value. Current value is 128 (MB). I suggest at least 1024. ",1
+"TIMOB-9930","07/10/2012 23:58:12","Android: Packaging: With a non-existing module added to the project in the tiapp.xml,app packages without error and gets installed on device","This is not a regression. IT exists as far as 1.8.2. Adding a module to the project in the tiapp.xml which does not exist such as not.there should prevent the app from getting packaged but it is not. App gets successfully packaged and gets installed on android device.It runs on emulator also without error/warnings. If I try to install it directly on simulaor or iOS/android device, it gives appropriate error for module not found like: For iOS simulator and device error is: [ERROR] Could not find the following required iOS modules: [ERROR] id: not.there version: 1.0 For android device, error is: [ERROR] Failed installing com.appcelerator.timob9090: pkg: /data/local/tmp/app.apk Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES] Steps to reproduce 1. Create a new app in TiStudio 2. Add a module to the project in the tiapp.xml which does not exist such as not.there 3. Package the app/run on android emulator Actual result: The app gets packaged/runs on emulator without error. Expected result: The app should fail packaging with appropriate error result like [ERROR] Could not find the following required iOS modules: [ERROR] id: not.there version: 1.0 And give error for emulator also like(as we get in case of device) [ERROR] Failed installing com.appcelerator.timob9090: pkg: /data/local/tmp/app.apk Failure [INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES]",3
+"TIMOB-9950","07/12/2012 12:54:04","BlackBerry: Fix/implement relative include/require","Currently, include()'s method of doing relative files only works if all done in successive order. It does not work for windows with a url (not implemented) or if include is used in a function of a file in a subdir. Also, require() does not have any method right now. My proposal is to store the filepath in each TiObject so it can be retrieved later when needed. Also, we need to make sure that require() properly handles a ""native Titanium module"" by its ID (eg com.example.module).",2
+"TIMOB-9953","07/12/2012 13:26:36","BlackBerry: Fix logging/exception tags and exception output","Currently, when we throw an exception while a file is being loaded by include or require, both files are shown in the message (eg ""file1.js line 2: file2.js line 5: Missing argument""). We need to make changes so the following is true: # the exception has the [ERROR] tag # only the filename containing the actual error is shown ** might need to get rid of some TryCatch's ** might need to use Message::GetScriptResourceName # the filename shows the full path (minus the .../assets/) # an exception thrown from an event handler shows the filename and crashes the app (eg calling Ti.API.debug() with no params in a button handler) Also need to clean/split up TiRootObject::executeScript and implement Ti.API.log in .js.",2
+"TIMOB-9971","07/16/2012 13:52:27","BlackBerry: Complete 'remove' method in UI View","Implement 'remove' method for removing child controls from a container.",3
+"TIMOB-10059","07/20/2012 11:38:43","BlackBerry: Revisit UI.AlertDialog implementation based on R6","Depends on Cascades R6 An alert dialog is a modal view that includes an optional title, a message and buttons, positioned in the middle of the display. In iOS: https://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIAlertView_Class/UIAlertView/UIAlertView.html",2
+"TIMOB-10116","07/24/2012 09:16:03","iOS: Add Organization and Organizational Unit certificate information to titanium info command","A customer has asked that we provide the ""organization"" attached to a certificate to display in the iOS packaging dialog. The information about the current certificates Studio derives from prereq.py. It is suggested that the certificate JSON string be amended to include: * Organization * Organizational Unit It is suggested we do this as part of prereq.py as perhaps there is other uses for this information in the context of the CLI",5
+"TIMOB-10154","07/26/2012 04:04:02"," iOS : Events not getting fired for tabs in tab group","TabGroup click event is not fired. This is not regression. This issue occurs from 2.0.1. Steps to Reproduce: 1. Create an app using the code below. 2. Launch app. and click on TabGroup. Expected Result: TabGroup click event should be fired and should be reflected on the console. Actual: TabGroup click event is not fired. {code} Titanium.UI.setBackgroundColor('#000'); var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1' }); win1.add(label1); var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2' }); win2.add(label2); tabGroup.addTab(tab1); tabGroup.addTab(tab2); tabGroup.open(); tabGroup.addEventListener(""click"", function(){ Ti.API.info(""tabGroup click event fired!""); }); {code}",5
+"TIMOB-10835","07/31/2012 01:27:55","TiAPI: HTTPClient: new event for continuous data stream","h2. Feature description HTTPClientProxy should support didReceiveData method. h2. Customer's original description of the request I needed to have a comet session using Titanium on iOS. Right now the implementation of TiNetworkHTTPClientProxy doesnt allow this because it doesnt implement didReceiveData of ASIHTTPRequest. Though using didReceiveData would have broken ondatastream and onsendstream. So what i did was create a third one ""ondatastream"" for live data processing. In the meantime i renamed(for now) ondatastream to ondownloadprogress and onsendstream to onsendprogress. WARNING: on ios using the new ""ondatastream"" will break responseText and responseData. This is due to the ASIHTTPRequest implementation h2. Pull request See https://github.com/appcelerator/titanium_mobile/pull/2844 and related links and discussions.",1
+"TIMOB-10257","07/31/2012 08:52:03","BlackBerry: Implement Titanium.IOStream","IOStream is the interface that all stream types implement. Methods: 5 Sub Classes: 4",3
+"TIMOB-10264","07/31/2012 11:22:24","Blackberry: adjust UI controls based on R8","This umbrella task is to address functional delta in controls that were previously implemented using R4 release of Cascades. It could either mean implementing new functionality now available in R6, or redoing something that no longer works or was implemented as a workaround. Refer to the implementation matrix to see what elements need to be implemented",2
+"TIMOB-10272","07/31/2012 13:21:02","BlackBerry: Finish size and position methods / properties on R6 UI View","Implement: getHeight getWidth getBottom setBottom getRight setRight getSize setSize",3
+"TIMOB-10290","08/01/2012 15:46:35","Android: Modules with upper case in project name fails to create with internal error.","When creating an android module in studio using upper case letters in the project name (e.g., MyAndroid, as opposed to myandroid), the creation fails with internal error: could not move file. This appears to be related to TISTUD-1633. This is not regression. This does not occur with mobileweb modules, nor does it occur on OS X. When an android module is created using the command line, the module is created correctly, but the project name is automatically converted to lower case. Steps to Reproduce: 1. Create new android module from studio with project name containing uppercase letters. Actual Result: Module fails to create with cannot move folder errors. Expected Result: Module creates without error.",5
+"TIMOB-10299","08/02/2012 08:12:22","Blackberry: Update API doc to state what is NOT implemented","This activity should be done at the ""feature complete"" stage of the project",3
+"TIMOB-10305","08/03/2012 09:36:26","Blackberry: Support overriding the default UI unit via tiapp.xml","On Android and iOS, the default unit can be overriden on a per-application level by setting the ti.ui.defaultunit property in tiapp.xml. For example, to use DIPs as the default on all platforms, set defaultunit to dip: dip The value for ti.ui.defaultunit can be any of the unit specifiers defined above, or system to specify that the platform's default unit should be used.",5
+"TIMOB-10307","08/03/2012 12:03:30","BlackBerry: Add support of javascript implementation of parts of the Ti API","Unmbrella task to link to all the bug and issue of the current framework that prevent easy extension of the api using js. Will also need to be figured out: inheritance between native objects and js objects",8
+"TIMOB-10371","08/09/2012 12:08:59","Blackberry: Imageview parity for scaling behavior","As part of TIMOB-3749 scaling behavior of imageViews was changed. If either width or height of image view are set to follow SIZE behavior('auto',Ti.UI.SIZE,undefined) then the image is scaled with aspect ratio intact. Otherwise the image is scaled ignoring aspect ratio. Test code below {code} var win = Ti.UI.createWindow({ backgroundColor:'#fff', layout:'vertical' }); var image = Ti.UI.createImageView({ image: ""http://www.catravelservices.com/management/hotels/pictures/Mawamba_lodge_nature.jpg"", backgroundColor : ""red"" }); var label = Ti.UI.createLabel({ text:'Results Here' }) var updateLabel = function(){ var size = image.size; label.text = 'ImageView size is '+size.width+'x'+size.height; } var controlsContainer = Ti.UI.createView({ height:Ti.UI.SIZE }) var widthControls = Ti.UI.createView({ width:'50%', layout:'vertical', left:0, height:Ti.UI.SIZE }) var heightControls = Ti.UI.createView({ width:'50%', layout:'vertical', right:0, height:Ti.UI.SIZE }) controlsContainer.add(widthControls); controlsContainer.add(heightControls); var b1 = Ti.UI.createButton({title:'WIDTH=SIZE'}) var b2 = Ti.UI.createButton({title:'WIDTH=165'}) var b3 = Ti.UI.createButton({title:'WIDTH=250'}) var b4 = Ti.UI.createButton({title:'HEIGHT=SIZE'}) var b5 = Ti.UI.createButton({title:'HEIGHT=50'}) var b6 = Ti.UI.createButton({title:'HEIGHT=165'}) b1.addEventListener('click',function(e){ image.width=Ti.UI.SIZE; setTimeout(updateLabel,500); }) b2.addEventListener('click',function(e){ image.width=165; setTimeout(updateLabel,500); }) b3.addEventListener('click',function(e){ image.width=250; setTimeout(updateLabel,500); }) b4.addEventListener('click',function(e){ image.height=Ti.UI.SIZE; setTimeout(updateLabel,500); }) b5.addEventListener('click',function(e){ image.height=50; setTimeout(updateLabel,500); }) b6.addEventListener('click',function(e){ image.height=165; setTimeout(updateLabel,500); }) win.add(image); widthControls.add(b1); widthControls.add(b2); widthControls.add(b3); heightControls.add(b4); heightControls.add(b5); heightControls.add(b6); win.add(controlsContainer); win.add(label) win.open(); {code}",8
+"TIMOB-10488","08/11/2012 12:57:16","iOS: webView.loading always returns null","h3. Expected webView returns `true` if loading, `false` if not. h3. Actual webView always returns null h3. Testcase Click around on some links and see that it only reports `` in Studio. {code:javascript} var win = Ti.UI.createWindow(); var webView = Ti.UI.createWebView({ url: 'http://appcelerator.com' }); setInterval(function() { Ti.API.log( webView.loading ); }, 500); webView.addEventListener('beforeload', function() { Ti.API.log( webView.loading ); }); webView.addEventListener('load', function() { Ti.API.log( webView.loading ); }); win.add( webView ); win.open(); {code}",3
+"TIMOB-10534","08/15/2012 09:22:45","Tooling: Android emulator silently fails","When I try to run the android emulator I see the following in the Debug output: {noformat} [DEBUG] C:\SDK\tools\emulator.exe -avd titanium_6_WVGA854 -port 5560 -sdcard ""C:\Users\qatester\.titanium\titanium_6_WVGA854.sdcard"" -logcat *:d,*,TiAPI:V -no-boot-anim -partition-size 128 armeabi-v7a [DEBUG] signal caught: 3 [DEBUG] calling emulator kill on 3872 {noformat} A bit of poking around finds that the emulator does not launch when the armeabi-v7a argument is attached. {noformat} Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. All rights reserved. C:\Users\qatester>C:\SDK\tools\emulator.exe -avd titanium_6_WVGA854 -port 5560 - sdcard ""C:\Users\qatester\.titanium\titanium_6_WVGA854.sdcard"" -logcat *:d,*,TiA PI:V -no-boot-anim -partition-size 128 armeabi-v7a C:\Users\qatester>invalid command-line parameter: armeabi-v7a. Hint: use '@foo' to launch a virtual device named 'foo'. please use -help for more information {noformat} I think this has something to do with the x86 emulators I had tested against, but can not figure out how to undo that change. Steps to reproduce: 1. Create an Android project. 2. Run the project in the emulator. Expected results: The app should run in the emulator or should throw a relevant error. Actual results: The debug shows the above message before flipping the view to waiting for the emulator to be ready which finally times out.",8
+"TIMOB-10717","08/30/2012 09:53:13","Blackberry: Implement Titanium.UI.TextField value property","Create TextField. Try to set Value or get value during some action (for example button click event). for getValue() - undefined is returned. for setValue() - doesn't set the textfield value. ",0.5
+"TIMOB-10724","08/30/2012 14:24:09","Android: Modules: remove gperf as a build dependency","When trying to build an android module on windows 7, there was an uninformative failure/error. {code} C:\Users\tester\AppData\Roaming\Titanium\mobilesdk\win32\2.1.2.v20120824144611\module\android\build.xml:362: The following error occurred while executing this line: C:\Users\tester\AppData\Roaming\Titanium\mobilesdk\win32\2.1.2.v20120824144611\module\android\build.xml:317: exec returned: 2 {code} Upon further investigation (using titanium studio > android module project > build.xml > right click > run as ant) it was found that gperf was somehow removed from the path or uninstalled from that machine, and it needed to be reinstalled and added to the system path. This does not occur on a fresh studio/sdk install on windows 7. It is suggested to remove gperf as a dependency to build android modules. Note that gperf is not documented as a dependency. Android Module Documentation (wiki.appcelerator.org): https://wiki.appcelerator.org/display/guides2/Android+Module+Development+Guide#AndroidModuleDevelopmentGuide-Step0%3AInstallingtheNecessaryComponents Steps to Reproduce: 1. Install Titanium Studio and Titanium SDK on Windows 7. 2. Install Android SDK and Android NDK. 3. Uninstall gperf or remove from the system path. 4. Create an Android Module and build the module (i.e., Publish > Package Module > to Titanium Project). Actual Result: Build failure if gperf is not installed. Expected Result: Success (no gperf dependency), or a meaningful error message. Note that the inclusion of gperf causes overhead for Titanium Studio to include built-in software prerequisites.",8
+"TIMOB-10757","09/04/2012 15:48:48","CLI: Module Build","The task involves a few things before implementing the platform specific logic. h4. {{cli/commands/build.js}} In the {{project-dir}} callback function, determine if the project is an app or a module. If the project has a {{tiapp.xml}}, then it is an app. If the project has a {{timodule.xml}}, it is a module. When a module project is found, the {{timodule.xml}} should be parsed and saved into the {{cli.timodule}} variable. If the the project is neither a app or module, error and exit. You should set the {{cli.argv.type}} to the appropriate value. Remember that you need to scan up the directory tree since the {{project-dir}} may be a subdirectory. In the {{validate()}} function, if it is an app, then do the {{ti.validateCorrectSDK()}} and {{ti.validatePlatform()}} stuff. If it is a module, then validate module stuff. In the {{run()}} function, I think you only need to call {{ti.resolvePlatform()}} for apps. The {{buildModule}} should be {{path.join(__dirname, '..', '..', platform, 'cli', 'commands', '_build.js')}} for apps and {{path.join(__dirname, '..', '..', platform, 'cli', 'commands', '_build_module.js')}} for modules. If {{_build_module.js}} file does not exist, error and exit. h4. {{node_modules/titanium-sdk/lib/builder.js}} Add {{this.timodule = cli.timodule;}} to the {{run()}} function after the {{this.tiapp}} line.",0
+"TIMOB-10850","09/05/2012 11:38:05","Ti Studio: when creating a new project, and sections are added to TiApp.xml. Project is Android only.","h2. Problem When you create a New | Titanium Mobile Project, and sections get added to the initial TiApp.xml file, even though the project is Android only (iPhone and Mobile Web were unchecked). h2. Expected Behavior No or sections should be added to the initial TiApp.xml file when creating a new Android-only project. Likewise, no or sections should be added when creating an iPhone-only project. h2. Actual Behavior # Create a New | Titanium Mobile Project. # Uncheck Mobile Web and iPhone. # The resulting TiApp.xml file will have and sections in it. ",0
+"TIMOB-10800","09/06/2012 15:03:15","iOS: TableView scrolls back to focused text field on scroll end","*Code* http://pastie.org/4674079 *Expected Behaviour* The user should be able to scroll through the table without being taken back to focused textField. The textField should stay focused. *Actual Behaviour* TableView of textFields scrolls back to focussed text field on scroll end. *Notes* - Tested on iOS 5.1 - To Replicate the issue, click on textField in row 6 then once the textfield gains focus scroll down the table, as soon the scrolling ends it will take you back to row 6.",13
+"TIMOB-10869","09/12/2012 12:17:51","Blackberry: Implement important Titanium.UI methods","Use the implementation matrix to see what's remaining (these are things that are not implemented but supported in Cascades): https://docs.google.com/a/macadamian.com/spreadsheet/ccc?key=0Ajs-e76-B0yIdG1oLVVleVVxaGRYd3lWWXd0czhqUFE",2
+"TIMOB-11049","09/20/2012 04:49:23","iOS: Ti.Facebook.dialog feed broken for large description texts.","When I use a large description text inside Ti.Facebook.dialog(""feed""), it displays some unescaped / uninterpreted html data throughout the text. I'm not exactly sure if this is a Titanium Mobile bug or the bug lies within the Facebook SDK version used under the Ti Module itself. Sample Code: {code:javascript} var win = Ti.UI.createWindow(); Titanium.Facebook.appid = '187692147928682'; Titanium.Facebook.permissions = ['publish_stream']; var postToFeed = function(e) { var data = { link : ""http://airportchatter.com"", name : ""AirportChatter"", message : ""Hey! Checkout AirportChatter when you're on an airport!"", caption : ""Know Before You Go!"", picture : ""http://www.airportchatter.com/images/airportchatter-logo-alpha.png"", description : ""AirportChatter guides you through all venues, services, terminals and security on all major airports in the world!"" + "" It also give you the best deals, discount coupons, updated user reviews on venues, services and lounges."" + "" we can also help you to make friends on airports and terminals during your layover using our awesome Radar feature!"" }; Titanium.Facebook.dialog(""feed"", data, function(e) { if (e.success && e.result) { alert(""Success! New Post ID: "" + e.result); } else { if (e.error) { alert(e.error); } else { alert(""User canceled dialog.""); } } }); }; var postButton = Ti.UI.createButton({ title : 'Post', height : 60, width : 200, top : 200 }); postButton.addEventListener('click', function(e) { postToFeed(); }); win.add(postButton); win.open(); {code} It shows the text, and after a certain amount of chars it shows the html code (not interpreted): {code:html} ...
rest of the text...
{code} Follows an image attached with the output...",1
+"TIMOB-11152","09/26/2012 00:54:29","Tooling: don't rebuild local project app if project is not dirty","Currently, if a project has not been edited, and build is called, the entire project rebuilds. We could detect if destination app matches last build in project to enhance build time. This is particularly relevant for device debugging. Steps to Reproduce: 1. Open Titanium Studio. 2. Import KitchenSink. 3. Run on Device (Android or iOS) and wait for process to complete. 4. Run on Device again. Actual Result: App is rebuilt, could take around 30 seconds. Expected Result: App should not be rebuilt, should take 1 second.",5
+"TIMOB-11188","09/27/2012 01:41:24","iOS: Debugger: breakpoints ignored if app is only primitive assignment statements","Breakpoints ignored if the app is only comprised of primitive assignment statements. This is not a regression. This does not occur on Android. This is a parity issue. This is basic functionality. Steps to Reproduce: 1. Run code in debug (manually insert breakpoints as per code comments): {code} var a = 1; // breakpoint var b = 2; // breakpoint var c = 3; // breakpoint var d = 4; // breakpoint var e = 5; // breakpoint var f = 6; // breakpoint {code} Actual Result: All breakpoints ignored. Expected Result: All breakpoints should be hit (as 'Resume' is pressed).",1
+"TIMOB-11393","10/11/2012 21:19:00","Android: TabGroup.backgroundColor doesn't change background.","Unable to set the background color of a tab group. This appears to be caused by having no ""native view"" setup to handle the view property changes in TiUIView. h4. Test Case {code:JavaScript} var tabGroup = Ti.UI.createTabGroup({ backgroundColor: 'blue' }); tabGroup.open(); {code} Pass: Background color of the tab group is blue. Fail: Background color isn't blue, but black.",1
+"TIMOB-23341","10/18/2012 13:29:48","Exception on iPhone: no row found for index. in -TiUITableViewProxy insertRowAfter","When you are trying to add numerous rows to a TableView using insertRowAfter it randomly causes exceptions: ""no row found for index. in -TiUITableViewProxy insertRowAfter:"";"" It looks line some code lines have been commented out for unknown reason and causing issues on the UI thread. Please see this commit: https://github.com/appcelerator/titanium_mobile/commit/040cb9ab4350e6f3bd6eb5e22770f76ec9791b5e And see this issue on the forum: http://developer.appcelerator.com/question/129708/obj-c-fix-for-error-on-tableview-insertrowbefore--insertrowafter This line should be back on those methods: ENSURE_UI_THREAD(insertRowAfter,args);",3
+"TIMOB-11628","10/22/2012 00:41:51","Correct spacing and grammar in Android NDK console warning.","When packaging an Android module and you forget to make a link to the NDK, it provides a warning, but the warning is missing a space and a period. ""Check your modules' build properties)You may need to install""",3
+"TIMOB-11577","10/25/2012 19:37:19","Ti API: Add new Facebook 3 views","Facebook recently updated their API for iOS to 3.1 and for Android to 3.0. TIMOB-10422 is to update the FB SDK. This ticket is to introduce new functionality brought about by FB3. As such, there will be parity issues to consider.",1
+"TIMOB-11603","10/29/2012 21:25:14","Android: invalid android path in bash profile results in project creation error, improve error message","Failed to build a project for Android in Titanium Studio due to incorrect path to android SDK in a bash profile. *It happens only in 3.0.0.version of Studio.* It creates projects in Studio 2.1.2 Test steps: 1.Go to Titanium Studio > Preferences > Titanium 2. Browse and set Android SDK Home 3. Browse and set Android NDK Home Note the difference with a bash profile. export ANDROID_SDK=/myname/Documents/android-sdk-macosx export ANDROID_NDK=/myname/Documents/android-ndk-r8 4. Create a project for Android. Actual result: Fail to create a project. Failed to locate android-8 and android 2.2 Expected result: A project should be created successfully. ",3
+"TIMOB-11769","11/02/2012 22:02:32","CLI: colors, lines, and messages ill-formatted with CLI enabled","Console: colors, lines, and messages ill-formatted with CLI enabled (see screenshots). Steps to Reproduce: 1. Run code: {code} /* console */ if(Ti.Platform.osname != 'android') // TIMOB-11294 - Android: console: log functions fail in commonjs require { console.log('console LOG'); console.log(['console LOG', 'ARG1', 'ARG2']); console.debug('console DEBUG'); console.debug(['console DEBUG', 'ARG1', 'ARG2']); console.info('console INFO'); console.info(['console INFO', 'ARG1', 'ARG2']); console.warn('console WARN'); console.warn(['console WARN', 'ARG1', 'ARG2']); console.error('console ERROR'); console.error(['console ERROR', 'ARG1', 'ARG2']); } else { Ti.API.info('TIMOB-11294 - Android: console: log functions fail in commonjs require'); } /* Ti.API */ Ti.API.trace('Ti.API TRACE'); Ti.API.trace(['Ti.API TRACE', 'ARG1', 'ARG2']); Ti.API.debug('Ti.API DEBUG'); Ti.API.debug(['Ti.API DEBUG', 'ARG1', 'ARG2']); Ti.API.info('Ti.API INFO'); Ti.API.info(['Ti.API INFO', 'ARG1', 'ARG2']); Ti.API.warn('Ti.API WARN'); Ti.API.warn(['Ti.API WARN', 'ARG1', 'ARG2']); Ti.API.error('Ti.API ERROR'); Ti.API.error(['Ti.API ERROR', 'ARG1', 'ARG2']); /* Ti.API.log */ Ti.API.log('TRACE', 'Ti.API.log TRACE'); Ti.API.log('TRACE', ['Ti.API.log TRACE', 'ARG1', 'ARG2']); Ti.API.log('DEBUG', 'Ti.API.log DEBUG'); Ti.API.log('DEBUG', ['Ti.API.log DEBUG', 'ARG1', 'ARG2']); Ti.API.log('INFO', 'Ti.API.log INFO'); Ti.API.log('INFO', ['Ti.API.log INFO', 'ARG1', 'ARG2']); Ti.API.log('WARN', 'Ti.API.log WARN'); Ti.API.log('WARN', ['Ti.API.log WARN', 'ARG1', 'ARG2']); Ti.API.log('ERROR', 'Ti.API.log ERROR'); Ti.API.log('ERROR', ['Ti.API.log ERROR', 'ARG1', 'ARG2']); Ti.API.log('LOG', 'Ti.API.log LOG'); Ti.API.log('LOG', ['Ti.API.log LOG', 'ARG1', 'ARG2']); /* Ti.iOS.API */ if(Ti.Platform.osname == 'iphone' || Ti.Platform.osname == 'ipad') { Ti.API.timestamp('Ti.API TIMESTAMP'); Ti.API.timestamp(['Ti.API TIMESTAMP', 'ARG1', 'ARG2']); } {code} Actual Result: colors, line formatting misaligned, and some messages do not display at all. Expected Result: colors, lines, and messages should appear and be properly formatted",8
+"TIMOB-11686","11/07/2012 17:30:29","BlackBerry: Invocations","As a BlackBerry developer, I want the ability to integrate with other applications on the platform in order to provide better multitasking for the user.",3
+"TIMOB-11700","11/08/2012 01:23:49","Android: Make generated projects importable into Eclipse","When we build an android projects using our build scripts, it would be nice if we could directly import that project into eclipse and run it from there to debug. We will need to create things like .project to make this an eclipse project.",3
+"TIMOB-12646","11/08/2012 20:21:48","iOS: TableViewRow selection causes child view's backgroundColor to disappear","Platform: iOS Device: iOS Simulator 6.0 & iPod Touch (4th gen, software version 6.0.1) Repro: 1. Create a TableView 2. Create a TableViewRow 3. Create a View with a backgroundColor 4. Add the view to the row 5. Add the row to the table 6. Tap and hold on the row Result: The row's selectedBackgroundColor becomes visible and the view's backgroundColor becomes transparent Expected: The row's selectedBackgroundColor becomes visible and the view's backgroundColor remains visible Additional Notes: 1. If the view inside of the row has children, they are still displayed. Only the view's backgroundColor is affected. 2. Setting the row's selectionStyle to NONE prevents the backgroundColor of the view from disappearing.",8
+"TIMOB-13304","11/23/2012 04:29:45","Mobile Web: TableView deleteRow does not work if filled by setting data property to array of sections","*Test case* {code} var wnd = Ti.UI.createWindow() Ti.UI.backgroundColor = ""#FFFFFF"" //Problems: //1. second section appear differently than first and third //2. deleteRow(3) removes row number 6 function tableViewBug() { var table = Ti.UI.createTableView() var sections = [] for (var i = 0; i < 3; ++i) { var section = Ti.UI.createTableViewSection() for (var j = 0; j < 3; ++j) { var row = Ti.UI.createTableViewRow() var label = Ti.UI.createLabel({ text : ""section:"" + i + "" row:"" + j }) row.add(label) section.add(row) } sections.push(section) } table.data = sections wnd.add(table) setTimeout(function() { table.deleteRow(3) }, 3000) } tableViewBug() wnd.open() {code}",3
+"TIMOB-11867","11/27/2012 13:58:04","CLI: Alloy: Mobile Packaging Failed","Steps To Reproduce: 1. Create Alloy project 2. Package to Mobile Web Project Actual: Failed to package appears Expected: Mobile Package must occur without error",8
+"TIMOB-11919","12/01/2012 11:28:10","CLI: Creating MobileWeb module with ti.cloud as appid prohibits any MW Project to run on MWBrowser or Emulator.","Steps To Reproduce: 1. Create MW module with app-id ti.cloud 2. Package it in a default project. (Project with cloud service enabled) 3. Try running same project or new default project in MW Preview in Browser or Emulator.[issue appears here] 4. Now try running a project with disabled cloud service and run same on MW Browser and Emulator.[This runs fine] Actual: The folder /Users/pragyarastogi/Library/Application Support/Titanium/modules/mobileweb/ti.cloud prohibits any MW project to run in browser and emulator. Refer screenshot for Emulator error and Browser error. The folder is created when MW module is Package to Titanium SDK. Note: In 2.1.4.GA SDK the error appears is somewhat different. Refer Screenshot. Expected: Project must run on MW Emulator or Browser without any error.",3
+"TIMOB-11943","12/04/2012 10:06:03","Android: blur event not called when keyboard is hidden","h1. Problem description When a TextArea is focused, and the user clicks the back button to hide the soft keyboard, the blur event is not fired. It is not also possible to use the 'android:back' event, as it is not fired when hiding the keyboard. h1. Steps to reproduce - Use the following code to test the bug. - Click on the black window to open a second one with a TextArea - Click on it to show the keyboard - Hit the back button: the 'blur' and 'android:back' events are not fired when keyboard is being hidden {code} // Create a window var root = Ti.UI.createWindow({ backgroundColor : 'black', modal: true }); root.addEventListener('click', function() { var win = Ti.UI.createWindow({ backgroundColor : 'white', modal: true }); var toolbar = Titanium.UI.createTextArea({ height: 37, width: 200, font: {fontSize:16,fontFamily:'ARIAL', fontWeight:'solid'}, color: '#000', borderWidth: 1, borderColor: '#828281', borderRadius: 12, suppressReturn: false, scrollable: false }); toolbar.addEventListener('blur', function() { alert('blurrrred'); }); win.addEventListener('android:back', function() { alert('baaaack'); }); win.add(toolbar); win.open(); }) root.open(); {code}",5
+"TIMOB-12246","12/04/2012 16:29:42","Android: Auto correct set to false on TextField with KEYBOARD_DECIMAL_PAD doesn't allow decimal point","h2.Problem When the keyboardType propery of a TextField is set to Ti.UI.KEYBOARD_DECIMAL_PAD and autocorrect is set to false, the decimal point is not allowed to be entered into the textfield. This leaves no way to enter dollar amounts without using the default keyboard, which allows any character, and is therefore not appropriate. h2.Expected Behavior autocorrect should not be interfering with numbers in the text field. h2.Actual Behavior When auto correct is set to false The ""numbers and punctuation"" keyboard appears, but clicking on the decimal point has no effect. h2.Testcase {panel:title=app.js} {code} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var textField = Ti.UI.createTextField({ borderStyle : Ti.UI.INPUT_BORDERSTYLE_ROUNDED, color : '#336699', keyboardType : Ti.UI.KEYBOARD_DECIMAL_PAD, returnKeyType : Ti.UI.RETURNKEY_DEFAULT, autocorrect : false, textAlign : 'right', width : '50%' }); win.add(textField); win.open(); {code} {panel}",3
+"TIMOB-13401","12/06/2012 10:24:14","iOS 6: insertRowBefore uses animation with animated set to false and animationStyle set to none","*Description* insertRowBefore uses a fade animation although animated is set to false and animationStyle is set to NONE (see code sample) *Expected result* row is simply inserted without an animation *current result* row is inserted with fade animation *additional notes* might also apply to insertRowAfter and appendRow and deleteRow (not tested) *sample* {code} /* * Single Window Application Template: * A basic starting point for your application. Mostly a blank canvas. * * In app.js, we generally take care of a few things: * - Bootstrap the application with any data we need * - Check for dependencies like device type, platform version or network connection * - Require and open our top-level UI component * */ //bootstrap and check dependencies if (Ti.version < 1.8) { alert('Sorry - this application template requires Titanium Mobile SDK 1.8 or later'); } // This is a single context application with mutliple windows in a stack (function() { //determine platform and form factor and render approproate components var win = Ti.UI.createWindow({ width : Ti.UI.FILL, height : Ti.UI.FILL, }); var tv = Ti.UI.createTableView({ width : Ti.UI.FILL, height : Ti.UI.FILL, }); var rows = []; for (var i = 0; i < 50; i++) { rows.push(Ti.UI.createTableViewRow({ title : 'Row ' + i })); } var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before 0' }); row.addEventListener('click', function() { tv.insertRowBefore(0, { title : 'Row inserted before 0' }); }); rows.push(row); var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before 1' }); row.addEventListener('click', function() { tv.insertRowBefore(1, { title : 'Row inserted before 1 w/o anim' }, { animationStyle : Ti.UI.iPhone.RowAnimationStyle.NONE }); }); rows.push(row); var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before this' }); row.addEventListener('click', function(e) { tv.insertRowBefore(e.index, { title : 'Row inserted before 0' }); }); rows.push(row); var row = Ti.UI.createTableViewRow({ title : 'Insert Row Before this' }); row.addEventListener('click', function(e) { tv.insertRowBefore(e.index, { title : 'Row inserted before w/o anim' }, { animationStyle : Ti.UI.iPhone.RowAnimationStyle.NONE, animated : false, }); }); rows.push(row); tv.data = rows; win.add(tv); win.open(); })(); {code}",5
+"TIMOB-12034","12/12/2012 01:07:12","CLI: Building for android with '-b' -build only flag starts the daemon & waits for the device after building the app","Steps to reproduce: 1.Launch CLI by typing 'titanium' in the terminal. 2.Run 'ti build -p android -b -d --log-level trace -s 3.0.0.v20121211130203'. Actual results: 1.The app builds but it starts the deamon & waits for the device. Expected results: 1.The app should build but the deamon should not start & not wait for the android device as we have specified the '-b' i.e build only flag. Trace output: {code} LChoudharyMBP:~ lokeshchoudhary$ ti build -p android -b true -d /Users/lokeshchoudhary/Desktop/test/test --log-level trace -s 3.0.0.v20121211130203 Titanium Command-Line Interface, CLI version 3.0.21, Titanium SDK version 3.0.0.v20121211130203 Copyright (c) 2012, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ Android SDK path: /Users/lokeshchoudhary/Desktop/android-sdk-macosx [DEBUG] No project level plugins to load [DEBUG] Loaded plugin hooks: [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121211130203/cli/hooks/plugins.js [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121211130203/android/cli/hooks/install.js [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121211130203/android/cli/hooks/run.js [INFO] logfile = /Users/lokeshchoudhary/Desktop/test/test/build.log [DEBUG] /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/builder.py build test /Users/lokeshchoudhary/Desktop/android-sdk-macosx /Users/lokeshchoudhary/Desktop/test/test com.app.test [INFO] Titanium SDK version: 3.0.0 (12/07/12 12:02 fc56f4c) [DEBUG] com.app.test installed? False [DEBUG] Detecting modules in /Users/lokeshchoudhary/Desktop/test/test/modules [DEBUG] Detecting modules in /Users/lokeshchoudhary/Library/Application Support/Titanium/modules [DEBUG] Detected module for android: ti.cloudpush 2.0.7 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/android/ti.cloudpush/2.0.7 [DEBUG] Detected module for android: ti.brightcove 2.0.1 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/android/ti.brightcove/2.0.1 [DEBUG] Detected module for commonjs: ti.cloud 2.3.0 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/commonjs/ti.cloud/2.3.0 [DEBUG] Detected module for iphone: com.soasta.touchtest 1.0 @ /Users/lokeshchoudhary/Library/Application Support/Titanium/modules/iphone/com.soasta.touchtest/1.0 [INFO] Copying CommonJS modules... [INFO] Copying project resources.. [INFO] Tiapp.xml unchanged, skipping class generation [DEBUG] detected module analytics, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-analytics.jar [DEBUG] detected module android, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-android.jar [DEBUG] adding required library: jaxen-1.1.1.jar [DEBUG] adding required library: ti-commons-codec-1.3.jar [DEBUG] adding required library: kroll-common.jar [DEBUG] adding required library: titanium.jar [DEBUG] detected module app, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-app.jar [DEBUG] detected module ui, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar [DEBUG] adding required library: android-support-v4.jar [DEBUG] detected module filesystem, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-filesystem.jar [DEBUG] detected module media, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-media.jar [DEBUG] detected module locale, path = /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-locale.jar [INFO] Compiling Javascript Resources ... [DEBUG] Processing Android resource drawables [DEBUG] found drawable-long-land-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-land-hdpi/default.png [DEBUG] found drawable-long-land-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-land-ldpi/default.png [DEBUG] found drawable-long-port-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-port-hdpi/default.png [DEBUG] found drawable-long-port-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-long-port-ldpi/default.png [DEBUG] found drawable-notlong-land-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-land-hdpi/default.png [DEBUG] found drawable-notlong-land-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-land-ldpi/default.png [DEBUG] found drawable-notlong-land-mdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-land-mdpi/default.png [DEBUG] found drawable-notlong-port-hdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-port-hdpi/default.png [DEBUG] found drawable-notlong-port-ldpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-port-ldpi/default.png [DEBUG] found drawable-notlong-port-mdpi splash screen at /Users/lokeshchoudhary/Desktop/test/test/Resources/android/images/res-notlong-port-mdpi/default.png [DEBUG] /Users/lokeshchoudhary/Desktop/android-sdk-macosx/platform-tools/aapt package -f -M AndroidManifest.xml -A /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/assets -S res -I /Users/lokeshchoudhary/Desktop/android-sdk-macosx/platforms/android-8/android.jar -I ""/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar"" -F /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.ap_ [DEBUG] creating unsigned apk: /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app-unsigned.apk [DEBUG] from resource zip => assets/Resources/KS_nav_ui.png [DEBUG] from resource zip => assets/Resources/KS_nav_views.png [DEBUG] from resource zip => assets/Resources/app.js [DEBUG] from resource zip => assets/Resources/appicon.png [DEBUG] from resource zip => assets/Resources/default.png [DEBUG] from resource zip => assets/app.json [DEBUG] from resource zip => assets/index.json [DEBUG] from resource zip => assets/tiapp.xml [DEBUG] from resource zip => res/drawable/appicon.png [DEBUG] from resource zip => res/drawable/background.png [DEBUG] from resource zip => res/layout/titanium_tabgroup.xml [DEBUG] from resource zip => AndroidManifest.xml [DEBUG] from resource zip => resources.arsc [DEBUG] from resource zip => res/drawable-long-land-hdpi/background.png [DEBUG] from resource zip => res/drawable-long-land-ldpi/background.png [DEBUG] from resource zip => res/drawable-long-port-hdpi/background.png [DEBUG] from resource zip => res/drawable-long-port-ldpi/background.png [DEBUG] from resource zip => res/drawable-notlong-land-hdpi/background.png [DEBUG] from resource zip => res/drawable-notlong-land-ldpi/background.png [DEBUG] from resource zip => res/drawable-notlong-land-mdpi/background.png [DEBUG] from resource zip => res/drawable-notlong-port-hdpi/background.png [DEBUG] from resource zip => res/drawable-notlong-port-ldpi/background.png [DEBUG] from resource zip => res/drawable-notlong-port-mdpi/background.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/binding.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/binding.min.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/json2.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/polling.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/modules/titanium-ui.jar => ti/modules/titanium/ui/widget/webview/polling.min.js [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/build.properties [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/background.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on_18.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on_48.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_check_buttonless_on_64.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more_18.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more_48.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_more_64.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_picker_normal.9.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_picker_pressed.9.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/btn_picker_selected.9.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/default_icon.png [DEBUG] from JAR /Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/titanium.jar => org/appcelerator/titanium/res/drawable/photoDefault.png [DEBUG] installing native SDK libs [DEBUG] keytool -v -list -keystore ""/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/dev_keystore"" -storepass ******* -alias tidev [DEBUG] jarsigner -sigalg MD5withRSA -digestalg SHA1 -storepass ******* -keystore ""/Users/lokeshchoudhary/Library/Application Support/Titanium/mobilesdk/osx/3.0.0.v20121207120202/android/dev_keystore"" -signedjar /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.apk /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app-unsigned.apk tidev [DEBUG] /Users/lokeshchoudhary/Desktop/android-sdk-macosx/tools/zipalign -v 4 /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.apk /Users/lokeshchoudhary/Desktop/test/test/build/android/bin/app.apkz [INFO] Project built successfully in 7s 903ms * daemon not running. starting it now on port 5037 * * daemon started successfully * - waiting for device - {code}",3
+"TIMOB-13392","12/12/2012 09:10:24","Android: Implement Scrollable Tabs","As seen in the [documentation|http://developer.android.com/design/patterns/actionbar.html] [(another place)|http://developer.android.com/design/building-blocks/tabs.html], there's a new subtype of tab bar in the Android, called Scrollable Tabs.",13
+"TIMOB-12848","12/17/2012 05:46:41","Android: Using the camera on certain devices causes the app to crash","Call Ti.Media.showCamera and the camera opens up fine, takes the picture fine, then click ok, and the app crashes before reaching the success function. The picture does manage to get saved into the photo gallery. Sample code. Paste this into a new Android application. {code} var win = Titanium.UI.createWindow(); var imageView = Ti.UI.createImageView({height: Ti.UI.FILL, width: Ti.UI.Fill}); win.add(imageView); Titanium.Media.showCamera({ success:function(event) { Ti.API.info('#### Camera Success'); var cropRect = event.cropRect; var image = event.media; Ti.API.info(image.length); var filename = Titanium.Filesystem.tempDirectory + ""/""+ 'camera_photo' + new Date().getTime() + "".png""; Ti.API.info(filename); var f = Titanium.Filesystem.getFile(filename); Ti.API.info(f.nativePath); if (f.exists()) { Ti.API.info('The file exist , trying to delete it before using it :' + f.deleteFile()); f = Titanium.Filesystem.getFile(filename); } f.write(image); alert('Camera Success! The file size is '+f.size+' bytes.\n Now trying to assign it to an image on the screen (this may fail for hi res images)') imageView.image = f.nativePath; }, cancel:function() { Ti.API.info('#### Camera Cancel'); }, error:function(error) { // create alert Ti.API.info('#### Camera Error'); var a = Titanium.UI.createAlertDialog({title:'Camera'}); // set message if (error.code == Titanium.Media.NO_CAMERA) { a.setMessage('Device does not have video recording capabilities'); } else { a.setMessage('Unexpected error: ' + error.code); } // show alert a.show(); }, allowEditing:true }); win.open(); {code}",13
+"TIMOB-12128","12/18/2012 23:57:09","Create a Titanium benchmark","In order to measure the performance of Mobile Web, we need a benchmark that measures various aspects such as creating TableViews with a 10,000 rows and so on. The benchmark needs to output some sort of measurement data that we can compare between builds. I'm not sure if the benchmark should be a score or a time or what.",0
+"TIMOB-12143","12/21/2012 01:14:42","CLI: Implement minification with source number line mapping","When the user minifies his app, he will generate a source map file that maps the minified code to the actual source code. We will update the TiCore to send additional information so that 3rd-party services can do the above mapping and identify where the crash occurred. This will likely involve a switch to using Uglify 2.",0
+"TIMOB-13398","12/21/2012 16:08:14","iOS: support ellipsize property of Ti.UI.Label (parity)","Android and mobileweb support the ellipsize property of Ti.UI.Label. Please add support for this property under iOS as well.",5
+"TIMOB-12429","12/26/2012 13:11:22","Ti.UI.TableViewSection.rows property is not implemented","Implement Ti.UI.TableViewSection.rows property.",1
+"TIMOB-12153","12/26/2012 19:57:14","Android : Scrollview with a tableview does not scroll if contentHeight is set to 'auto'","Run the below code snippet to see scrollview with a tableview inside not scrolling if contentHeight is set to 'auto'. It works fine if it is set to 500 or 1000. But works fine in ios with 'auto'. {code} var win = Ti.UI.createWindow({ backgroundColor:'gray', layout:'vertical' }); var someLabel = Ti.UI.createLabel({ text: 'some content' }) win.add(someLabel); var testArray = new Array('1','2','3','4','5','6','7','8','9','10'); var cardScrollView = Ti.UI.createScrollView({ layout:'vertical', contentHeight:'auto', // 500 or 1000 works contentWidth:'auto', height: '100%', width:'100%', top:0, scrollType:'vertical' }); cardScrollView.addEventListener('scroll', function(e){ Ti.API.info('Scroll called from scrollview'); }); var table_view = Ti.UI.createTableView({ //top: 350, id: 'mytable', scrollable: false, touchEnabled:false, className: ""row"", backgroundColor:'white', separatorColor:'black', height: Ti.UI.SIZE }); table_view.addEventListener('scroll', function(e){ Ti.API.info('Scroll called from tableview'); }); var data = []; for(var i=0;i {code} app.js {code} // create base UI tab and root window // var win1 = Titanium.UI.createWindow({ title:'Tab 1', backgroundColor:'#fff' }); var tab1 = Titanium.UI.createTab({ icon:'KS_nav_views.png', title:'Tab 1', window:win1 }); var label1 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 1', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win1.add(label1); // // create controls tab and root window // var win2 = Titanium.UI.createWindow({ title:'Tab 2', backgroundColor:'#fff' }); var tab2 = Titanium.UI.createTab({ icon:'KS_nav_ui.png', title:'Tab 2', window:win2 }); var label2 = Titanium.UI.createLabel({ color:'#999', text:'I am Window 2', font:{fontSize:20,fontFamily:'Helvetica Neue'}, textAlign:'center', width:'auto' }); win2.add(label2); // // add tabs // tabGroup.addTab(tab1); tabGroup.addTab(tab2); // open tab group tabGroup.open(); {code} This no longer works in 3.0GA.",3
+"TIMOB-12398","01/23/2013 20:09:06","Android: TabGroup activity should work like Window activity","With Windows, it's possible to create menus before opening the window, by assigning Window.activity.onCreateOptionsMenu. {code} var win = Ti.UI.createWindow({ fullscreen: true }); var activity = win.activity; activity.onCreateOptionsMenu = function(e){ var menu = e.menu; var menuItem = menu.add({ title: ""Item 1"" }); menuItem.icon = ""item1.png""; menuItem.addEventListener(""click"", function(e) { Ti.API.debug(""I was clicked""); }); }; win.open(); {code} For a TabGroup, although TabGroup.activity is now exposed, you cannot assign an onCreateOptionsMenu function until after the TabGroup is opened. The following code demonstrates the issue: {code} var tabGroup = Titanium.UI.createTabGroup(); var win1 = Titanium.UI.createWindow({ title : 'Tab 1', backgroundColor : '#fff' }); var tab1 = Titanium.UI.createTab({ icon : 'KS_nav_views.png', title : 'Tab 1', window : win1 }); var addMenu = function() { tabGroup.activity.onCreateOptionsMenu = function(e) { var menu = e.menu; var menuItem = menu.add({ title : ""Item 1"" }); menuItem.icon = ""item1.png""; menuItem.addEventListener(""click"", function(e) { Ti.API.debug(""I was clicked""); }); }; } addMenu(); // To work around issue, comment out this line and // uncomment the addEventListener call below. /* tabGroup.addEventListener(""open"", function() { addMenu(); tabGroup.activity.invalidateOptionsMenu(); }); */ tabGroup.addTab(tab1); tabGroup.open(); {code} As written, it doesn't add a menu item. If you comment out the standalone addMenu call and uncomment the addEventListener call, the menu item is added as expected. Expected Results: Menu item is added as on a Window, without needing to add an open event listener or call invalidateOptionsMenu. ",0
+"TIMOB-12411","01/24/2013 11:29:38","Android: Ti.Android.getCurrentActivity() fails with an exception","h1. Problem description Calling Ti.Android.getCurrentActivity() always fails with an exception in the logs. {code} E/TiJSError( 1288): (main) [2,1195] - Message: Uncaught TypeError: Object # has no method 'getCurrentActivity' {code} h1. Steps to reproduce Use this simple app to test: {code} Titanium.UI.setBackgroundColor('#000'); var win1 = Titanium.UI.createWindow({ backgroundColor:'#fff', fullscreen: true }); win1.open(); Titanium.API.info(""Activity: "" + Titanium.Android.getCurrentActivity()); {code} Changing from getCurrentActivity() to currentActivity (direct access to the property) works fine.",3
+"TIMOB-12551","02/01/2013 18:47:21","JavaScript-to-JavaScript optimizing compiler","The performance of native bridge invocations shall be improved in Q1 for both iOS and Android. This will be done by creating an optimizing javascript-to-javascript compiler that identifies non-performant Titanium API use-cases and transforms them into performant native bridge invocations. The plan for completing this task is: 1. Automate collection of app performance data. 2. Identify Titanium performance bottlenecks from performance data. 3. Analyze javascript AST for common Titanium API idioms. 4. Create optimization algorithms (AST transformations) for these idioms identified as performance bottlenecks. From Jeff's README.md in his compiler prototype project: Compiler Prototype ================== The compiler prototype is a simple set of compile-time optimizations that are applied to speed up native bridge invocations. Concept ------- The concept is very simple. The Javascript native bridge binds a set of JavaScript objects (the Titanium API) and eventually a method is bound into a callback implementation in native land. The JS engine performs native bridge calls to lookup the JavaScript object and eventually invoke the bound native function in this simple example: > Ti.API.log('foo') The JS engine makes the following invocations underneath the cover: > Ti => Object > Object.API => Object > Object.log => Function > Function('foo') So, a simple one-liner requires 4 invocations in the JS engine. Additionally, in this example, foo is an argument that must be marshalled from a JS native object into a native object. In Objective-C, this turns a JSValueRef (or JSStringRef) into a NSString. This happens before the underlying JSFunction is mapped into an Objective-C method. To make matters worse, in Objective-C, we have to do additional lookups to find the appropriate TiModule and then build an NSInvocation to invoke the method against the Objective-C class. All of this takes time. This prototype attempts to speed up the invocation above by performing a few simple steps. First, we avoid the Object lookups by turns a Titanium API into a bound symbol in the JS engine. So, Ti.API.log become T$1 (as an example). Second, we attempt to speed up static arguments that are required to be marshalled during invocation into a symbol table which are only marshalled once. The symbol table is pre-compiled and subsequent references of the same symbol will use a pre-marshalled copy. Third, we pre-bind a compiled method and set of pre-marshalled arguments into a jump table. This is similar to using a function pointer (but as an instance of a compiled pointer to a module and invocation). The result is that you can get 50-75% pure invocation speed ups. For methods that have static arguments, you can achieve even better results. Limitations ----------- The current prototype uses a titanium module and requires a compile method to be called at the top of each compiled file to load up the symbols and bind the symbols. This has convenience in that we can do it without having to make any changes to Titanium itself. However, we may want to consider adding the compile method into Titanium (unpublished) to make maintenance easier and eliminate the need for a module. The second limitation is that we are speeding up only function calls and a few global symbols (such as Ti.UI.FILL). Eventually, we may want to do the same to properties. Third, the prototype is using a compiler hook (good) but only is working with Alloy. This is not a limitation per se, but i didn't want to have to deal with figuring out how to redirect the compiled JS files into a separate temporary directory and causing XCode to point at that instead of Resources -- since we don't want to override Resources (except in Alloy, that's how it operates, so that's OK). Fourth, I'm using a uglify-based compiler by hand instead of using Bryan's titanium code processor. The current implementation of the code processor doesn't allow you to mutate code in his plugins (or in the processor itself). Ideally, this would actually be a code processor plugin that would simply mutate code in a pipeline during compilation. Fifth, the current prototype is iOS only. This is because I'm most familiar with iOS and don't know the Android compiler / bridge for V8 as well as the old version. However, I think this same concept works for Android conceptually. Six, since I'm not using the code processor, I'm not using the JSCA file to understand the API. Moving to the code processor eliminates that issue. The last overall limitation is that we might want to actually pre-compile out the jump tables and use actually compiled function callbacks instead of the TiCompiledMethod object. If we moved to more of a true compiled / generated code, that would be rather trivial. This would likely give us even more speedup and much less object garbage and much lower memory. You would simply generate the C function that would directly call the module and method instead of having to have a generic TiCompiledMethod and you could by pass the entire Kroll overhead. I believe the new V8 compiled bindings do something similar in Android. Components ---------- ## CLI Hook The CLI hook file is under plugins/ti.compiler/hooks and in the file ti.compiler.js ## Module Source The module source for iOS is under compiler_module. Notes ----- The ti.compiler plugin must come after the ti.alloy in tiapp.xml. Afterthought ------------ I think this concept can be dramatically further expanded to really build a compiler that can pre-process code and optimize, compile and generally make performance a lot faster than it does today. ## Collapsing properties For example, take the following code: var v = Ti.UI.createView(); v.width = Ti.UI.FILL; v.height = Ti.UI.FILL; v.backgroundColor = ""red""; w.add(v); This could easily be re-written to be much faster (prior to optimizations from prototype): w.add(Ti.UI.createView({width:Ti.UI.FILL,height:Ti.UI.FILL,backgroundColor:""red""})); After optimizations further: w.add(T$1()); ## Multiple invocations Another example that is common, adding multiple objects to a view heirarchy. w.add(view1); w.add(view2); w.add(view3); This could be optimized into: w.add(view1,view2,view3); In this example, passing 3 objects over a view to add to the window will be MUCH faster because you go from 3 separate invocations to one and more importantly, because this method is required to be invocked on the UI Thread, 3 separate UI thread blocks. Additionally, at some point, you could move the same optimized method onto the native side such as it would turn into the following: T$1(); And on the native side, it would simply do the work of adding the 3 views to a window by native references. ## Subsequent code blocks My ultimate belief is that most of the static code written in Titanium JS can be pre-compiled and essentially reduced into few JS engine functions. Take the following static code block: var w = Ti.UI.createWindow(); var v = Ti.UI.createView({width:TI.UI.FILL,height:TI.UI.FILL,backgroundColor:""white""}); var b = Ti.UI.createButton({ text:""Hello"", width:TI.UI.SIZE, height:Ti.UI.SIZE }); v.add(b); w.add(v); b.addEventListener(function(){ alert(""hello world""); }); w.open(); This should be able to be reduced in JS code to: var r$1 = T$1(), w = r$1[0], v = r$1[1], b = r$1[2]; b.addEventListener(function(){ alert(""hello world""); }); w.open(); We should be able to take subsequent code blocks that are static and collapse them into code blocks in native that can be mapped to one JS symbol pointer. ## String consts We might be able to get much better optimizations in the JS engine by turning static code strings into JS consts at compile time. In a ton of cases in an app, you will use inline strings. Its generally faster to declare them as a const and then use the const variable name instead. This could be a simple optimizations done by the compiler. ## Dead code removal We need to remove dead code or unused variables and functions. For example, in Alloy in the alloy.js file, we define a function named isTabletFallback. This method isn't used. We could simply optimize on compile and deterine which functions / symbols are reachable and then remove them if not. For example, Alloy generates the following: var Alloy = require(""alloy""), _ = Alloy._, Backbone = Alloy.Backbone; Alloy.createController(""index""); This is useful is you need to reference Backbone or underscore libraries in the app.js stub. However, in almost all scenarios, the developer never does this in a standard Alloy app. The code above could be easily reduced to the following if it's not modified: require('alloy').createController('index') This creates no variables in memory that have to be later garbage collected and is much more efficient in execution. - Jeff ",0
+"TIMOB-12600","02/06/2013 00:20:54","CLI: building for Android device while the emulator is open generates a wrong Error Message","h6. Problem Building for Android device from CLI, while the Android emulator open, generates an Error Message at the end. However the app is actually correctly installed. h6. Steps to reproduce 1. Be sure to have the Android Emulator open 2. Attach a device and build a project for the device from CLI: $ ti build -p android -T device Result: application is correctly installed on the device, however from console there is an Error message in the end. {code} [INFO] Application installed. Launch from drawer on Home Screen [INFO] Launching appliation on device. error: more than one device and emulator [ERROR] Project failed to build after 13s 197ms {code} (also note the typo: ""appliation"" in the [INFO] line)",2
+"TIMOB-12604","02/06/2013 10:26:22","Android: Closing the emulator, 'Emulator has exited' log in not printed on console.","Android: Closing the emulator, 'Emulator has exited' log in not printed on console. Its not a regression. Steps to reproduce: 1. Run a application in android emulator. 2. Close the emulator. Actual: no new log occur on console. Expected: 'Emulator has exited' should occur on console. ",2
+"TIMOB-12661","02/11/2013 16:54:58","CLI: Support adb's -s option for pointing a build to a specific emulator or device","It would be extremely helpful, and give the CLI more power with Android, if developers were able to specify specifically which device or emulator for which they would like to build. Right now the build process allows us to specify and avd id which would let you pick an emulator, but even that is not ideal as you don't really have a way of knowing an emulator's id from the *android list avd* as it isn't listed. Ideally, I should be able to call *adb devices*, see my listing of emulators and devices, than be able to pass that serial number to the *titanium build* command as an option, directing the build process to that specific emulator or device. The build process _tries_ to be intelligent about this, but more often than not I get errors like: * It fails if there is a connected device AND an emulator open * Even with an emulator already it open, it often attempts to load an entirely different one * Tries to use emulators not compatible with the app (like a non-Google API emulator with an app that uses maps) Allowing a command like the following would make it really easy for developers to have multiple open emulators and connected devices and still get expected behavior: {code} titanium build -p android -s EMULATOR_OR_DEVICE_SERIAL {code} Obviously I leave the choice of the option flag to the implementor. ""-s"" would correspond to the adb command, but this is already in use for *titanium build* for specifying the target Titanium SDK. ",3
+"TIMOB-12716","02/12/2013 23:31:33","CLI: Build failure for projects with illegal character '_' in App id","Building *imported* from git or created in studio projects, that contain underscore('_') in application's id, return build failure. It does build on simulator. Not a regression, occurs in 3.0.0.GA Test steps: 1. Create project with illegal character in app id (e.g '_') 2. Build on to device Actual result: [ERROR] : ** BUILD FAILED ** [ERROR] : The following build commands failed: [ERROR] : ProcessProductPackaging Entitlements.plist build/Build_timob7674.build/Debug-iphoneos/Build_timob7674-universal.build/Build_timob7674.xcent ",5
+"TIMOB-12764","02/15/2013 23:39:49","Windows: Android SDKs not recognized without moving them","This is a regression. Works correctly in TISTUD 2.1.2. Windows: Android SDKs not recognized in Preferences. Steps to Reproduce: 1. Open Titanium Studio. 2. Open Preferences > Titanium Studio > Titanium. 3. Clear Android SDK Path and Apply. 4. Browse to Android SDK to select path. Actual Result: Android SDKs not recognized. Expected Result: Android SDKs recognized.",8
+"TIMOB-12765","02/15/2013 23:44:38","Backport: Windows: Android SDKs not recognized without moving them","This is a regression. Works correctly in TISTUD 2.1.2. Windows: Android SDKs not recognized in Preferences. Steps to Reproduce: 1. Open Titanium Studio. 2. Open Preferences > Titanium Studio > Titanium. 3. Clear Android SDK Path and Apply. 4. Browse to Android SDK to select path. Actual Result: Android SDKs not recognized. Expected Result: Android SDKs recognized.",8
+"TIMOB-12960","03/05/2013 11:58:54","TiAPI: Cannot add a whitespace at the end of string in i18n strings.xml","Use the following xml in the i18n en strings.xml file: {code} There should be space of that thing. {code} And use the following in app js: {code} var win = Ti.UI.createWindow({ layout: ""vertical"" }); // build a string from the strings file that has built-in space. var s = L(""share"") + ""!on each side!"" + L(""share2""); alert(s); {code} The result is different in 3.0 vs 2.1.3. In 3.0, it seems all whitespaces from strings from the language file are trimmed. The same behavior is seen in Android also. ",1
+"TIMOB-12996","03/07/2013 23:07:28","Android: Unexpected layout when adding images and labels to TableViewRow","When adding an imageview and labels to a tableview row with horizontal layout will push the label down to the next line instead of wrapping the text, on iOS it will correctly wrap the text. Images attached Example code: {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }) var row1 = Ti.UI.createTableViewRow({ layout: 'horizontal' }) var image1 = Ti.UI.createImageView({ image: 'appicon.png', height: '50', width: '50' }); row1.add(image1); var label1 = Ti.UI.createLabel({ text: 'Long text is long. Long text is long. Long text is long. Long text is long. Long text is long.', color: 'black' }); row1.add(label1); var label2 = Ti.UI.createLabel({ text: 'Long text is long. Long text is long. Long text is long. Long text is long. Long text is long.', color: 'gray' }) row1.add(label2); var tvRow = []; tvRow.push(row1); var tableView1 = Ti.UI.createTableView({ top:0, bottom:0, left:0, right:0, separatorColor:'black', backgroundColor: 'white', data: tvRow, }); win.add(tableView1); win.open(); {code}",13
+"TIMOB-13164","03/14/2013 11:07:07","mobileweb rendered @font-face declaration is not valid","*When using a custom font, rendered CSS code is not valid.* h3. Steps to reproduce # create a new Titanium project (Single Window Application template) # _alloy new_ it # create assets/fonts directory and put any -- supported non-system -- font in there # change Label element style so it calls the mentioned font {code} ""Label"": { color: ""#000"", font: { fontFamily: ""Comic Zine OT"" } } {code} # see the font not being applied to the element h3. Analysis When opening the built mobileweb/titanium.css, our font declaration at the very end of the file is {code} @font-face { font-family: fonts/comic_zine_ot.otf; src: url(fonts/comic_zine_ot.otf); } {code} To be usable by browser, it should be {code} @font-face { font-family: ""Some Font Name""; src: url(fonts/comic_zine_ot.otf); } {code} To be working, ""Some Font Name"" should be a valid string and the same as in the defined _tss_ file. h3. Workaround I cannot see any workaround since the rendered _font-family_ is expecting a *user defined* font identifier. May be adding a _font-face_ declaration could do the trick.",0
+"TIMOB-24141","03/18/2013 11:58:25","iOS: TiBlob.imageAsResized resizing the Blob image but file size is very high (JPG)","'imageAsResized' however resizing the Blob image but resulting image size is very high. {code} var image = Titanium.Filesystem.getFile(Titanium.Filesystem.resourcesDirectory, 'images.jpeg').read(); Ti.API.info(""original image size:"" + image.size); Ti.API.info(""original image dimensions: "" + image.width + 'x' + image.height); var newBlob1 = image.imageAsResized(160,120); Ti.API.info(""test 1 image size:"" + newBlob1.size); Ti.API.info(""test 1 image dimensions: "" + newBlob1.width + 'x' + newBlob1.height); var bgImage = Titanium.Filesystem.getFile(Titanium.Filesystem.applicationDataDirectory, 'test.jpeg'); bgImage.write(newBlob1); {code} Note: This issue is found with JPG images.However it is working fine in .png files. ",5
+"TIMOB-13187","03/25/2013 06:28:18","iOS: Kerning for fonts in Titanium.","Client require new feature like, kerning of fonts. Kerning is the spacing between each character.",1
+"TIMOB-13190","03/25/2013 17:57:52","BlackBerry: support project creation with multiple deployment targets","Description: 1.Create a default app with templates in the studio & select other deploy targets along with blackberry 2.Now open the resources folder of the created app in studio Actual Result: 1.The 'blackberry' folder does not get created in the resources folder as 'android','iphone','mobileweb' 2.due to this running the app gives errors: {code} [INFO] Running retCode = builder.run(ipAddress, devicePassword, debugToken, storePass, outputDir) File ""/Users/lokeshchoudhary/Desktop/bb-mobilesdk-osx/mobilesdk/osx/3.1.0.v20130204182020/blackberry/builder.py"", line 78, in run resources = os.listdir(self.blackberryResources) OSError: [Errno 2] No such file or directory: '/Users/lokeshchoudhary/Desktop/Titanium BB Workspace/default_123/Resources/blackberry'[INFO] Running retCode = builder.run(ipAddress, devicePassword, debugToken, storePass, outputDir) File ""/Users/lokeshchoudhary/Desktop/bb-mobilesdk-osx/mobilesdk/osx/3.1.0.v20130204182020/blackberry/builder.py"", line 78, in run resources = os.listdir(self.blackberryResources) OSError: [Errno 2] No such file or directory: '/Users/lokeshchoudhary/Desktop/Titanium BB Workspace/default_123/Resources/blackberry' {code} NOTE : If we create a default app with only blackberry as target then the 'blackberry' folder is getting created Expected Result: 1.The 'blackberry' folder gets created along with other targets ",5
+"TIMOB-13255","03/28/2013 22:38:40","CLI: Add support for Windows Mobile platform","This task is for writing the {{create}}, {{build}}, {{install}}, and {{run}} builtins for the CLI for Windows platform as per the [CLI spec|https://wiki.appcelerator.org/display/spe/Command+Line+Interface]. ",0
+"TIMOB-13364","04/03/2013 18:19:52","Android: TextArea maxLength not working in Android","According to the docs, TextArea supports maxLength property from SDK 3.0. However, maxLength does not work in Android. In TiUIText.java, the code that reads the maxLength is: if (d.containsKey(TiC.PROPERTY_MAX_LENGTH) && field) { maxLength = TiConvert.toInt(d, TiC.PROPERTY_MAX_LENGTH); } TextArea has ""field"" boolean set to false, so maxLength is always ignored. Steps to reproduce. Create simple App.js: {code} var win = Ti.UI.createWindow({ backgroundColor: 'white' }); var textArea = Ti.UI.createTextArea({ borderWidth: 2, borderColor: '#bbb', borderRadius: 5, color: '#888', textAlign: 'left', maxLength: 10, top: 60, width: 300, height : 150 }); win.add(textArea); win.open(); {code} Launch app and start writing in the text area. You can enter more than 10 chars, despite maxLength is set to 10. Tested with SDK 3.0.0.GA in Android 2.3.3 and Android 4.1",3
+"TIMOB-13379","04/04/2013 21:49:21","TiAPI: Add support for console.time and console.timeEnd","it would be very useful to have the ability to output timing to the log for testing and debugging. JS in WebKit and Gecko as well as NodeJS support this... we should too. ",8
+"TIMOB-13520","04/11/2013 01:52:52","Android Emulator: improve error message from missing ia32-libs dependency on linux","The first android emulator run experience of a linux user on a clean system is: {code} Titanium Command-Line Interface, CLI version 3.1.0-cr, Titanium SDK version 3.0.2.GA Copyright (c) 2012-2013, Appcelerator, Inc. All Rights Reserved. Please report bugs to http://jira.appcelerator.org/ [INFO] logfile = /home/linux/Desktop/Titanium_Studio/Titanium_Studio_RC/Work_Space/MyProject/build.log [ERROR] : Project failed to build after 275ms [INFO] Building MyProject for Android ... one moment [INFO] Titanium SDK version: 3.0.2 (02/15/13 19:02 5a77fe7) [ERROR] Exception occured while building Android project: [ERROR] Traceback (most recent call last): [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/builder.py"", line 2392, in [ERROR] builder.build_and_run(False, avd_id, debugger_host=debugger_host) [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/builder.py"", line 1984, in build_and_run [ERROR] self.wait_for_device('e') [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/builder.py"", line 450, in wait_for_device [ERROR] devices = self.sdk.list_devices() [ERROR] File ""/home/linux/.titanium/mobilesdk/linux/3.0.2.GA/android/androidsdk.py"", line 264, in list_devices [ERROR] (out, err) = subprocess.Popen([adb, 'devices'], stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate() [ERROR] File ""/usr/lib/python2.7/subprocess.py"", line 679, in __init__ [ERROR] errread, errwrite) [ERROR] File ""/usr/lib/python2.7/subprocess.py"", line 1249, in _execute_child [ERROR] raise child_exception [ERROR] OSError: [Errno 2] No such file or directory [ERROR] : Project failed to build after 584ms {code} It seems a bit cryptic. Please improve error message if possible.",8
+"TIMOB-13545","04/12/2013 14:01:44","Android: ImageView: Remote image with ""@"" character doesn't display","*Problem description* If you set an image with a ""@"" in the path, the image won't be loaded. This is because getCleanUri thinking it's a domain address. Therefore the test on the hash will return false. So the image is downloaded but not drawn. *Repro notes* Paste the @2x URL in the browser to verify the URL is valid. Uncomment cd-mini-graphic image to verify it working for standard images. Only the URL with @2x doesn't work. Works on iOS, not on Android. *Test case* {code} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var image = Ti.UI.createImageView({ bottom : 0, width : 200, height : 200, backgroundColor : 'red', image : 'http://dl.dropboxusercontent.com/u/255893/appcelerator@2x.png' //image : 'http://www.appcelerator.com.s3.amazonaws.com/web/home/platform/cd-mini-graphic.png' }); win.add(image); win.open(); {code}",5
+"TIMOB-13582","04/16/2013 01:00:03","CLI: Launching emulator without specifying skin will use HVGA and will fail if chosen AVD does not support HVGA","If you pass in an AVD ID without Skin, HVGA is used as default and passed with the emulator command. If the AVD you chose does not support HVGA, the launch will fail with: {code} [ERROR]Emulator process exited with code 1 {code} The behavior I was expecting was for the default skin listed with the AVD would be used. You can see the set default in the output of ""android list"". Steps to reproduce: 1) Run command ""android list"" in the terminal to see available AVDs 2) Make a note of an AVD ID that does not support HVGA Skin 3) Create a new project 4) Run command ti build -p android -I Result: HVGA Skin is chosen as Default, and will fail if AVD ID does not support that skin. Expected: AVD launches with AVD default skin if no skin passed in.",5
+"TIMOB-14762","04/17/2013 18:13:40","CLI: Toast says android build succeeded when build failed","If a build fails, TiStudio still says it succeeded, console says (correctly) build failed. See screenshot. The problem is if the build callback receives an error, it says there was an error, but doesn't exit with a non-zero exit code.",5
+"TIMOB-13656","04/23/2013 21:48:29","CLI needs to support the ability to specify different login endpoints","Different environments will have different login endpints: test, dev, pre-prod, enterprise, vpc. To accommodate these different environments, the cli will have to make the login endpoint configurable - currently it is hard-coded to api.appcelerator.net. This can be configured via the config file or via a parameter This is preventing Studio from working properly against the enterprise cluster, ie unable to login means users can't create projects. As a work-around, users would have to have the same username/password on all api.appcelerator.net type servers",8
+"TIMOB-13862","05/15/2013 06:08:55","CLI: tiapp.xml sdk-version not honored if selected sdk has same base digits","If the tiapp.xml is set to 3.1.1.v20130514180723, but the CLI is set to 3.1.1.v20130513120107, since both start with 3.1.1, the CLI thinks they are the same version which is wrong.",3
+"TIMOB-13966","05/16/2013 11:13:41","TiAPI: Select Locale for L() at runtime","*Problem* It would be great if it was possible to let the user select which language to use at runtime. So instead the L() would only look at device language, it could also check if a Ti.App.LanguageXMLSetting property has been defined. That way we do not need to create homemade localization systems anymore. The use case is included below. The problem is that L is undefined in style.tss because I redefine it in the controller. *alloy.js* {code:javascript} // Language helper Alloy.LanguageHelper = require('languageHelper'); Alloy.L = Alloy.LanguageHelper.fetchString; {code} *Controller* {code:javascript} //top of the controller var L = require(""languageHelper""); {code} *Style* {code:javascript} ""#menuBtn"":{ title: L(""MenuButton"") } {code} *View* {code:xml} {code} *Custom languageHelper* {code:javascript} /** * Language Helper * Makes it possible to change language at runtime * @version 1.0 */ var lookup = null; exports.locale = Ti.App.Properties.getString('SETTING_LANGUAGE', Ti.Locale.getCurrentLanguage() ); /** * Private function * Loads the language xml file. * It has fallback for english if file does not exist. */ function loadFile() { lookup = {}; // LOAD FILE var file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'i18n/' + exports.locale + '/strings.xml'); if (!file.exists()) { file = Ti.Filesystem.getFile(Ti.Filesystem.resourcesDirectory, 'i18n/en/strings.xml'); if (!file.exists()) { Ti.API.warn(""Language file for both '"" + exports.locale + ""' and 'en' fallback do not exist""); return; } } // PARSE XML var xml_string = file.read().text; var doc = Ti.XML.parseString(xml_string); var strings = doc.getElementsByTagName(""string""); for (var i = 0; i < strings.length; i++) { var node = strings.item(i); var value = node.text; if (node.hasAttributes()) { for (var att_index = 0; att_index < node.attributes.length; att_index++) { var att = node.attributes.item(att_index); if (att.nodeName === ""name"") { lookup[att.nodeValue] = value; } } } } } /** * Set the current language of the app. * @param {String} language */ exports.setLanguage = function(language){ if(language === null){ return; } // clean old lookup exports.clear(); // save language Ti.App.Properties.setString('SETTING_LANGUAGE', language); exports.locale = language; // parse new lookup loadFile(); return lookup; } /** * Clear the parsed xml translations */ exports.clear = function() { lookup = null; }; /** * Lookup function. require this at each controller * Example usage: * var L = require('languageHelper').fetchString; * @param {Object} string * @param {Object} hint */ exports.fetchString = function(string, hint) { if (lookup === null) { loadFile(); } return lookup[string] !== undefined ? lookup[string].replace(/\\n/g, ""\n"") : (hint || string); }; {code}",8
+"TIMOB-13890","05/17/2013 11:42:57","iOS: Accessibility: Accessibility does not work on Slider Control","iOS: Accessibility: Accessibility does not work on Slider Control This is not a regression. Issue also exist on SDK 3.1.0. Steps: 1) Run Acceptance Access_1109 on Accessibility module. 2) Touch the second slider (with LVH defined in sequence) Actual Result: Device just reads ""50.0"". Expected Result: Device should read aloud LVH(This is slider2 label , This is slider2 value , This is slider2 hint) followed by 'seek control'value(android) and value adjustable {code} var win = Ti.UI.createWindow({ title : 'Welcome', backgroundColor: ""#fff""}); var slider1 = Titanium.UI.createSlider({ top: 50, min: 0, max: 100, width: '100%', value: 50 }); var label1 = Ti.UI.createLabel({ text: slider1.value, width: '100%', height: 'auto', top: 30, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider1.addEventListener('change', function(e) { label1.text = String.format(""%3.1f"", e.value); }); var slider2 = Titanium.UI.createSlider({ top: 150, min: 0, max: 100, width: '100%', value: 50, accessibilityLabel: ""This is slider2 label"", accessibilityValue: 'This is slider2 value', accessibilityHint: ""This is slider2 hint"" }); var label2 = Ti.UI.createLabel({ text: slider2.value, width: '100%', height: 'auto', top: 130, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider2.addEventListener('change', function(e) { label2.text = String.format(""%3.1f"", e.value); }); var slider3 = Titanium.UI.createSlider({ bottom: 130, min: 0, max: 100, width: '100%', value: 50, accessibilityHint: ""This is slider3 hint "", accessibilityLabel: ""This is slider3 label"", accessibilityValue: 'This is slider3 value', }); var label3 = Ti.UI.createLabel({ text: slider3.value, width: '100%', height: 'auto', bottom: 150, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider3.addEventListener('change', function(e) { label3.text = String.format(""%3.1f"", e.value); }); var slider4 = Titanium.UI.createSlider({ bottom: 30, min: 0, max: 100, width: '100%', value: 50, accessibilityLabel: ""This is slider4 label"", accessibilityValue: 'This is slider4 value', accessibilityHint: ""This is slider4 hint"", accessibilityHidden: true }); var label4 = Ti.UI.createLabel({ text: slider4.value, width: '100%', height: 'auto', bottom: 50, left: 0, textAlign: Ti.UI.TEXT_ALIGNMENT_CENTER }); slider4.addEventListener('change', function(e) { label4.text = String.format(""%3.1f"", e.value); }); win.add(slider1); win.add(slider2); win.add(slider3); win.add(slider4); win.add(label1); win.add(label2); win.add(label3); win.add(label4); win.open(); {code}",3
+"TIMOB-13892","05/17/2013 12:39:19","iOS: Accessibility - Label.accessibilityLabel does not work properly inside a ScrollView properly","Label.accessibilityLabel does not work properly inside a ScrollView properly i.e. the device's VoiceOver will not read the label. This is not a regression. Issue also exist on SDK 3.1.0 *Steps:* 1. Create a Titanium app with the following app.js code: {code} var _window = Ti.UI.createWindow({ backgroundColor: 'white' }); var scroll1 = Ti.UI.createScrollView({ backgroundColor : 'red', accessibilityLabel : 'This is ScrollView1', accessibilityValue : 'Value1', accessibilityHint : 'hint 1', height : 200, top : 0 }); var label1 = Ti.UI.createLabel({ text : 'Label Text', accessibilityLabel : 'Label on first Scrollview' }); scroll1.add(label1); _window.add(scroll1); _window.open(); {code} 2. Install app to device. Make sure VoiceOver is on: Settings > General > Accessibility > VoiceOver > On 3. Double-press on app to launch app 4. Double-press on the label *Actual:* ""Label on first Scrollview"" is not read out. *Expected:* ""Label on first Scrollview"" should be read out. ",8
+"TIMOB-13914","05/20/2013 13:44:09","Android: 'longpress' event is not working in ListView","'longpress' event is not working in listView. Here is the test case: {code} var win = Ti.UI.createWindow({backgroundColor: 'white'}); var plainTemplate = { childTemplates: [ { type: 'Ti.UI.Label', // Use a label bindId: 'rowtitle', // Bind ID for this label properties: { // Sets the Label.left property left: '10dp' } }, { type: 'Ti.UI.ImageView', // Use an image view bindId: 'pic', // Bind ID for this image view properties: { // Sets the ImageView.image property image: 'KS_nav_ui.png' } }, { type: 'Ti.UI.Button', // Use a button bindId: 'button', // Bind ID for this button properties: { // Sets several button properties width: '80dp', height: '30dp', right: '10dp', title: 'press me' } } ] }; function report(e) { Ti.API.info(e.type); } var listView = Ti.UI.createListView({ // Maps the plainTemplate object to the 'plain' style name templates: { 'plain': plainTemplate }, // Use the plain template, that is, the plainTemplate object defined earlier // for all data list items in this list view defaultItemTemplate: 'plain' }); var data = []; for (var i = 0; i < 3; i++) { data.push({ // Maps to the rowtitle component in the template // Sets the text property of the Label component rowtitle : { text: 'Row ' + (i + 1) }, // Sets the regular list data properties properties : { itemId: 'row' + (i + 1), accessoryType: Ti.UI.LIST_ACCESSORY_TYPE_NONE } }); } listView.addEventListener('longpress', function(e){ alert(""longpress fired!!!""); }); win.add(listView); win.open(); {code}",5
+"TIMOB-14076","05/20/2013 20:38:04","Android: App crashes when properties of the actionBar are changed while the current window/tabGroup has navBarHidden set to true","*Problem* The app crashes with ""Unfortunately, app has stopped."" if actionBar properties are changed at runtime while the current window/tabGroup has navBarHidden set to true. *Test case* {code:javascript}var win = Ti.UI.createTabGroup({ navBarHidden : true }); tab1 = Ti.UI.createTab({ title : ""title1"" }); win1 = Ti.UI.createWindow(); tab1.window = win1; tab2 = Ti.UI.createTab({ title : ""title2"" }); win2 = Ti.UI.createWindow(); tab2.window = win2; win.addTab(tab1); win.addTab(tab2); win.addEventListener(""open"", function() { actionBar = win.getActivity().actionBar; if (actionBar) { actionBar.setTitle(""Test""); } }); win.open();{code}",0
+"TIMOB-13922","05/20/2013 21:58:42","Android: KitchenSink: text does not size to fit in buttons","Please see screenshots for references. Test steps: 1. Install and run KS>Base UI>Window Layout or 2. KS> Base UI> Window(Standalone) and press any of the buttons Actual result: Text of the button is being cut off. Expected: Text should fit inside the button",3
+"TIMOB-13974","05/24/2013 00:02:38","Android: KS takes a long time to package - I've seen nine minutes, others report longer in some cases","h5. Description: While verifying some JIRA tickets I was packaging KS (from 3.1.X branch). Hieu reported having this take a long time, so I monitored the process. The console ticked slowly away, and it took 9 minutes and 30 seconds to finish the task. This was from clean. h5. Steps to reproduce: 1) Pull KS from 3_1_X branch 2) Import into Studio 3) Package for distribution 4) Monitor the duration of the task h5. Result: It took 9:30 in my first test and others have reported longer. h5. Expected Result: Much quicker packaging process. h5. Notes: I'll be checking to see if this is a regression and will add it here.",3
+"TIMOB-13986","05/24/2013 22:46:13","iOS: backgroundImage of view from remote URL not loading","*Problem* The backgroundImage of the view from a remote URL is not loading on iOS. It works fine on Android. *Test case* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : ""#FFF"" }); var view = Ti.UI.createView({ backgroundImage : 'http://dl.dropboxusercontent.com/u/72783403/AtoZ/1.png' }); win.add(view); win.open(); {code}",3
+"TIMOB-14003","05/27/2013 13:52:01","Android: showDatePickerDialog and showTimePickerDialog can't be cancelled","The callback of showDatePickerDialog and showTimePickerDialog always return with the cancel property set to false. It doesn't matter if you press the back button or press outside the modal dialog, cancel gets never true. Furthermore, if you click on the Set/Ok/Done/Ready button, the callback is called twice. Note that in the picker dialog, we have only a single button ""Set"", so no Cancel button. This is fine as you should be able to cancel dialog with the back button. Clicking the back button fires wrongly a success (cancel=false) event. {code:title=Example code|borderStyle=solid} var picker = Ti.UI.createPicker( { type : Ti.UI.PICKER_TYPE_TIME }); picker.showDatePickerDialog({ callback: function(e) { if (e.cancel) { Ti.API.info('user canceled dialog'); } else { Ti.API.info('user selected date: ' + e.value); } } }); {code} Problem does not occur on older Android devices, like Android 2.3. See https://github.com/markruys/titanium-test-picker for a working project to reproduce.",5
+"TIMOB-13997","05/28/2013 01:37:46","iOS: add setCameraFlashMode feature for custom overlays in Ti.Media ","h4. Problem Description When users sets a custom overlay in the camera, there is no way to set the flash on or off. h4. More info https://developer.appcelerator.com/question/152715/flash-mode-in-camera",0
+"TIMOB-13999","05/28/2013 02:45:20","LiveView: App not updating upon editing localization files","Steps to reproduce: # Create a new SingleWindow application from a template # Start the project under LiveView (in this case, iOS simulator) # Edit the files in i18n. Note that saving those files doesn't restart the app. Expected behavior Editing a *.xml file in the i18n folder would refresh the application.",13
+"TIMOB-14123","05/30/2013 16:25:48","Android: Add support for creating video thumbnails","h2. Problem Unable to create a thumbnail of a video on Android using Titanium SDK 3.1.0.GA. Titanium.Media.VideoPlayer.thumbnailImageAtTime(Number time, Number option) and Titanium.Media.VideoPlayer.requestThumbnailImagesAtTimes(Number[] times, Number option, Callback callback) appear to be the only methods available to achieve this, but they are not supported for Android, only on iOS. Would like to see similar functionality to get a thumbnail from a video. It appears to be supported by the Android APIs per http://developer.android.com/reference/android/provider/MediaStore.Video.Thumbnails.html h2. Test case N/A - not currently supported h2. Logs N/A - not currently supported h2. Discussions Q/A: http://developer.appcelerator.com/question/152946/video-thumbnails-on-android ",8
+"TIMOB-16049","06/03/2013 05:41:57","Mobile Web: createBuffer API throws an error","Run attached the build. The error message is also attached as a screenshot",1
+"TIMOB-14194","06/07/2013 10:13:03","TiAPI: Problem with floating point numbers in Titanium","*Problem* The output of floating point values in Titanium differ from browser JavaScript parsers such as [jsbin.com|http://www.jsbin.com/]. For example, Ti.API.info(94.1) displays 94.0999999 On jsbin.com the output of alert(94.1) is 94.1 *Note* Since I have to input floating number for some modules, I must use floating number solution. I can't use a string method. I have also tried parseFloat(x.toFixed(1)), Math.round(x*10)/10 etc. The output was the same. *Test case* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : ""#FFF"" }); for (var i = 0; i < 50; i++) Ti.API.info(94.1); win.open(); {code} *Extended test case* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : ""#FFF"" }); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.1); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.2); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.3); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.4); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.5); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.6); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.7); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.8); for (var i = 0; i < 1000; i++) Ti.API.info(i + 0.9); win.open(); {code} *Log - Unusual Titanium values* {code} [INFO] : 64.09999999999999 [INFO] : 65.09999999999999 [INFO] : 66.09999999999999 [INFO] : 67.09999999999999 [INFO] : 68.09999999999999 [INFO] : 69.09999999999999 ... [INFO] : 70.09999999999999 [INFO] : 71.09999999999999 [INFO] : 72.09999999999999 [INFO] : 73.09999999999999 [INFO] : 74.09999999999999 [INFO] : 75.09999999999999 [INFO] : 76.09999999999999 [INFO] : 77.09999999999999 [INFO] : 78.09999999999999 [INFO] : 79.09999999999999 [INFO] : 80.09999999999999 [INFO] : 81.09999999999999 [INFO] : 82.09999999999999 [INFO] : 83.09999999999999 [INFO] : 84.09999999999999 [INFO] : 85.09999999999999 [INFO] : 86.09999999999999 [INFO] : 87.09999999999999 [INFO] : 88.09999999999999 [INFO] : 89.09999999999999 [INFO] : 90.09999999999999 [INFO] : 91.09999999999999 [INFO] : 92.09999999999999 [INFO] : 93.09999999999999 [INFO] : 94.09999999999999 [INFO] : 95.09999999999999 [INFO] : 96.09999999999999 [INFO] : 97.09999999999999 [INFO] : 98.09999999999999 [INFO] : 99.09999999999999 ... [INFO] : 8.199999999999999 [INFO] : 9.199999999999999 ... [INFO] : 8.300000000000001 [INFO] : 9.300000000000001 ... [INFO] : 64.40000000000001 [INFO] : 65.40000000000001 [INFO] : 66.40000000000001 [INFO] : 67.40000000000001 [INFO] : 68.40000000000001 [INFO] : 69.40000000000001 [INFO] : 70.40000000000001 [INFO] : 71.40000000000001 [INFO] : 72.40000000000001 [INFO] : 73.40000000000001 [INFO] : 74.40000000000001 [INFO] : 75.40000000000001 [INFO] : 76.40000000000001 [INFO] : 77.40000000000001 [INFO] : 78.40000000000001 [INFO] : 79.40000000000001 [INFO] : 80.40000000000001 [INFO] : 81.40000000000001 [INFO] : 82.40000000000001 [INFO] : 83.40000000000001 [INFO] : 84.40000000000001 [INFO] : 85.40000000000001 [INFO] : 86.40000000000001 [INFO] : 87.40000000000001 [INFO] : 88.40000000000001 [INFO] : 89.40000000000001 [INFO] : 90.40000000000001 [INFO] : 91.40000000000001 [INFO] : 92.40000000000001 [INFO] : 93.40000000000001 [INFO] : 94.40000000000001 [INFO] : 95.40000000000001 [INFO] : 96.40000000000001 [INFO] : 97.40000000000001 [INFO] : 98.40000000000001 [INFO] : 99.40000000000001 ... [INFO] : 64.59999999999999 [INFO] : 65.59999999999999 [INFO] : 66.59999999999999 [INFO] : 67.59999999999999 [INFO] : 68.59999999999999 [INFO] : 69.59999999999999 [INFO] : 70.59999999999999 [INFO] : 71.59999999999999 [INFO] : 72.59999999999999 [INFO] : 73.59999999999999 [INFO] : 74.59999999999999 [INFO] : 75.59999999999999 [INFO] : 76.59999999999999 [INFO] : 77.59999999999999 [INFO] : 78.59999999999999 [INFO] : 79.59999999999999 [INFO] : 80.59999999999999 [INFO] : 81.59999999999999 [INFO] : 82.59999999999999 [INFO] : 83.59999999999999 [INFO] : 84.59999999999999 [INFO] : 85.59999999999999 [INFO] : 86.59999999999999 [INFO] : 87.59999999999999 [INFO] : 88.59999999999999 [INFO] : 89.59999999999999 [INFO] : 90.59999999999999 [INFO] : 91.59999999999999 [INFO] : 92.59999999999999 [INFO] : 93.59999999999999 [INFO] : 94.59999999999999 [INFO] : 95.59999999999999 [INFO] : 96.59999999999999 [INFO] : 97.59999999999999 [INFO] : 98.59999999999999 [INFO] : 99.59999999999999 ... [INFO] : 8.800000000000001 [INFO] : 9.800000000000001 ... [INFO] : 64.90000000000001 [INFO] : 65.90000000000001 [INFO] : 66.90000000000001 [INFO] : 67.90000000000001 [INFO] : 68.90000000000001 [INFO] : 69.90000000000001 [INFO] : 70.90000000000001 [INFO] : 71.90000000000001 [INFO] : 72.90000000000001 [INFO] : 73.90000000000001 [INFO] : 74.90000000000001 [INFO] : 75.90000000000001 [INFO] : 76.90000000000001 [INFO] : 77.90000000000001 [INFO] : 78.90000000000001 [INFO] : 79.90000000000001 [INFO] : 80.90000000000001 [INFO] : 81.90000000000001 [INFO] : 82.90000000000001 [INFO] : 83.90000000000001 [INFO] : 84.90000000000001 [INFO] : 85.90000000000001 [INFO] : 86.90000000000001 [INFO] : 87.90000000000001 [INFO] : 88.90000000000001 [INFO] : 89.90000000000001 [INFO] : 90.90000000000001 [INFO] : 91.90000000000001 [INFO] : 92.90000000000001 [INFO] : 93.90000000000001 [INFO] : 94.90000000000001 [INFO] : 95.90000000000001 [INFO] : 96.90000000000001 [INFO] : 97.90000000000001 [INFO] : 98.90000000000001 [INFO] : 99.90000000000001 {code}",5
+"TIMOB-14178","06/10/2013 11:51:20","Android: Real Switch on Android","It would be nice to have a Real Android Switch when developing for Android 14 and above. The one supplied with Titanium now is not very nice.",5
+"TIMOB-14242","06/14/2013 10:31:20","Android: x86 libs not included in production APK","I was going to upload my app to the Google play store when I saw that x86 native SDK libraries were not included in the APK (libkroll-v8.so, libtiverify.so, libtiprofiler.so, libstlport_shared.so). I noticed these lines in builder.py (lines from 1696): {quote} if abi == 'x86' and ((not os.path.exists(lib_source_dir)) or self.deploy_type == 'production'): # x86 only in non-production builds for now. continue {quote} and removing them did the trick. It is normal behaviour not to including that libraries in production releases or it is a mistake? And if it is normal what is the reason? Way to reproduce: - Use the feature ""Distribute - Android App Store"" - Open the created APK with some zip reader - Navigate in lib/x86 - No native libraries included",3
+"TIMOB-14241","06/14/2013 11:00:35","Android: TextArea.maxLength doesn't work","*Problem* TextArea.maxLength not working in android, works perfectly fine on iOS *Steps to Reproduce* 1. run code provided on iOS (notice the maxLength is working, limits characters to 20) 2. run code provided on android (unlimited characters can be entered) {code} var win = Ti.UI.createWindow({ title : ""Test"", backgroundColor : 'gray' }); var view = Ti.UI.createView({ height : 200, top : 5, left : 5, right : 5, layout : 'vertical' }); var textFieldTwitter = Ti.UI.createTextArea({ left : 0, right : 0, height : 200, value : ""Testing1"", maxLength : 20 }); var tweetMax = 140; var viewTexteRestant = Ti.UI.createLabel({ text : 'Caractères restants : ' + (tweetMax - textFieldTwitter.value.length), height : Ti.UI.SIZE, width : Ti.UI.SIZE, top : 20, backgroundColor : ""red"" }); textFieldTwitter.addEventListener('change', function(e) { Ti.API.info(tweetMax - textFieldTwitter.value.length); viewTexteRestant.text = 'Caractères restants : ' + (tweetMax - textFieldTwitter.value.length); }); view.add(textFieldTwitter); view.add(viewTexteRestant); win.open(); win.add(view); {code} see : http://developer.appcelerator.com/question/153431/maxlength-in-textarea-doesnt-work",3
+"TIMOB-14262","06/15/2013 07:09:24","LiveView: Does not trigger code errors","*Steps to reproduce* 1. Create a default application 2. Enable LiveView in Run Configurations 3. Run on iOS simulator 4. Replace ""win1.add(label1);"" into ""win1.add(mylabel);"" 5. Save app.js *Actual Result* LiveView error is not triggered *Expected Result* LiveView error is triggered ",13
+"TIMOB-14267","06/17/2013 19:48:58","LiveView - Running multiple instances of the application on iOS and Android, iOS instances lose connection to LiveView Server","When trying to run multiple instances of the application with Liveview enabled across multiple devices/platform notice that Android will continue to update, however iOS instances lose the connection and do not continue to update. (have validated this against iOS on Device and iOS on Simulator). See attached video for further clarification. steps to reproduce: 1) enable an existing application (simple screen) for LiveView 2) run android and iOS builds (emulator/simulator) 3) make a change to the code Expected Behavior: Both instances of the application should update continuously Actual Behavior: Android will continue to update, however iOS will stop updating after it updates once. Simulator or Device will need to restart to show updates. ",8
+"TIMOB-14285","06/19/2013 16:08:03","Android: applyProperties() does not apply custom properties to proxy","h2. problem When using {{applyProperties()}} to add a number of properties to a Titanium proxy object, custom properties are not added on Android. On iOS and Mobileweb all properties, including custom ones, are added with the {{applyProperties()}} call. Android leaves the custom properties as {{undefined}}. h2. expected Android should behave like other supported platforms and attach custom properties to the Titanium proxy object when they are added via {{applyProperties()}}. h2. test case {code:javascript} var win = Ti.UI.createWindow({ backgroundColor: '#fff', fullscreen: false, exitOnClose: true }); win.open(); win.applyProperties({ customString: 'Ti.UI.Window', customArray: ['class1','class2','class3'], customObject: { x: 1, y: 2, z: 3 }, navBarHidden: true, backgroundGradient: { type: 'linear', startPoint: { x: '0%', y: '50%' }, endPoint: { x: '100%', y: '50%' }, colors: [ { color: 'red', offset: 0.0}, { color: 'blue', offset: 0.25 }, { color: 'red', offset: 1.0 } ], } }); Ti.API.info('customString: ' + JSON.stringify(win.customString)); Ti.API.info('customArray: ' + JSON.stringify(win.customArray)); Ti.API.info('customObject: ' + JSON.stringify(win.customObject)); Ti.API.info('navBarHidden: ' + JSON.stringify(win.navBarHidden)); Ti.API.info('backgroundGradient: ' + JSON.stringify(win.backgroundGradient)); {code} h2. output iOS does not show the {{backgroundGradient}} after the {{applyProperties()}} call, but this is a peripheral issue not associated with this ticket. h4. iOS 6.1 iPhone sim {code} [INFO] customString: ""Ti.UI.Window"" [INFO] customArray: [""class1"",""class2"",""class3""] [INFO] customObject: {""x"":1,""y"":2,""z"":3} [INFO] navBarHidden: true [INFO] backgroundGradient: {} {code} h4. Android 2.3.3 HVGA emulator {code} I/TiAPI ( 517): customString: undefined I/TiAPI ( 517): customArray: undefined I/TiAPI ( 517): customObject: undefined I/TiAPI ( 517): navBarHidden: true I/TiAPI ( 517): backgroundGradient: {""endPoint"":{""y"":""50%"",""x"":""100%""},""type"":""linear"",""colors"":[{""offset"":0,""color"":""red""},{""offset"":0.25,""color"":""blue""},{""offset"":1,""color"":""red""}],""startPoint"":{""y"":""50%"",""x"":""0%""}} {code} h4. mobileweb + chrome {code} [INFO] customString: ""Ti.UI.Window"" [INFO] customArray: [""class1"",""class2"",""class3""] [INFO] customObject: {""x"":1,""y"":2,""z"":3} [INFO] navBarHidden: true [INFO] backgroundGradient: {""type"":""linear"",""startPoint"":{""x"":""0%"",""y"":""50%""},""endPoint"":{""x"":""100%"",""y"":""50%""},""colors"":[{""color"":""red"",""offset"":0},{""color"":""blue"",""offset"":0.25},{""color"":""red"",""offset"":1}]} {code}",8
+"TIMOB-14382","06/25/2013 21:47:14","Android: Enable Media.openPhotoGallery to select multiple media items instead of 1 at a time.","In relation to this Q&A thread: http://developer.appcelerator.com/question/153838/select-multiple-images-using-photo-gallery-picker-android-and-ios Would it be possible to add a property/the functionality to Media.openPhotoGallery() to enable the selection of multiple media items? Maybe something like: itemLimit, which defaults to 1, but by setting to a greater value enables multiple selection functionality?",3
+"TIMOB-14425","06/28/2013 00:28:08","LiveView: iOS simulator is no longer updated once Android emulator is terminated when both are run with LiveView","1. Create a mobile project (e.g. the default two-tab classic project); 2. Run iPhone simulator with LiveView; 3. Run Android emulator with LiveView; 4. Updating app.js and confirm LiveView is working for both; 5. Exit Android emulator; 6. Updating app.js. Expected result: iPhone simulator will continue to update the app. Actual result: iPhone simulator no longer updates. Here is the end of the log: {code} [LiveView] Client disconnected [LiveView] Client connected [LiveView] Client disconnected [LiveView] Reload Triggered -REASON: File Changed -FILE: /Users/mxia/Documents/Appcelerator_Studio_Workspace/testLiveView/Resources/app.js [LiveView] Reload Triggered -REASON: File Changed -FILE: /Users/mxia/Documents/Appcelerator_Studio_Workspace/testLiveView/Resources/app.js [LiveView] Reload Triggered -REASON: File Changed -FILE: /Users/mxia/Documents/Appcelerator_Studio_Workspace/testLiveView/Resources/app.js {code} It appears the LiveView server got disconnected when Android emulator exited, but it didn't try to re-launch the server, and future reload events, although fired, could not update the app. ",8
+"TIMOB-14449","07/01/2013 15:02:39","Include platform-specific dependency information underneath Mobile SDK platform subfolder","Titanium/Appcelerator Studio has a file named sdk_info.json that we grab from a server and use to determine extra dependencies for specific platforms. An example is that we have entries that point the range of Tizen SDKs we support, XCode versions, Android addons/api levels, etc. This information is not something Studio should be maintaining, and it does not take into context the current project's Mobile SDK - so we apply the dependencies globally, regardless of whether the user is using 1.7.5 or 3.2.0 - which can mean the dependencies are not correct (older versions of the SDK supported older ranges of XCode and Tizen, e.g.). This knowledge and maintenance of dependencies should be pushed to the individual platforms, ideally in some relatively standard dependency.json file that is effectively just the segment of the sdk_info.json for that platform. Here's the current sdk_info.json file. This is a good starting point, but there are deficencies I will point out after: {code:javascript} { ""android"":{ ""linux"":{""requiredAddOns"":[""addon.+google.+apis.+10""],""requiredSDKTools"":""14"",""requiredPlatformTools"":""10"",""requiredPlatforms"":[""Android\\s*2\\.3.*""],""sdkURL"":""http://dl.google.com/android/android-sdk_r21.1-linux.tgz""}, ""macosx"":{""requiredAddOns"":[""addon.+google.+apis.+10""],""requiredSDKTools"":""14"",""requiredPlatformTools"":""10"",""requiredPlatforms"":[""Android\\s*2\\.3.*""],""sdkURL"":""http://dl.google.com/android/android-sdk_r21.1-macosx.zip""}, ""win32"":{""requiredAddOns"":[""addon.+google.+apis.+10""],""requiredSDKTools"":""14"",""requiredPlatformTools"":""10"",""requiredPlatforms"":[""Android\\s*2\\.3.*""],""sdkURL"":""http://dl.google.com/android/android-sdk_r21.1-windows.zip"", ""jdkURL"":""http://titanium-studio.s3.amazonaws.com/jdk/jdk-6u25-windows-i586.exe""} }, ""ios"":{ ""macosx"":{""requiredPlatforms"":[""[5.0, 6.2)""],""sdkURL"":""http://itunes.apple.com/us/app/xcode/id497799835?ls=1&mt=12""} }, ""blackberry"":{ ""linux"":{""requiredPlatforms"":[""10.0""],""sdkURL"":""http://developer.blackberry.com/native/downloads"",""simulatorURL"":""http://developer.blackberry.com/native/downloads""}, ""macosx"":{""requiredPlatforms"":[""10.0""],""sdkURL"":""http://developer.blackberry.com/native/downloads"",""simulatorURL"":""http://developer.blackberry.com/native/downloads""}, ""win32"":{""requiredPlatforms"":[""10.0""],""sdkURL"":""http://developer.blackberry.com/native/downloads"",""simulatorURL"":""http://developer.blackberry.com/native/downloads""} }, ""mobileweb"": { ""win32"": {""Firefox"": [""[10.0, 30.0)""], ""InternetExplorer"": [""[9.0, 30.0)""], ""Chrome"": [""[10.0, 30.0)""], ""Safari"": [""[5.0, 10.0)""]}, ""macosx"": {""Firefox"": [""[10.0, 30.0)""], ""Chrome"": [""[10.0, 30.0)""], ""Safari"": [""[5.0, 10.0)""]}, ""linux"": {""Firefox"": [""[10.0, 20.0)""], ""Chrome"": [""[10.0, 20.0)""]} }, ""tizen"":{ ""linux"":{""requiredPlatforms"":[""2.1""],""sdkURL"":""https://developer.tizen.org/downloads/sdk""}, ""macosx"":{""requiredPlatforms"":[""2.1""],""sdkURL"":""https://developer.tizen.org/downloads/sdk""}, ""win32"":{""requiredPlatforms"":[""2.1""],""sdkURL"":""https://developer.tizen.org/downloads/sdk""} } } {code} In particular for Android the regular expressions used are brittle and difficult to reconstruct since they match against the expected installed directory/filenames, while we need to compare against an xml file with the segments broke out into ""fields"". i.e. ""addon-google_apis-google-10"" is the directory on disk, but in xml the ""google_apis"" is the ""name-id"" value, ""google"" is the vendor_id"" value and ""10"" is the api level. Ideally we'd break that out more explicitly: Here's a suggestion for how the android platforms' file would look: {code:javascript} ""android"": { ""mobile"": { ""addons"": [], ""tools"": "">=14"", ""platform-tools"": "">=10"", ""platforms"": [""2.3.3""] } ""module"": { ""addons"": [ ""google_apis-google"": { ""apiLevel"": "">=10"" } ], ""java"": "">=1.6.0_25"", ""plugins"": [ ""jdt"": { ""name"": ""Java Development Tools"", ""id"": ""org.eclipse.jdt.feature.group"", ""url"": ""http://download.eclipse.org/releases/kepler"", ""version"": "">= 3.0"" } ] } } {code} In general my suggestions are to use Node/npm semantic versioning strings rather than our haphazard version, range or regex approach. Additionally, explicitly state the addon unique id as a key (here I'm assuming the unique id is a combination of name_id and vendor_id). Lastly, break out the dependencies required by mobile versus module development. As for the URLs we have here, I'm not sure if we should be including them here or not.",1
+"TIMOB-14460","07/02/2013 16:46:22","Android: Add Ti.Platform.canOpenURL() support","As a developer, I would like to be able to determine if the user has a target app installed on their device without opening that target app. I might do so to provide a fallback, prompt the user to install the app (like the way Google does with their integrated suite of apps on iOS where the UI provides Install buttons for apps that are detected to be missing). iOS supports Ti.Platform.canOpenURL() to provide this functionality. On Android, I have to call Ti.Platform.openURL() and detect the returned boolean -- but that opens the target app. The code at http://bencoding.com/2013/02/18/determine-if-intent-receiver-exists-on-android-using-titanium/ might provide a starting point.",5
+"TIMOB-15247","07/05/2013 17:05:43","iOS: Ti.Blob.imageAsResized always returns a png image","This is the same issue as [TIMODOPEN-228|https://jira.appcelerator.org/browse/TIMODOPEN-228] but for Ti.Blob (core). On iOS, all images created by Ti.Blob.imageAsResized are of type png (mime-type ""image/png"") instead of jpeg. As a result resized images are much bigger (in terms of bytes) than what they're supposed to be had they been jpegs. This seems to be related to the handling of alpha channel, according to [TIMODOPEN-228|https://jira.appcelerator.org/browse/TIMODOPEN-228] It works fine on android (Ti.Blob.imageAsResized returns jpegs).",1
+"TIMOB-14494","07/08/2013 14:36:20","iOS: Ti.Map should handle touch events on the view not just annotations","Touch events are currently only fired on Map Annotations and not else where on the map view. Implement touch events on the Map View.",8
+"TIMOB-14496","07/08/2013 20:54:39","Android: setHeaderView for Titanium.UI.TableViewSection","Currently, it is only possible to set the *headerView* of a TableViewSection at creation-time in Android. It would be great to use the *setHeaderView* method for Android too. In the Docs there is no note that this method is not available in Android: [http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.TableViewSection-method-setHeaderView]. There is only a hint at the *headerView* property description (_""On Android, must be set at creation.""_): [http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.TableViewSection-property-headerView] Q&A: [http://developer.appcelerator.com/question/154498/alloy-how-to-set-controller-as-headerview-to-tableviewsection-in-android] ",3
+"TIMOB-16050","07/09/2013 12:35:53","MobileWeb: load event on imageView not firing","When using Ti.UI.createImageView on MobileWeb, the ""load"" event never fires. I tried to use ""postlayout"", but this event fires twice the FIRST time the image is loaded (i.e. is not in the browser cache) and once every subsequent time. Using Blob (with it's various means of downloading image data into it) is not supported on MobileWeb, so there seems to be no way of actually knowing when an image is completely downloaded. *Steps to Reproduce* 1. Create empty project in Studio based on Classic->HTML-based Application 2. Remove everything between and in Resources/HTML/index.html 3. Replace everything in app.js with code below 4. Create folder Resources/comics and download panelA.png from http://www.ontonauts.com/reader_indev/comics/panelA.png 5. Run the project You will see that the ""image has loaded"" text is never sent to the Javascript console, i.e. the event is never triggered. *Test Case* {code} var oxi = {}; (function(){ //require and open top level UI component var ApplicationWindow = require('ui/ApplicationWindow'); var _win = new ApplicationWindow(); _win.open(); var eventHandler = function(e) { switch (e.type) { case 'load': Ti.API.info('image has loaded'); break; } }; var img = Ti.UI.createImageView(); img.addEventListener('load',eventHandler); img.setImage('comics/panelA.png'); _win.add(img); })(); {code}",1
+"TIMOB-14544","07/12/2013 22:38:11","iOS: keyboardFrameChanged before keyboard is shown","keyboardFrameChanged event doesn't do much good as it is fired after the keyboard has already been displayed. to create responsive layouts with different keyboard sizes we need to know keyboard size BEFORE the keyboard is displayed. iphone/Classes/AppModule.m line 386-407 could be changed to something like this {code:objc} -(void)startup { WARN_IF_BACKGROUND_THREAD_OBJ; //NSNotificationCenter is not threadsafe! NSNotificationCenter * nc = [NSNotificationCenter defaultCenter]; [nc addObserver:self selector:@selector(willShutdown:) name:kTiWillShutdownNotification object:nil]; [nc addObserver:self selector:@selector(willShutdownContext:) name:kTiContextShutdownNotification object:nil]; #if __IPHONE_OS_VERSION_MIN_ALLOWED >= __IPHONE_5_0 if ([TiUtils isIOS5OrGreater]) { [nc addObserver:self selector:@selector(keyboardFrameChanged:) name:UIKeyboardWillChangeFrameNotification object:nil]; } #else [nc addObserver:self selector:@selector(keyboardFrameChanged:) name:UIKeyboardWillShowNotification object:nil]; [nc addObserver:self selector:@selector(keyboardFrameChanged:) name:UIKeyboardWillHideNotification object:nil]; [nc addObserver:self selector:@selector(timeChanged:) name:UIApplicationSignificantTimeChangeNotification object:nil]; #endif [super startup]; } {code} Either that or provide access to both Will and Did. e.x. {code:javascript} Ti.App.addEventListener('keyboardFrameChanged', function(e){ var val = Ti.Platform.displayCaps.platformHeight - e.keyboardFrame.y; $.container.animate({bottom:val, duration:300}, function() { Ti.API.log(""handleAnimateEnd""); }); }); {code}",8
+"TIMOB-14582","07/17/2013 19:24:44","LiveView: Create Error/Warning Screen","create window to display liveview errors/warnings. examples: error connecting to server, parse error, etc..",8
+"TIMOB-14612","07/19/2013 02:20:22","iOS: Typo in saving screen error message","The text given if you call saveToPhotoGallery() with an invalid media type string is: ""invalid media type: Exepcted either TiBlob or TiFile, was: String"" ""Exepted"" is spelled wrong and ""Invalid"" should be capitalized to be consistent with other error messaging.",1
+"TIMOB-14637","07/23/2013 20:05:26","Android: Fix Titanium Build Script in order to support Genymotion Android Emulator","Genymotion is an enhanced android emulator that leverages x86 emulation with builtin HAXM-like optimizations and Google APIs. In order to have an simulator with a performance like the iOS Simulator we need to setup a x86 android emulation with Intel HAXM support. The problem is that by using the native AVD on Android SDK you can do this setup BUT without the Google APIs, namely the GMaps API, which makes testing apps depending on those APIs, impossible on this high performance simulation. Although it is possible to add Google APIs to a standard x86 AVD, the process is very complex and involves copying the libraries from other non-x86 AVDs and rebuilding a system image which takes a lot of time and effort for each simulator setup you want to have. So Genymotion does it all under the hood and allows us to select between several android models and even simulate external sensors and GPS location, much like the Apple Simulator does. The standard Titanium build script has some problems that causes the Simulator session not to be recognized as a valid deployment target (using titanium build -p android -T device), even though adb successfully recognizes the simulation under adb devices. In order to fix this I have found some hints on a russian weblog and changed it a bit for working on my Mac. I have successfully run my Titanium app on Genymotion using Titanium CLI by doing the following: http://reinraus.ru/wordpress/nastraivaem-titanium-studio-dlya-zapuska-prilozhenij-v-android-x86/ It is written in Russian, so please use the Google Translate tool, he has made 3 changes on the build script. The tutorial is for windows, so if you're running Titanium on a Mac or Windows, just change the first patch from: {code} dev_id, dev_type=output.split(""\r\n"")[1].split(""\t"") {code} to: {code} dev_id, dev_type=output.split(""\n"")[1].split(""\t"") {code} It seems there is still a tiny problem with Logcat on the end, but the app successfully run on Genymotion after this patch.",3
+"TIMOB-14652","07/25/2013 03:33:29","CLI: When selected SDK is not 3.0.0 or 3.0.2 and building for 3.0.0 and 3.0.2, verify Node.js version is 0.8.x","If the CLI's selected Ti SDK is 3.1.0.GA and the tiapp.xml is set to 3.0.0.GA or 3.0.2.GA, then those SDKs require Node.js 0.8.x. Today we allow those builds to fail. The build should be smarter to detect those SDKs and if Node.js is not 0.8 and fail gracefully.",2
+"TIMOB-14743","07/27/2013 00:21:21","BlackBerry: 'java' processes belonging to 'Appcelerator Studio' might kill the CPU","h5. Problem description After installing the BlackBerry tools and using Appcelerator Studio for building BlackBerry apps, I've experienced intermittent issues, leading to a sluggish and clumsy experience and eventually to completely freezing the system (forcing a hard restart). From the Activity Monitor, a number of java processes were occupying most of the machine CPU. All those processes were belonging to Appcelerator Studio Process Group. It seems those processes are related to BlackBerry development and have been experienced so far only when building projects on BlackBerry. Attached screenshots of my Activity Monitor and detail of a single process. h5. Notes Another similar issue occurred in the past: https://jira.appcelerator.org/browse/TISTUD-3514",8
+"TIMOB-14696","07/30/2013 13:10:55","Android: Image with Menu text on Menu Item for Android Menu is not being displayed and menu text is cut off","Image with Menu text on Menu Item for Android Menu is not being displayed and menu text is cut off. Steps to Reproduce: 1.Install and launch KS. 2.Go to Base UI >Menu (Android)>Menu Handlers (Window Options) 3.Press on open window 4.Press the menu button 5.Press on close window. Expected Result: 3.Window with blue view should show up 4.Should see a graphic with menu text. 5.Window should close. Actual Result: 3.Window with blue view is seen. 4.No image is seen and menu text is also cut off. 5.Window gets close. Not a Regression as occurs in 3.1.1.GA also",0
+"TIMOB-14701","07/30/2013 22:55:53","CLI: Android: For emulator builds, check that emulator has sufficient space","See if there's a way to check how much space is free in an AVD before install the app. We probably will need to build the app first to get the APK file size.",2
+"TIMOB-14735","08/01/2013 10:54:42","iOS: Accessibility: ButtonBar: Accessibility does not work on Button Bar ","iOS: Accessibility: ButtonBar: Accessibility does not work on Button Bar. The Label, Value or Hint are not voiced over. This is not a regression. It occurs since sdk 3.0.0.GA. Steps to reproduce: 1. Run the app as Accessibility Acceptance Access_1102 iOS Only under Accessibility module. 2. Touch the first Buttonbar (with LVH defined in sequence) Actual: if 'red' is touched then 'red button 2 of 3"" is spoken. The Label, Value or Hint are not voiced over. Expected: 2. The device reads aloud: buttontext, tab, (button number) of (total number of buttonson buttonbar) [eg. 2 of 3] followed by """"Buttonbar1"""", """"Value1"""", """"Hint1"""" ",3
+"TIMOB-14752","08/02/2013 12:47:40","Android: Telephone numbers in WebView are not getting auto linked ","*Problem* Telephone numbers (inside html content) are not getting autoLinked in Android. But it is working on iOS. Numbers are not auto linked after using ""format-detection"" meta tag either. {code:html}{code} *Test case* {code:javascript} var win = Titanium.UI.createWindow({ backgroundColor : '#fff' }); var html = ""
hello:
Call immediately on 0800 111 999:
""; var webView = Ti.UI.createWebView({ height : Ti.UI.FILL, width : Ti.UI.FILL, html : html }); win.add(webView); win.open(); {code}",0
+"TIMOB-14763","08/04/2013 22:47:04","iOS: titleid and messageid properties don't work for AlertDialog","titleid and messageid property doesn't work for alertDialog. *i18n/en/strings.xml* {code:xml} Helloworld! {code} *app.js* {code:javascript} var win = Ti.UI.createWindow(); var alert = Ti.UI.createAlertDialog({ titleid: ""hello"", messageid: ""world"" }); console.log(L(""hello"") + "" "" + L(""world"")); alert.show(); win.open(); {code} *Docs* http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.AlertDialog-property-titleid",2
+"TIMOB-14784","08/08/2013 17:47:58","CLI: Create ADB Library","We need an ADB library that provides the following functions: * devices * start-server * kill-server * install ** allow installation to a specific device/emulator (TIMOB-12600 CLI: building for Android device while the emulator open generates a wrong Error Message) ** gracefully handle FAILED_INSUFFICIENT_STORAGE errors (TIMOB-14701 CLI: Android: For emulator builds, check that emulator has sufficient space) *** if insufficient storage space, display instructions on how to resolve (TIMOB-9859 Android: increase AVD storage size to reduce \[FAILED_INSUFFICIENT_STORAGE\] errors) * shell * push * forward * start app (TIMOB-13105 CLI: Add build support for building android apps on emulator without starting the app) * kill running app",20
+"TIMOB-14785","08/08/2013 18:24:29","CLI: Create Android Emulator Library","We need an Android emulator library that provides the following functions: * create AVD ** improve emulator naming convention (TIMOB-1872 Android: Fix AVD naming scheme) * launch emulator ** make sure adb server is running ** if the emulator we want is already running, return ** if avd does not exist, create it ** if skin is not specified, select a valid skin for the AVD's Android SDK (TIMOB-13582 CLI: Launching emulator without specifying skin will use HVGA and will fail if chosen AVD does not support HVGA) ** custom launch params (TIMOB-2646 Android: Feature Request: Customized launch params) ** gracefully handle when emulator doesn't start in timely manner (TIMOB-9153 Android: Deployment: Android Emulator intermittently fails to launch app after timed out) ** NOTE: do not launch a useless emulator, especially on Windows (TIMOB-4730 Android 3.2 Simulator behavior on windows is very poor (not launched at all or useless emulator launched)) ** pipe emulator output to logger (TIMOB-13381 Android Emulator: process launches in new terminal on Windows) ** fire callback when emulator has booted ** fire callback when sdcard is ready ** fire callback when emulator is quit (TIMOB-12604 Android: Closing the emulator, 'Emulator has exited' log in not printed on console) ** NOTE: be careful when running multiple x86 instances as to avoid ""Starting emulator for AVD 'titanium_10_800x1280_armeabi-v7a' \ emulator: The memory needed by this VM exceeds the driver limit. \ HAX is not working and emulator runs in emulation mode"" errors * kill emulator ** NOTE: make sure emulator is properly killed on Windows (TIMOB-7468 Android: tooling - Rhino/V8 - On windows systems during emulator build, console reports error attempting to kill emulator process) * NOTE: make sure to support directories with &, especially on Windows (TIMOB-2527 Android: App launch/build problem if ampersand in home folder name)",20
+"TIMOB-14786","08/08/2013 18:41:14","CLI: Create Genymotion Library","We need an Genymotion library that provides the following functions: * detect Genymotion (TIMOB-14637 Android: Fix Titanium Build Script in order to support Genymotion Android Emulator) * launch emulator",20
+"TIMOB-14787","08/08/2013 19:30:28","CLI: Improve detection of Android SDK and SDK Home locations","The Android environment detection library needs a few additional features for the build command to properly validate the development environment. * detect Android SDK ** detect abd location (TIMOB-2760 need to be able to ref adb from either /tools or /platform-tools subdir) ** detect proguard availability (TIMOB-2782 Android: Generate / Run a Proguard configuration based on API usage) ** search configured Android SDK path first, then try ANDROID_SDK environment variable (TIMOB-8658 Android: Switch search order of folders/environment variables in androidsdk.py) ** if 64-bit Linux *** check if ia32-libs package is installed (dpkg-query -l ia32-libs) (TIMOB-13520 Android Emulator: improve error message from missing ia32-libs dependency on linux) *** check if /usr/lib/libGL.so exists *** check if i386 architecture set in dpkg * detect Android SDK Home (ANDROID_SDK_HOME) ",13
+"TIMOB-14799","08/09/2013 13:58:52","iOS: Prevent clearing TextField after password field had focus","*Problem* On iOS textfields are cleared by default after some password field had the focus. Is this something that could be prevented. I looked at the docs for textfields, but either I cannot find it or it just isn't there. *Example code to reproduce* {code:javascript} var win = Ti.UI.createWindow({ backgroundColor : 'white' }); var tf1 = Ti.UI.createTextField({ value : ""textfield1"", passwordMask : true, top : 10, width : 200 }); win.add(tf1); var tf2 = Ti.UI.createTextField({ value : ""textfield2"", top : 80, width: 200 }); win.add(tf2); win.open(); {code} *Steps to reproduce* 1. click in the password field 2. click in the ""normal"" textfield 3. press backspace *Expected result* The last character of the textfield is deleted *Actual result* The entire contents of the textfield is now cleared instead of only the last character.",3
+"TIMOB-14806","08/10/2013 02:38:09","ProjectTemplate: values used as comparison to determine device form factor are wrong","h5. Problem description In Appcelerator Studio template samples for classic projects, the values used as comparison to determine if the device is a tablet or a handheld are outdated and could lead to a wrong detection. h5. Steps to reproduce Create a new Single Window Project and open app.js. Check line: {code} var isTablet = osname === 'ipad' || (osname === 'android' && (width > 899 || height > 899)); {code} A Google Galaxy Nexus device (for example) has those values: {code} height: 1184 width: 720 {code} As a result, it is being detected as a 'tablet' while is a 'handheld' device.",5
+"TIMOB-14836","08/12/2013 22:23:52","LiveView: when device and machine are not on the same network, no graceful error message is displayed","h5. Problem description In order to work, LiveView development machine and device must be on the same network. When this is not happening, there is no graceful error message to inform the user. On Android a Runtime error is displayed and on iOS the app is stuck at the splashscreen.",5
+"TIMOB-14876","08/14/2013 00:07:10","Android Device: support run on device console output","Android Device: support device console output. Currently if you launch an app on android device, the runtime output does not appear in the console. This is basic functionality. However, we do support debug on device output and emulator output, so this is also a parity issue. Test Steps: 1. Launch app on Android Device (Run > Android Device). Actual Result: Build logs appear in console, runtime logs do not. The last line in the console is: [INFO] : App installer shutdown successfully",1
+"TIMOB-15249","08/15/2013 09:17:21","Android: TableView header and footer cannot be removed or resized dynamically","In contrast with iOS, on Android the {{headerView}} and {{footerView}} of a {{TableView}} cannot be removed or resized ({{height}}) after once the window is opened and the table layed out. Since the [docs|http://docs.appcelerator.com/titanium/latest/#!/api/Titanium.UI.TableView] do not mention any platform differences, I'd expect this to work on Android like it does on iOS. h1. Steps to reproduce # Create a new project: {{titanium create -p ios,android -n testHeader -d . --id test.header}} # For {{app.js}} use: {code} var w = Ti.UI.createWindow({ backgroundColor: 'white' }); var t = Ti.UI.createTableView({ data: [ { title: 'One' }, { title: 'Two' }, { title: 'Three' }, { title: 'Four' }, { title: 'Five' } ] }); var h = Ti.UI.createView({ backgroundColor: 'red', height: 100, width: Ti.UI.FILL }); h.addEventListener('click', function () { h.height = 50; f.height = 50; }); var f = Ti.UI.createView({ backgroundColor: 'green', height: 100, width: Ti.UI.FILL }); f.addEventListener('click', function () { t.headerView = null; t.footerView = null; }); t.headerView = h; t.footerView = f; w.add(t); w.open(); {code} # Run the app on both Android and iOS devices. # Tap the red headerView and notice that only on iOS it resizes both the header and footerView. # Tap the green footerView and notice that only on iOS it removes both the header and footerView.",5
+"TIMOB-15732","08/15/2013 22:40:55","CLI: Changelog (release notes) shows 3.1.1 as latest entry for the 3.1.2 release","h5. Description: When studio prompts users to install CLI 3.1.2, the changelog is displayed. Currently the changelog is only listing 3.1.1 as the latest entry. This might cause confusion. h5. Steps to reproduce: 1) Remove CLI with ""sudo npm -g remove titanium"" OR if you have a version earlier than 3.1.2, skip this step. 2) Launch studio and ""check for appcelerator updates"" 3) Examine the ""release notes"" (changelog) displayed h5. Result: The latest entry is 3.1.1 h5. Expected Result: The latest entry is 3.1.2 and describes the fixes made.",1
+"TIMOB-14899","08/16/2013 19:58:53","Tooling: Include Google Maps V2 metadata into timodule.xml so can be added to the manifest with the correct app id.","h6.Feature Request To add ability to have the application name automatically updated in the timodule.xml file when building an application. h6.Rationale Forgive me if I'm missing something obvious. The problem is that if they use the included module they have to assume it will be upgraded and replaced when a new Titanium SDK is released. Since the module will be replaced they cannot use the timodule.xml file to add the app id to the required permissions for the maps module. We have to add the permissions below to the tiapp.xml file. {code} {code} When we add them like that to the tiapp.xml file we get errors like: {code} [TRACE] Writing out AndroidManifest.xml [DEBUG] /Users/egomez/android-sdks/build-tools/17.0.0/aapt package -m -J ""/Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/gen"" -M ""/Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/AndroidManifest.xml"" -S ""/Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/res"" -I /Users/egomez/android-sdks/platforms/android-10/android.jar [ERROR] /Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/AndroidManifest.xml:4: Tag attribute name has invalid character '$'. [ERROR] /Users/egomez/Documents/Titanium Studio Workspace/TravisTestApp/build/android/AndroidManifest.xml:39: Tag attribute name has invalid character '$'. [ERROR] Error generating R.java from manifest {code} h6.Steps to reproduce Do a project clean, and build the android app and the map did not load. We then checked the generated AndroidManifest.xml file and looked for the required permissions that are outlined in the index.html file of the maps module. In the AndroidManifest file I found that the following permissions were present: {code} {code} The other 4 were not present in the manifest file and they need to be included for the Maps Module to work. Client would like to propose that the following be included in the timodule.xml that is included with the maps module that way they are automatically added to the manifest with the correct app id. The 4 which should be added to timodule.xml are: {code} {code} h6.Additional info Client also tested this by modifying the timodule.xml file for the module in the following directory: - ""/Library/Application Support/Titanium/Modules/android/ti.map/2.1.1/"" When they just added those 4 lines the maps module started working properly. Also can be confirmed that the 4 missing permissions/features are now present in the AndroidManifest.xml file.",3
+"TIMOB-14963","08/21/2013 07:25:15","Android: Ti.Map and Ti.Cloudpush return ""already added: Lcom/google/android/gms/games/achievement/Achievement""","I'm trying to add Push to my app (iOS/Android) but I'm getting the following error message when I compile the android version: {code} [ERROR] UNEXPECTED TOP-LEVEL EXCEPTION: [ERROR] java.lang.IllegalArgumentException: already added: Lcom/google/android/gms/games/achievement/Achievement; [ERROR] at com.android.dx.dex.file.ClassDefsSection.add(ClassDefsSection.java:123) [ERROR] at com.android.dx.dex.file.DexFile.add(DexFile.java:163) [ERROR] at com.android.dx.command.dexer.Main.processClass(Main.java:490) [ERROR] at com.android.dx.command.dexer.Main.processFileBytes(Main.java:459) [ERROR] at com.android.dx.command.dexer.Main.access$400(Main.java:67) [ERROR] at com.android.dx.command.dexer.Main$1.processFileBytes(Main.java:398) [ERROR] at com.android.dx.cf.direct.ClassPathOpener.processArchive(ClassPathOpener.java:245) [ERROR] System Error while compiling Android classes.dex [ERROR] at com.android.dx.cf.direct.ClassPathOpener.processOne(ClassPathOpener.java:131) [ERROR] at com.android.dx.cf.direct.ClassPathOpener.process(ClassPathOpener.java:109) [ERROR] at com.android.dx.command.dexer.Main.processOne(Main.java:422) [ERROR] at com.android.dx.command.dexer.Main.processAllFiles(Main.java:333) [ERROR] at com.android.dx.command.dexer.Main.run(Main.java:209) [ERROR] at com.android.dx.command.dexer.Main.main(Main.java:174) [ERROR] at com.android.dx.command.Main.main(Main.java:91) [ERROR] 1 error; aborting {code} Modules added: {code} ti.cloudpushcom.acktie.mobile.android.qrti.cloudcom.acktie.mobile.ios.qrfacebookti.mapfacebook {code} other users confirm that ti.cloudpush and ti.map inside the same project will cause this error for them too. Thread: http://developer.appcelerator.com/question/155815/already-added-lcomgoogleandroidgmsgamesachievementachievement",3
+"TIMOB-14931","08/21/2013 19:37:07","MobileWeb: option not properly toggling touch events for Ti.UI and ScrollableView","The flag needs to override the touch detection, but we forgot to add this to titanium/Ti/UI/ScrollableView.js and titanium/Ti/UI.js. We simply need to change both instances of {code} useTouch = 'ontouchstart' in global, {code} to {code} useTouch = has('touch'), {code}",2
+"TIMOB-14933","08/21/2013 21:05:11","CLI: Builds where tiapp.xml sdk-version differs from selected SDK fail to properly fork in Windows","The CLI tries to strip the first argument if it's the actual ""node"" executable before parsing the args. The problem is on Windows the node executable can sometimes contain the .exe and the following line of code fails: {code} // cli.js (line 218) args[0].slice(-4) === 'node' && args.shift(); {code} This line needs to look like this: {code} args[0].replace(/\\/g, '/').split('/').pop() == process.execPath.replace(/\\/g, '/').split('/').pop().replace(/\.exe$/, '') && args.shift(); {code}",1
+"TIMOB-14971","08/26/2013 08:49:10","iOS7: Grouped TableView - First Header has wrong height","*Problem* On iOS 7, when adding sections with headerTitles the first header is the wrong height. The next header is the right height. See test case. *Actual Result* The first header is to high. *Expected Result* The first header should be the same hight as the no. 2 3 4… *Test case* {code:xml} {code}",0
+"TIMOB-15253","08/26/2013 09:57:50","Android: singleTask launchMode with HeavyWeight window hangs after 1st launch","When launching your app with it's main activity set to {{android:launchMode=""singleTask""}} and it's main window a HeavyWeight one, it will hang on the second and every following launch. This bug blocks me from allowing users to open my app by using an URL scheme on a webpage or in a email message, send to them when they lost their password, received an invite to play a game etc. h1. Why use launchMode? By default, when launching your app via another app, e.g. using an URL scheme in the browser, your apps main activity will be stacked onto the current app's task. If your app was already running in the background, you will have 2 instances of the app running. Android has a [launchMode|http://developer.android.com/guide/topics/manifest/activity-element.html#lmode] attribute that allows you to instruct the OS to always open the activity as the root of a new task, using {{singleTask}} as value. This works fine, but not when the app's main window is HeavyWeight, for example a {{Ti.UI.TabGroup}} or a {{Ti.UI.Window}} with {{modal:false}}. h1. To reproduce # Create a new project: {{titanium create -p android -n test}} # Build (only) to generate manifest: {{titanium build -b -p android}} # Open the generated {{build/android/AndroidManifest.xml}} and copy the first {{}} tree to the {{tiapp.xml}} under {{ti:app/android/manifest/application}}. You will need to create the empty {{}} and {{}} elements yourself. # Add {{android:launchMode=""singleTask""}} to the {{}} element and save {{tiapp.xml}}. # Build the app to the device: {{titanium build -p android -T device}} # Open the updated {{AndroidManifest.xml}} to confirm the only effective change is the newly added attribute. # Seeing the app properly launched on the device, move it to the background by clicking the device's home button. # Lookup the app on the device and launch it again. You'll see a black screen with a titlebar ({{test}}) only. # Now replace the app's {{app.js}} with a lightweight window instead of the default heavyweight tabgroup: {code} Ti.UI.createWindow({backgroundColor:'white'}).open(); {code} # Repeat steps 5-8 and this time, the app will properly launch.",8
+"TIMOB-14973","08/28/2013 00:27:50","Android Build: Validate command line arguments and tiapp.xml settings","* validate command line options ** --alias ** --android-sdk ** --avd-abi ** --avd-id ** --avd-name NEW! ** --avd-skin ** --device NEW! (TIMOB-12661 CLI: Support adb's -s option for pointing a build to a specific emulator or device) ** --debug-host ** --deploy-type NEW! (TIMOB-9139 Android: Tooling: How to set the deploytype) ** --key-password NEW! (TIMOB-6423 builder.py should accept an alias password) ** --keystore ** --output-dir ** --store-password (formerly --password) ** --target (emulator, device, dist-playstore) * if 64-bit Linux ** make sure i386 architecture has been added (not sure how to check, but to add run ""dpkg --add-architecture i386"") ** make sure ia32-libs package is installed (TIMOB-13520 Android Emulator: improve error message from missing ia32-libs dependency on linux) ** make sure /usr/lib/libGL.so exists * enforce sdk dependencies ** check java version is <=1.6 (TIMOB-5010 Latest version of Java unusable for building Android projects) * check that build directory is writeable * read tiapp.xml ** read proguard flag (TIMOB-2782 Android: Generate / Run a Proguard configuration based on API usage) ** determine tool api level *** ensure correct version fallback (TIMOB-11603 Android: invalid android path in bash profile results in project creation error, improve error message) ** packageid must contain at least one period (prepend ""com."" if no periods present) ** appversion should be the tiapp.xml and is injected into the AndroidManifest.xml (TIMOB-559 Android: Appversion never taken from tiapp.xml) ** default minimum Android SDK is 2.3.3 (10) ** default target Android SDK is latest or 2.3.3 (10) ** classname is the app name, capitalized, only alpha-numeric and _, prepend _ if starts with a number ** make sure deploy type is correct ** validate ""ti.ui.defaultunit"" property (must be 'system', 'px', 'dp', 'dip', 'mm', 'cm', or 'in') (TIMOB-9682 Android: Packaging:No warning displayed for default system value of 'ti.ui.defaultunit') ** get ""ti.android.loadfromsdcard"" property ** get ""ti.android.compilejs"" property ** get ""ti.android.include_all_modules"" property??? * scrub debugger/profiler args * find the android sdk home * validate icon from tiapp.xml * detect modules from tiapp.xml ** if required module is not found, fail (TIMOB-9930 Android: Packaging: With a non-existing module added to the project in the tiapp.xml,app packages without error and gets installed on device) (TIMOB-14064 Android build select wrong module jars for dex build) ** load module hooks *** allow module hooks to modify classpath (TIMOB-14170 Android: Provide mechanism for partners to specify the classpath for builds)",13
+"TIMOB-14974","08/28/2013 00:30:17","Android Build: Detect if need to force rebuild","* detect if need to force rebuild (TIMOB-4510 Force full re-build discrepancy between Android and iOS - Android requires modified tiapp.xml) ** yes if --force flag is set ** yes if build/android does not exist ** yes if build/android/AndroidManifest.xml does not exist ** yes if app id changes ** yes if app name changes ** yes if app version changes ** yes if publisher changes ** yes if url changes ** yes if copyright changes ** yes if description changes ** yes if icon changes ** yes if analytics changes ** yes if guid changes ** yes if fullscreen changes ** yes if navbar-hidden changes ** yes if classname changes ** yes if deploy type changes ** yes if compile js changes ** yes if list of modules change ** yes if any of the module's manifest or api name changes ** yes if any module's binary is changed (TIMOB-5837 Tooling: Adding a module requires a clean build) ** yes if new properties are added to tiapp.xml ** yes if Android target SDK version changes ** yes if any changes to activities in the Android in the tiapp.xml ** yes if any changes to activities in the Android in the tiapp.xml ** yes if any jss files change",5
+"TIMOB-14976","08/28/2013 00:33:12","Android Build: Init the build/android directory and files","* init the build/android directory and files ** if force rebuild, remove build/android if exists ** create build/android if does not exist ** remove directories, if exists *** build/android/src *** build/android/res ** create directories, if does not exist *** build/android/assets *** build/android/gen *** build/android/gen/ *** build/android/lib *** build/android/res *** build/android/res/drawable *** build/android/res/values *** build/android/src (IS THIS EVEN USED??? if not, we don't need the aidl file) ** copy over files *** AppInfo.java => build/android/gen//AppInfo.java *** AndroidManifest.xml => build/android/AndroidManifest.xml *** App.java => build/android/gen//Application.java *** Activity.java => build/android/gen//Activity.java *** classpath => build/android/.classpath *** project => build/android/.project **** make sure the .project file is a valid Eclipse project (TIMOB-11700 Make generated android projects importable into eclipse) *** default.properties => build/android/default.properties *** gitignore => build/android/.gitignore *** NOTE: each of the files must be converted from mako templates to handlebars templates ** merge custom classpath with build/android/.classpath ** generate activities from tiapp.xml ** generate services from tiapp.xml ** write app_modules to build/android/bin/assets/app.json??? * create directories, if does not exist ** build/android/bin ** build/android/bin/assets ** build/android/bin/assets/Resources ** build/android/bin/classes",5
+"TIMOB-14977","08/28/2013 00:38:08","Android Build: Compile resources","* compile resources ** copy Resources directory (exclude all platform directories) *** load dependency.json *** load modules.json *** handle tiapp.xml ""ti.android.include_all_modules"" property *** walk specified directory **** ignore globally ignored files and directories (TIMOB-2733 Android: Getting Error at Rebuilding after changing tiapp.xml) (TIMOB-7816 Android: Ignore files that start with ._) **** if file is a html file, scan for all A basic bar chart