Tags give the ability to mark specific points in history as being important
  • v4.3.6
    9941f03a · Update CHANGELOG.md ·

    4.3.6 - 2019-04-13

    Highlights

    • Dropped support for Windows Phone 8

    Changed

    • HttpStream: Reverts change "Query parameters are now encoded to support the usage of unsafe characters" introduced in 4.3.1 - #482, #483
  • v4.3.5
    7427bffd · Update CHANGELOG.md ·

    4.3.5 - 2019-04-01

    Fixed

    • Deploy: Fixed bug that would cause a method signature to be included in the constant pool as a class - TotalCross#139, TotalCross#468
  • v4.3.4
    69596d57 · Update CHANGELOG.md ·

    4.3.4 - 2019-03-20

    Fixed

    • Android
      • Reverted back the change reverted on last release and finally fixed the bug that was causing the assets to touble in size - #358
    • HttpStream: Fixed read operation not retuning EOF when the correct content length is provided on the reply - #464
  • v4.3.3
    75d03be2 · Update CHANGELOG.md ·

    4.3.3 - 2019-03-14

    • Changed generation of the TotalCross SDK jar:
      • Annotations @Deprecated and @ReplacedByNativeOnDeploy are no longer stripped by ProGuard - #411
      • Argument names are no longer obfuscated
      • The javadoc jar is now being deployed to our Maven repository - #391

    Fixed

    • Android
      • Fixed deploy not being able to sign the apk when TOTALCROSS3_HOME is set with a relative path - TotalCross#275
      • Reverts change on deploy that seems to be causing the assets to double the size in the apk
      • Fixed Camera NATIVE support
    • iOS
      • Fixed screen resolution for newer models such as iPhone XS - #308
  • v4.3.2
    f47d7047 · Update CHANGELOG.md ·

    4.3.2 - 2019-01-31

    Fixed

    • iOS
      • Usage of "hide keyboard" button on the keyboard - #347
  • v4.3.1
    fac15352 · Update CHANGELOG.md ·

    4.3.1 - 2019-01-14

    Fixed

    • URI: Fixed parse of multibyte characters
    • Camera: Fixed regression in release 4.2.2 - #346
    • ArcChart: Fixed coloring of chart when a single series represents 100% of the data - #350

    Changed

    • HttpStream: Query parameters are now encoded to support the usage of unsafe characters

    Known issues

    • iOS
      • Using the "hide keyboard" button on the keyboard makes it unavailable for the application - #347
  • v4.3.0
    1ecf4fe4 · Update CHANGELOG.md ·

    4.3.0 - 2019-01-04

    Highlights

    • Added implementation of PBKDF2WithHmacSHA1
    • Removed SMS permissions from Android manifest when using the default deploy options, and added the new option /include_sms to deploy including them

    Fixed

    • iOS
      • Fixed screen dimensions on IPhone XS
    • Resign script tccodesign:
      • Fixed issue with provided mobileprovision not being added to the Xcode mobileprovisions folder
      • Temp files are now removed before the script execution
      • Fixed issue with certificate name in the following format: iPhone Distribution|Developer: Provided Name (Team ID)
    • ImageList: Fixed bug introduced in version 4.2.0 with the correcion of issue #192 - #291
    • DiscoveryAgend: Fixed potential leaks when using service discovery on WinCE
    • Grid: Fixed sorting different types of data in Grid - #297

    Changed

    • Removed SMS permissions from Android manifest when using the default deploy options, and added the new option /include_sms to deploy including them

    Added

    • Added implementation of PBKDF2WithHmacSHA1

    Known issues

    • Local notifications do not work on Android 8+. This is caused by a change in the security requirements of the Android native notification API that was not listed in the platform's release changelog. This issue will be fixed on the next release of TotalCross 5, but a fix for version 4 won't be issued to maintain our current compatibility with older Android devices.
  • v4.2.7
    5e644890 · v4.2.7 ·

    4.2.7 - 2018-12-06

    Fixed

    • Camera: Added request for external storage permission - #304
    • JSONFactory
      • Fixed processing of arrays in complex objects and added support for non-static inner classes - TotalCross#326
      • Fixes bug on json parsing caused by usage of a regex expression
  • v4.2.6
    12bc4ea4 · v4.2.6 ·

    4.2.6 - 2018-12-03

    Fixed

    • Vm.exec: Added permission REQUEST_INSTALL_PACKAGES to allow the application to install an apk on Android 8+
    • TreeMap: Fixed import of java.lang.Comparable

    Changes

    • Scanner: Added camera permission request on Android (ZXing/Scandit)
  • v4.2.5
    0d0acdd4 · v4.2.5 ·

    4.2.5 - 2018-11-29

    Fixed

    • Fixed location permission request

    Changes

    • Camera: Removed picture rotation detection on Android - it was source of intermittent bugs on some Samsung and Motorola devices
  • v4.2.4
    393fd2d5 · v4.2.4 ·

    4.2.4 - 2018-11-26

    Fixed

    • Fixed permission requests for File constructor, delete and getSize on Android 6+ - #317
    • Fixed permission request for Camera on Android 6+
    • Fixed Vm.exec on Android: intents were not being able to pass external files to other applications - #69, #320, #232 fixes

    Changes

    • GPS permission is no longer requested when the application is launched, instead the permission is automatically requested when required by the application
  • v4.2.3
    b1be3286 · Update CHANGELOG.md ·

    4.2.3 - 2018-11-07

    Fixed

    • Fixed regression with the Android deploy that would produce an apk not acceptable by the Play Store
    • Radio
      • Fixed autoSplit when the control width is set to PREFERRED
  • v4.2.2

    4.2.2 - 2018-10-30

    Fixed

    • Camera
      • Fixed CAMERA_CUSTOM not taking pictures when the device is held on vertical position, this affected a few models, most notably Samsung tablets - TotalCross#233

    Changes

    • Container
      • Method getChildren changed to return an empty array instead of null when the container has no children.
  • v4.2.1

    4.2.1 - 2018-10-19

    Fixed

    • Notification
      • Fixed notification crashing on Android - #255
      • Clicking on a notification will no longer start a new instance of the application if there's already one running on background
    • PushButtonGroup
      • Fixed regression on PushButtonGroup that made them unclickable on Win32, affecting all dialogs - TotalCross#263

    Changes

    • Added a new virtual keyboard that looks more closely to the Android native keyboard and is now the default for Edit and MultiEdit.
    • HttpStream: Added support for http methods PUT, PATCH and DELETE in class HttpStream - #240
  • v4.2.0

    4.2.0 - 2018-10-01

    Highlights

    • Android
      • Android package is now built with SDK 27 (previous releases were built with SDK 22) and the latest NDK r17b (up from NDK r8b!) - The minimum SDK level required to run TotalCross applications remains unchanged (SDK 10)
      • Applied the Android recommended changes to better handle activities and contexts to prevent possible resource
      • TotalCross now asks for the user permission to access phone state and location on startup

    🚧 On Android, features that require user permission during runtime may not be working. Please report if you have any trouble with permissions.

    • iOS

      • iOS package is now built with SDK 12
      • Added permission request to use the camera
    • General

      • Improved some Color methods to produce better results by properly weighting the RGB components according to our perception of color brightness
      • Added support for local notifications on JDK, Android and iOS.
      • EscPosPrintStream - New API to handle ESC/POS printer commands
      • Added support for fast IDCT scaling on jpeg images. Combined with the usage of the new utility classes to manage scaling jpeg images, this can greatly reduce the memory footprint of jpeg images and improve graphical performance.

    Using this approach to handle images of approximately 800x800 on medium sized devices can reduce memory consumption by up to 80% while doubling the image loading speed!

    Fixed

    • Fixed bug during activation with some JDK versions - a FileNotFoundException could be thrown when trying to recursively create directories for a new file
    • Deploy
      • Will now correctly package tcz dependencies that were split over multiple files - #214
      • Added protection for unlikely (but possible) NPE
      • Fixed deploy with Java 10, dependencies are now listed in the jar's Manifest
      • Fixed NPE when deploying for Win32 without initializing Launcher.instance - #165
      • Fixed rare (but possible) NPE during deploy
      • Fix path for Win32 dll, case sensitive systems expect binaries on lowercased folders - #274
    • Scanner
      • Fixed barcode scanning on Dolphin/Honeywell devices - value of barcode's check digit was being carried over to the calculation of the check digit on the next reading - TotalCross#228
    • ComboBox
      • Fixed vertical alignment of text - #192
    • ImageControl
      • Removed duplicated field effect
      • Fixed detection of press events
    • Toast
      • Fixed Toast appearing relative to the topMost window, when it should always be relative to the MainWindow
    • MultiButton
      • Fixed graphical bug - a transparent ComboBox arrow was being drawn on the background of the MultiButton (!)
    • PushButtonGroup
      • Fixed drag event to allow "giving up" on a press event by dragging outside the button bounds after a press
    • MultiEdit
      • Fixed text being hidden with Material style
      • Fixed bug that made every even character to disappear when you typed and reappear when you typed the next one
    • AccordionContainer
      • Fixed arrows not changing state when switching focus between multiple collapsible panes
    • CalculatorBox
      • Fixed enconding error with plus-minus sign - #206
    • Grid
      • Fixed column width wrong resize when dragging edge to before column start - #186
    • JSONFactory
      • Fixed recursive creation of complex objects
      • Improved JSON parser to map methods camel cased to underscored fields in the JSON object

    Changes

    • Updated version of the Bouncy Castle dependency
    • On Java, Settings.appPath is now initialized even if the Launcher isn't executed - #165
    • Launcher
      • The Launcher (simulator) can no longer be used without an activation key
    • Deploy
      • Check paths from pkg file and throw more meaningful error message when a path is invalid
      • Print Deploy exceptions on System.err instead of System.out and using the default stack trace output
    • Whiteboard
      • No longer recreates the content image when repositioned - #187, TotalCross#196
    • ListBox
      • Deprecated method add(Object[] moreItems, int startAt, int size) as it was redundant and more confusing than helpful
    • ComboBox
      • Deprecated method add(Object[] moreItems, int startAt, int size) as it was redundant and more confusing than helpful
    • Radio
      • Added feature autosplit - #180

    Added

    • EscPosPrintStream - New API which supports several ESC/POS printer commands - refer to the class documentation and samples for more information
    • Notification and NotificatonManager - Allows the creation and presentation of local notifications to the user, currently implemented for Android, iOS and Java.
    • ImageLoader - New class to help managing image resources, especially jpeg images. Currently no caching is done by the class.
    • Image
      • Added static methods Image.getJpegScaled and Image.getJpegBestFit to load jpeg files using fast IDCT scale, more about this here
    • Java
      • Added classes ByteArrayOutputStream and UncheckedIOException
      • Added classes Charset and UnsupportedCharsetException, added also String.getBytes(Charset)
    • Added Cp437CharacterConverter, which supports encoding and decoding characters using the CP-437 charset (also known as IBM437, windows-437, among others). Especifically added to be used with EscPosPrintStream to properly support writing text to Leopardo A7.
    • Convert
      • Added method charsetForName(String name), which returns one of the registered charsets available
      • Added method registerCharacterConverter(AbstractCharacterConverter characterConverter), which allows users to create and registers their own subclass of AbstractCharacterConverter to support custom encodings
      • Added several aliases to the existing ISO-8859-1 and UTF-8 CharacterConverter classes and changed setDefaultConverter to be case insensitive and support any of listed aliases.

    The existing CharacterConverter class and subclasses were changed to extend AbstractCharacterConverter, which extends Charset. The actual support to Java Charset is almost none, the main goal is to allow the usage String.getBytes(Charset) with the existing CharacterConverter and let users encode strings with different charsets without changing the charset used by the rest of the application through Convert.setDefaultConverter.

    Deprecated

    • ListBox
      • Deprecated method add(Object[] moreItems, int startAt, int size) as it was redundant and more confusing than helpful
    • ComboBox
      • Deprecated method add(Object[] moreItems, int startAt, int size) as it was redundant and more confusing than helpful

    Known issues

    • iOS
      • Applications signed for enterprise distribution cannot run on iOS 12 - apparently it fails to validate the certification chain that validates the signed application. It's not clear yet if this was an intended change or a bug, but there's no word from Apple about it yet.
      • Applications signed for distribution through the AppStore cannot be uploaded because of changes on the way image resources are handled starting from iOS 11. We are working on a definite fix for this, in the mean time feel free to contact us to manually package the application for the AppStore.
    • Notification
      • Android lacks support for custom images for notifications, only the default TotalCross logo is supported
      • Notification crashing application on Android - #255
    • PushButtonGroup
      • The fix for the drag event caused PushButtonGroup to be unclickable on Win32, affecting all dialogs - TotalCross#263
  • v4.1.4

    4.1.4 - 2018-05-17

    Highlights

    • TotalCross is now built with the iOS 11 SDK, as a side effect the minimum iOS version supported by TotalCross is now 8.0 (up from 5.1.1). Applications published on the Apple Store must be updated.
  • v4.1.3

    4.1.3 - 2018-04-12

    Fixed

    • Fixed Edit's material caption animation when navigating using the keyboard
    • Fixed WrapInputStream.read() - the value returned is now between the range 0-255, as specified by the InpuStream.read() documentation. The class WrapInputStream is used by Stream.asInputStream()
    • Fixed MaterialEffect to stop discarding PEN_UP events sent to the target Control after the effect is removed from the target Control
    • Implemented ConnectionManager.getLocalHost() for iOS
    • On iOS, fixed keyboard being closed when navigating to the next text input control using the "Done" button
    • Fixed SideMenuContainer - the sidemenu is no longer draggable
    • Fixed retrieval of the device's current time on newer Android devices (and possibly other POSIX compliant platforms) - #147
    • Fixed BarButton only firing a pressed event targeting itself when Material UI style is used - #176
    • Fixed redraw after the device is unlocked on Moto G5 Plus - #173
    • Fixed javadocs not being included with the SDK

    Changes

    • Usage of Vm.sleep(1) in the SDK replaced with Thread.yield() for clarity sake
    • Changes LineReader to use Thread.yield() between read attempts instead of stoping the Vm for 100 ms
    • Spinner's implementation changed to use TimerEvent instead of threads perform the animation
    • Edit's material caption animation is faster and will no longer get mixed with the blinking cursor
    • WrapInputStream.read(B[], I, I) no longer rethrows totalcross.io.IOException as java.io.IOException
    • WrapOutputStream.write(B[], I, I) no longer rethrows totalcross.io.IOException as java.io.IOException
    • WrapInputStream.close() will now properly close the underlying stream
    • WrapOutputStream.close() will now properly close the underlying stream
    • Changed the way we obtain the current device orientation and screen dimensions on Android, the previous implementations were deprecated
  • v4.1.2

    4.1.2 - 2018-02-20

    Fixed

    • Fixed support for WinCE based scanners that use OpticonH16.dll

    Added

    • Added support for native laser scanning for Android based Symbol/Motorola scanners
  • v4.1.1

    4.1.1 - 2018-02-06

    Highlights

    • Launcher default color depth changed from 16 bpp to 24 bpp

    Fixed

    • Fixed Switch disappearing on Android - calculation of alpha channel applied to the switch was wrong
    • Fixed Socket and HttpStream to properly handle EOF during read operation
    • Fixed screen not being shifted when device is in landscape
    • Fixed issue where a focused Edit would not receive keypress events
    • Fixed bug in Edit on Android - backspace events would not be issued when the Edit had text but had not received any typing events

    Added

    • Added Edit.canMoveFocus to disable focus change
    • Added Stream.write(int), convenience method to write a single byte to the stream
    • Added ScrollContainer.setScrollBars to allow subclasses to add or remove scrollbars after its creation
    • On Android, Chrome no longer supports using the scheme prefix to display local files. Added workaround to Vm.exec to keep backwards compatibility - #148
    • Added Settings.ANDROID_ID, refer to the Android documentation for more details
    • Added limited support for running Intents through Vm.exec on Android - #155

    Changes

    • Whiteboard now supports usage of transparentBackground to ignore the background color and generate images with transparent background - #153
    • Pressing ENTER in a set of Edit inside a ScrollContainer will now automatically scroll to the next control
    • Improved Control.setRect error messages, it will now throw distinct messages for invalid width or height
  • v4.1.0

    4.1.0 - 2018-01-15

    Highlights

    • Firebase for iOS
    • SMS changes
    • Implementation for sending and receiving data SMS also disables changing the state of the receiver when the application is paused and resumed
    • [Fade transition](https://gitlab.com/totalcross/TotalCross/wikis/Features/fade transition)
    • Font support
    • Improved FontGenerator to create better looking fonts. Regenerate your fonts to make them look smoother on device.
    • Spacing between characters was also improved.
    • Fixed support for some unicode characters and handling of the ranges passed to the command line.

    Fixed

    • Fixed ScrollContainer to properly display the controls if the order is changed
    • Fixed MaterialEffect on a ListBox that was scrolled up
    • Fixed Radio not being correctly painted when checked is set to true within the same event that changed it to false
    • Fixed MaterialEffect fade out duration - alpha is now computed based on remaining time instead of using a constant decreasing value
    • Fixed ScrollPosition's handle not being hidden when released
    • Fixed Check and Radio sending PRESSED event when setChecked is called, even when Settings.sendPressEventOnChange is set to false
    • Fixed Launcher to better handle missing or bogus font files when running on desktop
    • On Graphics, fixed NullPointerException and ArrayIndexOutOfBoundsException when repaint is called from a thread
    • Fixed ProgressBar to retain the z-order when its value is updated #80
    • Fixed iOS icons by adding method colorDist (int rgb1, int rgb2) and addFillPoint (int x, int y)
    • Fixed ImageControl zooming with poor quality, it was scaling the resized image displayed in the control instead of the original image
    • Fixed usage of internal scanners on Android devices
    • Fixed bug where screen was not being shifted when changing focus between Edits using PEN_UP or ENTER
    • Fixed barcode reading with Motorola scanners when the digits of both halves of the barcode were the same (such as 10161016 or 10201020) - #106
    • Fixed NullPointerException in Graphics.drawText that would occur under some situations when the UI is loaded from a thread
    • Fixed Window incorrectly calling onClickedOutside when a two-finger movement is performed
    • Fixed MaterialEffect to not apply effects during a flick

    Added

    • Added support to Bematech scanner back to the SDK - #100
    • Added Settings.showUIErrors, which can be set to false to disable UI errors that are shown in desktop only.
    • Added Flick.dontPropagate, which can be useful if you have two or more intrinsic ScrollContainers and dont want to propagate the scroll among them
    • Added ScrollContainer.canShowScrollBars, which gives child classes finer control on whether scrollbars should be displayed or not
    • Added ComboBox.getArrowColor and now you can change the arrow color at runtime
    • Added classes java.awt.Dimension and its dependencies - java.awt.geom.Dimension2D, java.lang.InternalError, java.lang.VirtualMachineError
    • Added method Long.toString(long i, int radix) to java.lang.Long
    • Added method ConnectionManager.getLocalHostName to retrieve the host name of the local host - #41

    Changes

    • The tcvm.dll no longer requires elevated privileges to be run on Windows desktop
    • Changes Spinner to have transparent background by default
    • Changes Spinner to not mess with the colors when created using an Image
    • On iOS, the application now receives an ENTER key event when the keyboard is closed
    • A RuntimeException is no longer raised in JavaSE when you add a control to an AccordionContainer, and its height reaches zero during animation
    • Changed ImageControl to paint material effects only if there is an image and setPressedEventsEnabled was called
    • Now Edit.autoSelect puts cursor at end of line instead of begining, matching the behaviour of MultiEdit
    • Now if you press ENTER in a set of Edits that are inside a ScrollContainer, it scrolls automatically to the next control.
    • Increased cursor thickness on Edit for devices with high resolution
    • Changed Time(char[] sqlTime) to also parse the milliseconds value (SQLite.getTime() now includes milliseconds)

    Deprecated

    The following fields and methods were deprecated and should no longer be used

    • File
    • readAndClose
    • eadAndDelete
    • writeAndClose
    • read()
    • UIControls
    • spinnerFore
    • spinnerBack