diff --git a/cmactions/res/values/array.xml b/cmactions/res/values/array.xml
new file mode 100644
index 0000000..71e452b
--- /dev/null
+++ b/cmactions/res/values/array.xml
@@ -0,0 +1,37 @@
+
+
+
+
+ - None
+ - Home
+ - Power
+ - Back
+ - Recents
+ - Volume Up
+ - Volume Down
+
+
+
+ - 0
+ - 102
+ - 116
+ - 158
+ - 580
+ - 115
+ - 114
+
+
diff --git a/cmactions/res/xml/gesture_panel.xml b/cmactions/res/xml/gesture_panel.xml
index c34cfb7..18c8671 100644
--- a/cmactions/res/xml/gesture_panel.xml
+++ b/cmactions/res/xml/gesture_panel.xml
@@ -58,11 +58,50 @@
android:key="fp_key"
android:title="@string/fingerprint_title" >
-
+ android:title="Fingerprint Gestures"
+ android:summary="Use fingerprint gestures" />
+
+
+
+
+
+
+
+
diff --git a/cmactions/src/com/cyanogenmod/settings/device/BootCompletedReceiver.java b/cmactions/src/com/cyanogenmod/settings/device/BootCompletedReceiver.java
index 5099111..709b5d8 100644
--- a/cmactions/src/com/cyanogenmod/settings/device/BootCompletedReceiver.java
+++ b/cmactions/src/com/cyanogenmod/settings/device/BootCompletedReceiver.java
@@ -26,8 +26,6 @@ import android.util.Log;
import com.cyanogenmod.settings.device.ServiceWrapper.LocalBinder;
-import org.cyanogenmod.internal.util.FileUtils;
-
public class BootCompletedReceiver extends BroadcastReceiver {
static final String TAG = "CMActions";
private ServiceWrapper mServiceWrapper;
@@ -38,13 +36,7 @@ public class BootCompletedReceiver extends BroadcastReceiver {
// Restore nodes to saved preference values
for (String pref : Constants.sButtonPrefKeys) {
- String value = Constants.isPreferenceEnabled(context, pref) ? "1" : "0";
- String node = Constants.sBooleanNodePreferenceMap.get(pref);
-
- if (!FileUtils.writeLine(node, value)) {
- Log.w(TAG, "Write to node " + node +
- " failed while restoring saved preference values");
- }
+ Constants.writePreference(context, pref);
}
context.startService(new Intent(context, ServiceWrapper.class));
diff --git a/cmactions/src/com/cyanogenmod/settings/device/CMActionsSettings.java b/cmactions/src/com/cyanogenmod/settings/device/CMActionsSettings.java
index d458822..5d584fc 100644
--- a/cmactions/src/com/cyanogenmod/settings/device/CMActionsSettings.java
+++ b/cmactions/src/com/cyanogenmod/settings/device/CMActionsSettings.java
@@ -128,6 +128,9 @@ public class CMActionsSettings {
mFlipToMuteEnabled = sharedPreferences.getBoolean(GESTURE_FLIP_TO_MUTE_KEY, false);
} else if (GESTURE_LIFT_TO_SILENCE_KEY.equals(key)) {
mLiftToSilenceEnabled = sharedPreferences.getBoolean(GESTURE_LIFT_TO_SILENCE_KEY, false);
+ } else if (Constants.FP_HOME_KEY.equals(key) || Constants.FP_KEYS.equals(key) || Constants.FP_KEY_HOLD.equals(key) || Constants.FP_KEY_LEFT.equals(key) || Constants.FP_KEY_RIGHT.equals(key)) {
+ Constants.writePreference(mContext, key);
+ updated = false;
} else {
updated = false;
}
diff --git a/cmactions/src/com/cyanogenmod/settings/device/Constants.java b/cmactions/src/com/cyanogenmod/settings/device/Constants.java
index 85587a2..e067d42 100644
--- a/cmactions/src/com/cyanogenmod/settings/device/Constants.java
+++ b/cmactions/src/com/cyanogenmod/settings/device/Constants.java
@@ -22,15 +22,32 @@ import java.util.Map;
import android.content.Context;
import android.content.SharedPreferences;
import android.preference.PreferenceManager;
+import android.util.Log;
+
+import org.cyanogenmod.internal.util.FileUtils;
public class Constants {
+ private static final String TAG = "CMActions";
+
// Swap keys
public static final String FP_HOME_KEY = "fp_home";
// Swap nodes
public static final String FP_HOME_NODE = "/sys/homebutton/enable";
+ // List of keys
+ public static final String FP_KEYS = "fp_keys";
+ public static final String FP_KEY_HOLD = "fp_key_hold";
+ public static final String FP_KEY_LEFT = "fp_key_left";
+ public static final String FP_KEY_RIGHT = "fp_key_right";
+
+ // Keys nodes
+ public static final String FP_KEYS_NODE = "/sys/homebutton/key";
+ public static final String FP_KEY_HOLD_NODE = "/sys/homebutton/key_hold";
+ public static final String FP_KEY_LEFT_NODE = "/sys/homebutton/key_left";
+ public static final String FP_KEY_RIGHT_NODE = "/sys/homebutton/key_right";
+
// Holds -> mapping
public static final Map sBooleanNodePreferenceMap = new HashMap<>();
@@ -39,15 +56,50 @@ public class Constants {
public static final String[] sButtonPrefKeys = {
FP_HOME_KEY,
+ FP_KEYS,
+ FP_KEY_HOLD,
+ FP_KEY_RIGHT,
+ FP_KEY_LEFT,
};
static {
sBooleanNodePreferenceMap.put(FP_HOME_KEY, FP_HOME_NODE);
+ sBooleanNodePreferenceMap.put(FP_KEYS, FP_KEYS_NODE);
+ sBooleanNodePreferenceMap.put(FP_KEY_HOLD, FP_KEY_HOLD_NODE);
+ sBooleanNodePreferenceMap.put(FP_KEY_LEFT, FP_KEY_LEFT_NODE);
+ sBooleanNodePreferenceMap.put(FP_KEY_RIGHT, FP_KEY_RIGHT_NODE);
sNodeDefaultMap.put(FP_HOME_KEY, false);
+ sNodeDefaultMap.put(FP_KEYS, "0");
+ sNodeDefaultMap.put(FP_KEY_HOLD, "0");
+ sNodeDefaultMap.put(FP_KEY_LEFT, "0");
+ sNodeDefaultMap.put(FP_KEY_RIGHT, "0");
}
public static boolean isPreferenceEnabled(Context context, String key) {
SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
return preferences.getBoolean(key, (Boolean) sNodeDefaultMap.get(key));
}
+
+ public static String GetPreference(Context context, String key) {
+ SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context);
+ return preferences.getString(key, (String) sNodeDefaultMap.get(key));
+ }
+
+ public static void writePreference(Context context, String pref) {
+
+ String value = "1";
+ Log.e(TAG, "Write Pref: " + pref);
+ if (!pref.equals(FP_KEYS) && !pref.equals(FP_KEY_HOLD) && !pref.equals(FP_KEY_LEFT) && !pref.equals(FP_KEY_RIGHT))
+ value = isPreferenceEnabled(context, pref) ? "1" : "0";
+ else
+ value = GetPreference(context, pref);
+
+ String node = sBooleanNodePreferenceMap.get(pref);
+ Log.e(TAG, "Write " + value + " to node " + node);
+
+ if (!FileUtils.writeLine(node, value)) {
+ Log.w(TAG, "Write " + value + " to node " + node +
+ "failed while restoring saved preference values");
+ }
+ }
}
diff --git a/cmactions/src/com/cyanogenmod/settings/device/TouchscreenGesturePreferenceFragment.java b/cmactions/src/com/cyanogenmod/settings/device/TouchscreenGesturePreferenceFragment.java
index cd2628c..0935200 100644
--- a/cmactions/src/com/cyanogenmod/settings/device/TouchscreenGesturePreferenceFragment.java
+++ b/cmactions/src/com/cyanogenmod/settings/device/TouchscreenGesturePreferenceFragment.java
@@ -23,16 +23,10 @@ import android.os.Bundle;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
-import android.support.v7.preference.Preference;
import android.support.v7.preference.PreferenceCategory;
import android.support.v14.preference.PreferenceFragment;
+import android.support.v7.preference.Preference;
import android.support.v14.preference.SwitchPreference;
-import android.text.TextUtils;
-
-import java.io.File;
-
-import org.cyanogenmod.internal.util.FileUtils;
-import org.cyanogenmod.internal.util.ScreenType;
public class TouchscreenGesturePreferenceFragment extends PreferenceFragment {
private SwitchPreference mFlipPref;
@@ -70,34 +64,6 @@ public class TouchscreenGesturePreferenceFragment extends PreferenceFragment {
}
}
- @Override
- public void addPreferencesFromResource(int preferencesResId) {
- super.addPreferencesFromResource(preferencesResId);
- // Initialize node preferences
- for (String pref : Constants.sBooleanNodePreferenceMap.keySet()) {
- SwitchPreference b = (SwitchPreference) findPreference(pref);
- if (b == null) continue;
- b.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
- public boolean onPreferenceChange(Preference preference, Object newValue) {
- String node = Constants.sBooleanNodePreferenceMap.get(preference.getKey());
- if (!TextUtils.isEmpty(node)) {
- Boolean value = (Boolean) newValue;
- FileUtils.writeLine(node, value ? "1" : "0");
- return true;
- }
- return false;
- }
- });
- String node = Constants.sBooleanNodePreferenceMap.get(pref);
- if (new File(node).exists()) {
- String curNodeValue = FileUtils.readOneLine(node);
- b.setChecked(curNodeValue.equals("1"));
- } else {
- b.setEnabled(false);
- }
- }
- }
-
@Override
public void onResume() {
super.onResume();