ricochet-im/ricochet — pull request #58 by special (2014-07-16 00:32:29+00:00)
Title: Implement new settings storage and API

QSettings has been used to store configuration, including critical data
like the contacts list. But it is flawed: lack of atomic writes can result
in data loss, the ini format is limited and crappy, the API is awful,
and there is no easy way to support QML or bindings.

This system addresses these concerns with a new JSON-based settings API.
It can be exposed to QML, supports change notification, always uses
atomic writes, and improves the read/write APIs.

On first use, existing configurations will be imported. All known
settings are preserved. The old configuration will not be removed after
import to prevent data loss; they may be cleaned up in some future
update.

This is an itch with Qt that I've wanted to scratch for a long time. It happens to be very useful here: this makes adding configurable and persistent features to the UI dramatically easier, and is a step towards cleaning up some of the core code related to contacts and identities.