summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/hardware/VibratorIntensity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/hardware/VibratorIntensity.java')
-rw-r--r--src/com/android/settings/hardware/VibratorIntensity.java49
1 files changed, 29 insertions, 20 deletions
diff --git a/src/com/android/settings/hardware/VibratorIntensity.java b/src/com/android/settings/hardware/VibratorIntensity.java
index e847933..a778f36 100644
--- a/src/com/android/settings/hardware/VibratorIntensity.java
+++ b/src/com/android/settings/hardware/VibratorIntensity.java
@@ -42,7 +42,7 @@ import cyanogenmod.providers.CMSettings;
import com.android.settings.R;
public class VibratorIntensity extends DialogPreference implements
- SeekBar.OnSeekBarChangeListener {
+ SeekBar.OnSeekBarChangeListener, PreferenceManager.OnActivityStopListener {
private static final String PREF_NAME = "vibrator_intensity";
private SeekBar mSeekBar;
private TextView mValue;
@@ -120,7 +120,10 @@ public class VibratorIntensity extends DialogPreference implements
getContext().getResources().getColor(android.R.color.holo_red_light));
mSeekBar.setOnSeekBarChangeListener(this);
- mSeekBar.setProgress(intensityToPercent(mMinValue, mMaxValue, mOriginalValue));
+ mSeekBar.setMax(mMaxValue - mMinValue);
+ mSeekBar.setProgress(mOriginalValue - mMinValue);
+
+ getPreferenceManager().registerOnActivityStopListener(this);
}
@Override
@@ -134,7 +137,7 @@ public class VibratorIntensity extends DialogPreference implements
defaultsButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- mSeekBar.setProgress(intensityToPercent(mMinValue, mMaxValue, mDefaultValue));
+ mSeekBar.setProgress(mDefaultValue - mMinValue);
}
});
}
@@ -146,11 +149,22 @@ public class VibratorIntensity extends DialogPreference implements
if (positiveResult) {
// Store percent value in SharedPreferences object
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getContext());
- prefs.edit().putInt(PREF_NAME, mSeekBar.getProgress()).commit();
+ int intensity = mSeekBar.getProgress() + mMinValue;
+ int percent = intensityToPercent(mMinValue, mMaxValue, intensity);
+ prefs.edit().putInt(PREF_NAME, percent).commit();
+ CMSettings.Secure.putInt(getContext().getContentResolver(),
+ CMSettings.Secure.VIBRATOR_INTENSITY, intensity);
} else {
CMSettings.Secure.putInt(getContext().getContentResolver(),
CMSettings.Secure.VIBRATOR_INTENSITY, mOriginalValue);
}
+
+ getPreferenceManager().unregisterOnActivityStopListener(this);
+ }
+
+ @Override
+ public void onActivityStop() {
+ mHardware.setVibratorIntensity(mOriginalValue);
}
public static void restore(Context context) {
@@ -161,20 +175,17 @@ public class VibratorIntensity extends DialogPreference implements
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context);
int min = hardware.getVibratorMinIntensity();
int max = hardware.getVibratorMaxIntensity();
- int defaultValue = intensityToPercent(min, max,
- hardware.getVibratorDefaultIntensity());
- int percent = prefs.getInt(PREF_NAME, defaultValue);
+ int defaultIntensity = hardware.getVibratorDefaultIntensity();
+ int percent = prefs.getInt(PREF_NAME, intensityToPercent(min, max, defaultIntensity));
CMSettings.Secure.putInt(context.getContentResolver(),
- CMSettings.Secure.VIBRATOR_INTENSITY, percentToIntensity(min, max,
- percentToIntensity(min, max, percent)));
+ CMSettings.Secure.VIBRATOR_INTENSITY, percentToIntensity(min, max, percent));
}
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
- boolean shouldWarn =
- mWarningValue > 0 && progress >= intensityToPercent(mMinValue, mMaxValue,
- mWarningValue);
+ int intensity = progress + mMinValue;
+ boolean shouldWarn = mWarningValue > 0 && intensity >= mWarningValue;
if (mProgressDrawable != null) {
mProgressDrawable.setColorFilter(shouldWarn ? mRedFilter : null);
@@ -183,10 +194,7 @@ public class VibratorIntensity extends DialogPreference implements
mProgressThumb.setColorFilter(shouldWarn ? mRedFilter : null);
}
- CMSettings.Secure.putInt(getContext().getContentResolver(),
- CMSettings.Secure.VIBRATOR_INTENSITY, percentToIntensity(mMinValue, mMaxValue,
- progress));
- mValue.setText(String.format("%d%%", progress));
+ mValue.setText(String.format("%d%%", intensityToPercent(mMinValue, mMaxValue, intensity)));
}
@Override
@@ -196,12 +204,13 @@ public class VibratorIntensity extends DialogPreference implements
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
+ mHardware.setVibratorIntensity(seekBar.getProgress() + mMinValue);
Vibrator vib = (Vibrator) getContext().getSystemService(Context.VIBRATOR_SERVICE);
vib.vibrate(200);
}
- private static int intensityToPercent(double minValue, double maxValue, int value) {
- double percent = (value - minValue) * (100 / (maxValue - minValue));
+ private static int intensityToPercent(int minValue, int maxValue, int value) {
+ int percent = Math.round((value - minValue) * (100.f / (maxValue - minValue)));
if (percent > 100) {
percent = 100;
@@ -209,11 +218,11 @@ public class VibratorIntensity extends DialogPreference implements
percent = 0;
}
- return (int) percent;
+ return percent;
}
private static int percentToIntensity(int minValue, int maxValue, int percent) {
- int value = Math.round((((maxValue - minValue) * percent) / 100) + minValue);
+ int value = Math.round((((maxValue - minValue) * percent) / 100.f) + minValue);
if (value > maxValue) {
value = maxValue;