2.68.24 (02/12/2020) - Designs: now sending stats when an image button has a PointStats parameter. 2.68.23 (01/12/2020) - DirectoryLists: the variable 7 parameter is now mandatory or the recordset will contain no data at all. 2.68.22 (01/12/2020) - .INI version updated to 1.28. - .INI: ServicePollDelay is now 10000 by default - any update from a previous version with a value of 2500 will be forced to 10000. If you have an interactive schedule on your device that requires input from a remote using the WebService, you will have to put the value 2500 back manually or with the dev command setininode System ServicePolLDelay=2500 if you want the previous responsiveness. - Recordsets: DirectoryList .xml files are now treated specifically. If there's a string in the user variable number 7, it will be used as base directory instead of the root directory, and only the recordings inside of that base directory and its subdirectories will be filtered in. - Scripts: new command TVTools.sendMail(subject, content, address) to send simple emails to a specific address. The content will be encoded with HTML tags
to respect carriage returns. 2.68.21 (26/11/2020) - Secured the resume download function by also storing the file size locally as long as it's not finished. - The device update APK download now always resumes the download after a timeout unless it's a fatal error (file no longer availble, etc...). - Containers with the "// SCROLLABLE = true;" argument can now be scrolled if the number of elements is greater than the size of the view. 2.68.20 (18/11/2020) - Fixed an issue with view swapping when playing a MasterDB after another design. - The overlay will once again no longer be removed when the playback starts. - MasterDB: RSS overlays fixed and finished. 2.68.19 (17/11/2020) - DB and MasterDB: Finalized color, font and attributes management for text boxes. - Designs: Image boxes with the "// THUMBNAIL = true;" parameter now automatically display the thumbnails in the temp subdirectory on the TVTools server instead of their main media. The main media is still downloaded into the device's cache. - MasterDB : broadcasting conditions are now also used for pictures, videos and PDF documents. - Updated intent code for new Philips devices. 2.68.18 (12/11/2020) - LegalDoc release. 2.68.17 (05/11/2020) - Fixes to playlist in design image boxes to support keyboards. - Some fixes to the script engine for better keyboard support. - Support for hints in input text boxes. - MasterDB now also accepts databases. - Fixed a problem with text color conversion to ARGB. 2.68.16 (02/11/2020) - MasterDB: Fixed the text alignement coming from WebAccess when the WebAccess has stripped the text from its spans. - MasterDB: Once again the database tvtparam1 is used in priority. 2.68.14 (29/10/2020) - Once again adapted to the retarded way colors are managed in design files, this time text color was in ABGR while text background in ARGB. 2.68.13 (28/10/2020) - No longer checking validate for databases when they are inside a MasterDB. 2.68.12 (28/10/2020) - Completed the implementation of the virtual keyboard for designs. - New developper command "showvariables" to display all assigned variables (user and script) on the device screen to help for debugging interactive designs. - Fixed an issue where a design could keep residual views after looping. If you are using 2.68.11, please update to this version. 2.68.11 - Updated LibVLC to 3.0.11.1 (VLC 3.2.1). - New hidden .INI parameters: VLCProgressStuckDelay: delay after which a video is considered stuck in VLC when no longer progressing. 0 = disabled. VLCOpeningStuckDelay: delay after which a video is considered stuck in VLC when opening but not playing. 0 = disabled. - Recordsets: improved cache management, specially the "only cache" mode. - Implemented a virtual keyboard system for designs, based on containers. 2.68.10 - Recordsets: Fixed doNotShowIfNothing which was disabled after some MasterDB changes. - Designs: Implementation of pointStat. - MasterDB: now using PDF parameters. 2.68.09 - Designs: improved loading time by better checking if BDD have changed. 2.68.08 - Fixed background dimensions in bugged designs. 2.68.07 (08/10/2020) - Support for Iiyama Reboot and Software Update functions via Intent. 2.68.06 (08/10/2020) - Fixed an issue with empty transitions in MasterDB. 2.68.05 (07/10/2020) - Changed the way to detect video streams in design video boxes without interfering with database videos. 2.68.04 (06/10/2020) - Booking now fully manages time zones, and info sent to the server is always in the timezone defined by the "timeZone" field of the booking file. - Fixed MasterDB update and Demo when you have multiple playlist containing the same MasterDB. - Fixed Dynamic Playlists in multizones which were cleaning elements they should not clean. 2.68.02 (05/10/2020) - MasterDB demo: Now properly using the ID instead of the index to find the first modified element. Also ignoring invalid counter numbers and only checking if the number of changes is greater. - Fixed an occurence where a loaded playlist would be validated multiple times, including when not yet ready to be validated. - Fixed potential crash when quitting the app on a device without a lock task. 2.68.01 (02/10/2020) - Booking: Now using the "timeZone" parameter in booking files. 2.68.00 (01/10/2020) - MasterDB demo mode support, which permits playback after a new content download to go directly and immediately to the first modified element. New .INI parameter DemoMode, which can be set via Developper command "demomode ". - MultiScreen now reconnects if a screen is plugged back in. - Upgraded to ExoPlayer 2.11.8. - The YouTube player now supports videos up to 4K resolution. 2.67.17 (30/09/2020) - Many fixes to plans to adapt to the room booking changes. - New command "MultiScreen" to be able to play a playlist loaded with "LoadPlaylist" on a second screen when the device supports it. - Improvements to update signal management by Dynamic Playlists (including MasterDB). - The keyframer now works for Android devices. 2.67.14 (17/09/2020) - Fix for older MasterDB versions without "Var4" properly set. - MasterDB now gets update signals from the server. 2.67.13 (15/09/2020) - Some minor enhancement to the dynamic navigation system. - Object with linked visibility objects now propagate their own visibility if they have the "VISIBLE" parameter. 2.67.12 (14/09/2020) - Previews: Now only checking the preview ID for the first recordset. - Preview now change screen orientation depending on the size of the previewed design. - Added a 1s delay after preview generation before grabbing the screenshot. 2.67.11 (11/09/2020) - Minor fix for plans. 2.67.10 (10/09/2020) - Dynamic Playlists (MasterDB and other) are now updating in the background. - Fixed PDF support in MasterDB and image boxes. - Videos and PDF put in an image box will make the page last until they finished playing. - MasterDB: Fixed a problem where invalid tvtparams in the MasterDB (which shouldn't be there) were overiding the valid values in the database. - The PlayListManager will no longer try to validate dynamic playlist that are created during playback initialisation, which created issues with double validation. - Fixed an issue for when a dynamic playlist is looping. 2.67.09 (04/09/2020) - Scripts: Now calling "onDesignStart" and "onPageStart" in immediate mode, so it waits for the script to finish before it continues. 2.67.08 (03/09/2020) - MasterDB: Fixed images in weather widgets. - Scripts: new function "TVTools.changeObjectImage(int objectID, String path)" to change a design image with another design image on the fly. The image has to be local on the player, recovered by "TVTools.getObjectFileName(int page, int objectID)". - Weather widgets: city names with the ' symbol will now work too. 2.67.07 (02/09/2020) - MasterDB: fixed text colors following addition of "rgba" by the indians. - MasterDB: added multiple media support in databases with ";" separator. 2.67.06 (01/09/2020) - Fixed possible application freeze when a #VAR hashtag is not properly closed with a ). 2.67.05 (31/08/2020) - Fix for LoadPlaylist function when the media is a group, which would in some cases not be renamed properly. 2.67.04 (28/08/2020) - Scripts: new function TVTools.playPlayList(String playListName, boolean loop, int zone) which plays a playlist loaded with the LoadPlaylist command. loop determines if the playList should loop or go back to the previous list at the end. zone is the zone in which to play the list if it's a multizone, or -1 for full screen. 2.67.03 (27/08/2020) - Designs: Fixed a crash that could occur with designs with 0 pages. 2.67.02 (27/08/2020) - Designs: Fixed an rare case where a background could end over the other elements of a design. 2.67.01 (26/08/2020) - Dynamic playlists: fixed the duration of images for directories in designs. - Dynamic playlists: Some enchancement for smoother transitions. 2.67.00 (25/08/2020) - TVLauncher 3.00 now allows TVSlide to start in "Lock Task" mode (Kiosk) when TVLauncher is made Device Admin. - New Command "SetIniParameters" permitting to set schedule level specific .INI parameters "on the fly" when the device arrives on the level. - MasterDB: Fixed tvtparam1 management, which now takes both the master DB (prioritary) and the Design field into account. - MasterDB: Fixed support for non Database designs which name is in a different field... - MasterDB: Added support for weather widgets. - Designs: Now also accepts images with TVTCloud: in their file name outside of containers. - Widget variables are now design dependant and no longer application wide. - Widget image fields with multiple medias can now display images, videos and PDF documents. - MasterDB: Font families are now working properly. - Changed MasterDB and Directories to Dynamic Playlists which can for now contain images and videos. - Dynamic playlists can be randomized at each cycle, and can have a limit on the number of elements to play. - Added PDF support for dynamic playlists. - MasterDB: supporting directories of medias in design image boxes. - Designs: you can now play a playlist loaded with the "LoadPlaylist" command in an image box using "playlist:" as image name. - TVSlide can now communicate with TVLauncher 3.00 to ask the launcher to start an application in kiosk mode. 2.66.02 (03/08/2020) - MasterDB: Fixed media names with HTML tags and escapes. - Moves to "Lock Task" mode if given the permission by a device owner TVLauncher 3.00+. - Script command TVTools.ChangeBDDFilterValue: Setting a filter to "#DISABLED" now makes it inactive. 2.66.01 (03/08/2020) - Hotfix random Philips integrated played crash when starting a video. 2.66.00 (03/08/2020) - The "Preload" check box on the page properties will no longer also make the page be invisible. - Partial support for MasterDB, full support will be in the next version. - Updated weather widgets support. 2.65.10 (21/07/2020) - Designs/Scripts: "#" replaced by record number in horizontal containers too. - New function "TVTools.uploadImage(objectID, uniqueString)" to upload images to specific subdirectories of the server's upload directory. - Minor bug fixes. 2.65.09 (09/07/2020) - New INI parameter "FixVideoRotation", to fix videos with a rotation on devices that don't support that feature. Requires VideoRenderMode = 1. - Designs/Scripts: Fixed a crash when trying to open a list without defining a list variable. 2.65.08 (08/07/2020) - Changed all views for design elements to AndroidX compatible versions. - Containers/Scripts: Elements of "grid" containers can now also be used as buttons, onClick is called with the record number. - Scripts: added two new functions to place calls using the Android system: TVTools.phoneCall(String number) calls the number using the native phone system. TVTools.duoCall(String number) calls the number using Google Duo, including video calls if possible. Note that those functions exit TVSlide and leaving them will restart it. The WebService continues working in the background. 2.65.07 (24/06/2020) - Implementation of weather widgets. - New variables for widgets, used with #WID(number=x). - New #BDD parameter widn=x to get a Widget variable instead of the field if the variable is not empty. 2.65.06 (23/06/2020) - Event strings coming from the WebService are now also dispatched to overlays. 2.65.05 (22/06/2020) - Scripts: new functions. TVTools.playSound(filename, loop) plays a sound, optionally looping it. File name can be retrieved by TVTools.getObjectFileName(page, id). TVTools.stopAllSounds() stops all currently playing sounds. - Fixed a bad variable assignement when scripts of multiple dialogs where called. 2.65.04 (19/06/2020) - Scripts: the "onKeyEvent(keys)" callback has been expanded and now also recieves the sender device ID when available: "onKeyEvent(keys, sender)" - Scripts: new function "TVTools.getDeviceID()" which returns the actual device ID as registered on the WebService. - Designs: Linked objects (to text boxes) are now also managed for containers displaying several entries per page. 2.65.03 (17/06/2020) - Scripts: new text box attribute "LINKED_VISIBILITY" which permits to make objects invisible if the text box is empty. // LINKED_VISIBILITY = 3,8; will make the objects ID 3 and 8 invisible if the text box is empty. 2.65.02 (16/06/2020) - Update of the youtube player to adapt to protocol changes. - Scripts: command "TVTools.setRelay(mode, number, state)". New mode "2" for the V3 protocol. - Default .INI configuration file per root schedule level. At start, the application will look for a "TVTSlide/.TVSlide-Config//ini_defaults.tvt" text file that contains some default settings for all devices under this root schedule level. E.g. the file located at "tvtslide\.TVSlide-Config\GD\ini_defaults.tvt" containing: [System] RebootAfterNetworkLoss = 30 Will set the "RebootAfterNetworkLoss" parameter of all devices switched to this schedule level or its children to the value of 30. 2.65.01 (09/06/2020) - Scripts: new command "TVTools.setRelay(mode, number, state)" to change relay states on IPX-800 devices. mode = 1 is for the V4 protocol. - Room booking scripts: new command "TVTools.roomBookingAddMultipleEvent(String start, String end, String details)" which permits to add multiple events for the same time period. - Scripts: callback to receive input commands from keyboard, webservice or other sources. - More stuff and fixes. 2.65.00 (09/04/2020) - All medias for designs are now downloaded directly from the "medias" directory of the server instead of "tvtslide/.publish". - New developer command "getPreview(name=,record=,guid=)" used internally by the server to generate accurate previews from Android for the Web Access. - Container image boxes now support .PDF files in addition to videos. - PDF files now respect their original aspect ratio inside of the destination frame. 2.64.09 (13/03/2020) - Fix for rotatevideos. 2.64.08 (12/03/2020) - Implemented CEC screen status for MXQ/M12S type devices. - Design text boxes: Fixed interline spacing for display densities that aren't 1.5. - New .INI setting "VideoRotateTexture", to rotate video rendering, only works with "VideoRenderMode = 1". - New developper command "rotatevideos xx.x" to set the above .INI values. E.g. "rotatevideos 90". 2.64.07 (09/03/2020) - Final version of 06. 2.64.06 (09/03/2020) - Recordsets: Support of "#TRANSLATE" filter. - Support of justified text. 2.64.05 (04/03/2020) - Designs: Videos will no longer loop if the page in which they are has a duration of 0. You can still force them to loop by adding "loop" to the params line. This should make page transitions smoother without repeating the video beginning for containers where the video object is the main element on the screen and decides its duration. 2.64.04 (03/03/2020) - TVTDatabase: additional recordsets are searched for even if they don't have a common root with the main recordset, if their URL starts with "tvtcloud:" (case insensitive). - Designs/images: No longer generating a video object when the image name points on a video if the construction page already contains a video object. 2.64.03 (03/03/2020) - Recordsets: Fixed filtering and sorting of recordsets with field lists. 2.64.02 (02/03/2020) - Designs: Image Boxes in containers can now also display videos. - Recordsets: Now support change of field order and addition of new fields without editing the recordset in the designer. 2.64.01 (28/02/2020) - Fix to screenshot monitoring - calling on UI thread again. 2.64.00 (26/02/2020) - TVTDatabase: Now adapting additional database names when they share a common root with the main injected database so that secondary elements relying on recordsets like logos keep on working after copying a level. The system will find the additional data sources where they are in the database tree. The additional aliases are cached on the device until the schedule level is changed. - INI: new parameter "RebootAfterNetworkLoss", defaults to 0. If 0, it does nothing. If not 0, it represents the number of minutes after a total loss of server connection before the device reboots if the connection doesn't come back. Reboot is only possible on rooted or Philips devices, on other devices the application will just restart. You can set it on several devices at once like all other .INI parameters with the everywhere admin command "setininode System RebootAfterNetworkLoss=xx", xx being the desired value in minutes. 2.63.47 (25/02/2020) - Updated to ExoPlayer 2.11.3 - Now supporting recordset unions. The data sources must have exactly the same fields. The field types are taken from the first recordset as the field editor for unions doesn't work. 2.63.46 (14/02/2020) - Internal beta version. - Updated to VLC 3.2.7. - Updated to ExoPlayer 2.11.1. - Changed the way "one shot" timelines and elements work because of undocumented non retrocompatible changes in the server side publication system. This includes big changes to groups, which elements are now duplicated on playback. - Designs: new image url type "signature:", to generate digital signatures on touch devices. - Designs: Text boxes now support the line spacing parameter. 2.63.45 (10/02/2020) - Final release of 2.63.45 and previous changes. 2.63.44 (07/02/2020) - The listprocesses command now runs in super user and lists all processes. - Designs: More details in log for the camera view. - TVTDatabase: now properly applying the dur: condition and setting page duration to 0 for ignored recordsets. - Fixed a size issue with horizontal containers. 2.63.43 (29/01/2020) - No longer using LibVLC in designs for now. 2.63.42 (28/01/2020) - Made script parameter syntax a bit more permissive. Now it doesn't matter if there are spaces around the "=" or not. The line must still end with ";" though. - Fixed front/back camera selection. - Designs/TVTDatabase: now supporting the page duration condition. - Fixed YouTube decipher function detection. 2.63.41 (22/01/2020) - Recordsets: Now supporting "tvtcond" conditions in databases. - Fixed YouTube player because of changes in the YouTube stream list recovery system. 2.63.40 (20/01/2020) - Designs: you can now enter "camera:" in a video box in order to display the preview of the device's camera. Optionally, you can precise "camera:front" to use the front (selfie) camera. - Scripts: New function TVTools.takeCameraPicture(int objectID) to take a picture from a camera video box. New function TVTools.displayCameraPicture(int objectID) to display the last taken camera picture in an image box. New callback onCameraPicture() called when TVTools.takeCameraPicture is finished. - Device installation: You can now select between using the software Android ID or the hardware serial number as unique device identifier. If you don't know what that means, don't touch. 2.63.39 (16/01/2020) - Designs: no longer creating the video view if the file is not a video. 2.63.38 (15/01/2020) - Designs: now managing the "tempsDepasse" parameter. - Designs/Databases: now injecting the DB name only into the first recordset. 2.63.37 (08/01/2020) - Recordsets: now supporting #BDD(doNotShowIfNothing=x). - Containers: supporting dynamic containers with a differed start time for apparition/animations. 2.63.36 (07/01/2020) - Temporarily disabled use of serial number because some devices seem to have a fake one. 2.63.35 (07/01/2020) - All newly installed devices will now always use the hardware serial number as unique ID instead of the Android ID. - Designs: Enhanced page swapping when the last non finished object has a cut end animation to avoid black images. Images objects that can't be displayed for any reason will be now marked as finished. - TVTDatabase: The text field format is now always set to UTF-8 no matter the settings in the designer, and eventual HTML tags will be converted. Before, the text field format was automatic only if the user didn't select anything in the designer. - Fixed the update of the database list when changing schedule level. - Daily reboot will now happen randomly in the hour specified in the .INI to avoid all devices to spam the server at the same time to reconnect. 2.63.34 (16/12/2019) - Designs: supporting vertically scrolling text (outside of containers). - The software updater will now seach for a new version in this order: 1) In the subdirectory of .TVSlide-Config named like the root of the actual schedule level. 2) If the file doesn't exist, at the usual place in the TVTSlide directory. 3) If that file doesn't exist either, in http://download.tecsoft.fr/TVSlide-versions/Latest/. 2.63.33 (16/12/2019) - Recordsets - TVTDatabase: Now automatically assumes UTF8 HTML5 format for text fields. Checks the "validate" field without having to setup a special filter. 2.63.32 (11/12/2019) - Supports databases with associated designs in schedules. - Recordsets: Supports the "days since" format for date fields. - No longer supporting NFC TAGS with writable manufacturer sector. 2.63.31 (05/12/2019) - Now supporting MyfareClassic NFC TAGS. - MXQ players can now turn screens with HDMI CEC support on and off. - Fix for the Indian database for URLs with are already encoded in the XML. 2.63.30 (28/11/2019) - ExoPlayer can now also be rendered on a TextureView with VideoRenderMode = 1. This will NOT work for 4K videos on a MXQ. 2.63.29 (26/11/2019) - Designs now also use a TextureView for videos when VideoRenderMode = 1. 2.63.28 (25/11/2019) - DRM protected streams can now be played with the DRM Stream command. Playready only works on Android TV devices. - Designs: Some booking timeline fixes. - Designs: Plannings can now have image attachments as daily background. 2.63.27 (12/11/2019) - New .INI system parameter "EnableP2P" to enable (1) or disable (0) peer to peer caching. Default is disabled (0). - Indian database patches... 2.63.26 (05/11/2019) - The peer to peer caching group is now schedule level specific. 2.63.24 (04/11/2019) - YouTube Player: playlists can now be randomized by adding "random" in the param field of the video box. 2.63.23 (04/11/2019) - YouTube player: Peer to peer caching. When the websocket is activated, the player joins a sync group called "P2P", and firsts requests the streams from the cache of the master player to limit the number of requests on sites with many players. The slave players still store the stream URLs in case the master gets disconnected and changes. - New developer command: getp2pinfo. - Scripts: setObjectVisibility now also works for images. 2.63.22 (24/10/2019) - YouTube playlists are now first searched for in the server cache. - YouTube video streams are now cached on the player for the validity duration of the url minus 30 minutes, or for a default duration of 2 hours. 2.63.20 (25/09/2019) - Design objects: new parameter // VISIBLE = true/false to define the starting visibility of a text box. - Scripts: improved TVTools.changeObjectVisibility so that it works even before the object is displayed. 2.63.19 (24/09/2019) - Designs/Scripts: "onLoad" is also no longer run on the UI thread. 2.63.18 (24/09/2019) - Designs/Scripts: "onLoad" is now immediate and waits to be finished. 2.63.17 (24/09/2019) - Designs - PDF and other dynamically downloaded files: Fixed a file path problem. - ExoPlayer 2.10.5. - Scripts: improved TVTools.changeObjectBackgroundColor so that it works even before the object is displayed. 2.63.16 (20/09/2019) - Now displaying more informations when a licence registration fails. 2.63.15 (19/09/2019) - Support of custom date formats. - Support of #DAT(onlydm) filter. 2.63.14 (06/09/2019) - Fixed RecyclerView invalid item position bug with a custom LinearLayoutManager. 2.63.13 (03/09/2019) - Scripts: Fixed incrementation in getListFromXML function. - A variable modification (setVar) is now calling the callback variableChanged for all displayed designs in all open modal playlists. - TVTools.roomBookingGetNextStatusChange now takes three parameters, adding the date at which to search from. Also added TVTools.roomBookingGetPreviousStatusChange which searches the previous status change. Both function have those arguments: (String roomName, String date, String format). - Disabled security key storage for devices before Android 5.0. 2.63.12 (19/08/2019) - Recordsets: Support of #BDD(pos=xx)"name", where pos is the number of records to add or substract to the actual one. It will loop once. 2.63.11 (13/08/2019) - ExoPlayer 2.10.4 - Now generates a KeyPair (private/public) and sends the public key to the server. - Fixed duration problem when a design is published as an image. 2.63.10 (09/08/2019) - Now supporting XML data sources with the same tag names at different levels of the document. 2.63.09 (08/08/2019) - The Designer PDF renderer now supports displaying multiple pages by filling the size fields. If the width and/or height entered are smaller than the width and/or height of the PDF box, multiple pages will be displayed side by side and/or one over the other. - Enhanced the "status" developer command. - getRBNextFreeNiche now takes additional parameters minHour and maxHour, which define the active hours during which to search for a free time. TVTools.roomBookingGetNextFreeNiche(String roomName, String startTime, String duration, String minHour, String maxHour) - A design text box can now be turned into a checkable list box. Parameters are: // BOX_TYPE = checklist; The box is a checkable list. // INPUT_VAR = SELECTIONS; The variable containing the selections, a string of 0 and 1. The format is compatible with TVTools.getListFromXML. // LIST_ENTRIES = LIST; The variable containing the list, separated by |. // LIST_RESULT = SELECTED_GUESTS; The variable containing the selected list elements, separated by |. // BUILD_PAGE = 2; The build page (like for a container) // HEIGHT = 50; The height of the active part of the build page. Elements below that height will be ignored but can be used for checked/unchecked images. // CHECKED = 3; Object ID of the selected checkbox image. // UNCHECKED = 4; Object ID of the unselected checkbox image. - Added additional year change check in clockFunction for the working range of the device. 2.63.08 (23/07/2019) - Added a file system sync before rebooting on Philips devices to avoid configuration/data loss with specific firmwares. - Some changes to multitasking in database access functions. 2.63.07 (22/07/2019) - WebSocket is now disabled by default. - ExoPlayer 2.10.3. - Fixed issue in movement detection introduced with face detection. 2.63.06 (10/07/2019) - Now supports download time restrictions. - ExoPlayer 2.10.2 2.63.05 (09/07/2019) - Designs/Slideshow anim: Fixed a timer problem when view is released at the same time as the timer advances. 2.63.03 (09/07/2019) - Fixed a crash of ExoPlayer in some specific conditions in designs. 2.63.02 (03/07/2019) - Irregular wall: fixed a pivot problem that occured with rotation when the device restarted. - Designs/scripts TVTools.getMinsFromTime(String time) returns the minutes for a time formated "HH:mm". TVTools.getListFromXML(String xml, String unitName, String name, String mask) Extracts the field "name" from an xml document from all records named "unitName". Mask can filter out specific records, format "00011010", 1 being the desired records. TVTools.inputCheckList(String label, String sOptions, final String listVar, final String selVar, final String retVar, String okText, String cancelText) displays a list with check boxes and puts the selected entries in the variable "retVar". The variable "selVar" contains a mask format "0011010" storing the selected entries. The mask can directly be used in the getListFromXML function too. - Slideshow animations now also work with ADIC file format. Also fixed the cache management of the images. 2.63.01 (25/06/2019) - Script: fix for some interface functions that are now called from the looper thread but need to post their UI changes on the UI thread. 2.63.00 (25/06/2019) - The script engine no longer runs on the UI Thread but now has its own looper thread. - Designs/Scripts: New command "TVTools.closeThisDialog()" which closes the dialog from which it is called. - Designs: You can now make Text boxes editable by adding parametres in the interactive script page: // INPUT_VAR = ; defines in which variable the input should be stored. // INPUT_TYPE = ; defines the type of input, triggering the right type of virtual keyboard. normal: default value, a normal multi line long text input. email: an email input, the keyboard will have the @ sign. password: a password input, the text will be masked and the result in the variable encrypted. // SINGLE_LINE = true; makes the text edit box single line. // ENCRYPT = ; if set to true, the result will be encrypted in the variable even if it's not a password type field. // FOCUS = true; means this field should have the focus after the page creation. - Designs/Scripts/Skype: String TVTools.loginMeeting(String mail, String pass) Tries to log into a skype meeting with the given mail/pass combination. The strings must be encrypted. The function returns either "ERROR:" if it fails or the result of the request. String TVTools.searchMeeting(String mail, String pass, String search) Requests a list of potential participants (contacts) for the given skype account. The search parameter is a filter. String TVTools.createMeeting(String mail, String pass, String subject, String description, String sipAtt, String att, String startTime, String endTime) Creates a booking with a skype meeting. - Now letting ExoPlayer manage the video durations instead of the unprecise TVTools value. 2.62.41 (18/06/2019) - PNG/GIF animations now use a TextureView. - Using the new font file system in designs. - Horizontal and vertical scrolling containers now can use a default page. 2.62.40 (11/06/2019) - Designs WebView: Keyboard input in a WebView is now updating the last activity counter. Improved load times through better caching of pages. - Fixed path names for directory containers for the transition from .publish to medias. - Upgraded to AndroidX libraries (Material Design). - Upgraded to ExoPlayer 2.10.1 for bug fixes and improved DRMs. - Fixed a problem where recordsets wouldn't update on device boot if the system clock isn't set. - Designs/plans: - added a new mode=1 for plans that can not be zoomed or scrolled. - new parameters: "scale" to preset the plan scale on start and "wfColor" for the wayfinding color. - New developer commands: - useserialnumber: makes the device use the hardware serial number if available instead of the device ID. - usedeviceid: makes the devices use the device ID as usual. After using one of those commands, you need to delete the device in everyWhere manager so it can register again because its unique ID will have changed. - Designs: now updating recordsets and regenerating pages when a container loops. - New developer command for MXQ M12S devices, "netconfig dhcp", which switches the device back from static ip to DHCP mode. - Designs: fixed an issue where horizontal and vertical rolling containers would not update if their associated recordset was previously empty. 2.62.39 (28/05/2019) - Scripts: added new callbacks for various events: function onWebPageStarted(url) is called when a web page is starting to load. function onWebPageFinished(url) is called when a web page has finished loading. function onTimerProgress(int value, int total) is called when the page timer advances. function onInactivityProgress(int value, int total) is called when the inactivity times. - Scripts: new function TVTools.removeProgressDialog() to remove any displayed progress modal dialog. - Now using 64 bit native code on 64 bit machines. - Updated LibVLC. 2.62.38 (27/05/2019) - Surface video player: changed sync system for the endvideo method. - Fixes to ExoPlayer in the surface player. - The surface video player now uses its own detected video length instead of the unreliable server one in ExoPlayer mode. - Designs: Plans now center on the point between the "you are here" and the room. 2.62.27 (15/05/2019) - Fixed a rare occurence where some elements don't use the same case than others for the same path, causing the cleanup system to be overzealous. 2.62.26 (14/05/2019) - Fixed a potential freeze in ExoPlayer mode when the video ends with an error. - New design animation object "calendar:", which displays a fully featured room booking calendar. The object can set following variables: "CAL_EVENT_CLICKED" with the time of the clicked event. "CAL_SPACE_CLICKED" with the time of the empty space clicked. 2.62.25 (30/04/2019) - The design youtube player will now attempt to automatically download and install the Youtube application on rooted devices. 2.62.24 (30/04/2019) - New developer command "status" gives details about the actually played element. "iptvinfo" was merged with that new command. - Designs: video boxes can now play youtube video streams and playlists. Just past the complete URL of the stream or playlist into the URL line. IMPORTANT: Requires the YouTube player application to be installed. 2.62.23 (25/04/2019) - Exoplayer: changed looper thread creation. - Fonts: now also parsing truetype font collection files (.TTC). - Videos in designs are playing on a surface like before for now. - Missing/erroneous fonts in designs no longer count as a download failure. 2.62.21 (23/04/2019) - Moved incrementDateMinutes and getDateDiff from TVScriptAPI to TVUtils. - Booking: new script function TVTools.roomBookingGetNextFreeNiche(String roomName, String startTime, String duration) Gets the next free time niche in which an event of specific duration can fit, starting at startTime. The date format is standard booking "dd/MM/yyyy HH:mm". For the duration, the format is "HH:mm". - Video playback: Fixed a crash in the progress timer when in MediaPlayer mode. - Videos in designs are always played on a texture for this version only. 2.62.20 (15/04/2019) - Improved caching of alternate script images in designs. - Fixed crash when the design PDF player didn't have the page duration or resolution information (value 0). - The design PDF player should no longer have display problems with transparent PDF files. - Scrolling text in designs now flags as "finished" at the end of the first loop, and doesn't loop if the page duration is 0. - Fixed a problem when the file of a published eDesign doesn't respect the case in its name and therefore was deleted by the cleanup system. 2.62.19 (08/04/2019) - New Android command "LoadFonts" to upload fonts to the server for use in the designs of that schedule level. - New script function "TVTools.quitApplication()" to quit TVSlide. - ExoPlayer now runs on a special thread with a looper. 2.62.18 (04/04/2019) - Added media progress callback to ExoPlayer and MediaPlayer. - Fonts: now also looking for a fonts.zip file in a subdirectory of the .TVSlide-Config named like the root publication level of the customer. 2.62.17 (01/04/2019) - Happy fish day ! - Fixed saving the encrypted license. 2.62.16 (29/03/2019) - Maintenance release - disabled flag for horizontal scrolling of virtual resolutions larger than physical resolutions. 2.62.15 (28/03/2019) - Fixed the text parser for when the source "CTXT" text doesn't end with a span (notably in eDesigns with Rich Text fields). 2.62.14 (26/03/2019) - Now setting screen brightness to minimum when the device is outside broadcasting hours (for tablet devices). - You can now set only a start or end date for element time constraints. Before, the two were required. - Fixed a possible lock of the application when trying to stop playback when containers are in a specific state. - A new custom text view for designs now allows text to text transitions. - "Airport" style text display in designs by adding "// TRANSITION = FLIP;" or "// TRANSISION = FLIPFLOP;" to the script page of the text box. - License numbers are now stored on the device and can be displayed in everyWhere via the "license" administrator command. 2.62.13 (15/03/2019) - XMLReader: Fix for when sub nodes have the same name as the child of the root node and therefore are wrongfully returned as a multiple field. 2.62.12 (15/03/2019) - Upgraded to LibVLC 3.1.5 (12/03/2019). - Design Scripts: new function "TVTools.setObjectBlink(int objectID, int rate, int number)". Makes an object blink at the specified (in ms) for the specified of times. - Native youtube video support using the official API. - Recordsets: multiple fields with the same name in the same parent element now generate an output that looks like: ?,,,... and that is usable by a type 0 (slideshow) animation box. 2.62.11 (08/03/2019) - Support of native PDF rendering in designs. - Recurring content now also works in multizone zones. - PNG animations now take the loop parameter into account. - Synchro now also works in overlays. - Designs: Page 0 Script function "onKeyEvent(String keys)" is called whenever a key events incomes, be it from a keyboard, a mouse, a remote or the webservice. 2.62.10 (22/02/2019) - Updated to ExoPlayer 2.9.6. - New .INI parameter: IgnoreDesignFonts = x if x = 1, the fonts specified in designs will be ignored and only those in fonts.zip will be used to bypass the bugs in the designer assigning the wrong file to some fonts. - The font manager now also recognizes font names with additional symbols instead of spaces (like "-" for instance). - The PlaylistManager now ignoring empty file names to avoid unwanted download errors. - The connection errors section of the information page now also display which element owns the file and has a timestamp. It also displays the last known number of critical download failures. - Vertical rolling now also doesn't repeat if page duration is 0, and marks itself as "finished" at the end of the first loop. - New .INI parameter: VlcAudioDesync, which permits to desync the audio channel played by VLC (in milliseconds). - Bypassing a crash when a field info name is null (normally impossible, but they did it !). - .INI version is now 1.19. 2.62.09 (07/02/2019) - Now updating TV channel info when a program ends. - Drastically changed the way designs are streched to fit the screen in order to support design synchronisation. This new method should also give better results when scaling text fields. - Fixed change of playlist in a multizone zone. 2.62.08 (28/01/2019) - Motion detection: new parameters. frames = defines the number of frames after which a change is considered a motion. Defaults to 2. This avoid passing by movement to trigger the event, and to only trigger it if the subject stops in front of the display. skipframes = defines the number of frames to skip when starting the camera, to avoid side effects like focus and apperture adjustments. - New Command: DRM Stream to play protected video streams. Parameters are: URI of the stream. Type of DRM, can be "playready", "widevine" or "clearkey" for now. URL of the license server. Various additional parameters. - New parameter for TVTools.roomBookingIsNextConfirmed(boolean ignoreActual), if true, only checks future events (in the range of confirmation delay). 2.62.07 (23/01/2019) - Motion detection: User actions (key press or touch action) are now also considered as motions. - SurfacePlayer: No longer stopping ExoPlayer on the UI Thread. 2.62.06 (22/01/2019) - The booking timeline is now redrawing just as plans and progressbars and can be dynamically updated. - Design scripts: New parameters for text boxes // GRADIENT_INTENSITY = ; permits to make boxes color gradients (vertical only for now). - Booking: Resource problem reports are now sent to the server. New script function "TVTools.sendCommand1(String number, String command)" for scripts to be able to send such messages to the web service. - New Script function "getBDDSize(String recordsetName)" to get the size of a recordset. - Improved routine to get script parameters for design objects. - Added per day constraints for playlist elements. - Support for movement detection: New C++ routines for advanced comparison of two bitmaps. New command "Motion Detection". The first text field defines the time after the last movement after which the idle message is sent. The second and third text fields are the messages to be sent on movement and on idle, to be used by subsequent keyboard input commands. The last text field permits to define parameters to fine tune the detection, separated by commas. It defaults to parameters for the Philips 10" booking tablets. The possible parameters are: hres=: maximum resolution desired for the image captures. The software will select the closest available resolution compatible with the device's camera. Defaults to 352. sensibility=: minimum color difference on a pixel for it to be considered changing. Defaults to 128. amplitude=: percent of pixels compared to the total image surface which must change for it to be considered a movement. Defaults to 5.0 %. mode=: camera mode to be used. It defaults to "night" mode if available. centx=,centy=: percentage of centering of the subzone of the image to be used for motion detection. Defaults to 25.0%, 0.0% for Philips tablets. sizex=,sizey=: percentage of size of the subzone of the image. Defaults to 25.0%, 100.0% for Philips tablets. preset=: allows to use a preset for all the above values. For now, preset=1 defines the full usage of a full HD resolution (1920 hres). - New command "PlaylistLoop", which if present in a group, will make that group loop instead of exiting when finished. 2.62.05 (14/01/2019) - Android Update command now first searches for the root level of the schedule in the .tvslide-config directory, which allows to deploy different version depending on the customer. - Upgraded to Exoplayer 2.9.3. - Fixed looping for videos in designs - now looping also triggers object finished. - Added customisable analog clocks to Designs. In a URL/VLC animation, use: clock:(param1=x1,param2=x2,param3=x3,...) Parameters can be: hour=x, minute=x, second=x : x is added to the actual time (for instance to change timezone). page=x : Page containing the custom graphics. dial=x, hourshand=x, minuteshand=x, secondshand=x : id of the images reprensenting the various elements of the clock. If no custom graphics are defined, the default Android graphics will be used. - The caps checkbox in recordset fields now works. - New text display routines for designs, the result will be closer to what you see in the designer and it now supports justified text, but it may slightly change the appearance of older schedules. New preferences parameter in category system: "OldText". If 1, the software will use the old text rendering routines for backwards compatibility. New developer commands "oldtext" and "newtext" to easily make groups of players switch between the two modes. Default is to use old text for now. - Fixed date formats with full day names. - New command ImageStream to display a changing image from the network. 2.62.04 (19/12/2018) - Command with single element no longer inherits onlyOnce from the parent to the element (evading a TVTools publication bug). - Sync now also works with a single element in the playlist. 2.62.03 (19/12/2018) - Fixed XMLV2 fields/tags detection. - Upgraded to current LibVLC 3.1.0 version. 2.62.02 (17/12/2018) - Inheriting stats from command to web page elements. - ELWebPage sends stats only if there's no errors. SSL Errors are ignored. - Implemented Awesomium "URL" media. 2.62.01 (13/12/2018) - Disabled web page SSL certificate check. Don't do this at home. 2.62.00 (12/12/2018) - Scripts: new commands TVTools.getHorizontalResolution() and TVTools.getVerticalResolution(), which return the real horizontal and vertical screen resolution of the device. - Commands: "Recurring Content" now works properly with timeblocks and different daily content. - Scripts: TVTools.modalPlayList now accepts additional parameters: TVTools.modalPlayList(, , , , ); x, y is the position (default = centered), w, h the size (default = size of the content). - Design scripts: New parameters for text boxes // , = ; permits to make boxes with rounded corners, the integer value being the radius. // BORDER = , permits to make outlined boxes, the first integer value being the thickness of the outline, the second the color in hexadecimal (AARRGGBB). 2.61.23 (07/12/2018) - Designs: implemented PNG animations. - Command "recurring Content" implemented. Extra parameters can be "offset=" to define an offset for the starting time of the recurrent media. 2.61.22 (30/11/2018) - Booking: better return values for request functions when there's no confirmation. 2.61.21 (29/11/2018) - Designs: Optimized recordset filtering. - Scripts: - New Command TVTools.filterBDD(String name) to refilter à recordset without reloading it. - Fixed TVTools.updateObject to also properly update containers. - Added confirmation function to rbFreeRoomIfNotConfirmed. - Philips tablets: Now always starting Philips Media Player before launching TVSlide to avoid the media player on top problem. 2.61.20 (23/11/2018) - Upgraded to ExoPlayer 2.9.1 - Now also sending room booking update commands to the main zone of a multizone. - Enabled DOM storage for TVWebView. 2.61.19 (21/11/2018) - New Command: LoadPlaylist.xml that permits to load content on the device without playing it. The first parameter is an unique name for the playlist. - Scripts: new function "modalPlaylist(name)" to play content in a modal dialog. - WebView: changed user agent to recent Chrome desktop version. - Synchro: when in a multizone, the info column in everyWhere will now display the synchro group of the main zone. - Booking: Fixed confirmation with booking V2. 2.61.18 (15/11/2018) - Designs: "Leclerc" prices (10th option in decimal format list of recordset fields) now displays two digits after the comma, or no comma at all if the price is an integer. - Design horizontal rollings: fixed the short reapparition of the first element when the rolling looped for pages with a duration of 0. 2.61.17 (13/11/2018) - Designs: added new spans for text boxes: applies a resizing ratio to the actual font. puts the font in superscript (exponent) mode. - Both #SCRIPT and #ALTBDDTEXT can now reformat database fields with scripts, including from multiple recordsets. - New .INI options in the System category: EnableAntiQuit will relaunch the application if it somehow loses focus because of a user action. This option can be enabled or disabled through the developer commands "enableantiquit" and "disableantiquit". 2.61.16 (12/11/2018) - Fix of double WebService connection. 2.61.15 (09/11/2018) - Fixed incompatibility problem of the additional booking V2 fields for booking V1. 2.61.14 (08/11/2018) - Restored normal treatment of file names for plans. - Textureplayer now gets video length from the file itself if possible, and no longer from the server. - Fixed TreeViews in touch mode. - Scripts: the function TVTools.contentUpdate() is deprecated. It's replaced by two functions: TVTools.updateObject(int objectID) updates a specific object on the actual page. Works for containers and animation objects like plans. TVTools.redrawContent(int objectID) redraws the content of a specific object without updating, for instance when a selection has changed. Works for animation objects. - Fixed a problem of item selection on start in interactive designs, where the container would be selected instead of the selected object. 2.61.13 (28/10/2018) - Quick fix for video durations in the textureplayer. 2.61.12 (26/10/2018) - You can now give an unique ID to all design elements which are scriptable, using a comment at the start of your script: // ID = This avoids having to rewrite scripts each time to add an element to the page. If you don't, the system falls back to the old mode (index of the item). - New plan parameters: infoX, infoY : coordinates of the room info box. lineWidth : width of the line drawn between the room info box and the room. circleRadius : radius of the circle drawn on the selected room. outlineWidth : width of the outline for the line and circle. lineColor : color of the line. outlineColor : color of the outline. hereX, hereY : coordinates of the location of the screen. - Plans: Now displays a line between the room info box and the room on the plan. Now support wayfinding between a specified location and the selected room. - Speedup for plan refreshing. 2.61.11 (18/10/2018) - Scripts: New function TVTools.setObjectBackgroundColor(int color), changes the background color of a design element (currently only text boxes). - Plan parameters: mode : not used yet. roomRecordset : number of the room recordset. eventRecordset : number of the event recordset. freeColor : color of a free room. occColor : color of an occupied room. freeSelColor : color of a free selected room. occSelColor : color of an occupied selected room. centerX, centerY : center of the visible area of the screen, room will be centered there on selection. 2.61.09 (15/10/2018) - Synchronization stabilized release. - New INI parameter "RootSetDate" to use the old method of synchronizing the time of the player to the server on rooted devices. 2.61.08 (10/10/2018) - Scripts: now waiting that a BDD update is finished. 2.61.07 (04/10/2018) - Temporarely removed the unregister device websocket command. 2.61.06 (02/10/2018) - A change of master player during synchronized playback will now work properly and restart the playlist. 2.61.05 (28/09/2018) - Synchronized playback greatly improved, it's now frame accurate on a local network. Over Internet, it depends on the connexion and latency variances. 2.61.02 (21/09/2018) - Navigation for plans. - Fixed RSA keys. 2.61.01 (17/09/2018) - Hid some critical stuff in the C/C++ library. - C++ image cropping is now multi threaded. - Room reservation confirmation is now stored server side. - Restarting TVSlide if, for some reason, it's no longer the topmost app. To quit, you now must use the regular way with the password. - Philips LED initialization no longer uses an alarm. 2.61.00 (12/09/2018) - Added a workaround for Android 4.4.4 on Philips devices not freeing bitmap memory in designs. - New script functions: - TVTools.getBDDFieldFromValue(String recordsetName, String selector, String field) returns the content of a BDD field where another field has a specific value. - TVTools.updateBDD(String recordsetName, boolean force) updates a BDD. If force is true, data will be forcefully downloaded again even if the cache delay hasn't expired. - TVTools.getBDDIndexFromValue(String recordsetName, String selector) returns the index of a BDD record where a field has a specific value. - TVTools.updateContainer(int objectID) updated a specific container. - TVTools.setInactivityTimer(int duration) defines the duration in seconds after the last touch activity after which the callback "onInactivity()" will be called on the design's page script. - Possibility to add parameters to design object scripts using comments. - // FOCUSABLE = false; means an interactive object can be clicked, will dispatch a click event but won't be focused on click. It avoids stealing focus from an existing element. - Made the "settings" button not focusable to avoit it interfering with interactive selectable elements. - Fixed an issue with #LOOP for ExoPlayer playlist, now using a LoopingMediaSource. Also fixed a crash when looping a playlist, and disabled playlists when in VLC mode so Aircast works again properly. - Added a C++ function to crop an image for the plans, resulting in increased performance and less memory consumption. 2.60.19 (30/08/2018) - Limited the heap usage in huge designs with a lot of pages and images. - New script command TVTools.setObjectVisibility(int objectID, boolean visible) allows to make a design object appear or disapear in real time, also making it unselectable. - Synchro should work again with the new permanent WebSocket with user registration. - Clicking "OK" in the EPG will play the selected channel. - Booking can now also register a storey instead of just a room. User Variable 3 should contain the storey number. So now, for booking: - Variable 0 = room name as in the calendar. - Variable 1 = displayed room name. - Variable 2 = room ID. - Variable 3 = storey ID. When working with storeys, the room variables will be automatically set by the system internally. - New script function boolean TVTools.roomBookingIsRoomFree(String start, String end, String roomName). Checks if room "roomName" is free between start and end (which can be equal). Format of start and end is "dd/MM/yyyy HH:mm". - New script callback "onPageCreated" which is called once all the elements of a design page have been displayed. 2.60.18 (24/08/2018) - New developer commands "disablewebsocket" and "enablewebsocket". - Displaying room name in "Media" column of Scheduler. - Booking refresh is more reactive and ignores cache delay. 2.60.17 (23/08/2018) - Booking V2 using webservice: TVTools.roomBookingInitInfo(roomRS, eventRS, confirmDelay, precision, mode) now has 3 mode: 0 is the old booking system. 1 is V2 with websocket connection. 2 is V2 with the webservice. 2.60.16 (22/08/2018) - Managing image transparency for interactive buttons in designs. - Booking no longer locally caches in websocket mode. - Work in progress on plans: - Anim boxes now accept a new URL: plan:(mode, freecolor, occcolor, freeselcolor, occselcolor) Mode is not used yet. Colors (format AARRGGBB): freecolor = free room. occcolor = occupied room. freeselcolor = free selected room. occselcolor = occupied selected room. - Design scripts: - OnClick now passes the pressed key as argument. - In a container, if you put "#" as active key, it will be replaced by the record index in the recordset. - The "getAlternativeImage(bddIndex)" callback for an image box permits to return the path to an alternative image for the item. - TVTools.getBDDField(recordset name, record index, field name) returns the string content of the field a recordset entry. - TVTools.getObjectFileName(page, object) returns the local file name of an image in a design page. - TVTools.setTouchReaction("highlight") permits to increase the luminosity of a selected image. - TVTools.setInteractiveDelay(milliseconds) sets the anti spam delay for inputs. - TVTools.updateContent() updates the content of all design page objects with an "updateContent" callback (for now, just plans). - TVTools.selectContainerElement(int objectID, String bddEntry) selects a container element corresponding to a BDD entry. E.g. TVTools.selectContainerElement(15, "id=36") will select the element corresponding to the first database entry where the field "id" equals "36". - Main page callback "onAnimClicked()" is called when an animation box is clicked. - The websocket connection is now trying to restore itself after a connection loss, and informs all the users of the reconnection. - Booking V2 using websocket is fully functional. 2.60.14 (01/08/2018) - The "Who am I" everyWhere command now displays the device ID on the four corners of the screen alternatively. - New script command "TVTools.getDeviceType()", returns "ANDROID" for Android devices. - New script command "TVTools.sendKeysToZone(String keys, int zone)" to send keys to a specific zone of a multizone. If there's no multizone, the keys will be sent to the main zone. - Sending "BACK" or "HOME" to a web browser object will make it go to the previous page or to its home page. - Secured the backToMainList() function to avoid it being called several times. - Enhanced back button usage to not spawn quit dialog so easily. - Disabled "Advanced Profiling" which can cause dialogs with text input to crash. - WebSocket disabled for this version. 2.60.13 (24/07/2018) - No longer formatting license number on Philips devices because of their bugged IME. 2.60.12 (24/07/2018) - Upgraded to ExoPlayer 2.8.2. - Upgraded to LibVLC 3.0.4. - Fixed an occurence when database images would not be kept when using the "TVTCloud:" keyword in databases. - Added the "visible password" flag to the text fields of the license configuration dialog to avoid Philips tablet's IME from auto-correcting. 2.60.11 (19/07/2018) - Fixed an issue where a container would loop even if the page length is zero, making the first record appear again briefly. 2.60.10 (10/07/2018) - Fixed a problem with video durations not adding up when ExoPlayer plays a playlist. - The #LOOP video parameter also works for playlists. - In device information, displays GPU renderer and vendor. 2.60.09 (09/07/2018) - Added cookie support to the RestrictedWeb command. - Recordsets: You can now get info from a recordset in another recordset. Format: #BDD(recordset=name of the second recordset,field=name of the field,content=searched field content)"field in the first recordset" - Designs: Fixed aspect ratio for the permanent animations. 2.60.08 (04/07/2018) - Fixed a potential problem in the EPG when a non existing channel is added. - New Android command RestrictedWeb, which permits to navigate the web but only on authorized URLs. Parameters are the starting URL, the inactrivity timeout after which it leaves the actual page, the list of authorized URLs separated by a comma and the message to display if the user tries to access a non authorized site. In the message, you can use #URL to display the refused URL. 2.60.07 (02/07/2018) - Changed the webService timeout from 5000ms to 10000ms. - Added set time zone permission for Android 8+. 2.60.06 (20/06/2018) - More LOG details for mustReloadBooking. 2.60.05 (19/06/2018) - Roombooking: roomBookingInitInfo has a new parameter, mode, which defines if it uses the old webservice based system or the new websocket based one. New syntax: TVTools.roomBookingInitInfo(room recordset number, event recordset number, confirmation delay, precision, mode); - Mode = 0 means webservice. - Mode = 1 means websocket. - Fixed TVTools.getDateDiff when you ask for hours. - inputTime has a new parameter, maximum, which sets the maximum duration possible in hours. If 0 or omitted, there's no limit. TVTools.inputTime(title, interval, variable, okText, cancelText, maximum) 2.60.04 (18/06/2018) - Consecutive videos are now grouped into playlists in Exoplayer to avoid blanks. - Implemented the permanent "up", "down", "left", "right" animations for design images and texts. - Better text button animations for touch panel mode. - TVTools.setInteractiveMode to set touch or remote mode is now global and no longer design specific. - Fixed program length in EPG. - Designs: new permanent effect "Pulse". 2.60.03 (29/05/2018) - TVTCloud: can now have arguments (ignored). - The player should no longer reboot in very specific circumstances when the network connexion is slow to establish. - Support for the "play only once" checkbox for schedule elements. - All Philips devices can now be rebooted and updated remotely (previously it was only tablets). - Upgraded to ExoPlayer 2.8.1. 2.60.02 (27/04/2018) - Fixed an occurence of when a video would not stop after its surface is destroyed, blocking the player e.g. after a .INI edition from everyWhere. 2.60.01 (25/04/2018) - New room booking script function TVTools.roomBookingSetReservationLimit(limit) Sets the length of events after which reservation is no longer required. - Fixed String to number conversions in recordsets when the decimal separator is a "," and not a ".". 2.60.00 (23/04/2018) - Room reservation and freeing is now locally cached, so those actions are instantaneous. - As a consequence of the above, you can no longer free a room too shortly after event creation, you have to wait for the server update to get the real event ID from the calendar system. - Scripting: TVToolsInputTime has a new parameter, maximum, which defines the maximum accepted duration. If not present, it behaves like before. - Philips tablets can now be rebooted via the everyWhere Manager. - TVSlide on Philips Tablets can now be updated via the everyWhere Manager. - TLS 1.1 and 1.2 for security are now supported on Philips tablets. 2.55.15 (21/02/2018) - New developer command "getplaylists" which lists all the current playlists in memory. - No longer writing in the prop file but using "setprop" to enable the real portrait mode. - Recordsets can now use user/password for the connection. 2.55.14 (19/02/2018) - XML Recordsets: Fixed case when the selected element is the root of the document. 2.55.13 (16/02/2018) - XML Recordsets: Fixed an issue when the field name is null and you need to get the tag (XMLV2). - Increased the maximum number of fields in recordsets. 2.55.12 (15/02/2018) - Now displaying SOC temperature in informations for MXQ devices. - Stopped debug overlay from sometimes opening twice. - Updated LibVLC to the 08/02/2018 version. - Fixed some weather translations. - Fixe a storage access problem that could occur on some devices. - Implemented design preview on Android devices. 2.55.11 (31/01/2018) - Supporting new permanent animations for design objects. - New script command TVTools.setPageVisibility(int page, boolean visibility) to make a page visible (true) or not (false). 2.55.10 (17/01/2018) - "getviews" developer command now starts at the root layout instead of baselayout. - Upgraded to ExoPlayer 2.6.1. - No longer restarting playlist at midnight. - Fixed cache cleanup problem when parts of the path can be lowercase or uppercase. - Supporting multi picture animations. 2.55.09 (09/01/2018) - Now keeping licence number in dialog if the registration failed. - Some fixes to the sync system. 2.55.08 (03/01/2018) - New developper command: install , to install APKs on a device. Example: install http://download.tecsoft.fr/TVSlide-versions/Latest/TVService v1.0.apk,com.wildcopper.tvservice/.TVService - Restoring connection on websocket in a separate thread. 2.55.07 (16/12/2017) - Fixed infinite recursion when socket commands do not reach destination for a longer time. 2.55.06 (15/12/2017) - Fixed websocket synchro freeze. 2.55.05 (14/12/2017) - Now displaying available external storage in quit dialog and everyWhere information request. - ADB is now available earlier after booting. - New developer command "sendcommand " to send a command via UDP to a device on the same network running the new TV background service. "reboot" reboots the device. "logcat" gets the logcat. "logfile" gets the log file if there's one. - Websocket Synchro now always disconnects when there's any kind of problem, and automatically reconnects at the next request. 2.55.04 (07/12/2017) - Fixed Webservice sendstate3 for when there's no "res" on older servers. 2.55.03 (07/12/2017) - Webservice: If there is no res, sending "null". - Websocket sync: Now just disconnecting on error instead of trying to reconnect immediately. 2.55.02 (06/12/2017) - Added Apache Commons Compress library for bzip2. - Fixed stats crashing in a multizone. 2.55.01 (05/12/2017) - Don't send stats if they aren't activated for the media. 2.55.00 (05/12/2017) - The webservice is now using a new function (sendState3) for sending the device state, with more flexibility. - Now sending diffusion time and date for medias marked for statistics. 2.54.63 (30/11/2017) - WebService hotfix. 2.54.62 (30/11/2017) - New Android command "Standby" which permits to delay the execution of a timeblock until an input string is received. A media or even group can be played during the waiting. - The timeout for Websocket sync now defaults to 5000. 2.54.61 (27/11/2017) - Images with a duration of 0 will now default to 10 seconds. - Implemented answer to websocket movement messages. 2.54.60 (24/11/2017) - Now dealing with backslashes in user variables. 2.54.59 (22/11/2017) - Synchro: Reconnecting to websocket when recieving error (3). 2.54.58 (21/11/2017) - Changed the "Reset License" to "Reset Player". It removes any TVSlide and TVLauncher data for a clean install on a new server. 2.54.57 (20/11/2017) - Implemented the automatic adjustement system via WebSocket for Irregular Walls. - Some fixes for the Tecbase (encoding and carriage returns). - Possibility to force encoding of bugged XML files using "ENCODING=" in the field where you can also enable XMLV2. - Added a "Reset License" button in the cloud change dialog. - Removed the vertical fading edges in the webview. 2.54.56 (10/11/2017) - New video rendering mode (only for TimeBlock videos for now), using MediaPlayer on a TextureView that can be rotated. - New .INI parameters: VideoRenderMode: if 0, uses the normal SurfaceView method, if 1, uses MediaPlayer on a TextureView. Rotation X: defines the 3D rotation of all the content along the X axis (horizontally parallel to the screen). Rotation Y: defines the 3D rotation of all the content along the Y axis (verticallly parallel to the screen). Rotation Z: defines the 3D rotation of all the content along the Z axis (perpendicular to the screen). Those work along with the existing VirtualResX, VirtualResY, OffsetX, OffsetY and OffsetZ parameters. - The debug view is now in the base FrameLayout of the application so it doen't rotate or stretch with the virtual resolution. 2.54.55 (08/11/2017) - Synchronization can now also be done on playlist element index by adding "ind=1" to the command's parameters. Reminder - command parameters are separated by a semicolon (";") and can be: ipw= for the url of the web service, defaults to "ws://"+server name+"/wsNew/ws.asxh". ind= for the element selection mode, default is by element name, if ind=1 it's by element index. - Fixed rare crash in designs for when page index changes at the same time objects are freed. 2.54.54 (31/10/2017) - Fixed possible crash in the application's "onDestroy" routine which may attempt to close a view that is already closing. - Content synchronization between devices has been rewritten with the master/slave system for better unexpected event management. - Displays the synchronization group and role (master/slave) in the info column of everyWhere Manager. 2.54.53 (25/10/2017) - No longer displaying the recordset loading screen after publication if the schedule level contains an Aircast command in any of its lists (main and groups). 2.54.52 (24/10/2017) - Designs/recordsets: New string command #SCHEDULELEVEL, which is replaced with the actual schedule level. - Designs: Also ignoring "NOTFOUND" fonts during string parsing so that it uses fonts from the .ZIP instead. - Aircast: new variables AIRCAST_ACTUAL_COMMENT and AIRCAST_NEXT_COMMENT display the comment (description) of the actual or next video. 2.54.51 (24/10/2017) - Skipping download of boxes with illegal file names (empty or gibberish) in designs. - EPG display: Channels are now also sorted by their numbers in the design "EPG:" special animation box. - Now ignoring design font files containing "NOTFOUND". - Aircast: "Before End" page now really using the second design page. 2.54.50 (24/10/2017) - Aircast mode now supports playlist randomizing. 2.54.49 (23/10/2017) - Message system: Now only displays unread messages. - Now uninstalling "com.droidlogic.FileBrowser" on MXQ devices to avoid the popup when inserting an external storage. - New Android command: commands/Android/Aircast Android The media is a design with two pages, the first for the display of the actual title, the second for the display of the next title. The following variables will be automatically filled: AIRCAST_ACTUAL_TITLE with the title of the actual (played) element. AIRCAST_NEXT_TITLE with the title of the element that will be played next. IMPORTANT: for Aircast to work, the player has to use LibVLC for now. 2.54.48 (13/10/2017) - New LibVLC build, 06.10.2017 - Managing command 103 to change channels from the Dashboard. - Now using the device name as room number for the gallery if the user variable 2 is not defined. - IPTV (MultiStream) sorting channels according to number. 2.54.47 (06/10/2017) - Some fixes to the automatic server configuration: Removing backslashes from schedule levels. Disabled the auto corrector of the Android keyboard for the License dialog. 2.54.46 (02/10/2017) - Changed XML reading routines for better management of exotic charsets. - UTF-16 files are managed as UTF-8 files. - Supporting automatic server configuration by entering a license code. 2.54.45 (27/09/2017) - Designs now support text fields sent as an image for better compatibility with Windows. - Upgraded to ExoPlayer 2.5.3. - The APK will now install and run on x86 based devices too and contains both versions of LibVLC. - Now sending the first three user variables with findDevice after the freeSpace. - Changed the icon to the new TVTools logo. - Ignoring last /par (carriage return) in text boxes in order to fix vertical centering. 2.54.44 (21/09/2017) - Killing "com.amlogic.SubTitleService" on non-MXQ devices. 2.54.43 (20/09/2017) - No longer recycling bitmaps in imageviews, which can lead to crashes. 2.54.42 (19/09/2017) - Supporting multiple hexadecimal values when unescaping HTML (e.g. ꂌ). - Using font info in designs, if there's none it falls back to the fonts.zip file. - Using the video player from .INI for IPTV on devices older than the MXQ (M8 and M8S). 2.54.41 (18/09/2017) - Fixed a crash in the dissolve transition when the image is invalid. - Audio files dropped directly in the schedule level are now played by the video player. - Disabled errors in the log for when "adb_keys.txt" and "fonts_infos" are not present on the server. - Prefs version 1.15 with new parameters: "MediaDisplayMode", for the display mode of videos on MXQ devices. Defaults to 1. "HttpInputFrequency" is the frequency at which the HttpInput command scans the url for changes, in milliseconds. Defaults to 2500. 2.54.40 (14/09/2017) - Fixed crash when trying to use an unimplemented container type. - Now supporting directory recordsets. 2.54.39 (13/09/2017) - No longer forcing default input and output formats in "RSS" mode recordsets. - Enhanced reliability of time offset setting on slow networks when the automatic time is activated on the player. 2.54.38 (07/09/2017) - Fixed font size in designs for devices with font scaling different from density. - Now remembering selection in directories in the gallery. - New "fonts_infos.xml" file on the server to convert incompatible fonts. - Horizontal scrolling containers now also "finish", permitting to move to the next page if duration is 0. 2.54.37 (05/09/2017) - Time adjustement of the player now only uses the offset, the rooted method is disabled. 2.54.36 (01/09/2017) - The audio visualizer is now listening to the mixer instead of the media player to avoid a possible crash when it closes. - Fixed text size in designs for different screen densities. 2.54.35 (31/08/2017) - EPG navigation has been improved. - EPG now has two construction pages, one for long programs, one for short programs. - New custom URL animation box: "gallery:" which displays an image/video/audio gallery. The gallery is built specifically to be used with a remote control and for now doesn't work with touch. The room or customer name must be in the user variable number 2. Parameters are: "mediapage" is the construction page for a media icon. "folderpage" is the construction page for a folder. "emptypage" is the construction page for an empty folder. The gallery sets the variables "ACTUALDIRECTORY" and "ACTUALELEMENT" when the user navigates the gallery. - Now always uses LibVLC for IPTV. - Automatically authorizes ADB if a key file is on server in .TVSlide-Config/adb_keys.txt - New developer commands: "getadbkeys" will return the adb keys from a device, in order to put them in the adb_keys.txt file on the server. - ADB should be enabled automatically on rooted devices. - OverlayMedia now also accepts groups. - Upgraded to ExoPlayer 2.5.1. - You can now use either TVTCloud: or tvtcloud: to add the server base URL to a string. - New script command: TVTools.sendCommandToDevice(String deviceID, String message) Sends a message (key sequence) to a device using the webservice. - Made watchdog more agressive with rebooting so it doesn't get stuck in stopping tasks and clearing. 2.54.34 (07/08/2017) - Fixed the progress dialog on the new MXQ devices. 2.54.33 (03/08/2017) - MultiStream no longer displays name at channel change outside of IPTV mode. 2.54.32 (01/08/2017) - New custom URL animation box: "epg:", which display a program guide when IPTV is activated in the schedule level. - Massive speed up of TVString parsing by caching the language in memory. - Initializing time is now two times shorter on MXQ devices. - Fixed problem when there's no remote EPG file. 2.54.31 (04/07/2017) - You can now exit the TV overlay with the back/exit key. - Messages now work on top on all medias including MultiStream (IPTV). - New variables usable in designs are defined when using IPTV with the PMS: #VAR("CUSTOMERFIRSTNAME") - Customer's first name. #VAR("CUSTOMERLASTNAME") - Customer's last (family) name. #VAR("CUSTOMERPREFIX") - Prefix to customer name, can be "Mr", "Mme" or "Mr et Mme". #VAR("CUSTOMERARRIVALDATE") - Arrival date #VAR("CUSTOMERDEPARTUREDATE") - Departure date 2.54.30 (30/06/2017) - The screen on/off commands in the schedule level "diffs/screen control" options are now working with the TimeBlock system. 2.54.29 (29/06/2017) - Fixed the GMT vs Local Timezone date problem on devices with the old date shell command (like M8S). 2.54.28 (28/06/2017) - Now ignoring illegal file names when moving temp files to final files when the playlist loads. 2.54.27 (28/06/2017) - quitApplication now starts a new Thread, stopping it from locking the service thread and losing contact with the player. - New script command "resetSelection", to reset the selected item on a design page. - Fixed vertical array container coordinates which are inverted. - Fixed horizontal and vertical containers displaying one element too much. 2.54.26 (26/06/2017) - Updated LibVLC to latest GIT version. - New INI parameter: "AnimSpeed", a multiplier for design animations. - Now using the advanced recordset settings for cache update delai and expiration. 2.54.25 (20/06/2017) - Doesn't play a video if the filename or url are illegal. 2.54.24 (14/06/2017) - Translating VLC track language information in the actual TVTools language. - Now correctly saving and restoring audio and subtitle languages between two sessions. - Ability to dynamically change a bitmap in a design. - everyWhere informations now also display the list of script variables. - Fixed VLC video playback, now removing the subtitle overlay when stopping. 2.54.23 (09/06/2017) - LibVLC TV Playback is now fully functional, with the MXQ tweak for better picture and working subtitles. - Script function inputList has a new parameter, immediate. If "true", it makes the selection validate immediately on click. New syntax: TVTools.inputList(String label, String sOptions, final String variable, String okText, String cancelText, String immediate) - Now saving Channel Number, Audio and Subtitle languages between two TV sessions. 2.54.22 (06/06/2017) - Implemented LibVLC for TV Playback. 2.54.21 (31/05/2017) - Upgraded to Exoplayer 2.4.1. - EPG now uses daily files. - Overlay now disapears. - Designs: Fixed a lock when the garbage collector was invoked within a synchronized method. - Weather texts now have a French version. - Now uninstalls all chinese bloatware on MXQ devices on first launch. Can be retriggered by deleting the "MXQClean" line in the .ini. - Fixed problem due to daylight saving when first initializing player time. 2.54.20 (24/05/2017) - Intercepted MENU so that it doesn't make the application completely lose focus. - New script function: displayProgressDialog(0) displays a waiting symbol until the next page is loaded. 2.54.19 (24/05/2017) - Fixed inverted width/height for array container elements. - New IPTV related global variables: IPTVAUDIOLANGUAGE : actual audio language. IPTVSUBTITLELANGUAGE : actual subtitle language. IPTVCHANNEL : actual channel number and name. IPTVLOGO : actual channel logo file. - Recordsets: new filter mode for week days. - Overlay with channel info for IPTV. - Not restarting player on 079 messages if IPTV is not activated. - Fixed a problem with horizontal and vertical containers with multiple pages and a single element per page. - IPTV Know issue: remaning focus problem when enabling/disabling the channel info overlay. 2.54.18 (15/05/2017) - EveryWhere device informations now contain a list of the last connection errors. - You can now modify the cloud server credentials directly on the player from a button in the "quit" menu. 2.54.17 (11/05/2017) - Fixed special case where elementview could be "null" when trying to close a progress dialog. 2.54.16 (10/05/2017) - Also checking "/temp/" to check if a design is pregenerated. This should fix problems when the user names his designs ending with "_android". - Now no longer loading designs and pages which have condition dates in the past. - Fixed page/design condition dates that are in seconds in TVTools files and not miliseconds like Android. 2.54.15 - Removed system Locale change for the damned Cahors firmware. 2.54.14 (05/05/2017) - Removed confusing error message in logcat when a bitmap file doesn't exist locally yet. - Removed leading "la" from "fêtes.txt". - Made it possible to play multiple successive specific playlists in a zone. 2.54.13 (04/05/2017) - No longer adding "?" to URL for foreign sites (recordsets). 2.54.12 (04/05/2017) - Upgraded to Exoplayer 2.4.0. - Fixed page condition checks. 2.54.11 (27/04/2017) - New script functions: TVTools.getActualPage() returns the actual played page of the design. TVTools.getTotalPages() returns the number of visible pages in the design, in play order. - New URL animation type: progressbar:(color=AARRGGBB,backcolor=AARRGGBB,gradient=x.x,actual=xx,total=xx,ignore=xx) Displays a progress bar. arguments: color is the color of the progression bar, in ARGB hexadecimal format. backcolor is the background color. gradient is the amount of gradient in the bars, from 0.0 to 1.0 actual is the actual value, if not present it takes the number of the actual page of the design. total is the total number, if not present it uses the total number of pages in the design. ignore is the number of pages of the design to ignore, it's substracted from total when using the design pages. - All scripts that don't have a return value are executed in a new thread. 2.54.10 (26/04/2017) - mustReloadBooking message management changed because it can now concern several different booking schedules. - Designs: Now managing design and page day, date and time conditions. - Room booking precision affects time extension too. 2.54.09 (18/04/2017) - Now also checking file content for design .xml files. 2.54.08 (11/04/2017) - Fixed date format for sending polls to be compatible with the windows serializer. 2.54.07 (11/04/2017) - New Design first page function: onDesignStart is called at the start of a design playback. - Poll answers are now locally cached and sent when the server is available, so polls don't get lost if the server is down. - New Poll functions: * TVTools.sendStats(String guid, int numQuestion, int numAnswer, String comment) adds one question stats to the disc cache. * TVTools.sendParams(String guid, String param, String flush) adds one parameter to the memory cache. If flush is "true", also writes to disc, to avoid writing several times in a row if you want to add several parameters. * TVTools.sendPoll(String guid) attempts to send the cached poll to the server. If the server acknowledges reception, the cache is reinitialized (erased), otherwise, it is kept until a sendPoll is finally successful. - Poll scripts have been updated. 2.54.06 (10/04/2017) - Fixing IPTV directory from flag.txt using Remote Root. - Fixed a problem in the design page management where it could end in a loop if you had invisible pages. 2.54.05 (04/04/2017) - Added 3 and 4 Treeview modes which make parent nodes unselectable. - Implemented Treeview with RSS links. - Horizontal interactive containers can now be navigated with the left/right keys. - If keys are unused for a tree view, they will be sent to the interactive container. - Added two new database related text field tags: #BDDREC for the current record, and #BDDSIZE for the total number of records (after filtering). - Roombooking: roomBookingInitInfo has a new parameter, precision, which defines how times are rounded. E.g. a precision of 15 will mean times are all rounded to 15 minutes. New syntax: TVTools.roomBookingInitInfo(room recordset number, event recordset number, confirmation delay, precision); New roomBookinGetPrecision function returns the precision. 2.54.04 (29/03/2017) - New date format for the poll report xml. - Made it so that playNextPage isn't called on the webservice thread when a room booking update event arrives. 2.54.03 (27/03/2017) - Implemented write caching for recordsets. - Now forcing xml cache update if getting a room booking update message. 2.54.02 (23/03/2017) - Fixed event extension free room detection for room booking. - No longer closing all dialogs on page update for room booking. - New .INI parameter: "cachePollStats" : when set to 1, caches poll stats in the "poll.xml" file at the root of the TVSlide directory on the device. 2.54.01 (17/03/2017) - Restored normal date synchronization for rooted devices. 2.54.00 (17/03/2017) - On non rooted device, this version is no longer dependant on the system clock and will take its time offset from the TVTools server. This way, the devices will use the correct time even in closed networks which don't have access to the Internet and the NTP server. It is recommended to DISABLE the automatic NTP synchronization in the Android time settings on such devices. - Happy Saint Patrick day to all! Slainte! 2.53.13 (15/03/2017) - New page javascript function on the first page of a design: onDesignInit, which is called after everything is loaded but before any initialization is done for the design. - New script functions for polls, which has to by put in "onDesignInit" of the first page. setPollRestartDelay(x) sets the delay in seconds after which a poll returns to its first page without user input. The default value is 180 seconds (3 minutes). - All modal dialogs opened by a design will be closed on page change. 2.53.12 (14/03/2017) - Fixed crash when an invalid default page is specified for a container. - Restoring fullscreen when leaving a text input dialog. - Great improvement to large XML loading times. - Now accepting GMT dates in recordsets 2.53.11 (10/03/2017) - Removed the non-root reboot as it can block on some devices. 2.53.10 (10/03/2017) - Fix crash in DB sorting. 2.53.09 (10/03/2017) - Polls: Now accepting up to 10 answers in text based polls. Now accepting user comments in polls. These changes required major changes to the poll scripts. - Synching file system even on non rooted devices after major storage operations. - If a device is not rooted, still trying to execute the "reboot" command. 2.53.08 (08/03/2017) - Fixed recordsets when first record isn't 0. I should have guessed that Philippe stored that data in a string named tempFile, I mean, it's a logical name for the first record of a database, isn't it ? 2.53.07 (08/03/2017) - Changed method to check root. 2.53.06 (08/03/2017) - Now displays the default NTP server in the informations asked through everyWhere. - Fixed cacheUpdateDelay which was in milliseconds. Now it's really in seconds. - Fixed crash in comparison when a date is invalid. - Added new date output formats for recordsets. 2.53.05 (02/03/2017) - TreeViews now correctly select their first element on start. - Improvements to the input pipeline. - TreeViews now automatically display the selection, removing the need to press "OK". 2.53.04 (01/03/2017) - Added a test to initialize the Philips LED system only if the socket doesn't answer, to avoid infinite loops when the application is restarted. - Room booking: Now using start date+time instead of id to validate events. Adding a flash reservation now automatically confirms it. 2.53.03 (28/02/2017) - Removed path for all root commands. - Room Booking: Added one optional parameter to function TVTools.roomBookingInitInfo(room record set, event record set, confirmation delay). If confirmation delays is greater than zero, it's the maximum delay for the booking to be confirmed before it's automatiacally canceled. - New room booking javascript functions: TVTools.roomBookingConfirmEvent() confirms the actual event. TVTools.isConfirmed() returns if the actual event has been confirmed. - New javascript function for design objects: isVisible(), which returns "true" or "false" whether the object should be visible or not. - Fixed problem when several script functions were called at once. 2.53.02 (24/02/2017) - More improvement to the page script calling. - Fixed date/time synchronization with server when on Android 6 or later. - Modified the way su commands are called. - Fixed logcat web service command, now the returned text has carriage returns. 2.53.01 (21/02/2017) - More improvements to the communications between the script engine and the designs. - Fixed freezing during design page change. 2.53.00 (21/02/2017) - Now connecting with NTFS security on secure servers, TLS 1.2 on Android 5 or later, otherwise TLS 1.0. - All logins and passwords are now encrypted with AES 256 in the .INI file. - Avoiding redundant calling of design player's playNextPage and calling a page script while the page is changing/reloading. 2.52.16 (20/02/2017) - roomBookingAddTime(time) now checks if the room is available during the additional period. The function can return: "NO_EVENT": there's no actual event to extend. "RB_NOT_INIT": room booking hasn't been initialized. "ROOM_OCCUPIED": the room isn't free during the requested period. "true": everything is ok. 2.52.15 (17/02/2017) - Compiling with API 24 (Android 7 Nougat) SDK. - Changed fonts downloading to evade the Android 4.4 font system locking the directory problem. - New room booking Javascript function: roomBookingAddTime(time). Adds a specific amount of time to the actual event. The format for time is "HH:mm" (24 hour mode hours:minutes). - Tweaked the TVSlide startup on Philips 10BDL3051T tablets so that it lets their mediaplayer start to enable the LED socket server. 2.52.14 (15/02/2017) - The debugview and information in everyWhere now clearly warn you if a device is not rooted. - Disabled subtitles again because of the stupid bug of the M8S. 2.52.13 (14/02/2017) - The "dummy" "¤" character in the active key field of interactivity of design objects is now ignored and just permits to add scripts without interactivity. - The scripts to grey out objects in the message info bar are now working. 2.52.12 (13/02/2017) - Changed the way the script engine works, there's now one instance per design. - Implemented the info bar for messages. - New script function for button: getButtonType() returns the button type for message designs. Format of the returned string is "TYPE,PAGE,ID", TYPE is one of the values below and PAGE and ID are the page/id of the greyed out version of the button. "MSG_PREV" if the button is to display the previous message. "MSG_NEXT" if the button is to display the next message. "MSG_INFO" if it's the info button for messages with "big" versions. 2.52.11 (13/02/2017) - Improvements to the message system: Messages read are now marked as such server side. - New command: Android/SetMessageInfoBarDesign Permits to set the design for the message info bar. - Interactive objects now restore their old animation after the 'pressed' animation. 2.52.10 (03/02/2017) - Updated to Exoplayer 2.2.0. - Basic message list management. - The number of unread messages can be displayed in a design's text box using "#UNREADMESSAGES". - Answer commands #079 (Channel change) and #080 (IPTV reset). - Can now view all unread messages, OK = continue, EXIT/BACK = exit messages. 2.52.09 (27/01/2017) - Messages are now modal and intercept all remote control events. - The text types in the dashboard is now injected into the message design. - Messages now have basic interactivity, you can close them with the "back/exit" key of the remote control. - The #TITLE or #TITRE and #TEXT or #TEXTE text box commands will be replaced by the title and the text of the message. 2.52.08 (26/01/2017) - Fixed default page for containers lasting forever even if it has a duration. - Reverted the management of "onPause" to prevent the application going in background to stop it. 2.52.07 (25/01/2017) - Fixed the problem when a single design was on a timeline and looped. 2.52.06 (23/01/2017) - Two new developer/maintenance commands ("Commande Patrick"): "SendKeys " permits to send a series of key as if they were sent from a keyboard, remote control or other input devices. "ListMedias" lists all medias present on the device. - Now sending IP and free storage space with findDevice. 2.52.05 (20/01/2017) - Disabled subtitles in MultiStream to stop the damned M8S from crashing. 2.52.04 (20/01/2017) - Now sending the mac address of the player to the server when calling findDevice. - 250ms anti spam system for remote control input. - 750ms anti spam for channel changing in MultiStream. - Text and image boxes without active key no longer have the button animation. 2.52.03 (12/01/2017) - Added a button down animation when interactive elements are touched or clicked in a design. - New .INI parameters: InteractiveDelay : Anti spam system for touch/click, defaults to 2500 milliseconds. ButtonAnimRatio - Amplitude of the "button down" animation, defaults to 85, meaning the button will be reduced to 85% of its size when clicked. 2.52.02 (11/01/2017) - New .INI entries for virtual resolution and display offset: VirtualResX and VirtualResY is the virtual resolution for the content. OffsetX and OffsetY are the X and Y offsets of the content. - Upgraded to ExoPlayer 2.1.1. - Implemented LibVLC as a new option for video playback. It can be enable in the .INI with "EnableLibVLC = 1". Default is disabled for now. - New command "SynchronizeDevices" to synchronize playback on several players through WebSocket. Param 0 is the synchro group name Param 1 is the number of players (not used) Param 2 is the synchronization timeout in milliseconds. Param 3 is the url of the WebSocket server, syntax: "ipw=
". - Changed IPTV MultiStream to fit the new server functionalities. - Moved MultiStream channel display when zapping to the left. - Added 750ms antispam delay for TV zapping. 2.52.01 (13/12/2016) - HTTP resume is now enabled by default. - Activating true portrait mode on MXQ Plus devices (requires a reboot). - Fixed Designs Treeview container generation when Index and Level fields aren't defined as integer in the recordset. 2.52.00 (05/12/2016) - New javascript function TVTools.initVar("variable name", "value"); It does the same than setVar, except that it does NOT call the variableChanged callback in the page script. - Fixed a special case in the room booking free range detection. - New javascript function TVTools.setLedColor("type", "color1", "color2", "blink rate"); Enables LED color changing for the devices which are equipped with such a feature. "type" is the type of device. For now, only "PHILIPS" is supported. "color1" is the desired color, in hexadecimal AARRGGBB format. If AA is 00, the leds are turned off. "color2" is the second color when blinking is desired. "blink rate" is the rate in milliseconds at which the two colors blink. If "0", blinking is disabled. - Javascript functions "inputTime" and "inputDuration" have been merged into a single function: TVTools.inputTime("title","interval", "variable", "okText", "cancelText"); 2.51.11 - New script function TVTools.question("title","message","variable","okText","cancelText"); Opens a modal question requester. It will put "OK" or "CANCEL" in "variable" depending on the user input. - IPTV is using Kodi again. 2.51.10 - Added "gradient" option to the timeline, to create a color gradient rather than plain colors. Values are decimal, from 0.0 to 1.0. - New script function TVTools.getDateDiff("date1","date2","format", "mode") returns the difference between two dates. mode can be "hours", "minutes" or "seconds". - New script functions for room booking: * TVTools.roomBookingInitInfo("room recordset", "event recordset"); Initializes the room booking system, parameters are two strings with the numbers of the room and event recordsets. * TVTools.roomBookingAddEvent("start", "end", "details"); Adds a room booking reservation to the actual room between start and end dates (format: "dd/MM/yyyy HH:mm") providing details of the event. * TVTools.roomBookingRoomAddEvent("start", "end", "roomname", "details"); Adds a room booking reservation to the specified room between start and end dates (format: "dd/MM/yyyy HH:mm") providing details of the event. * TVTools.roomBookingSelectNearbyFreeRoom("title", "start", "end", "variable", "okText", "cancelText") Will search among the nearby rooms those which are free in the start to end timeframe and then permit the user to select one and book it. * TVTools.roomBookingEndEvent() Ends the current event of the current room. - New script function TVTools.inputDuration("interval", "variable", "okText", "cancelText"); Permits the simple input of a duration. "interval" is the minimum time interval. E.g. if interval is "15", the time selector will allow 00:00, 00:15, 00:30, 00:45, 01:00, 01:15, etc... "variable" is the name of the variable in which to put the result. "okText" is the text of the OK button of the selector. "cancelText" is the text of the CANCEL button of the selector. - New callback javascript function variableChanged(variable, value) in the page script. This callback is called when a variable is changed in a script. This happens e.g. when any kind of input is finished. - New script function TVTools.blockingAlert("Title", "Message", "Seconds"); Displays a modal alert box with title and message during a specified amount of seconds. - New script function TVTools.setInteractiveMode("remote/touch"); Puts the device into remote control or just touch mode. In touch mode, there's no currently selected highlighted item. 2.51.09 - You can now use scripts in text areas of designs with the #SCRIPT command. Syntax : #SCRIPT("function_name("arg1", "arg2")") The javascript function must be in the page's properties interactive tab specific commands area and must return a String. 2.51.08 - Room booking beta version. - Room booking timeline object in URL animations: timeline:(mode=x,recordset=x,backcolor=AARRGGBB,futurecolor=AARRGGBB,pastcolor=AARRGGBB,nowcolor=AARRGGBB,starttime=HH:mm,endtime=HH:mm) mode is 0 for now, reserved for eventual future different timelines. recordset is the number of the recordset containing the TVTools Booking data. backcolor is the background color of the timeline in hexadecimal AARRGGBB format (alpha, red, green, blue). futurecolor is the color of future events. pastcolor is the color of past events. nowcolor is the color of the bar showing the current time. nowbarwidth is the width of the bar marking now (default: 5). starttime is the start time of the timeline. endtime is the end time of the timeline. 2.51.07 - Fixed recordset filtering so that filters 3 and 4 also work. - Made type 0 date format in recordsets more permissive by automatically removing any alphabetic characters. 2.51.06 - Fixed container default page management for "special" designs. - Changed some errors to warnings to avoid confusing the user. - Implemented the "center vertically" option for text boxes in containers. 2.51.05 - Support of the "whoAmI" command to identify players. 2.51.04 - Added device and server informations to the quit dialog. - Now using a FrameLayout as base layout, which removes size restrictions on children, modified to emulate position values of a RelativeLayout. - DynamicWeb can now be rotated with 4 (90° left) and 8 (90° right) in the "Interactive" field. - Basic support for "IPTV" messages enabled. 2.51.03 - Changed method to retrieve logcat, no longer using a file. - Fixed display of images starting with "C:/tvtools". 2.51.02 - Fixed "RotateSceen = 2" mode (reverse landscape). - Added more securisation to the .ini save routines. - Update to ExoPlayer 2.0.4. - Implemented sending mac address with the findDevice web service connexion, but it's disabled for now because of backwards compatibility problems. - Implemented "array" (mode 5 and 6) containers. 2.51.01 - Added "RotateScreen" to .ini, which rotates the display without changing orientation. Defaults to 0 (normal orientation). 2.51.00 - Implemented download resume mode, activated by the .ini parameter "HttpResume". If 1, downloads will attempt to resume if failed. Defaults to 0 - Fixed a flaw in the download routine that could result in files being incompletely downloaded. 2.50.82 - Added "HttpTimeOut" parameter to .ini, which is the timeout of HTTP connections, in milliseconds. It defaults to 5000 (5s). - Upgraded to Exoplayer 2.0.3. - Enabled language change via the everyWhere Manager. - Added the "clock:" command in the ignored files of Design download. - Synchronized .ini storage to avoid two threads writing at the same time. 2.50.81 - Added "StreamExoplayer" parameter in the .INI. 1 means the player will also use ExoPlayer for network video flux. - Fixed the designs trying to download even http links to video streams, generating a false download error. 2.50.80 - More fixes to the fonts system. 2.50.79 - Upgraded to Exoplayer 2.0.2. - Fixed weather because of the time format change. - Fixed empty recordset detection. - Added more special cases for font parsing. 2.50.78 - Upgraded to Exoplayer 2.0.1. - Javascript: added time, date and list selectors for input fields, so you now have: * TVTools.inputText(title, message, variable) for text/numbers. * TVTools.inputTime(format, mode, variable) for times. If mode is "24", works in 24 hours mode, otherwise it's 12 hours with am/pm. * TVTools.inputDate(format, variable) for dates. * TVTools.inputList(title, options, variable) for lists. Options are separated by a | (e.g.: "One|Two|Three|Four"). - Javascript: added "onChange" script function which is called when a text field changes. - Javascript: added some date/time functions: * TVTools.getCurrentDate(format) to get the current date. * TVTools.incrementDateMinutes(date, format, offset, precision). Precision is the minutes step of the value returned, for instance if precision = 5, at 11:43 it will return 11:45. * TVTools.compareDates(date1, format1, date2, format2) compares two dates and returns "equal", "before" or "after". - Javascript: Added a calendar event addition function. * TVTools.addCalendarEvent(room, name, date, start, end, event description, date format, time format, account name, agenda name, timezone). The function returns "true" if it succeeded. For this to work, the Google Agenda needs to be installed and the calendar account (Google or Exchange) must be added to the device. 2.50.77 - Now manages multi-page vertical disposition containers properly. - Fixed directory creation for IPTV configuration files. - Elements can now have a "Check Content" flag to not just compare file sizes but also file content before downloading. - Upgraded to Exoplayer 2.0.0. 2.50.76 - You can now create custom splashscreens for each primary schedule sublevel. The launcher splashscreen remains unique. - Some video player (exo and media) fixes. 2.50.75 - Fixed URL encoding so that spaces and all special characters are properly encoded. 2.50.74 - Fixed XML/RSS so that tags work when it's not a "XMLV2" type file. 2.50.73 - If the HTML server doesn't support the "HEAD" request, it will ignore file size and always download. - Enhanced management of "XMLV2" type XML files, and added support for "field/tag" notation in #BDD. - Fixed missing date output format. - Removed the error for not finding the custom splash screen file on the server. 2.50.72 - Fixed container definition files loading. - Upgraded to Exoplayer 1.5.10. - Went back to API 19 (KitKat) Target SDK. - No longer adding ? + random string to URL if there's already a ? in it. - Fixed starting and number of records in a recordset. 2.50.71 - Added "Interactive" argument to .ini, to turn on immersive mode for tablets. 2.50.70 - Added "DisableExoplayer" to .ini to be able to revert to the standard mediaplayer. - Fixed "InitTime" doubling when prefs are rewritten. 2.50.69 - Added logcat to everyWhere player Logfiles menu entry. - The .INI file now contains all possible entries, including those with default values. 2.50.68 - Remove IMMERSIVE mode for full screen to avoid the confirmation message. 2.50.67: - Unassigning surface from ExoPlayer after stopping the video. 2.50.66: - Using KODI for IPTV. 2.50.65: - Back to ExoPlayer 1.5.9. - Added security system if an element lasts longer than it's supposed duration. 2.50.64: - Killing "com.amlogic.SubTitleService" when you start IPTV. - Managing the "don't play if recordset empty" checkbox for designs. - MeteoST displays day time (from sunrise to sunset). 2.50.63: - Added new weather parameters: UV, wind speed and direction, rain chance and humidity. - Weather +0 is now the actual weather. - Reactivated ExoPlayer. - Reverted to ExoPlayer 1.5.6. 2.50.62 - Disabled ExoPlayer. 2.50.61 - New webservice registration system (findDevice) to respect schedule levels at install and when offline. - Big improvement in XML loading times. - Weather now works natively in containers (special mode designs). - Added language info to debug. - Updated to ExoPlayer 1.5.9. 2.50.60 - Animation can now be in recordsets. 2.50.59 - Fixed Timezone display in debug window. - Full reset via everyWhere command (RAZ) now also erases the watchdog log. - Debugview: Displaying more info about ExoPlayer. - Fixed recordset file names with user variables. - Improved speed of container pages génération. 2.50.58 - Fixed stupid Tecbase carriage return problem. 2.50.57 - Updated to ExoPlayer 1.5.8. - DynamicWeb Autoclosedelay now stops the page. - Fixed language for images - base languages are now only EN, FR and DE. - Fixed loading to ignore qrcode: and appicon:. 2.50.56 - IPTV is now only blocking updates while watching TV. - Fixed timeblock management. 2.50.55 - Added a focus request for the IPTV channel grid overlay for Android 5+. - Implementation of the multiple choice question system in designs. - Javascript fix: TVTools.getVar now also returns user variables. 2.50.54 - Fixed a crash with the back key in IPRADIO mode. - Some tweaks in databases for weather, but not finished yet. 2.50.53 - Menu key is completely disabled in IPTV/RADIO mode. - The Back key can now be used to exit the channel grid overlay. - You now need to press "Back" 5 times, each being less than one second from the previous, to get the "Password to quit" dialog box. 2.50.52 - IPTV channel grid overlay has a gray almost opaque background again. - Fixed management of color of selectable text in interactive designs. 2.50.51 - Fixed language page so it leaves even if selected language is the same. - Fixed channel overlay management in MultiStream. - Interface should be more responsive since I'm reacting on "onKeyDown" now instead of "onKeyUp". 2.50.50 - Added support for command "StartIPRadio". 2.50.49 - Changed the way timeblocks are managed so that it will still play if the player date is wrong. 2.50.48 - Fixed TV channel grid crash on Android 4.4. 2.50.46 - Preloading databases during startup to enhance response time. 2.50.45 - Fixed crashing when there's no channel logo. 2.50.44 - TV Channel Grid overlay improvements. - Restored usage of ExoPlayer for video URI starting with "file://" 2.50.43 - Reinforced security for invalid .ini files: - You can no longer change the device name from the .ini editor in everyWhere Manager. - Default volume is now 100 and can be set with "DefaultVolume" in the .ini - Database conditional starts no longer blocks on the last valid element if the playlist has only two elements. 2.50.42 - Fixed XML filtering so that it accepts files with weird characters but still retains several essential symbols. - Fixed file naming problems with video streams. - Channel grid in MultiStream (work in progress). 2.50.41 - Manages the aspect ratio parameter for images in designs. - Fixed crashing bug in XML string cleaner if the string is of length 1. 2.50.40 - Changed the way Keyboard Input Command works, it will play the playlist ONCE now and then return to the main list. - WebViews are no longer forced to software layer. 2.50.39 - Language support for pictures in designs. - Now intercepting all configuration changes to avoid the threads being launched twice. 2.50.38 - Play designs even if all recordsets are empty. 2.50.37 - Fixed possible crash during channel change, when reaching the end of the list. - Fixed the case when a design contains recordsets which are never used and therefore the design was never played. 2.50.36 - Fixed IPTV and Multistream system download. - Now properly uses "channels.xml". - Sound should no longer get back to 0 when leaving and returning to TV. 2.50.35 - New IPTV system from flag.txt generating a special internal playlist. - New IPTV "config.xml" supported. - New command "Android/StartIPTV" to start the special IPTV mode. - Multilangage support for images. 2.50.34 - TreeView containers. - Added "SendUDPCommand" command to send an unicast UDP character string + 0x0A + 0x0D to a specific address and port. - Update to ExoPlayer 1.5.7. - Multilanguage support in text fields of designs. 2.50.33 - From this release on, the software uses ExoPlayer for files and MediaPlayer for streams. - Fixed the file lock problems on video files not released by MediaPlayer. - New playlist format, where media files are in ".publish". - Better transition between two pages with containers. - Command "DatabaseConditionalStart" partially supported, checks first recordset and if not empty, plays the design. - "Flying Boxes" containers. 2.50.32 - Also changed video start/stop synchronization in designs to avoid freezes. - Recordset filtering - Values supported: #DAT - Added information about the device hardware in the information/debug page. - Analog clock in Designs using an URL/VLC animation with: clock:(param1=x1,param2=x2,param3=x3,...) Param can be: type=x Not used yet, only the built in type works. hour=x x is added to the actual time (for instance to change timezone). minute=x second=x Same thing for minutes and seconds. 2.50.31 - Replacing \par in Tecbase XMLs with \n. - Better management of download cancelling. 2.50.30 - This release uses VideoView and not ExoPlayer. Releases which use ExoPlayer will be marked as such. - Design pages with a duration of 0 will last until their last container is finished. 2.50.29 - ExoPlayer instead of VideoView for local videos (not in designs yet). - Managing the "<" symbol as key code in designs for the Android "back" command. 2.50.28 - More fixes to the stopPlayback freezes. 2.50.27 - Changed TVWebView : no wide viewport, no overview mode, layout normal and initial scale to 100. - More fixes to the stopPlayback freezes. 2.50.26 - Went back to Android 5.1 compilation. 2.50.25 - Fixes for videos freezing the player. 2.50.24 - Sorting for recordsets finished. - Removed DNS query from download function because some proxies won't let it pass. 2.50.23 - Media downloads can be via HTTPS now. - Web service can also use HTTPS now. - Proper IP address detection on nVidia Shield and other devices with non eth/wlan networks. - Changed code for scrolling/rolling container speed so the speed is independent from the size of the boxes and elements. - Completely rewrote the recordset system. 2.50.22 - Changed the way fonts are updated. 2.50.21 - Script engine and variables are now global. - Player now takes time constraints of elements in schedules into account. - More fixes for video playback stopping in designs. - The application is now a valid "Android TV" apk. - Changed the code for the speed of rollings so that it's no longer dependent of the size of the text box. 2.50.20 - Fixed the possibility of stopPlayblack to be called twice at the same time in a design's video view. 2.50.19 - Additions to #TIM in design text fields now adds or substracts seconds instead of days. 2.50.18 - Debug view and everyWhere information will now warn if a version built for the launcher is run without the launcher. - Fixed html unescaping for when escape code is multiple & for a single &. - #CNTDWN format enhanced. If you only enter hours, minutes and seconds, it counts to the next day, and then the counter reinits to the next day, etc... If you enter a full date, it counts to the date. Examples: #CNTDWN(date="16/12/2015 10:30:00",format="%w weeks %d days %hh hours %mm minutes %ss seconds") Will countdown to the 16 december 2015 at 10:30, displaying weeks, days, hours, minutes and seconds remaining. #CNTDWN(date="12:00:00",format="%hh:%mm:%ss") Will coundown to 12:00 the next day, displaying hours, minutes and seconds. - Multizones now display the media in the main zone in everyWhere Manager. - ELOverlayMedia now loops. 2.50.17 - Remote control navigation now cycles on the borders (e.g. when on the extreme right object, if going right, it will select the extreme left object). - New script command: TVTools.startApplication("name"); Starts an Android application. 2.50.16 - Script variable names now require quotes. E.g.: #VAR("name") - Changed the script API function TVTools.SetVar to TVTools.setVar to respect the method naming conventions. - Scripts are now in UTF-8. 2.50.15 - New design command: #CNTDWN, provides a basic countdown to a specific date. Example: #CNTDWN(date=01/01/2016 00:00:00) 2.50.14 - Fixed the too agressive file cleaning when using designs directly in commands (Keyboard Input Command notably), which generates dynamic playlists that weren't protected by the PlayList Manager. - No longer displaying the "L" in the version in everyWhere Manager (you can still get that info with the right mouse button menu of the device). 2.50.13 - New prefix for image names in designs: "appicon:nnnn", where nnnn is the class of the Android application you want the icon of. - New command in designs: "#APPNAME(nnnn)", where nnnn is the class of the Android application you want the name of. - Javascript scripting engine (RHINO) added for "specific commands" in design objects: For now, only the function "onFocus()", which is called when an object gets the focus during user interaction, is implemented. The TVTools javascript API is contained in the object "TVTools". The function TVTools.SetVar("name","value"); permits to change a variable, which is defined in text fields with "#VAR(name of variable)". - "@" in the "Active Key" of the Interactive options of a design object means it's the icon of an android application, and that if selected, the application should be launched. 2.50.12 - Massive improvements of tactile and remote control interactivity and navigation. 2.50.11 - New command: OverlayMedia, to play a design or a group in an overlay over the normal content. 2.50.10 - Fixed bug with custom splash bitmap being recycled. - Fixed bug of animations (GIF, etc...) no longer being loaded with new filename system. - New Command: LaunchApp, to launch an Android application. 2.50.9 - Displays launcher version in debug view and everyWhere informations. - Managing the case when the flags in two different schedule levels are the same (same date and same content). Yes, it happened. - Removed the launcher mode in the manifest for TVSlide when using TVLauncher so that TVSlide no longer advertises itself as a launcher, to avoid the reappearing of the "Select Launcher" dialog on next reboot. - TVSlide Version now has "L" at the end if TVSlide is built for use with TVLauncher. - Enhanced design remote control interactivity. 2.50.8 - New download/play tasks management. Now the only task to start playback is the clock task. - New parameters in the .ini: ErrorTolerance = x (default: 5) x being the amount of file download failures tolerated to determine if the download of a new publication is valid or not. Be aware that any missing file will be replaced by transparent or black on screen. The number of failures will be reported to the webservice and displayed in the Error column of everyWhere Manager. Language = xxxxx Changes the language for the application only (not the system). Default is the system setting. Accepts strings like "en_US" or "fr_FR". TimeZone = xxxxx Changes the timezone of the system. Defaults to "Europe/Paris". - Configuration directory on the server is now "TVTSlide/.TVSlide-Config". - If the image "tvsplashscreen.jpg" is present in the configuration directory, it will be used as initializing/loading screen instead of the default TVTools logo. This allows server specific splash screens. - qrcode in designs now accepts user variables. 2.50.7 - New parameter in the.ini: PreloadDays = x (default: 2) x being the amount of days preloaded when the schedule level is in week day or full daily mode. - Native (mode "special") support for QRCodes in designs. - Initializing/Loading screen has been changed to a more sober TVTools logo on a black background. 2.50.6 - The TVSlideOVImage command now accepts parameters: offset and scale. E.g. offset=(-2,5) scale=(75,75) would display the selected overlay image with an x offset of 2% of the screen size towards the outside, an y offset of 5% towards the inside, and scaled down to 75% of its size in both width and height. 2.50 - Fixed the memory leak bug that was due to Android not correctly freeing views forced to have a hardware surface.