Qt/QML wrapper for Google's LevelDB
This plugin provides a way to use LevelDB on QML. LevelDB is a fast key-value storage library written at Google that provides an ordered mapping from string keys to string values.
There is two way to use it: Instancing a LevelDB object or Settings object.
LevelDB type provides an API to access the standard LevelDB API: put, get, del, batch and readStream.
Settings type provides a high level API, automatic storing property changes in the database.
Added a source property. So it is possible to create settings in different databases:
Settings{
id:windowSettings
source: "/home/test/.cache/Appname/window_settings.db"
}
Settings{
id:userSettings
source: "/home/test/.cache/Appname/user_settings.db"
}
Properties are synchronized between instances. So updating one property in a instance will trigger and update in all other instances that have the same source
Settings{
id:windowSettings
property int width
source: "/home/test/.cache/Appname/window_settings.db"
Component.onCompleted: width = 200
}
Settings{
id:windowSettings2
property int width
source: "/home/test/.cache/Appname/window_settings.db"
onWidthChanged: console.log("width changed to: " + width)
}
OBS: For a property to be updated it need to be declared.
API for receive property change signals when you don't want to declare all the properties:
Settings{
source: "/home/test/.cache/Appname/window_settings.db"
onPropertyChanged: console.log("property:" + key + "changed to: " + value)
}
Read only properties are ignored. Good for using constants:
Settings{
readonly property real pi = 3.14 //this will not be save on disk or shared between instances
}
Probably more efficient too, since leveldb has many cache layers and Qt's implentation writes on ini files.
Here is a couple of examples.
import QtQuick 2.2
import QtLevelDB 1.0
ApplicationWindow {
id: window
width: 400
height: 250
LevelDB {
id: db
source: "local.db"
Component.onCompleted: {
window.width = db.get("width", 400)
window.height = db.get("height", 250)
}
}
onWidthChanged: db.put("width", width)
onHeightChanged: db.put("height", height)
}
import QtQuick 2.2
import QtLevelDB 1.0
ApplicationWindow {
id: window
width: 400
height: 250
Settings {
source: "local.db"
property alias width: window.width
property alias height: window.height
}
}
On Unix just call theses commands from the terminal:
qmake
make
make install
On Windows is very similar, just make sure you have Qt and QtCreator binaries in your path enviroment variable:
qmake
jom
jom install
Feel Free to Contribute