diff options
Diffstat (limited to 'src/com/android/settings/livedisplay/LiveDisplay.java')
-rw-r--r-- | src/com/android/settings/livedisplay/LiveDisplay.java | 140 |
1 files changed, 59 insertions, 81 deletions
diff --git a/src/com/android/settings/livedisplay/LiveDisplay.java b/src/com/android/settings/livedisplay/LiveDisplay.java index 7000cc8..a3f4636 100644 --- a/src/com/android/settings/livedisplay/LiveDisplay.java +++ b/src/com/android/settings/livedisplay/LiveDisplay.java @@ -15,20 +15,19 @@ */ package com.android.settings.livedisplay; -import static cyanogenmod.hardware.CMHardwareManager.FEATURE_ADAPTIVE_BACKLIGHT; -import static cyanogenmod.hardware.CMHardwareManager.FEATURE_COLOR_ENHANCEMENT; -import static cyanogenmod.hardware.CMHardwareManager.FEATURE_DISPLAY_MODES; -import static cyanogenmod.hardware.CMHardwareManager.FEATURE_DISPLAY_GAMMA_CALIBRATION; -import static cyanogenmod.hardware.CMHardwareManager.FEATURE_SUNLIGHT_ENHANCEMENT; +import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_CABC; +import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_COLOR_ADJUSTMENT; +import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_COLOR_ENHANCEMENT; +import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_DISPLAY_MODES; +import static cyanogenmod.hardware.LiveDisplayManager.FEATURE_PICTURE_ADJUSTMENT; +import static cyanogenmod.hardware.LiveDisplayManager.MODE_OFF; +import static cyanogenmod.hardware.LiveDisplayManager.MODE_OUTDOOR; -import android.app.Activity; -import android.database.ContentObserver; import android.content.ContentResolver; import android.content.Context; import android.content.res.Resources; import android.database.ContentObserver; import android.net.Uri; -import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.UserHandle; @@ -38,7 +37,6 @@ import android.preference.PreferenceCategory; import android.preference.PreferenceScreen; import android.preference.SwitchPreference; import android.provider.SearchIndexableResource; -import android.provider.Settings; import android.util.Log; import com.android.internal.util.ArrayUtils; @@ -48,14 +46,17 @@ import com.android.settings.Utils; import com.android.settings.search.BaseSearchIndexProvider; import com.android.settings.search.Indexable; -import cyanogenmod.hardware.CMHardwareManager; -import cyanogenmod.hardware.DisplayMode; -import cyanogenmod.providers.CMSettings; import org.cyanogenmod.internal.logging.CMMetricsLogger; import java.util.ArrayList; import java.util.List; +import cyanogenmod.hardware.CMHardwareManager; +import cyanogenmod.hardware.DisplayMode; +import cyanogenmod.hardware.LiveDisplayConfig; +import cyanogenmod.hardware.LiveDisplayManager; +import cyanogenmod.providers.CMSettings; + public class LiveDisplay extends SettingsPreferenceFragment implements Preference.OnPreferenceChangeListener, Indexable { @@ -72,17 +73,10 @@ public class LiveDisplay extends SettingsPreferenceFragment implements private static final String KEY_LIVE_DISPLAY_TEMPERATURE = "live_display_color_temperature"; private static final String KEY_DISPLAY_COLOR = "color_calibration"; - private static final String KEY_DISPLAY_GAMMA = "gamma_tuning"; - private static final String KEY_SCREEN_COLOR_SETTINGS = "screencolor_settings"; + private static final String KEY_PICTURE_ADJUSTMENT = "picture_adjustment"; private static final String KEY_LIVE_DISPLAY_COLOR_PROFILE = "live_display_color_profile"; - public static final int MODE_OFF = 0; - public static final int MODE_NIGHT = 1; - public static final int MODE_AUTO = 2; - public static final int MODE_OUTDOOR = 3; - public static final int MODE_DAY = 4; - private final Handler mHandler = new Handler(); private final SettingsObserver mObserver = new SettingsObserver(); @@ -92,8 +86,9 @@ public class LiveDisplay extends SettingsPreferenceFragment implements private SwitchPreference mLowPower; private SwitchPreference mOutdoorMode; - private PreferenceScreen mScreenColorSettings; + private PictureAdjustment mPictureAdjustment; private DisplayTemperature mDisplayTemperature; + private DisplayColor mDisplayColor; private ListPreference mColorProfile; private String[] mColorProfileSummaries; @@ -102,26 +97,21 @@ public class LiveDisplay extends SettingsPreferenceFragment implements private String[] mModeValues; private String[] mModeSummaries; - private int mDefaultDayTemperature; - private int mDefaultNightTemperature; - private boolean mHasDisplayModes = false; + private LiveDisplayManager mLiveDisplayManager; + private LiveDisplayConfig mConfig; + private CMHardwareManager mHardware; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - final Activity activity = getActivity(); - final ContentResolver resolver = activity.getContentResolver(); final Resources res = getResources(); - mDefaultDayTemperature = res.getInteger( - org.cyanogenmod.platform.internal.R.integer.config_dayColorTemperature); - mDefaultNightTemperature = res.getInteger( - org.cyanogenmod.platform.internal.R.integer.config_nightColorTemperature); - - mHardware = CMHardwareManager.getInstance(activity); + mHardware = CMHardwareManager.getInstance(getActivity()); + mLiveDisplayManager = LiveDisplayManager.getInstance(getActivity()); + mConfig = mLiveDisplayManager.getConfig(); addPreferencesFromResource(R.xml.livedisplay); @@ -130,9 +120,8 @@ public class LiveDisplay extends SettingsPreferenceFragment implements PreferenceCategory advancedPrefs = (PreferenceCategory) findPreference(KEY_CATEGORY_ADVANCED); - int adaptiveMode = CMSettings.System.getIntForUser(resolver, - CMSettings.System.DISPLAY_TEMPERATURE_MODE, - 0, UserHandle.USER_CURRENT); + int adaptiveMode = mLiveDisplayManager.getMode(); + mLiveDisplay = (ListPreference) findPreference(KEY_LIVE_DISPLAY); mLiveDisplay.setValue(String.valueOf(adaptiveMode)); @@ -144,7 +133,7 @@ public class LiveDisplay extends SettingsPreferenceFragment implements org.cyanogenmod.platform.internal.R.array.live_display_summaries); // Remove outdoor mode from lists if there is no support - if (!mHardware.isSupported(FEATURE_SUNLIGHT_ENHANCEMENT)) { + if (!mConfig.hasFeature(LiveDisplayManager.MODE_OUTDOOR)) { int idx = ArrayUtils.indexOf(mModeValues, String.valueOf(MODE_OUTDOOR)); String[] entriesTemp = new String[mModeEntries.length - 1]; String[] valuesTemp = new String[mModeValues.length - 1]; @@ -172,7 +161,7 @@ public class LiveDisplay extends SettingsPreferenceFragment implements mColorProfile = (ListPreference) findPreference(KEY_LIVE_DISPLAY_COLOR_PROFILE); if (liveDisplayPrefs != null && mColorProfile != null - && (!mHardware.isSupported(FEATURE_DISPLAY_MODES) || !updateDisplayModes())) { + && (!mConfig.hasFeature(FEATURE_DISPLAY_MODES) || !updateDisplayModes())) { liveDisplayPrefs.removePreference(mColorProfile); } else { mHasDisplayModes = true; @@ -181,39 +170,37 @@ public class LiveDisplay extends SettingsPreferenceFragment implements mOutdoorMode = (SwitchPreference) findPreference(KEY_LIVE_DISPLAY_AUTO_OUTDOOR_MODE); if (liveDisplayPrefs != null && mOutdoorMode != null - && !mHardware.isSupported(FEATURE_SUNLIGHT_ENHANCEMENT)) { + && !mConfig.hasFeature(MODE_OUTDOOR)) { liveDisplayPrefs.removePreference(mOutdoorMode); mOutdoorMode = null; } mLowPower = (SwitchPreference) findPreference(KEY_LIVE_DISPLAY_LOW_POWER); if (advancedPrefs != null && mLowPower != null - && !mHardware.isSupported(FEATURE_ADAPTIVE_BACKLIGHT)) { + && !mConfig.hasFeature(FEATURE_CABC)) { advancedPrefs.removePreference(mLowPower); mLowPower = null; } mColorEnhancement = (SwitchPreference) findPreference(KEY_LIVE_DISPLAY_COLOR_ENHANCE); if (advancedPrefs != null && mColorEnhancement != null - && !mHardware.isSupported(FEATURE_COLOR_ENHANCEMENT)) { + && !mConfig.hasFeature(FEATURE_COLOR_ENHANCEMENT)) { advancedPrefs.removePreference(mColorEnhancement); mColorEnhancement = null; } - if (advancedPrefs != null - && !mHardware.isSupported(FEATURE_DISPLAY_GAMMA_CALIBRATION)) { - Preference gammaPref = findPreference(KEY_DISPLAY_GAMMA); - if (gammaPref != null) { - advancedPrefs.removePreference(gammaPref); - } + mPictureAdjustment = (PictureAdjustment) findPreference(KEY_PICTURE_ADJUSTMENT); + if (advancedPrefs != null && mPictureAdjustment != null && + !mConfig.hasFeature(LiveDisplayManager.FEATURE_PICTURE_ADJUSTMENT)) { + advancedPrefs.removePreference(mPictureAdjustment); + mPictureAdjustment = null; } - mScreenColorSettings = (PreferenceScreen) findPreference(KEY_SCREEN_COLOR_SETTINGS); - if (advancedPrefs != null) { - if (mScreenColorSettings != null && - (mHasDisplayModes ||!isPostProcessingSupported(getActivity()))) { - advancedPrefs.removePreference(mScreenColorSettings); - } + mDisplayColor = (DisplayColor) findPreference(KEY_DISPLAY_COLOR); + if (advancedPrefs != null && mDisplayColor != null && + !mConfig.hasFeature(LiveDisplayManager.FEATURE_COLOR_ADJUSTMENT)) { + advancedPrefs.removePreference(mDisplayColor); + mDisplayColor = null; } } @@ -254,7 +241,8 @@ public class LiveDisplay extends SettingsPreferenceFragment implements return false; } - final DisplayMode cur = mHardware.getDefaultDisplayMode(); + final DisplayMode cur = mHardware.getCurrentDisplayMode() != null + ? mHardware.getCurrentDisplayMode() : mHardware.getDefaultDisplayMode(); int curId = -1; String[] entries = new String[modes.length]; String[] values = new String[modes.length]; @@ -274,7 +262,7 @@ public class LiveDisplay extends SettingsPreferenceFragment implements mColorProfileSummaries[i] = summary; if (cur != null && modes[i].id == cur.id) { - curId = -1; + curId = cur.id; } } mColorProfile.setEntries(entries); @@ -292,7 +280,8 @@ public class LiveDisplay extends SettingsPreferenceFragment implements } if (value == null) { - DisplayMode cur = mHardware.getDefaultDisplayMode(); + DisplayMode cur = mHardware.getCurrentDisplayMode() != null + ? mHardware.getCurrentDisplayMode() : mHardware.getDefaultDisplayMode(); if (cur != null && cur.id >= 0) { value = String.valueOf(cur.id); } @@ -310,9 +299,7 @@ public class LiveDisplay extends SettingsPreferenceFragment implements } private void updateModeSummary() { - int mode = CMSettings.System.getIntForUser(getContentResolver(), - CMSettings.System.DISPLAY_TEMPERATURE_MODE, - MODE_OFF, UserHandle.USER_CURRENT); + int mode = mLiveDisplayManager.getMode(); int index = ArrayUtils.indexOf(mModeValues, String.valueOf(mode)); if (index < 0) { @@ -331,25 +318,19 @@ public class LiveDisplay extends SettingsPreferenceFragment implements } private void updateTemperatureSummary() { - int day = CMSettings.System.getIntForUser(getContentResolver(), - CMSettings.System.DISPLAY_TEMPERATURE_DAY, - mDefaultDayTemperature, - UserHandle.USER_CURRENT); - int night = CMSettings.System.getIntForUser(getContentResolver(), - CMSettings.System.DISPLAY_TEMPERATURE_NIGHT, - mDefaultNightTemperature, - UserHandle.USER_CURRENT); + int day = mLiveDisplayManager.getDayColorTemperature(); + int night = mLiveDisplayManager.getNightColorTemperature(); mDisplayTemperature.setSummary(getResources().getString( - R.string.live_display_color_temperature_summary, day, night)); + R.string.live_display_color_temperature_summary, + mDisplayTemperature.roundUp(day), + mDisplayTemperature.roundUp(night))); } @Override public boolean onPreferenceChange(Preference preference, Object objValue) { if (preference == mLiveDisplay) { - CMSettings.System.putIntForUser(getContentResolver(), - CMSettings.System.DISPLAY_TEMPERATURE_MODE, - Integer.valueOf((String)objValue), UserHandle.USER_CURRENT); + mLiveDisplayManager.setMode(Integer.valueOf((String)objValue)); } else if (preference == mColorProfile) { int id = Integer.valueOf((String)objValue); Log.i("LiveDisplay", "Setting mode: " + id); @@ -401,8 +382,6 @@ public class LiveDisplay extends SettingsPreferenceFragment implements public static final Indexable.SearchIndexProvider SEARCH_INDEX_DATA_PROVIDER = new BaseSearchIndexProvider() { - private boolean mHasSunlightEnhancement, mHasColorEnhancement, mHasLowPower; - private boolean mHasDisplayGamma; @Override public List<SearchIndexableResource> getXmlResourcesToIndex(Context context, @@ -419,28 +398,27 @@ public class LiveDisplay extends SettingsPreferenceFragment implements @Override public List<String> getNonIndexableKeys(Context context) { - CMHardwareManager hardware = CMHardwareManager.getInstance(context); + final CMHardwareManager hardware = CMHardwareManager.getInstance(context); + final LiveDisplayConfig config = LiveDisplayManager.getInstance(context).getConfig(); ArrayList<String> result = new ArrayList<String>(); if (!hardware.isSupported(FEATURE_DISPLAY_MODES)) { result.add(KEY_LIVE_DISPLAY_COLOR_PROFILE); } - if (!hardware.isSupported(FEATURE_SUNLIGHT_ENHANCEMENT)) { + if (!config.hasFeature(MODE_OUTDOOR)) { result.add(KEY_LIVE_DISPLAY_AUTO_OUTDOOR_MODE); } - if (!hardware.isSupported(FEATURE_COLOR_ENHANCEMENT)) { + if (!config.hasFeature(FEATURE_COLOR_ENHANCEMENT)) { result.add(KEY_LIVE_DISPLAY_COLOR_ENHANCE); } - if (!hardware.isSupported(FEATURE_ADAPTIVE_BACKLIGHT)) { + if (!config.hasFeature(FEATURE_CABC)) { result.add(KEY_LIVE_DISPLAY_LOW_POWER); } - if (!isPostProcessingSupported(context)) { - result.add(KEY_SCREEN_COLOR_SETTINGS); - } else { + if (!config.hasFeature(FEATURE_COLOR_ADJUSTMENT)) { result.add(KEY_DISPLAY_COLOR); } - if (!hardware.isSupported(FEATURE_DISPLAY_GAMMA_CALIBRATION)) { - result.add(KEY_DISPLAY_GAMMA); + if (!config.hasFeature(FEATURE_PICTURE_ADJUSTMENT)) { + result.add(KEY_PICTURE_ADJUSTMENT); } return result; } |