summaryrefslogtreecommitdiffstats
path: root/GNexusParts/src/com/cyanogenmod/settings/device
diff options
context:
space:
mode:
Diffstat (limited to 'GNexusParts/src/com/cyanogenmod/settings/device')
-rw-r--r--GNexusParts/src/com/cyanogenmod/settings/device/ColorHackPresets.java212
-rw-r--r--GNexusParts/src/com/cyanogenmod/settings/device/ColorTuningPreference.java51
-rw-r--r--GNexusParts/src/com/cyanogenmod/settings/device/GammaTuningPreference.java69
3 files changed, 327 insertions, 5 deletions
diff --git a/GNexusParts/src/com/cyanogenmod/settings/device/ColorHackPresets.java b/GNexusParts/src/com/cyanogenmod/settings/device/ColorHackPresets.java
new file mode 100644
index 0000000..4d0d02c
--- /dev/null
+++ b/GNexusParts/src/com/cyanogenmod/settings/device/ColorHackPresets.java
@@ -0,0 +1,212 @@
+/*
+ * Copyright (C) 2011 The CyanogenMod Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.cyanogenmod.settings.device;
+
+import android.content.Context;
+import android.content.SharedPreferences;
+import android.content.SharedPreferences.Editor;
+import android.preference.DialogPreference;
+import android.preference.PreferenceManager;
+import android.util.AttributeSet;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.TextView;
+import android.widget.Button;
+import android.util.Log;
+
+/**
+ * Special preference type that allows configuration of both the ring volume and
+ * notification volume.
+ */
+public class ColorHackPresets extends DialogPreference implements OnClickListener {
+
+ private static final String TAG = "PRESETS...";
+
+ private static final String[] FILE_PATH_GAMMA = new String[] {
+ "/sys/class/misc/samoled_color/red_v1_offset",
+ "/sys/class/misc/samoled_color/green_v1_offset",
+ "/sys/class/misc/samoled_color/blue_v1_offset"
+ };
+
+ private static final String[] FILE_PATH_MULTI = new String[] {
+ "/sys/class/misc/samoled_color/red_multiplier",
+ "/sys/class/misc/samoled_color/green_multiplier",
+ "/sys/class/misc/samoled_color/blue_multiplier"
+ };
+
+ // Track instances to know when to restore original color
+ // (when the orientation changes, a new dialog is created before the old one
+ // is destroyed)
+ private static int sInstances = 0;
+
+ // Align MAX_VALUE with Voodoo Control settings
+ private static final int MAX_VALUE = Integer.MAX_VALUE - 2;
+
+ public ColorHackPresets(Context context, AttributeSet attrs) {
+ super(context, attrs);
+
+ setDialogLayoutResource(R.layout.preference_colorgamma_presets);
+ }
+
+ @Override
+ protected void onBindDialogView(View view) {
+ super.onBindDialogView(view);
+
+ sInstances++;
+
+ SetupButtonClickListeners(view);
+ }
+
+ private void SetupButtonClickListeners(View view) {
+ Button[] mPresets = new Button[6];
+
+ mPresets[0] = (Button)view.findViewById(R.id.btnPreset1);
+ mPresets[1] = (Button)view.findViewById(R.id.btnPreset2);
+ mPresets[2] = (Button)view.findViewById(R.id.btnPreset3);
+ mPresets[3] = (Button)view.findViewById(R.id.btnPreset4);
+ mPresets[4] = (Button)view.findViewById(R.id.btnPreset5);
+ mPresets[5] = (Button)view.findViewById(R.id.btnPreset6);
+ for (int i = 0; i < 6; i++) {
+ mPresets[i].setOnClickListener(this);
+ }
+ }
+
+ @Override
+ protected void onDialogClosed(boolean positiveResult) {
+ super.onDialogClosed(positiveResult);
+
+ sInstances--;
+
+ }
+
+ /**
+ * Restore screen color tuning from SharedPreferences. (Write to kernel.)
+ *
+ * @param context The context to read the SharedPreferences from
+ */
+ public static void restore(Context context) {
+ if (!isSupported()) {
+ return;
+ }
+
+ }
+
+ /**
+ * Check whether the running kernel supports color tuning or not.
+ *
+ * @return Whether color tuning is supported or not
+ */
+ public static boolean isSupported() {
+ boolean supported = true;
+ for (String filePath : FILE_PATH_GAMMA) {
+ if (!Utils.fileExists(filePath)) {
+ supported = false;
+ }
+ }
+
+ return supported;
+ }
+
+ public void onClick(View v) {
+ switch(v.getId()){
+ case R.id.btnPreset1:
+ Preset1();
+ break;
+ case R.id.btnPreset2:
+ Preset2();
+ break;
+ case R.id.btnPreset3:
+ Preset3();
+ break;
+ case R.id.btnPreset4:
+ Preset4();
+ break;
+ case R.id.btnPreset5:
+ Preset5();
+ break;
+ case R.id.btnPreset6:
+ Preset6();
+ break;
+ }
+ }
+
+ private void WriteMultiplier(Double fValue , int iPos) {
+ int iValue = (int) ((double) MAX_VALUE * fValue);
+ Utils.writeColor(FILE_PATH_MULTI[iPos], iValue);
+ Log.i(TAG,"KalimAz: Multiplier: " + iPos+ " Value " + iValue );
+ }
+
+ private void WriteGamma(int iValue , int iPos) {
+ Utils.writeValue(FILE_PATH_GAMMA[iPos], String.valueOf((long) iValue));
+ Log.i(TAG,"KalimAz: Gamma: " + iPos+ " Value " + iValue );
+ }
+
+ private void Preset1() {
+ WriteMultiplier(1.0, 0);
+ WriteMultiplier(1.0, 1);
+ WriteMultiplier(1.0, 2);
+ WriteGamma(0, 0);
+ WriteGamma(0, 1);
+ WriteGamma(0, 2);
+ }
+
+ private void Preset2() {
+ WriteMultiplier(0.8575, 0);
+ WriteMultiplier(0.8575, 1);
+ WriteMultiplier(0.8575, 2);
+ WriteGamma(-12, 0);
+ WriteGamma(12, 1);
+ WriteGamma(-12, 2);
+ }
+
+ private void Preset3() {
+ WriteMultiplier(0.458602179, 0);
+ WriteMultiplier(0.6311828147, 1);
+ WriteMultiplier(0.82258, 2);
+ WriteGamma(-31, 0);
+ WriteGamma(-18, 1);
+ WriteGamma(-0, 2);
+ }
+
+ private void Preset4() {
+ WriteMultiplier(0.7231, 0);
+ WriteMultiplier(0.7016, 1);
+ WriteMultiplier(0.6532, 2);
+ WriteGamma(-31, 0);
+ WriteGamma(-30, 1);
+ WriteGamma(-14, 2);
+ }
+
+ private void Preset5() {
+ WriteMultiplier(0.6666, 0);
+ WriteMultiplier(0.6666, 1);
+ WriteMultiplier(0.8333, 2);
+ WriteGamma(-44, 0);
+ WriteGamma(-44, 1);
+ WriteGamma(-7, 2);
+ }
+
+ private void Preset6() {
+ WriteMultiplier(1.0, 0);
+ WriteMultiplier(0.7688, 1);
+ WriteMultiplier(0.2473, 2);
+ WriteGamma(-57, 0);
+ WriteGamma(-75, 1);
+ WriteGamma(45, 2);
+ }
+
+}
diff --git a/GNexusParts/src/com/cyanogenmod/settings/device/ColorTuningPreference.java b/GNexusParts/src/com/cyanogenmod/settings/device/ColorTuningPreference.java
index 085cae7..0ca7ae2 100644
--- a/GNexusParts/src/com/cyanogenmod/settings/device/ColorTuningPreference.java
+++ b/GNexusParts/src/com/cyanogenmod/settings/device/ColorTuningPreference.java
@@ -23,15 +23,17 @@ import android.preference.DialogPreference;
import android.preference.PreferenceManager;
import android.util.AttributeSet;
import android.view.View;
+import android.view.View.OnClickListener;
import android.widget.SeekBar;
import android.widget.TextView;
import android.util.Log;
+import android.widget.Button;
/**
* Special preference type that allows configuration of both the ring volume and
* notification volume.
*/
-public class ColorTuningPreference extends DialogPreference {
+public class ColorTuningPreference extends DialogPreference implements OnClickListener {
private static final String TAG = "COLOR...";
@@ -80,6 +82,16 @@ public class ColorTuningPreference extends DialogPreference {
TextView valueDisplay = (TextView) view.findViewById(VALUE_DISPLAY_ID[i]);
mSeekBars[i] = new ColorSeekBar(seekBar, valueDisplay, FILE_PATH[i]);
}
+ SetupButtonClickListeners(view);
+ }
+
+ private void SetupButtonClickListeners(View view) {
+ Button mDefaultButton = (Button)view.findViewById(R.id.btnColorDefault);
+ Button mCMButton = (Button)view.findViewById(R.id.btnColorCM);
+ Button mDarkButton = (Button)view.findViewById(R.id.btnColorDark);
+ mDefaultButton.setOnClickListener(this);
+ mCMButton.setOnClickListener(this);
+ mDarkButton.setOnClickListener(this);
}
@Override
@@ -111,6 +123,7 @@ public class ColorTuningPreference extends DialogPreference {
}
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+
for (String filePath : FILE_PATH) {
String sDefaultValue = Utils.readOneLine(filePath);
Log.d(TAG,"INIT: " + sDefaultValue);
@@ -210,6 +223,42 @@ public class ColorTuningPreference extends DialogPreference {
mValueDisplay.setText(String.format("%.10f", (double) progress / MAX_VALUE));
}
+ public void SetNewValue(int iValue) {
+ mOriginal = iValue;
+ reset();
+ }
+
}
+ public void onClick(View v) {
+ switch(v.getId()){
+ case R.id.btnColorDefault:
+ SetDefaultSettings();
+ break;
+ case R.id.btnColorCM:
+ SetCMSettings();
+ break;
+ case R.id.btnColorDark:
+ SetDarkSettings();
+ break;
+ }
+ }
+
+ private void SetCMSettings() {
+ mSeekBars[0].SetNewValue(1766478464);
+ mSeekBars[1].SetNewValue(1766478464);
+ mSeekBars[2].SetNewValue(1766478464);
+ }
+
+ private void SetDarkSettings() {
+ mSeekBars[0].SetNewValue(877466432);
+ mSeekBars[1].SetNewValue(877466432);
+ mSeekBars[2].SetNewValue(877466432);
+ }
+
+ private void SetDefaultSettings() {
+ mSeekBars[0].SetNewValue(MAX_VALUE);
+ mSeekBars[1].SetNewValue(MAX_VALUE);
+ mSeekBars[2].SetNewValue(MAX_VALUE);
+ }
}
diff --git a/GNexusParts/src/com/cyanogenmod/settings/device/GammaTuningPreference.java b/GNexusParts/src/com/cyanogenmod/settings/device/GammaTuningPreference.java
index bfbc62e..839a02b 100644
--- a/GNexusParts/src/com/cyanogenmod/settings/device/GammaTuningPreference.java
+++ b/GNexusParts/src/com/cyanogenmod/settings/device/GammaTuningPreference.java
@@ -23,14 +23,17 @@ import android.preference.DialogPreference;
import android.preference.PreferenceManager;
import android.util.AttributeSet;
import android.view.View;
+import android.view.View.OnClickListener;
import android.widget.SeekBar;
import android.widget.TextView;
+import android.widget.Button;
+import android.util.Log;
/**
* Special preference type that allows configuration of both the ring volume and
* notification volume.
*/
-public class GammaTuningPreference extends DialogPreference {
+public class GammaTuningPreference extends DialogPreference implements OnClickListener {
private static final String TAG = "GAMMA...";
@@ -54,9 +57,9 @@ public class GammaTuningPreference extends DialogPreference {
private GammaSeekBar mSeekBars[] = new GammaSeekBar[3];
- private static final int MAX_VALUE = 80;
+ private static final int MAX_VALUE = 200;
- private static final int OFFSET_VALUE = 0;
+ private static final int OFFSET_VALUE = 100;
// Track instances to know when to restore original color
// (when the orientation changes, a new dialog is created before the old one
@@ -80,6 +83,16 @@ public class GammaTuningPreference extends DialogPreference {
TextView valueDisplay = (TextView) view.findViewById(VALUE_DISPLAY_ID[i]);
mSeekBars[i] = new GammaSeekBar(seekBar, valueDisplay, FILE_PATH[i]);
}
+ SetupButtonClickListeners(view);
+ }
+
+ private void SetupButtonClickListeners(View view) {
+ Button mDefaultButton = (Button)view.findViewById(R.id.btnGammaDefault);
+ Button mCMButton = (Button)view.findViewById(R.id.btnGammaCM);
+ Button mBrightButton = (Button)view.findViewById(R.id.btnGammaBright);
+ mDefaultButton.setOnClickListener(this);
+ mCMButton.setOnClickListener(this);
+ mBrightButton.setOnClickListener(this);
}
@Override
@@ -110,10 +123,21 @@ public class GammaTuningPreference extends DialogPreference {
}
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(context);
+
+ Boolean bFirstTime = sharedPrefs.getBoolean("FirstTimeGamma", true);
for (String filePath : FILE_PATH) {
String sDefaultValue = Utils.readOneLine(filePath);
int iValue = sharedPrefs.getInt(filePath, Integer.valueOf(sDefaultValue));
- Utils.writeValue(filePath, String.valueOf((long) iValue));
+ if (bFirstTime)
+ Utils.writeValue(filePath, "0");
+ else
+ Utils.writeValue(filePath, String.valueOf((long) iValue));
+ }
+ if (bFirstTime)
+ {
+ SharedPreferences.Editor editor = sharedPrefs.edit();
+ editor.putBoolean("FirstTimeGamma", false);
+ editor.commit();
}
}
@@ -206,6 +230,43 @@ public class GammaTuningPreference extends DialogPreference {
mValueDisplay.setText(String.format("%d", (int) progress));
}
+ public void SetNewValue(int iValue) {
+ mOriginal = iValue;
+ reset();
+ }
+
+ }
+
+ public void onClick(View v) {
+ switch(v.getId()){
+ case R.id.btnGammaDefault:
+ SetDefaultSettings();
+ break;
+ case R.id.btnGammaCM:
+ SetCMSettings();
+ break;
+ case R.id.btnGammaBright:
+ SetSBrightSettings();
+ break;
+ }
+ }
+
+ private void SetCMSettings() {
+ mSeekBars[0].SetNewValue(-15);
+ mSeekBars[1].SetNewValue(15);
+ mSeekBars[2].SetNewValue(-10);
+ }
+
+ private void SetSBrightSettings() {
+ mSeekBars[0].SetNewValue(6);
+ mSeekBars[1].SetNewValue(25);
+ mSeekBars[2].SetNewValue(7);
+ }
+
+ private void SetDefaultSettings() {
+ mSeekBars[0].SetNewValue(0);
+ mSeekBars[1].SetNewValue(0);
+ mSeekBars[2].SetNewValue(0);
}
}