OmniLib: Implement OmniSettings system settings preferences

Change-Id: I7e4e2beaf417c9357eb7a3578b31cba6c7d4dbe5
diff --git a/src/org/omnirom/omnilib/utils/OmniSettings.java b/src/org/omnirom/omnilib/utils/OmniSettings.java
new file mode 100644
index 0000000..e093585
--- /dev/null
+++ b/src/org/omnirom/omnilib/utils/OmniSettings.java
@@ -0,0 +1,142 @@
+/*
+* Copyright (C) 2023 The OmniROM Project
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* Unless required by applicable law or agreed to in writing, software
+* distributed under the License is distributed on an "AS IS" BASIS,
+* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+* See the License for the specific language governing permissions and
+* limitations under the License.
+*/
+package org.omnirom.omnilib.utils;
+
+import android.provider.BaseColumns;
+import android.provider.Settings.NameValueTable;
+import android.util.ArrayMap;
+
+import java.util.Map;
+
+public class OmniSettings extends NameValueTable implements BaseColumns {
+
+    /**
+     Add omni settings like e.g.
+     @hide
+     public static final String OMNI_FOO_BAR_BALABALA = "foo_bar_balabala";
+    */
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_SYSTEM_PROXI_CHECK_ENABLED = "system_proxi_check_enabled";
+
+    /**
+     * Enable proxi check for wake keys - must be implemented in a device
+     * KeyHandler
+     * @hide
+     */
+    public static final String OMNI_DEVICE_PROXI_CHECK_ENABLED = "device_proxi_check_enabled";
+
+    /**
+     * some devices have a extra hw button e.g. n3 on the back on the
+     * fingerprint sensor. allow mapping button to key
+     *
+     * @hide
+     */
+    public static final String OMNI_BUTTON_EXTRA_KEY_MAPPING = "button_extra_mapping";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_DEVICE_FEATURE_SETTINGS = "device_feature_settings";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_LONG_PRESS_POWER_TORCH = "long_press_power_torch";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_ADVANCED_REBOOT = "advanced_reboot";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_MONET_DISABLE = "monet_disable";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_SHOW_BATTERY_IMAGE =
+        "show_battery_image";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_LOCKSCREEN_WEATHER_ENABLED = "lockscreen_weather_enabled";
+
+    /** @hide */
+    public static final String OMNI_BACK_GESTURE_HEIGHT = "back_gesture_height";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_STATUS_BAR_ALARM = "status_bar_alarm";
+
+    /**
+     * @hide
+     */
+    public static final String OMNI_ENABLE_TASKBAR = "enable_taskbar";
+
+    /**
+     * SettingsBackupAgent will combine its list with this so we dont need
+     * to add new things into SettingsProvider SystemSettings
+     * @hide
+     */
+    public static final String[] OMNI_SETTINGS_TO_BACKUP = {
+        // OMNI_FOO_BAR_BALABALA
+        OMNI_SYSTEM_PROXI_CHECK_ENABLED,
+        OMNI_DEVICE_PROXI_CHECK_ENABLED,
+        OMNI_BUTTON_EXTRA_KEY_MAPPING,
+        OMNI_DEVICE_FEATURE_SETTINGS,
+        OMNI_LONG_PRESS_POWER_TORCH,
+        OMNI_ADVANCED_REBOOT,
+        OMNI_MONET_DISABLE,
+        OMNI_SHOW_BATTERY_IMAGE,
+        OMNI_LOCKSCREEN_WEATHER_ENABLED,
+        OMNI_BACK_GESTURE_HEIGHT,
+        OMNI_STATUS_BAR_ALARM,
+        OMNI_ENABLE_TASKBAR,
+    };
+
+    /**
+     * SettingsBackupAgent will combine its list with this so we dont need
+     * to add new things into SettingsProvider SystemSettingsValidators
+     * we cant use Validators interface so use a simple integer mapping
+     * BOOLEAN_VALIDATOR == 0
+     * ANY_INTEGER_VALIDATOR == 1
+     * ANY_STRING_VALIDATOR == 2
+     * @hide
+     */
+    public static final Map<String, Integer> OMNI_SETTINGS_VALIDATORS = new ArrayMap<>();
+    static {
+        //OMNI_SETTINGS_VALIDATORS.put(OMNI_FOO_BAR_BALABALA, 1);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_SYSTEM_PROXI_CHECK_ENABLED, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_DEVICE_PROXI_CHECK_ENABLED, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_BUTTON_EXTRA_KEY_MAPPING, 2);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_DEVICE_FEATURE_SETTINGS, 2);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_LONG_PRESS_POWER_TORCH, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_ADVANCED_REBOOT, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_MONET_DISABLE, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_SHOW_BATTERY_IMAGE, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_LOCKSCREEN_WEATHER_ENABLED, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_BACK_GESTURE_HEIGHT, 1);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_STATUS_BAR_ALARM, 0);
+        OMNI_SETTINGS_VALIDATORS.put(OMNI_ENABLE_TASKBAR, 0);
+    }
+}