gui: Actions: Toggle backlight on power key

Create GUIAction to handle KEY_POWER with a screen backlight toggle.

Change-Id: Iad0a7923b4a776e0336722db74d6fc46cd0107a2
This commit is contained in:
Matt Mower
2016-01-20 18:12:47 -06:00
committed by Dees Troy
parent 874136434a
commit 9472ba1d39
13 changed files with 69 additions and 6 deletions

View File

@@ -198,6 +198,7 @@ GUIAction::GUIAction(xml_node<>* node)
ADD_ACTION(mountsystemtoggle);
ADD_ACTION(setlanguage);
ADD_ACTION(checkforapp);
ADD_ACTION(togglebacklight);
// remember actions that run in the caller thread
for (mapFunc::const_iterator it = mf.begin(); it != mf.end(); ++it)
@@ -1865,6 +1866,12 @@ int GUIAction::setlanguage(std::string arg __unused)
return 0;
}
int GUIAction::togglebacklight(std::string arg __unused)
{
blankTimer.toggleBlank();
return 0;
}
int GUIAction::setbootslot(std::string arg)
{
operation_start("Set Boot Slot");

View File

@@ -116,3 +116,37 @@ void blanktimer::resetTimerAndUnblank(void) {
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();
}
}

View File

@@ -37,11 +37,15 @@ public:
// call this when an input event is received or when an operation is finished
void resetTimerAndUnblank();
// call this when power button is pressed
void toggleBlank(void);
bool isScreenOff();
private:
void setTimer(void);
string getBrightness(void);
void blank(void);
pthread_mutex_t mutex;
enum State { kOn = 0, kDim = 1, kOff = 2, kBlanked = 3 };

View File

@@ -205,7 +205,9 @@ bool InputHandler::processInput(int timeout_ms)
break;
}
blankTimer.resetTimerAndUnblank();
if (ev.code != KEY_POWER && ev.code > KEY_RESERVED)
blankTimer.resetTimerAndUnblank();
return true; // we got an event, so there might be more in the queue
}

View File

@@ -363,6 +363,7 @@ protected:
int checkpartitionlifetimewrites(std::string arg);
int mountsystemtoggle(std::string arg);
int setlanguage(std::string arg);
int togglebacklight(std::string arg);
int twcmd(std::string arg);
int setbootslot(std::string arg);
int installapp(std::string arg);

View File

@@ -3517,6 +3517,11 @@
<text>{@swipe_to_unlock=Swipe to Unlock}</text>
<action function="overlay"/>
</slider>
<action>
<touch key="power"/>
<action function="togglebacklight"/>
</action>
</page>
<page name="filemanagerlist">

View File

@@ -3779,6 +3779,11 @@
<text>{@swipe_to_unlock=Swipe to Unlock}</text>
<action function="overlay"/>
</slider>
<action>
<touch key="power"/>
<action function="togglebacklight"/>
</action>
</page>
<page name="filemanagerlist">

View File

@@ -4424,6 +4424,11 @@
<text>{@swipe_unlock= Unlock}</text>
<action function="overlay"/>
</slider>
<action>
<touch key="power"/>
<action function="togglebacklight"/>
</action>
</page>
<page name="filemanagerlist">

View File

@@ -432,7 +432,7 @@
<action>
<touch key="power"/>
<action function="overlay">lock</action>
<action function="togglebacklight"/>
</action>
<action>

View File

@@ -432,7 +432,7 @@
<action>
<touch key="power"/>
<action function="overlay">lock</action>
<action function="togglebacklight"/>
</action>
<action>

View File

@@ -336,7 +336,7 @@
<action>
<touch key="power"/>
<action function="overlay">lock</action>
<action function="togglebacklight"/>
</action>
<action>

View File

@@ -336,7 +336,7 @@
<action>
<touch key="power"/>
<action function="overlay">lock</action>
<action function="togglebacklight"/>
</action>
<action>

View File

@@ -258,7 +258,7 @@
<action>
<touch key="power"/>
<action function="overlay">lock</action>
<action function="togglebacklight"/>
</action>
<action>