The approach comes from Qt's documentation: It's the QObjectList-based model approach https://doc.qt.io/qt-5/qtquick-modelviewsdata-cppmodels.html, which you can see creates a list of QObject* pointers with values that are accessible as named properties in the qml. This class has been tested and is working fine cppcheck doesn't report any errors in this file
Dara, rather than referring to another code review, I would just reply that it will be corrected after that code review is completed, branch merged to master, and then master pulled into this branch. Commenter can resolve then at that time when the fix shows up.
Persistent alarm now uses time interval limit rather than count. So we do not need to divide by the interval here. This change eliminates the need to know the task interval in which the checking function is getting called.
To avoid copying the has_value function into each enum sub-class, it'd be better to make AlarmUserOptions a subclass of DialinEnum, which can be imported from utils/base.py