diff options
| author | Javier <dev.git@javispedro.com> | 2014-11-30 23:25:33 +0100 |
|---|---|---|
| committer | Javier <dev.git@javispedro.com> | 2014-11-30 23:25:33 +0100 |
| commit | 6456b840eb660fdafe21d376e07e0b67a24cd0b4 (patch) | |
| tree | bb73912e587cc7c729a465d690fd2d8d2ed8e87d /daemon/jskitobjects.cpp | |
| parent | dadca6f0b1e4660876cccb51702998d378a5dc03 (diff) | |
more JSKit objects
Diffstat (limited to 'daemon/jskitobjects.cpp')
| -rw-r--r-- | daemon/jskitobjects.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/daemon/jskitobjects.cpp b/daemon/jskitobjects.cpp new file mode 100644 index 0000000..fc9506d --- /dev/null +++ b/daemon/jskitobjects.cpp @@ -0,0 +1,69 @@ +#include <QStandardPaths> +#include <QDir> +#include "jskitobjects.h" + +JSKitPebble::JSKitPebble(JSKitManager *mgr) + : QObject(mgr) +{ +} + +void JSKitPebble::addEventListener(const QString &value, QJSValue callback) +{ + _callbacks[value].append(callback); +} + +JSKitLocalStorage::JSKitLocalStorage(const QUuid &uuid, JSKitManager *mgr) + : QObject(mgr), _storage(new QSettings(getStorageFileFor(uuid), QSettings::IniFormat, this)) +{ + _len = _storage->allKeys().size(); +} + +int JSKitLocalStorage::length() const +{ + return _len; +} + +QJSValue JSKitLocalStorage::getItem(const QString &key) const +{ + QVariant value = _storage->value(key); + if (value.isValid()) { + return QJSValue(value.toString()); + } else { + return QJSValue(QJSValue::NullValue); + } +} + +void JSKitLocalStorage::setItem(const QString &key, const QString &value) +{ + _storage->setValue(key, QVariant::fromValue(value)); + checkLengthChanged(); +} + +void JSKitLocalStorage::removeItem(const QString &key) +{ + _storage->remove(key); + checkLengthChanged(); +} + +void JSKitLocalStorage::clear() +{ + _storage->clear(); + _len = 0; + emit lengthChanged(); +} + +void JSKitLocalStorage::checkLengthChanged() +{ + int curLen = _storage->allKeys().size(); + if (_len != curLen) { + _len = curLen; + emit lengthChanged(); + } +} + +QString JSKitLocalStorage::getStorageFileFor(const QUuid &uuid) +{ + QDir dataDir(QStandardPaths::writableLocation(QStandardPaths::DataLocation)); + dataDir.mkdir("js-storage"); + return dataDir.absoluteFilePath("js-storage/" + uuid.toString() + ".ini"); +} |
