Vibration: allow BoardConfig to disable vibration for a device.
Change-Id: Ibd2f67391ce6d7774498839829e0de9391508781
This commit is contained in:
committed by
Ethan Yonker
parent
9220dbab44
commit
3ed778ad63
Regular → Executable
+3
@@ -293,6 +293,9 @@ endif
|
||||
ifeq ($(TW_NO_EXFAT_FUSE), true)
|
||||
LOCAL_CFLAGS += -DTW_NO_EXFAT_FUSE
|
||||
endif
|
||||
ifeq ($(TW_NO_HAPTICS), true)
|
||||
LOCAL_CFLAGS += -DTW_NO_HAPTICS
|
||||
endif
|
||||
ifeq ($(TW_INCLUDE_JB_CRYPTO), true)
|
||||
TW_INCLUDE_CRYPTO := true
|
||||
endif
|
||||
|
||||
@@ -587,9 +587,16 @@ void DataManager::SetDefaultValues()
|
||||
mConst.SetValue("false", "0");
|
||||
|
||||
mConst.SetValue(TW_VERSION_VAR, TW_VERSION_STR);
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
mPersist.SetValue("tw_button_vibrate", "80");
|
||||
mPersist.SetValue("tw_keyboard_vibrate", "40");
|
||||
mPersist.SetValue("tw_action_vibrate", "160");
|
||||
mConst.SetValue("tw_disable_haptics", "0");
|
||||
#else
|
||||
LOGINFO("TW_NO_HAPTICS := true\n");
|
||||
mConst.SetValue("tw_disable_haptics", "1");
|
||||
#endif
|
||||
|
||||
TWPartition *store = PartitionManager.Get_Default_Storage_Partition();
|
||||
if (store)
|
||||
@@ -1110,9 +1117,11 @@ string DataManager::GetSettingsStoragePath(void)
|
||||
|
||||
void DataManager::Vibrate(const string& varName)
|
||||
{
|
||||
#ifndef TW_NO_HAPTICS
|
||||
int vib_value = 0;
|
||||
GetValue(varName, vib_value);
|
||||
if (vib_value) {
|
||||
vibrate(vib_value);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
Regular → Executable
+4
@@ -516,8 +516,12 @@ void GUIAction::operation_end(const int operation_status)
|
||||
blankTimer.resetTimerAndUnblank();
|
||||
property_set("twrp.action_complete", "1");
|
||||
time(&Stop);
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
if ((int) difftime(Stop, Start) > 10)
|
||||
DataManager::Vibrate("tw_action_vibrate");
|
||||
#endif
|
||||
|
||||
LOGINFO("operation_end - status=%d\n", operation_status);
|
||||
}
|
||||
|
||||
|
||||
Regular → Executable
+3
@@ -248,7 +248,10 @@ int GUIButton::NotifyTouch(TOUCH_STATE state, int x, int y)
|
||||
} else {
|
||||
if (last_state == 0) {
|
||||
last_state = 1;
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_button_vibrate");
|
||||
#endif
|
||||
if (mButtonLabel != NULL)
|
||||
mButtonLabel->isHighlighted = true;
|
||||
if (mButtonImg != NULL)
|
||||
|
||||
Regular → Executable
+3
@@ -179,7 +179,10 @@ int GUICheckbox::NotifyTouch(TOUCH_STATE state, int x __unused, int y __unused)
|
||||
lastState = (lastState == 0) ? 1 : 0;
|
||||
DataManager::SetValue(mVarName, lastState);
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_button_vibrate");
|
||||
#endif
|
||||
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Regular → Executable
+8
@@ -549,7 +549,11 @@ int GUIKeyboard::NotifyTouch(TOUCH_STATE state, int x, int y)
|
||||
bool repeatKey = false;
|
||||
Layout& lay = layouts[currentLayout - 1];
|
||||
if (state == TOUCH_RELEASE && was_held == 0) {
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_keyboard_vibrate");
|
||||
#endif
|
||||
|
||||
if (key.layout > 0) {
|
||||
// Switch layouts
|
||||
if (lay.is_caps && key.layout == lay.revert_layout && !CapsLockOn) {
|
||||
@@ -593,7 +597,11 @@ int GUIKeyboard::NotifyTouch(TOUCH_STATE state, int x, int y)
|
||||
was_held = 1;
|
||||
if (key.longpresskey > 0) {
|
||||
// Long Press Key
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_keyboard_vibrate");
|
||||
#endif
|
||||
|
||||
PageManager::NotifyCharInput(key.longpresskey);
|
||||
}
|
||||
else
|
||||
|
||||
Regular → Executable
+8
@@ -370,7 +370,11 @@ int GUIPatternPassword::NotifyTouch(TOUCH_STATE state, int x, int y)
|
||||
mTrackingTouch = true;
|
||||
ResetActiveDots();
|
||||
ConnectDot(dot_idx);
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_button_vibrate");
|
||||
#endif
|
||||
|
||||
mCurLineX = x;
|
||||
mCurLineY = y;
|
||||
mNeedRender = true;
|
||||
@@ -386,7 +390,11 @@ int GUIPatternPassword::NotifyTouch(TOUCH_STATE state, int x, int y)
|
||||
{
|
||||
ConnectIntermediateDots(dot_idx);
|
||||
ConnectDot(dot_idx);
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_button_vibrate");
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
mCurLineX = x;
|
||||
|
||||
Regular → Executable
+3
@@ -508,7 +508,10 @@ int GUIScrollList::NotifyTouch(TOUCH_STATE state, int x, int y)
|
||||
NotifySelect(selectedItem);
|
||||
mUpdate = 1;
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_button_vibrate");
|
||||
#endif
|
||||
|
||||
selectedItem = NO_ITEM;
|
||||
} else {
|
||||
// Start kinetic scrolling
|
||||
|
||||
Regular → Executable
+4
@@ -208,7 +208,11 @@ int GUISlider::NotifyTouch(TOUCH_STATE state, int x, int y)
|
||||
return 0;
|
||||
|
||||
if (sCurTouchX >= mRenderX + mRenderW - sTouchW) {
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_button_vibrate");
|
||||
#endif
|
||||
|
||||
sAction->doActions();
|
||||
}
|
||||
|
||||
|
||||
Regular → Executable
+4
@@ -530,7 +530,11 @@ private:
|
||||
switch (ch)
|
||||
{
|
||||
case 7: // BEL
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
DataManager::Vibrate("tw_button_vibrate");
|
||||
#endif
|
||||
|
||||
break;
|
||||
case 8: // BS
|
||||
left();
|
||||
|
||||
Regular → Executable
+9
@@ -3166,19 +3166,28 @@
|
||||
<placement x="%tab5_col4_x%" y="%row_tab_y%" w="%tab5_width%" h="%tab_indicator_height%"/>
|
||||
</fill>
|
||||
|
||||
<text style="text_m">
|
||||
<condition var1="tw_disable_haptics" var2="1"/>
|
||||
<placement x="col1_x_left" y="%row4_y%" w="%content_width%"/>
|
||||
<text>{@vibration_disabled=Vibration Disabled for Device}</text>
|
||||
</text>
|
||||
|
||||
<slidervalue>
|
||||
<condition var1="tw_disable_haptics" var2="0"/>
|
||||
<placement x="col1_x_left" y="%row4_y%" w="%content_width%"/>
|
||||
<text>{@button_vibration=Button Vibration:}</text>
|
||||
<data variable="tw_button_vibrate" min="0" max="300"/>
|
||||
</slidervalue>
|
||||
|
||||
<slidervalue>
|
||||
<condition var1="tw_disable_haptics" var2="0"/>
|
||||
<placement x="col1_x_left" y="%row9_y%" w="%content_width%"/>
|
||||
<text>{@kb_vibration=Keyboard Vibration:}</text>
|
||||
<data variable="tw_keyboard_vibrate" min="0" max="300"/>
|
||||
</slidervalue>
|
||||
|
||||
<slidervalue>
|
||||
<condition var1="tw_disable_haptics" var2="0"/>
|
||||
<placement x="col1_x_left" y="%row14_y%" w="%content_width%"/>
|
||||
<text>{@act_vibration=Action Vibration:}</text>
|
||||
<data variable="tw_action_vibrate" min="0" max="500"/>
|
||||
|
||||
Regular → Executable
+1
@@ -318,6 +318,7 @@
|
||||
<string name="settings_tz_btn">Time Zone</string>
|
||||
<string name="settings_screen_btn">Screen</string>
|
||||
<string name="settings_screen_bright_btn">Screen Brightness</string>
|
||||
<string name="vibration_disabled">Vibration is disabled for this device</string>
|
||||
<string name="settings_vibration_btn">Vibration</string>
|
||||
<string name="settings_language_btn">Language</string>
|
||||
<string name="time_zone_hdr">Time Zone</string>
|
||||
|
||||
Regular → Executable
+9
@@ -3329,19 +3329,28 @@
|
||||
<placement x="%tab5_col4_x%" y="%row_tab_y%" w="%tab5_width%" h="%tab_indicator_height%"/>
|
||||
</fill>
|
||||
|
||||
<text style="text_m">
|
||||
<condition var1="tw_disable_haptics" var2="1"/>
|
||||
<placement x="%indent%" y="%row4_y%"/>
|
||||
<text>{@vibration_disabled=Vibration Disabled for Device}</text>
|
||||
</text>
|
||||
|
||||
<slidervalue>
|
||||
<condition var1="tw_disable_haptics" var2="0"/>
|
||||
<placement x="indent" y="%row4_y%" w="%content_width%"/>
|
||||
<text>{@button_vibration=Button Vibration:}</text>
|
||||
<data variable="tw_button_vibrate" min="0" max="300"/>
|
||||
</slidervalue>
|
||||
|
||||
<slidervalue>
|
||||
<condition var1="tw_disable_haptics" var2="0"/>
|
||||
<placement x="indent" y="%row9_y%" w="%content_width%"/>
|
||||
<text>{@kb_vibration=Keyboard Vibration:}</text>
|
||||
<data variable="tw_keyboard_vibrate" min="0" max="300"/>
|
||||
</slidervalue>
|
||||
|
||||
<slidervalue>
|
||||
<condition var1="tw_disable_haptics" var2="0"/>
|
||||
<placement x="indent" y="%row14_y%" w="%content_width%"/>
|
||||
<text>{@act_vibration=Action Vibration:}</text>
|
||||
<data variable="tw_action_vibrate" min="0" max="500"/>
|
||||
|
||||
Regular → Executable
+1
@@ -3518,6 +3518,7 @@
|
||||
</button>
|
||||
|
||||
<button style="main_button">
|
||||
<condition var1="tw_disable_haptics" var2="0"/>
|
||||
<placement x="%col1_x_right%" y="%row6_y%"/>
|
||||
<text>{@settings_vibration_btn=Vibration}</text>
|
||||
<action function="page">settings_vibration</action>
|
||||
|
||||
Regular → Executable
+4
@@ -123,6 +123,7 @@ int write_to_file(const std::string& fn, const std::string& line) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
int vibrate(int timeout_ms)
|
||||
{
|
||||
if (timeout_ms > 10000) timeout_ms = 1000;
|
||||
@@ -135,6 +136,7 @@ int vibrate(int timeout_ms)
|
||||
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* Returns empty tokens */
|
||||
static char *vk_strtok_r(char *str, const char *delim, char **save_str)
|
||||
@@ -722,7 +724,9 @@ static int vk_modify(struct ev *e, struct input_event *ev)
|
||||
|
||||
last_virt_key = e->vks[i].scancode;
|
||||
|
||||
#ifndef TW_NO_HAPTICS
|
||||
vibrate(VIBRATOR_TIME_MS);
|
||||
#endif
|
||||
|
||||
// Mark that all further movement until lift is discard,
|
||||
// and make sure we don't come back into this area
|
||||
|
||||
Reference in New Issue
Block a user