gui: Actions: Toggle backlight on power key

Create GUIAction to handle KEY_POWER with a screen backlight toggle.

Change-Id: Iad0a7923b4a776e0336722db74d6fc46cd0107a2
diff --git a/gui/blanktimer.cpp b/gui/blanktimer.cpp
index 4662b1f..2205253 100644
--- a/gui/blanktimer.cpp
+++ b/gui/blanktimer.cpp
@@ -116,3 +116,37 @@
 	pthread_mutex_unlock(&mutex);
 #endif
 }
+
+void blanktimer::blank(void) {
+/*  1) No need for timer handling since checkForTimeout() verifies
+ *     state of screen before performing screen-off
+ *  2) Assume screen-off causes issues for devices that set
+ *     TW_NO_SCREEN_TIMEOUT and do not blank screen here either
+ */
+
+#ifndef TW_NO_SCREEN_TIMEOUT
+	pthread_mutex_lock(&mutex);
+	if (state == kOn) {
+		orig_brightness = getBrightness();
+		state = kOff;
+		TWFunc::Set_Brightness("0");
+		TWFunc::check_and_run_script("/sbin/postscreenblank.sh", "blank");
+	}
+#ifndef TW_NO_SCREEN_BLANK
+	if (state == kOff) {
+		gr_fb_blank(true);
+		state = kBlanked;
+	}
+#endif
+	pthread_mutex_unlock(&mutex);
+#endif
+}
+
+void blanktimer::toggleBlank(void) {
+	if (state == kOn) {
+		blank();
+		PageManager::ChangeOverlay("lock");
+	} else {
+		resetTimerAndUnblank();
+	}
+}