[Qt-qml] Settings / State Saving proposal for QML
João Abecasis
joao.abecasis at nokia.com
Mon Nov 21 15:51:22 CET 2011
Adriano Rezende wrote:
> 2011/11/17 João Abecasis <joao.abecasis at nokia.com>:
>> The API is pretty minimal, here's example usage:
>>
>> Rectangle {
>> id: main
>> height: 480
>> width: 640
>> color: settings.color
>>
>> Settings {
>> id: settings
>> property string color: "blue"
>> property alias height: main.height
>> property alias width: main.width
>> }
>> }
>>
>> I pushed the code to a clone of the Desktop Components repository over on gitorious. There's some further information in the commit message:
>>
>> https://qt.gitorious.org/~biochimia/qt-components/biochimias-desktop/commit/c1ac32929065f24783f4d254d1786dce8202b274
>>
>> While this needs further refinement and exploration (e.g., ignore the fact that it is using QSettings underneath ;-), what do people around here think of this approach?
>
> I like the API and the alias approach. It's very handy to keep simple
> data persistence.
>
> I think the implementation needs just some adjustments though; if the
> object dies before the 500 ms, which is the storage delay, the data is
> not stored on disk. Basically, calling store() in the destructor would
> be enough, but that would not work with aliases depending on the
> object hierarchy. So you need to cache the data or just remove the
> delay, which is also ok I think, since QSettings already merge updates
> behind the scenes.
It's a known issue. Width and height get changed to 0 (zero) before the destructor is called (I get notifications for those changes as well), making the example useless.
Another issue that I just realized is open is validation of settings when reading from external sources. For now, only the type is checked.
Cheers,
João
More information about the Qt-qml
mailing list