Configurable timeout and brightness settings

Change-Id: I924297ab0dcf920cd4b4b617949c3b16cbc68e43
diff --git a/data.cpp b/data.cpp
index 6566bcd..a4cb464 100644
--- a/data.cpp
+++ b/data.cpp
@@ -40,6 +40,7 @@
 #include "data.hpp"
 #include "partitions.hpp"
 #include "twrp-functions.hpp"
+#include "gui/blanktimer.hpp"
 
 #ifdef TW_USE_MODEL_HARDWARE_ID_FOR_DEVICE_ID
     #include "cutils/properties.h"
@@ -62,6 +63,7 @@
 map<string, string>                     DataManager::mConstValues;
 string                                  DataManager::mBackingFile;
 int                                     DataManager::mInitialized = 0;
+extern blanktimer blankTimer;
 
 // Device ID functions
 void DataManager::sanitize_device_id(char* device_id) {
@@ -429,7 +431,10 @@
 
     if (pos->second.second != 0)
         SaveValues();
-    gui_notifyVarChange(varName.c_str(), value.c_str());
+	if (varName == "tw_screen_timeout_secs")
+		blankTimer.setTime(atoi(value.c_str()));
+	else
+		gui_notifyVarChange(varName.c_str(), value.c_str());
     return 0;
 }
 
@@ -849,6 +854,31 @@
 	mValues.insert(make_pair("tw_terminal_state", make_pair("0", 0)));
 	mValues.insert(make_pair("tw_background_thread_running", make_pair("0", 0)));
 	mValues.insert(make_pair(TW_RESTORE_FILE_DATE, make_pair("0", 0)));
+	mValues.insert(make_pair("tw_screen_timeout_secs", make_pair("60", 1)));
+#ifdef TW_MAX_BRIGHTNESS
+	if (strcmp(EXPAND(TW_BRIGHTNESS_PATH), "/nobrightness") != 0) {
+		LOGI("TW_BRIGHTNESS_PATH := %s\n", EXPAND(TW_BRIGHTNESS_PATH));
+		mConstValues.insert(make_pair("tw_has_brightnesss_file", "1"));
+		mConstValues.insert(make_pair("tw_brightness_file", EXPAND(TW_BRIGHTNESS_PATH)));
+		ostringstream val100, val25, val50, val75;
+		int value = TW_MAX_BRIGHTNESS;
+		val100 << value;
+		mConstValues.insert(make_pair("tw_brightness_100", val100.str()));
+		value = TW_MAX_BRIGHTNESS * 0.25;
+		val25 << value;
+		mConstValues.insert(make_pair("tw_brightness_25", val25.str()));
+		value = TW_MAX_BRIGHTNESS * 0.5;
+		val50 << value;
+		mConstValues.insert(make_pair("tw_brightness_50", val50.str()));
+		value = TW_MAX_BRIGHTNESS * 0.75;
+		val75 << value;
+		mConstValues.insert(make_pair("tw_brightness_75", val75.str()));
+		mValues.insert(make_pair("tw_brightness", make_pair(val100.str(), 1)));
+		mValues.insert(make_pair("tw_brightness_display", make_pair("100", 1)));
+	} else {
+		mConstValues.insert(make_pair("tw_has_brightnesss_file", "0"));
+	}
+#endif
 }
 
 // Magic Values
@@ -998,6 +1028,14 @@
 		PartitionManager.Mount_By_Path(ext_path, 0);
 	}
 	update_tz_environment_variables();
+#ifdef TW_MAX_BRIGHTNESS
+	if (strcmp(EXPAND(TW_BRIGHTNESS_PATH), "/nobrightness") != 0) {
+		string brightness_path = EXPAND(TW_BRIGHTNESS_PATH);
+		string brightness_value = GetStrValue("tw_brightness");
+		LOGI("writing %s to brightness\n", brightness_value.c_str());
+		TWFunc::write_file(brightness_path, brightness_value);
+	}
+#endif
 }
 
 string DataManager::GetCurrentStoragePath(void)