/* * Copyright (C) 2015-2016 Willi Ye <williye97@gmail.com> * * This file is part of Kernel Adiutor. * * Kernel Adiutor is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Kernel Adiutor is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Kernel Adiutor. If not, see <http://www.gnu.org/licenses/>. * */ package com.grarak.kerneladiutor.fragments.kernel; import android.os.Bundle; import android.support.annotation.Nullable; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.grarak.kerneladiutor.R; import com.grarak.kerneladiutor.fragments.ApplyOnBootFragment; import com.grarak.kerneladiutor.fragments.BaseFragment; import com.grarak.kerneladiutor.fragments.RecyclerViewFragment; import com.grarak.kerneladiutor.utils.Prefs; import com.grarak.kerneladiutor.utils.Utils; import com.grarak.kerneladiutor.utils.kernel.screen.Calibration; import com.grarak.kerneladiutor.utils.kernel.screen.Gamma; import com.grarak.kerneladiutor.utils.kernel.screen.GammaProfiles; import com.grarak.kerneladiutor.utils.kernel.screen.Misc; import com.grarak.kerneladiutor.views.ColorTable; import com.grarak.kerneladiutor.views.recyclerview.CardView; import com.grarak.kerneladiutor.views.recyclerview.DropDownView; import com.grarak.kerneladiutor.views.recyclerview.GenericSelectView; import com.grarak.kerneladiutor.views.recyclerview.RecyclerViewItem; import com.grarak.kerneladiutor.views.recyclerview.SeekBarView; import com.grarak.kerneladiutor.views.recyclerview.SwitchView; import java.util.ArrayList; import java.util.List; /** * Created by willi on 31.05.16. */ public class ScreenFragment extends RecyclerViewFragment { private SeekBarView mColors[]; private SeekBarView mMinColor; private GenericSelectView mKGammaBlue; private GenericSelectView mKGammaGreen; private GenericSelectView mKGammaRed; private GenericSelectView mGammaControlRedGreys; private GenericSelectView mGammaControlRedMids; private GenericSelectView mGammaControlRedBlacks; private GenericSelectView mGammaControlRedWhites; private GenericSelectView mGammaControlGreenGreys; private GenericSelectView mGammaControlGreenMids; private GenericSelectView mGammaControlGreenBlacks; private GenericSelectView mGammaControlGreenWhites; private GenericSelectView mGammaControlBlueGreys; private GenericSelectView mGammaControlBlueMids; private GenericSelectView mGammaControlBlueBlacks; private GenericSelectView mGammaControlBlueWhites; private GenericSelectView mGammaControlContrast; private GenericSelectView mGammaControlBrightness; private GenericSelectView mGammaControlSaturation; private GenericSelectView mDsiPanelBlueNegative; private GenericSelectView mDsiPanelBluePositive; private GenericSelectView mDsiPanelGreenNegative; private GenericSelectView mDsiPanelGreenPositive; private GenericSelectView mDsiPanelRedNegative; private GenericSelectView mDsiPanelRedPositive; private GenericSelectView mDsiPanelWhitePoint; @Override protected void init() { super.init(); addViewPagerFragment(ApplyOnBootFragment.newInstance(this)); addViewPagerFragment(new ColorTableFragment()); } @Override protected void addItems(List<RecyclerViewItem> items) { screenColorInit(items); List<RecyclerViewItem> gammas = new ArrayList<>(); if (Gamma.hasKGamma()) { kgammaInit(gammas); } else if (Gamma.hasGammaControl()) { gammacontrolInit(gammas); } else if (Gamma.hasDsiPanel()) { dsipanelInit(gammas); } if (gammas.size() > 0) { CardView gamma = new CardView(getActivity()); gamma.setTitle(getString(R.string.gamma)); for (RecyclerViewItem item : gammas) { gamma.addItem(item); } items.add(gamma); } lcdBackLightInit(items); backlightDimmerInit(items); if (Misc.hasNegativeToggle()) { negativeToggleInit(items); } mdnieGlobalInit(items); if (Misc.hasGloveMode()) { gloveModeInit(items); } } private void screenColorInit(List<RecyclerViewItem> items) { if (Calibration.hasColors()) { CardView screenColor = new CardView(getActivity()); screenColor.setTitle(getString(R.string.screen_color)); List<String> colors = Calibration.getColors(); final List<String> limits = Calibration.getLimits(); mColors = new SeekBarView[colors.size()]; for (int i = 0; i < colors.size(); i++) { mColors[i] = new SeekBarView(); mColors[i].setTitle(getResources().getStringArray(R.array.colors)[i]); mColors[i].setItems(limits); mColors[i].setProgress(limits.indexOf(colors.get(i))); mColors[i].setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onMove(SeekBarView seekBarView, int position, String value) { if (mMinColor != null && position < mMinColor.getProgress()) { mMinColor.setProgress(position); } } @Override public void onStop(SeekBarView seekBarView, int position, String value) { if (mMinColor != null) { int current = Utils.strToInt(Calibration.getLimits().get(position)); if (Calibration.getMinColor() > current) { Calibration.setMinColor(current, getActivity()); } } int r = mColors[0].getProgress(); int g = mColors[1].getProgress(); int b = mColors[2].getProgress(); Calibration.setColors(limits.get(r) + " " + limits.get(g) + " " + limits.get(b), getActivity()); } }); screenColor.addItem(mColors[i]); } items.add(screenColor); if (Calibration.hasMinColor()) { mMinColor = new SeekBarView(); mMinColor.setTitle(getString(R.string.min_rgb)); mMinColor.setItems(Calibration.getLimits()); mMinColor.setProgress(Calibration.getLimits().indexOf(String.valueOf(Calibration.getMinColor()))); mMinColor.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Calibration.setMinColor(Utils.strToInt(value), getActivity()); StringBuilder colors = new StringBuilder(); for (String color : Calibration.getColors()) { if (Utils.strToInt(value) > Utils.strToInt(color)) { colors.append(value).append(" "); } else { colors.append(color).append(" "); } } colors.setLength(colors.length() - 1); Calibration.setColors(colors.toString(), getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { for (SeekBarView color : mColors) { if (position > color.getProgress()) { color.setProgress(position); } } } }); items.add(mMinColor); } } if (Calibration.hasInvertScreen()) { SwitchView invertScreen = new SwitchView(); invertScreen.setSummary(getString(R.string.invert_screen)); invertScreen.setChecked(Calibration.isInvertScreenEnabled()); invertScreen.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Calibration.enableInvertScreen(isChecked, getActivity()); } }); items.add(invertScreen); } if (Calibration.hasSaturationIntensity()) { int saturation = Calibration.getSaturationIntensity(); final SeekBarView saturationIntensity = new SeekBarView(); saturationIntensity.setTitle(getString(R.string.saturation_intensity)); saturationIntensity.setMax(158); saturationIntensity.setProgress(saturation == 128 ? 30 : saturation - 225); saturationIntensity.setEnabled(saturation != 128); saturationIntensity.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Calibration.setSaturationIntensity(position + 225, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); items.add(saturationIntensity); SwitchView grayscaleMode = new SwitchView(); grayscaleMode.setSummary(getString(R.string.grayscale_mode)); grayscaleMode.setChecked(saturation == 128); grayscaleMode.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { saturationIntensity.setEnabled(!isChecked); Calibration.enableGrayscaleMode(isChecked, getActivity()); if (!isChecked) { saturationIntensity.setProgress(30); } } }); items.add(grayscaleMode); } if (Calibration.hasScreenHue()) { SeekBarView screenHue = new SeekBarView(); screenHue.setTitle(getString(R.string.screen_hue)); screenHue.setSummary(getString(R.string.screen_hue_summary)); screenHue.setMax(1536); screenHue.setProgress(Calibration.getScreenHue()); screenHue.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Calibration.setScreenHue(position, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); items.add(screenHue); } if (Calibration.hasScreenValue()) { SeekBarView screenValue = new SeekBarView(); screenValue.setTitle(getString(R.string.screen_value)); screenValue.setMax(255); screenValue.setProgress(Calibration.getScreenValue() - 128); screenValue.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Calibration.setScreenValue(position + 128, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); items.add(screenValue); } if (Calibration.hasScreenContrast()) { SeekBarView screenContrast = new SeekBarView(); screenContrast.setTitle(getString(R.string.screen_contrast)); screenContrast.setMax(255); screenContrast.setProgress(Calibration.getScreenContrast() - 128); screenContrast.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Calibration.setScreenContrast(position + 128, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); items.add(screenContrast); } if (Calibration.hasScreenHBM()) { SwitchView screenHBM = new SwitchView(); screenHBM.setSummary(getString(R.string.high_brightness_mode)); screenHBM.setChecked(Calibration.isScreenHBMEnabled()); screenHBM.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Calibration.enableScreenHBM(isChecked, getActivity()); } }); items.add(screenHBM); } if (Calibration.hasSRGB()) { SwitchView sRGB = new SwitchView(); sRGB.setSummary(getString(R.string.srgb)); sRGB.setChecked(Calibration.isSRGBEnabled()); sRGB.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Calibration.enableSRGB(isChecked, getActivity()); } }); items.add(sRGB); } } private void kgammaInit(List<RecyclerViewItem> items) { if (mKGammaBlue == null) { mKGammaBlue = new GenericSelectView(); mKGammaBlue.setSummary(getString(R.string.blue)); mKGammaBlue.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setKGammaBlue(value, getActivity()); kgammaInit(null); } }); } String blue = Gamma.getKGammaBlue(); mKGammaBlue.setValue(blue); mKGammaBlue.setValueRaw(blue); if (items != null) { items.add(mKGammaBlue); } if (mKGammaGreen == null) { mKGammaGreen = new GenericSelectView(); mKGammaGreen.setSummary(getString(R.string.green)); mKGammaGreen.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setKGammaGreen(value, getActivity()); kgammaInit(null); } }); } String green = Gamma.getKGammaGreen(); mKGammaGreen.setValue(green); mKGammaGreen.setValueRaw(green); if (items != null) { items.add(mKGammaGreen); } if (mKGammaRed == null) { mKGammaRed = new GenericSelectView(); mKGammaRed.setSummary(getString(R.string.red)); mKGammaRed.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setKGammaRed(value, getActivity()); kgammaInit(null); } }); } String red = Gamma.getKGammaRed(); mKGammaRed.setValue(red); mKGammaRed.setValueRaw(red); if (items != null) { items.add(mKGammaRed); } if (items != null) { List<String> profileList = new ArrayList<>(); final GammaProfiles.KGammaProfiles gammaProfiles = Gamma.getKGammaProfiles(getActivity()); for (int i = 0; i < gammaProfiles.length(); i++) { profileList.add(gammaProfiles.getName(i)); } DropDownView profiles = new DropDownView(); profiles.setTitle(getString(R.string.profile)); profiles.setSummary(getString(R.string.gamma_profiles_summary)); profiles.setItems(profileList); profiles.setSelection(Prefs.getInt("kgamma_profile", -1, getActivity())); profiles.setOnDropDownListener(new DropDownView.OnDropDownListener() { @Override public void onSelect(DropDownView dropDownView, int position, String value) { Gamma.setKGammaProfile(position, gammaProfiles, getActivity()); kgammaInit(null); Prefs.saveInt("kgamma_profile", position, getActivity()); } }); items.add(profiles); } } private void gammacontrolInit(List<RecyclerViewItem> items) { if (mGammaControlRedGreys == null) { mGammaControlRedGreys = new GenericSelectView(); mGammaControlRedGreys.setSummary(getString(R.string.red_greys)); mGammaControlRedGreys.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setRedGreys(value, getActivity()); gammacontrolInit(null); } }); } String redGreys = Gamma.getRedGreys(); mGammaControlRedGreys.setValue(redGreys); mGammaControlRedGreys.setValueRaw(redGreys); if (items != null) { items.add(mGammaControlRedGreys); } if (mGammaControlRedMids == null) { mGammaControlRedMids = new GenericSelectView(); mGammaControlRedMids.setSummary(getString(R.string.red_mids)); mGammaControlRedMids.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setRedMids(value, getActivity()); gammacontrolInit(null); } }); } String redMids = Gamma.getRedMids(); mGammaControlRedMids.setValue(redMids); mGammaControlRedMids.setValueRaw(redMids); if (items != null) { items.add(mGammaControlRedMids); } if (mGammaControlRedBlacks == null) { mGammaControlRedBlacks = new GenericSelectView(); mGammaControlRedBlacks.setSummary(getString(R.string.red_blacks)); mGammaControlRedBlacks.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setRedBlacks(value, getActivity()); gammacontrolInit(null); } }); } String redBlacks = Gamma.getRedBlacks(); mGammaControlRedBlacks.setValue(redBlacks); mGammaControlRedBlacks.setValueRaw(redBlacks); if (items != null) { items.add(mGammaControlRedBlacks); } if (mGammaControlRedWhites == null) { mGammaControlRedWhites = new GenericSelectView(); mGammaControlRedWhites.setSummary(getString(R.string.red_whites)); mGammaControlRedWhites.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setRedWhites(value, getActivity()); gammacontrolInit(null); } }); } String redWhites = Gamma.getRedWhites(); mGammaControlRedWhites.setValue(redWhites); mGammaControlRedWhites.setValueRaw(redWhites); if (items != null) { items.add(mGammaControlRedWhites); } if (mGammaControlGreenGreys == null) { mGammaControlGreenGreys = new GenericSelectView(); mGammaControlGreenGreys.setSummary(getString(R.string.green_greys)); mGammaControlGreenGreys.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGreenGreys(value, getActivity()); gammacontrolInit(null); } }); } String greenGreys = Gamma.getGreenGreys(); mGammaControlGreenGreys.setValue(greenGreys); mGammaControlGreenGreys.setValueRaw(greenGreys); if (items != null) { items.add(mGammaControlGreenGreys); } if (mGammaControlGreenMids == null) { mGammaControlGreenMids = new GenericSelectView(); mGammaControlGreenMids.setSummary(getString(R.string.green_mids)); mGammaControlGreenMids.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGreenMids(value, getActivity()); gammacontrolInit(null); } }); } String greenMids = Gamma.getGreenMids(); mGammaControlGreenMids.setValue(greenMids); mGammaControlGreenMids.setValueRaw(greenMids); if (items != null) { items.add(mGammaControlGreenMids); } if (mGammaControlGreenBlacks == null) { mGammaControlGreenBlacks = new GenericSelectView(); mGammaControlGreenBlacks.setSummary(getString(R.string.green_blacks)); mGammaControlGreenBlacks.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGreenBlacks(value, getActivity()); gammacontrolInit(null); } }); } String greenBlacks = Gamma.getGreenBlacks(); mGammaControlGreenBlacks.setValue(greenBlacks); mGammaControlGreenBlacks.setValueRaw(greenBlacks); if (items != null) { items.add(mGammaControlGreenBlacks); } if (mGammaControlGreenWhites == null) { mGammaControlGreenWhites = new GenericSelectView(); mGammaControlGreenWhites.setSummary(getString(R.string.green_whites)); mGammaControlGreenWhites.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGreenWhites(value, getActivity()); gammacontrolInit(null); } }); } String greenWhites = Gamma.getGreenWhites(); mGammaControlGreenWhites.setValue(greenWhites); mGammaControlGreenWhites.setValueRaw(greenWhites); if (items != null) { items.add(mGammaControlGreenWhites); } if (mGammaControlBlueGreys == null) { mGammaControlBlueGreys = new GenericSelectView(); mGammaControlBlueGreys.setSummary(getString(R.string.blue_greys)); mGammaControlBlueGreys.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setBlueGreys(value, getActivity()); gammacontrolInit(null); } }); } String blueGreys = Gamma.getBlueGreys(); mGammaControlBlueGreys.setValue(blueGreys); mGammaControlBlueGreys.setValueRaw(blueGreys); if (items != null) { items.add(mGammaControlBlueGreys); } if (mGammaControlBlueMids == null) { mGammaControlBlueMids = new GenericSelectView(); mGammaControlBlueMids.setSummary(getString(R.string.blue_mids)); mGammaControlBlueMids.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setBlueMids(value, getActivity()); gammacontrolInit(null); } }); } String blueMids = Gamma.getBlueMids(); mGammaControlBlueMids.setValue(blueMids); mGammaControlBlueMids.setValueRaw(blueMids); if (items != null) { items.add(mGammaControlBlueMids); } if (mGammaControlBlueBlacks == null) { mGammaControlBlueBlacks = new GenericSelectView(); mGammaControlBlueBlacks.setSummary(getString(R.string.blue_blacks)); mGammaControlBlueBlacks.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setBlueBlacks(value, getActivity()); gammacontrolInit(null); } }); } String blueBlacks = Gamma.getBlueBlacks(); mGammaControlBlueBlacks.setValue(blueBlacks); mGammaControlBlueBlacks.setValueRaw(blueBlacks); if (items != null) { items.add(mGammaControlBlueBlacks); } if (mGammaControlBlueWhites == null) { mGammaControlBlueWhites = new GenericSelectView(); mGammaControlBlueWhites.setSummary(getString(R.string.blue_whites)); mGammaControlBlueWhites.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setBlueWhites(value, getActivity()); gammacontrolInit(null); } }); } String blueWhites = Gamma.getBlueWhites(); mGammaControlBlueWhites.setValue(blueWhites); mGammaControlBlueWhites.setValueRaw(blueWhites); if (items != null) { items.add(mGammaControlBlueWhites); } if (mGammaControlContrast == null) { mGammaControlContrast = new GenericSelectView(); mGammaControlContrast.setSummary(getString(R.string.contrast)); mGammaControlContrast.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGammaContrast(value, getActivity()); gammacontrolInit(null); } }); } String contrast = Gamma.getGammaContrast(); mGammaControlContrast.setValue(contrast); mGammaControlContrast.setValueRaw(contrast); if (items != null) { items.add(mGammaControlContrast); } if (mGammaControlBrightness == null) { mGammaControlBrightness = new GenericSelectView(); mGammaControlBrightness.setSummary(getString(R.string.brightness)); mGammaControlBrightness.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGammaBrightness(value, getActivity()); gammacontrolInit(null); } }); } String brightness = Gamma.getGammaBrightness(); mGammaControlBrightness.setValue(brightness); mGammaControlBrightness.setValueRaw(brightness); if (items != null) { items.add(mGammaControlBrightness); } if (mGammaControlSaturation == null) { mGammaControlSaturation = new GenericSelectView(); mGammaControlSaturation.setSummary(getString(R.string.saturation_intensity)); mGammaControlSaturation.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGammaSaturation(value, getActivity()); gammacontrolInit(null); } }); } String saturation = Gamma.getGammaSaturation(); mGammaControlSaturation.setValue(saturation); mGammaControlSaturation.setValueRaw(saturation); if (items != null) { items.add(mGammaControlSaturation); } if (items != null) { List<String> profileList = new ArrayList<>(); final GammaProfiles.GammaControlProfiles gammaProfiles = Gamma.getGammaControlProfiles(getActivity()); for (int i = 0; i < gammaProfiles.length(); i++) { profileList.add(gammaProfiles.getName(i)); } DropDownView profiles = new DropDownView(); profiles.setTitle(getString(R.string.profile)); profiles.setSummary(getString(R.string.gamma_profiles_summary)); profiles.setItems(profileList); profiles.setSelection(Prefs.getInt("gamma_control_profile", -1, getActivity())); profiles.setOnDropDownListener(new DropDownView.OnDropDownListener() { @Override public void onSelect(DropDownView dropDownView, int position, String value) { Gamma.setGammaControlProfile(position, gammaProfiles, getActivity()); gammacontrolInit(null); Prefs.saveInt("gamma_control_profile", position, getActivity()); } }); items.add(profiles); } } private void dsipanelInit(List<RecyclerViewItem> items) { if (mDsiPanelBlueNegative == null) { mDsiPanelBlueNegative = new GenericSelectView(); mDsiPanelBlueNegative.setSummary(getString(R.string.blue_negative)); mDsiPanelBlueNegative.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setBlueNegative(value, getActivity()); } }); } String blueNegative = Gamma.getBlueNegative(); mDsiPanelBlueNegative.setValue(blueNegative); mDsiPanelBlueNegative.setValueRaw(blueNegative); if (items != null) { items.add(mDsiPanelBlueNegative); } if (mDsiPanelBluePositive == null) { mDsiPanelBluePositive = new GenericSelectView(); mDsiPanelBluePositive.setSummary(getString(R.string.blue_positive)); mDsiPanelBluePositive.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setBluePositive(value, getActivity()); } }); } String bluePositive = Gamma.getBluePositive(); mDsiPanelBluePositive.setValue(bluePositive); mDsiPanelBluePositive.setValueRaw(bluePositive); if (items != null) { items.add(mDsiPanelBluePositive); } if (mDsiPanelGreenNegative == null) { mDsiPanelGreenNegative = new GenericSelectView(); mDsiPanelGreenNegative.setSummary(getString(R.string.green_negative)); mDsiPanelGreenNegative.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGreenNegative(value, getActivity()); } }); } String greenNegative = Gamma.getGreenNegative(); mDsiPanelGreenNegative.setValue(greenNegative); mDsiPanelGreenNegative.setValueRaw(greenNegative); if (items != null) { items.add(mDsiPanelGreenNegative); } if (mDsiPanelGreenPositive == null) { mDsiPanelGreenPositive = new GenericSelectView(); mDsiPanelGreenPositive.setSummary(getString(R.string.green_positive)); mDsiPanelGreenPositive.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setGreenPositive(value, getActivity()); } }); } String greenPositive = Gamma.getGreenPositive(); mDsiPanelGreenPositive.setValue(greenPositive); mDsiPanelGreenPositive.setValueRaw(greenPositive); if (items != null) { items.add(mDsiPanelGreenPositive); } if (mDsiPanelRedNegative == null) { mDsiPanelRedNegative = new GenericSelectView(); mDsiPanelRedNegative.setSummary(getString(R.string.red_negative)); mDsiPanelRedNegative.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setRedNegative(value, getActivity()); } }); } String redNegative = Gamma.getRedNegative(); mDsiPanelRedNegative.setValue(redNegative); mDsiPanelRedNegative.setValueRaw(redNegative); if (items != null) { items.add(mDsiPanelRedNegative); } if (mDsiPanelRedPositive == null) { mDsiPanelRedPositive = new GenericSelectView(); mDsiPanelRedPositive.setSummary(getString(R.string.red_positive)); mDsiPanelRedPositive.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setRedPositive(value, getActivity()); } }); } String redPositive = Gamma.getRedPositive(); mDsiPanelRedPositive.setValue(redPositive); mDsiPanelRedPositive.setValueRaw(redPositive); if (items != null) { items.add(mDsiPanelRedPositive); } if (mDsiPanelWhitePoint == null) { mDsiPanelWhitePoint = new GenericSelectView(); mDsiPanelWhitePoint.setSummary(getString(R.string.white_point)); mDsiPanelWhitePoint.setOnGenericValueListener(new GenericSelectView.OnGenericValueListener() { @Override public void onGenericValueSelected(GenericSelectView genericSelectView, String value) { Gamma.setWhitePoint(value, getActivity()); } }); } String whitePoint = Gamma.getWhitePoint(); mDsiPanelWhitePoint.setValue(whitePoint); mDsiPanelWhitePoint.setValueRaw(whitePoint); if (items != null) { items.add(mDsiPanelWhitePoint); } if (items != null) { List<String> profileList = new ArrayList<>(); final GammaProfiles.DsiPanelProfiles gammaProfiles = Gamma.getDsiPanelProfiles(getActivity()); for (int i = 0; i < gammaProfiles.length(); i++) { profileList.add(gammaProfiles.getName(i)); } DropDownView profiles = new DropDownView(); profiles.setTitle(getString(R.string.profile)); profiles.setSummary(getString(R.string.gamma_profiles_summary)); profiles.setItems(profileList); profiles.setSelection(Prefs.getInt("dsi_panel_profile", -1, getActivity())); profiles.setOnDropDownListener(new DropDownView.OnDropDownListener() { @Override public void onSelect(DropDownView dropDownView, int position, String value) { Gamma.setDsiPanelProfile(position, gammaProfiles, getActivity()); dsipanelInit(null); Prefs.saveInt("dsi_panel_profile", position, getActivity()); } }); items.add(profiles); } } private void lcdBackLightInit(List<RecyclerViewItem> items) { CardView lcdBackLightCard = new CardView(getActivity()); lcdBackLightCard.setTitle(getString(R.string.lcd_backlight)); if (Misc.hasBrightnessMode()) { SwitchView brightnessMode = new SwitchView(); brightnessMode.setSummary(getString(R.string.brightness_mode)); brightnessMode.setChecked(Misc.isBrightnessModeEnabled()); brightnessMode.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Misc.enableBrightnessMode(isChecked, getActivity()); } }); lcdBackLightCard.addItem(brightnessMode); } if (Misc.hasLcdMinBrightness()) { SeekBarView lcdMinBrightness = new SeekBarView(); lcdMinBrightness.setTitle(getString(R.string.min_brightness)); lcdMinBrightness.setSummary(getString(R.string.min_brightness_summary)); lcdMinBrightness.setMax(114); lcdMinBrightness.setMin(2); lcdMinBrightness.setProgress(Misc.getLcdMinBrightness() - 2); lcdMinBrightness.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Misc.setLcdMinBrightness(position + 2, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); lcdBackLightCard.addItem(lcdMinBrightness); } if (Misc.hasLcdMaxBrightness()) { SeekBarView lcdMaxBrightness = new SeekBarView(); lcdMaxBrightness.setTitle(getString(R.string.max_brightness)); lcdMaxBrightness.setSummary(getString(R.string.max_brightness_summary)); lcdMaxBrightness.setMax(114); lcdMaxBrightness.setMin(2); lcdMaxBrightness.setProgress(Misc.getLcdMaxBrightness() - 2); lcdMaxBrightness.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Misc.setLcdMaxBrightness(position + 2, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); lcdBackLightCard.addItem(lcdMaxBrightness); } if (lcdBackLightCard.size() > 0) { items.add(lcdBackLightCard); } } private void backlightDimmerInit(List<RecyclerViewItem> items) { CardView backLightDimmerCard = new CardView(getActivity()); backLightDimmerCard.setTitle(getString(R.string.backlight_dimmer)); if (Misc.hasBackLightDimmerEnable()) { SwitchView backLightDimmer = new SwitchView(); backLightDimmer.setSummary(getString(R.string.backlight_dimmer)); backLightDimmer.setChecked(Misc.isBackLightDimmerEnabled()); backLightDimmer.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Misc.enableBackLightDimmer(isChecked, getActivity()); } }); backLightDimmerCard.addItem(backLightDimmer); } if (Misc.hasMinBrightness()) { SeekBarView minBrightness = new SeekBarView(); minBrightness.setTitle(getString(R.string.min_brightness)); minBrightness.setSummary(getString(R.string.min_brightness_summary)); minBrightness.setMax(Misc.getMaxMinBrightness()); minBrightness.setProgress(Misc.getCurMinBrightness()); minBrightness.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Misc.setMinBrightness(position, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); backLightDimmerCard.addItem(minBrightness); } if (Misc.hasBackLightDimmerThreshold()) { SeekBarView threshold = new SeekBarView(); threshold.setTitle(getString(R.string.threshold)); threshold.setMax(50); threshold.setProgress(Misc.getBackLightDimmerThreshold()); threshold.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Misc.setBackLightDimmerThreshold(position, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); backLightDimmerCard.addItem(threshold); } if (Misc.hasBackLightDimmerOffset()) { SeekBarView dimmerOffset = new SeekBarView(); dimmerOffset.setTitle(getString(R.string.offset)); dimmerOffset.setMax(50); dimmerOffset.setProgress(Misc.getBackLightDimmerOffset()); dimmerOffset.setOnSeekBarListener(new SeekBarView.OnSeekBarListener() { @Override public void onStop(SeekBarView seekBarView, int position, String value) { Misc.setBackLightDimmerOffset(position, getActivity()); } @Override public void onMove(SeekBarView seekBarView, int position, String value) { } }); backLightDimmerCard.addItem(dimmerOffset); } if (backLightDimmerCard.size() > 0) { items.add(backLightDimmerCard); } } private void negativeToggleInit(List<RecyclerViewItem> items) { SwitchView negative = new SwitchView(); negative.setTitle(getString(R.string.negative_toggle)); negative.setSummary(getString(R.string.negative_toggle_summary)); negative.setChecked(Misc.isNegativeToggleEnabled()); negative.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Misc.enableNegativeToggle(isChecked, getActivity()); } }); items.add(negative); } private void mdnieGlobalInit(List<RecyclerViewItem> items) { CardView mdnieCard = new CardView(getActivity()); mdnieCard.setTitle(getString(R.string.mdnie_global_controls)); if (Misc.hasRegisterHook()) { SwitchView registerHook = new SwitchView(); registerHook.setTitle(getString(R.string.register_hook)); registerHook.setSummary(getString(R.string.register_hook_summary)); registerHook.setChecked(Misc.isRegisterHookEnabled()); registerHook.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Misc.enableRegisterHook(isChecked, getActivity()); } }); mdnieCard.addItem(registerHook); } if (Misc.hasMasterSequence()) { SwitchView masterSequence = new SwitchView(); masterSequence.setTitle(getString(R.string.master_sequence)); masterSequence.setSummary(getString(R.string.master_sequence_summary)); masterSequence.setChecked(Misc.isMasterSequenceEnable()); masterSequence.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Misc.enableMasterSequence(isChecked, getActivity()); } }); mdnieCard.addItem(masterSequence); } if (mdnieCard.size() > 0) { items.add(mdnieCard); } } private void gloveModeInit(List<RecyclerViewItem> items) { SwitchView glove = new SwitchView(); glove.setTitle(getString(R.string.glove_mode)); glove.setSummary(getString(R.string.glove_mode_summary)); glove.setChecked(Misc.isGloveModeEnabled()); glove.addOnSwitchListener(new SwitchView.OnSwitchListener() { @Override public void onChanged(SwitchView switchView, boolean isChecked) { Misc.enableGloveMode(isChecked, getActivity()); } }); items.add(glove); } public static class ColorTableFragment extends BaseFragment { @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { return new ColorTable(getActivity()); } } }