[Development] Settings API for QML

Bache-Wiig Jens Jens.Bache-Wiig at digia.com
Tue Dec 11 17:40:50 CET 2012


>> I would also consider an even simpler API. How about we introduce a new keyword for persistent properties and make it part of the language.
>> 
>> Rectangle {
>>     id: root
>>     persistent property width: 400
>>     persistent property height: 300
>> }
>> 
>> What this means is that the application will automatically store its persistent properties on exit and recall those properties on startup. By default they would be initialised to the bound value.
>> It will need some attached properties or other meta data to override default storage locations etc. And we also need to enforce id's to keep values unique per qml file.
>> 
>> Jens

> Interesting idea, but isn't that a recipe for horror if you ever want to 
> change the structure of your application? To make it possible to keep 
> your application settings if you change your application structure, you 
> will need to set those attached properties. A default generated value 
> will not suffice. That either leads to forcing users to set it if they 
> use the persistent keyword, or leading them into big trouble with 
> application maintenance in the future. Neither sounds attractive.


You certainly have a valid point and I agree that the persistent property will need an explicit name. 
There are several ways we could try to amend it though:

Using special syntax: 

Rectangle {
    persistent property int width: ["application.width", 400]
    persistent property int height: ["application.height", 400]
}

Or perhaps get rid of the keyword altogether and just do:

Rectangle {
    property int width: Qt.storedProperty("application.width", 400)
    property int height: Qt.storedProperty("application.height", 400)
}

Jens


More information about the Development mailing list