@@ 1,20 1,43 @@
--- ----------- insert default values ----------------------
-INSERT OR REPLACE INTO dictionary_tab (path, value) VALUES
- ('system/phone_mode', 'online'),
- ('system/phone_mode', 'offline'),
- ('system/phone_mode', 'dnd');
+--
+-- Main settings table, for string application persistent data
+--
+CREATE TABLE IF NOT EXISTS settings_tab (
+ path TEXT NOT NULL UNIQUE PRIMARY KEY,
+ value TEXT
+);
+
+--
+-- Dictionary table, for variables with fixed set of values
+--
+CREATE TABLE IF NOT EXISTS dictionary_tab (
+ id INTEGER PRIMARY KEY,
+ path TEXT NOT NULL,
+ value TEXT,
+ CONSTRAINT dictionary_unique
+ UNIQUE (path, value) ON CONFLICT REPLACE
+ );
+
+--
+-- Table contains information who to inform
+-- about changes in values.
+--
+CREATE TABLE IF NOT EXISTS notifications_tab (
+ id INTEGER PRIMARY KEY,
+ path TEXT NOT NULL,
+ service TEXT,
+ CONSTRAINT notification_unique
+ UNIQUE(path, service)
+ );
+
+CREATE TABLE IF NOT EXISTS settings_changed_tab(
+
+ id INTEGER PRIMARY KEY,
+ path TEXT NOT NULL,
+ value TEXT,
+ CONSTRAINT changed_unique
+ UNIQUE(path ) ON CONFLICT REPLACE
+);
+
+CREATE TRIGGER IF NOT EXISTS on_update UPDATE OF value ON settings_tab
+WHEN new.value <> old.value BEGIN INSERT OR REPLACE INTO settings_changed_tab (path, value) VALUES (new.path,new.value); END;
--- ----------- insert default values -------------------
-INSERT OR IGNORE INTO settings_tab (path, value) VALUES
- ('system/phone_mode', 'online'),
- ('gs_time_format_12', '0'),
- ('gs_time_date_format', '1'),
- ('gs_active_sim', 'SIM1'),
- ('gs_lock_pass_hash', '3333'),
- ('gs_lock_time', '30000'),
- ('gs_display_language', 'English'),
- ('gs_input_language', 'English');
- ('bt_state', '0'),
- ('bt_device_visibility', '0'),
- ('bt_device_name', 'PurePhone'),
- ('bt_bonded_devices', '');