How to create a menu that is similar to the save/discard menu in native app

Hello,

I wonder how to create a menu where the title takes a fixed space and menu items scroll beneath. Like it is in the default garmin apps:

https://youtube.com/shorts/aZx8tj0xwqs

I tried Menu and Menu2 and got a different result.

Kind regards,

Valeriy

  • From my POV CIQ seemingly has a huge amount of limitations compared to native stuff.

    Been that way since CIQ was introduced.  It's gotten a bit better but there are still a number of things native apps can do that can't be done in CIQ.  Access to sunrise/set was first requested back in CIQ 1 (2015) and was finally available in CIQ 3.2, and that's not even something that involves firstbeat, which had some licensing restrictions until Garmin bought them.

  • I'm on mobile, so forget I know how to quote.

    There is a reason I said first class citizens. They get to have all the goodies and ice cream they want.

    So you are saying CIQ is a plugin system or mod system as known in games? They expose an API with what the plugins (our apps, watchfaces, etc) can do? But from what I read it still goes extremely close to the metal as an app can brick the OS/watch. 

    I agree with the statement of them closing it down because they dont want competition. They even say it in their docs. Dont make a competing app for running, make a data field because they want uniformity across the watches. They dont want/accept competition on their playing field.

  • Garmin does use CIQ but only in apps you see in the app store.  Watch faces, things like the hydration widget, and the on device app store, music apps, working with partner apps, etc.  But no CIQ in any native code.

  • So you are saying CIQ is a plugin system or mod system as known in games? They expose an API with what the plugins (our apps, watchfaces, etc) can do? But from what I read it still goes extremely close to the metal as an app can brick the OS/watch. 

    Yeah in the past you could reboot a watch with an out of bounds array access - this could lead to an endless reboot loop which would only be escapable through a factory reset using a special button sequence.

    I think CIQ is supposed to be more of a restricted sandboxed environment - somewhere between native code and a mod/plugin system.

    More anecdotal evidence for native stuff not being written in Monkey C is that in my experience, CIQ is way more unstable than native stuff. Currently on newer watches you can get CIQ data fields to crash if you add certain fields in a certain order. Despite many complaints about Garmin bugs, you rarely see anything that egregious with native stuff.

    Also, the thread I was talking about said that Garmin avionics GPS software is written in C. I don't have any evidence for what Garmin native stuff is written in, eiher way.

  • I wouldn't be surprised if they have a glue layer between CIQ and C for their own stuff. Like Perl has with XS so you can write pretty fast Perl stuff in C.

    I remember that thread btw, but didnt read it in full at the time. Time for coffee and a good book ;)

  • The firmware on a device includes the CIQ Virtual Machine (VM)  When you compile a .prg, the end result is in byte codes and processed by the VM.  It's intent includes "sandboxing" so a CIQ app is restricted and can't do anything dangerous to the device.  It's not really like a plugin but more like a Java app where Java has a VM to run the app too.

    Last I heard, native stuff (including the CIQ VM) was written in c/c++

  • Dont make a competing app for running, make a data field because they want uniformity across the watches. They dont want/accept competition on their playing field.

    Plus with the way CIQ is designed, there's really no point in doing so. There are competing running apps, but they will never be able to provide all the functionality that the native run app provides, on even the most basic watches. They're really only good for certain niche use cases.

    That's why dwMap (the replacement running/cycling app that features navigation) can never replace built-in navigation - it has to be a standalone CIQ device app, so the dev had to reimplement a limited subset of running-specific features (like laps, data fields, etc.)

  • But in the same way, when I first did my Hike app, it was because there was no native Hike app on a number of devices.  In it's current version, it has things that aren't available in some of the native hiking activities (more screens, more data, etc)

  • Insert strong opinion about this smiley face (so you can quote smiley face with tongue sticking out).

    In all seriousness tho, it is kinda sad that they have to resort to these kinds of limits to weaken competition on their own hardware. They are king of their kingdom but only because they don't give you the tools that they are using.

    the same accounts for Garmin, an error in their (native) apps shouldn't cause harm to the watch, so they have to run with the same limitations as us.. right? A stupid mistake on their side shouldn't brick it.. 

  • But it's much less likely with CIQ, and interaction between 2 CIQ apps is rare these days.  Native stuff, in general has access to stuff that's not available in CIQ, and also new things get added. 

    Native things get more testing than a CIQ app, and there is generally alpha and beta FW for changes that's "use at your own risk"