From a9851ff357cbf24dc3dea6fad0e2bddf77d99548 Mon Sep 17 00:00:00 2001 From: KalimochoAz Date: Tue, 24 Apr 2012 23:08:41 +0200 Subject: Add presets to gamma and color hack Ad a screen for those settings Change-Id: Ifb6b4258ab3fa4c64f892cbfb7cf6a7d4bcdb9cf --- .../settings/device/ColorHackPresets.java | 212 +++++++++++++++++++++ .../settings/device/ColorTuningPreference.java | 51 ++++- .../settings/device/GammaTuningPreference.java | 69 ++++++- 3 files changed, 327 insertions(+), 5 deletions(-) create mode 100644 GNexusParts/src/com/cyanogenmod/settings/device/ColorHackPresets.java (limited to 'GNexusParts/src/com') 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); } } -- cgit v1.1