CIQ version support for personality iconography

Good morning,

my app currently supports devices down to CIQ 3.4, and I’m now working on adding support for some CIQ 3.3 devices. One obstacle I’ve run into is the iconography in the personality library.

For example, I use the following resource definitions to access the predefined check/cancel icons:

<bitmap id="iconCheckHint" scaleY="9%" personality="system_icon_positive__check" />
<bitmap id="iconCancelHint" scaleY="8%" personality="system_icon_destructive__cancel" />

On the CIQ 3.3 device I’m testing with (Edge 1030), I get the following errors:

Could not find personality style class 'system_icon_light__warning'
Attribute 'filename' must appear on element 'iconWarning'

This seems to indicate that personality-based iconography isn’t supported on this device. However, I haven’t been able to find any documentation that specifies which CIQ versions support these icons. Neither the bitmap resource documentation nor the personality library documentation mention CIQ version requirements.

Does anyone know whether this is documented anywhere, or have insights into when personality iconography became supported?

Top Replies

  • On the CIQ 3.3 device I’m testing with (Edge 1030)

    edge1030 doesn't support Personality UI at all. It's not just the iconography that isn't supported.

    Personality UI is only…

All Replies

  • On the CIQ 3.3 device I’m testing with (Edge 1030)

    edge1030 doesn't support Personality UI at all. It's not just the iconography that isn't supported.

    Personality UI is only supported with devices that have CIQ 3.4 or higher. It's too bad this isn't really documented anywhere, except indirectly in the initial announcement:

    https://forums.garmin.com/developer/connect-iq/b/news-announcements/posts/adding-a-touch-of-personality-with-personality-ui 

    System 6 adds Personality UI,

    Too bad there was never unanimous understanding of what "System 6" means (even people who claimed that the "System level" scheme might be confusing to others but *they* understood it actually got it wrong more than once). 

    To get started, you’ll create a new Watch App project. In manifest.xml, set the minApiLevel to 3.4.0

    There's that indirect statement. (For the record, System 6 is CIQ 3.4.x for CIQ 3 devices, and CIQ 4.2.x for CIQ 4 devices. It's remarkably difficult to find any official statement from garmin to this effect though.) You can actually find a "definitive" mapping of system levels to CIQ API versions in bin\compilerinfo.xml for recent SDKs, but ofc that isn't documented anywhere either.

    You can also see edge1030's lack of support for personality by UI by noting the lack of personality.mss in the edge1030 device folder [*]. personality.mss is a css-like file which contains style information that gets emitted as per-device auto-genned code (Rez.mcgen) in your project's bin\gen\PART_NUMBER folder. You can look at Rez.mcgen to see how to access various personality-related constants from Monkey C source code (not just resource files). This is something else that isn't documented.

    [*] For any personality-related concerns, you could always scrape personality.mss for each device in the "device library": ...\ConnectIQ\Devices on your dev computer.

    What I'm calling "...\ConnectIQ" (the root folder for most of the CIQ dev environment, including device configs and sdks) is located at:

    (Windows) "%APPDATA%\Garmin\ConnectIQ"

    (Mac) "$HOME/Library/Application Support/Garmin/ConnectIQ"

    I think you'll find that every instance of the personality.mss file contains references to system_icon_positive__check and system_icon_destructive__cancel.

  • Thank you for the very helpful insights!