Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

131219_1233PM_addingChangesFromCn1 #34

Merged
merged 55 commits into from
Dec 13, 2019
Merged

Conversation

DurankGts
Copy link
Owner

No description provided.

shannah and others added 30 commits October 31, 2019 12:45
…e only create the Runnable if animation is in progress.
…n issue whereby unicode fonts would not be rendered in the windows desktop build when using native fonts. This change will detect if a string can be rendered by the current font before trying to use if for rendering or width calculation, and will fall back to the system font when the current font doesn't include one or more glyphs.
…bleContainer.

Changed to different fix for earlier SpanLabel and SpanButton issue (#2897).
This fixes #2944
… issues when attempting to add images with spaces in the file name. This also helps with #2934
…kground location broke with the new restrictions on background execution. This change uses a broadcast listener for background updates instead of a background service. This puts tight limits (5 or 6 seconds) on the processing time in a background location listener, but that was already a restriction that developers were aware of.
…rn values where the return value is discarded. In some cases the optimization would apply more than once when it sees a pop after an invoke with a return value. Added a guard to prevent this from happening.
… properties to the audio buffer so that the callback knows what it's dealing with. Also provided a simple downsample method to convert the buffer to a lower sample rate if required. This downsample method should be improved as time permits by adding a low-pass filter to clean up the conversion. Currently downsampling causes a little bit more quality loss than is desirable.
…o support different play service versions. Effective version is set using PlayServices.setInstance(PlayServices). The base PlayServices class, which supports playServicesVersion 8.3.0 is used by default. Other versions are supported by creating subclasses with the naming convention PlayServices_X_Y_Z to support playServicesVersion x.y.z. The build server will automatically select the best subclass depending on the playServicesVersion of the build, and will delete the rest of the subclasses before compiling. It will, at the same time, do a find/replace in the AndroidImplementation class to replace the PlayServices.setInstance(PlayServices) call with one of the appropriate PlayServices subclass.
… disabled. Any attempt to run invokeAndBlock on the EDT while invokeAndBlock is disabled will result in a BlockingDisabledException being thrown. InvokeAndBlock is a very powerful tool, however, when it is used to liberally, it may result in the perception of slow app performance. Especially if there are buried blocking calls inside code the builds the UI.

One example pattern that can benefit from this is when the user clicks a button on the screen that is supposed to trigger a new form to be shown.  If, the code that builds the form includes blocking, there will be a delay before the the app transitions to the new form.  If the code base is large, it may be hard to track down exactly where the blocking calls are coming from.  Ideally the code the builds the form and displays it should be able to run unfettered without blocking.  Anything that requires blocking should be moved either off the EDT entirely, or should be deferred to after the form is already built and being shown, by wrapping it in callSerially.   Wrapping such UI building code inside invokeWithoutBlocking() is sort of like a guarantee that this form will be built without blocking - so there will be predictably good user experience.  At the very least it will make it easier to flush out problematic blocking that occurs during the building of these forms because they will result in an exception being thrown, which the developer can then track down and remedy.
…in last commit.

Also fixed behaviour of invokeAndBlock so that Runnables scheduled to be processed in the currne processSerialCalls() batch won't have to wait for the invokeAndBlock() to complete before executing.  Previously invokeAndBLock() would block the entire serial queue, which causes hard-to-track performance issues in apps.
Added unit test to verify this new behaviour.
…s. Previously, if you call myContainer.replace(cmp1, cmp2, transition), then myOtherContainer.replace(cmp3, cmp4, transition2) it would perform the replace animations sequentially. This is bad if, for example, you have multiple components on the screen, and you want to replace each of their contents with a fade transition. It would be better if all of the transitions were concurrent. This improvement allows these animations to be run concurrently. It works by introducing a special ComponentAnimation subclass called UIMutation which is attached to a particular container. AnimationManager uses this class internally to support its new addUIMutation() methods, which are analogs to the existing addAnimation() methods. The only difference is that animations added using UIMutation will automatically try to merge with compatible existing UIMutations that have been added since the last state update in the animation manager.
…) to Component so that listeners can register to be notified when the component is initialized and deinitialized.
… if table column constraints aren't correctly configured and running in RTL mode.
…g for components to load. This commit includes a Circle animation that similar to a standard progress indicator, but with a bit of a twist (it makes a circle, then erases a circle, then starts over). It also includes a LoadingTextAnimation that displays blocks in the configuration of text, animated, as if it is being progressively typed.. then fades out. This is appropriate in sections where the user expects to see blocks of text, but the data isn't ready to display yet.

The base class for all of these animations, ProgressAnimation includes utility static methods markComponentLoading() and markComponentReady() that will replace an arbitrary component with a progress animation, and then swap it back when its data is ready.
Included a sample with some examples of how to use this class.
shannah and others added 25 commits November 23, 2019 08:44
…f the popup hasn't been added to the form by the time removePopup() is called. This can happen if there is an invokeAndBlock at some point when the popup is being created, and the popup is closed before it has a chance to open.
…a but includes async play and pause methods, state change listener support, error listener support, and direct method to add completion listener. Created new abstract base class implementing AsyncMedia, which is now the basis for most Media objects created in CN1. Added utility method to MediaManager to obtain an AsyncMedia from a Media object. Added sample to test Async media support. The sample just cycles between recording somethign, and playing what was just recorded. Javascript implementations forthcoming.
…oid app crashes described here #2956.  This solution is also taken from https://stackoverflow.com/a/56776561/2935174.  This method should be supported in iOS 6 and higher.
…fixed issue with native text editor not being sized correctly (and getting zero bounds) if editing begins before the textfield is added to the form. This fixes issue with search command not appearing until explicitly clicking on it. #2953
… debugging tools. Needs to be enabled using display property. android.webContentsDebuggingEnabled=true. Updated BrowserComponentPostMessageSample to use this display property.
…e CSS files and the app's CSS file if the project has css enabled, and the file being compiled is theme.css.
Improved BrowserComponent initialization to remove blocking of EDT.
Added methods to AsyncResource for adding listeners to be notified when the resource completes.
…t use of UIWebView entirely.

Also used ifdefs to strip out use of AVKit stuff if AVKit is not enabled.  This may be necessary if deployment target is less than 8.0 - but not sure.
…h spaces correctly, and will throw an error if the url is later converted to a URI. File.toURI().toURL() was required. Should fix #2960
…if it is called off the EDT. Previously it was listening for the ConnectionRequest's progress events to know when the request is complete, but if the EDT is locked for some reason, it may not receive this event. Added unit test for this.
…e peer. Fixed issue in invokeWithoutBlocking also that caused it to be unnecessarily turned off inside processSerialCalls.
@DurankGts DurankGts merged commit dd5911f into DurankGts:master Dec 13, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants