Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dc7ff295 authored by LuK1337's avatar LuK1337 Committed by Bruno Martins
Browse files

ButtonBacklightBrightness: Migrate keyboard/button backlight to 0.0f -> 1.0f range

Change-Id: I3b724498a5b20eb00dc9aa88c9a4259b65133206
parent 62dbcbb8
Loading
Loading
Loading
Loading
+41 −40
Original line number Diff line number Diff line
@@ -79,9 +79,9 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
                    org.lineageos.platform.internal.R.bool
                            .config_deviceHasVariableButtonBrightness);

            int defaultBrightness = context.getResources().getInteger(
                    org.lineageos.platform.internal.R.integer
                            .config_buttonBrightnessSettingDefault);
            float defaultBrightness = context.getResources().getFloat(
                    org.lineageos.platform.internal.R.dimen
                            .config_buttonBrightnessSettingDefaultFloat);

            mButtonBrightness = new ButtonBrightnessControl(
                    LineageSettings.Secure.BUTTON_BRIGHTNESS,
@@ -172,7 +172,7 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
        if (mButtonBrightness != null) {
            PreferenceManager.getDefaultSharedPreferences(getContext())
                    .edit()
                    .putInt(KEY_BUTTON_BACKLIGHT, mButtonBrightness.getBrightness(false))
                    .putFloat(KEY_BUTTON_BACKLIGHT, mButtonBrightness.getBrightness(false))
                    .apply();
        }

@@ -235,25 +235,25 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
                || DeviceUtils.hasMenuKey(context)
                || DeviceUtils.hasAssistKey(context)
                || DeviceUtils.hasAppSwitchKey(context);
        boolean hasBacklight = res.getInteger(org.lineageos.platform.internal.R.integer
                .config_buttonBrightnessSettingDefault) > 0;
        boolean hasBacklight = res.getFloat(org.lineageos.platform.internal.R.dimen
                .config_buttonBrightnessSettingDefaultFloat) > 0.0f;

        return hasBacklightKey && hasBacklight;
    }

    /*
    public static boolean isKeyboardSupported(Context context) {
        return context.getResources().getInteger(
                com.android.internal.R.integer.config_keyboardBrightnessSettingDefault) > 0;
        return context.getResources().getFloat(org.lineageos.platform.internal.R.dimen
                .config_keyboardBrightnessSettingDefaultFloat) > 0.0f;
    }
    */

    public void updateSummary() {
        if (mButtonBrightness != null) {
            int buttonBrightness = mButtonBrightness.getBrightness(true);
            float buttonBrightness = mButtonBrightness.getBrightness(true);
            int timeout = getTimeout();

            if (buttonBrightness == 0) {
            if (buttonBrightness == 0.0f) {
                setSummary(R.string.backlight_summary_disabled);
            } else if (timeout == 0) {
                setSummary(R.string.backlight_timeout_unlimited);
@@ -261,7 +261,8 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
                setSummary(getContext().getString(R.string.backlight_summary_enabled_with_timeout,
                        getTimeoutString(timeout)));
            }
        } else if (mKeyboardBrightness != null && mKeyboardBrightness.getBrightness(true) != 0) {
        } else if (mKeyboardBrightness != null &&
                mKeyboardBrightness.getBrightness(true) != 0.0f) {
            setSummary(R.string.backlight_summary_enabled);
        } else {
            setSummary(R.string.backlight_summary_disabled);
@@ -290,19 +291,19 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
        Window window = getDialog().getWindow();
        LayoutParams params = window.getAttributes();
        if (mActiveControl != null) {
            params.buttonBrightness = (float) mActiveControl.getBrightness(false) / 255.0f;
            params.buttonBrightness = mActiveControl.getBrightness(false);
        } else {
            params.buttonBrightness = -1;
            params.buttonBrightness = -1.0f;
        }
        window.setAttributes(params);
    }

    private void updateTimeoutEnabledState() {
        int buttonBrightness = mButtonBrightness != null
                ? mButtonBrightness.getBrightness(false) : 0;
        float buttonBrightness = mButtonBrightness != null
                ? mButtonBrightness.getBrightness(false) : 0.0f;
        int count = mTimeoutContainer.getChildCount();
        for (int i = 0; i < count; i++) {
            mTimeoutContainer.getChildAt(i).setEnabled(buttonBrightness != 0);
            mTimeoutContainer.getChildAt(i).setEnabled(buttonBrightness != 0.0f);
        }
    }

@@ -331,8 +332,8 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo

    private static class SavedState extends BaseSavedState {
        int timeout;
        int button;
        int keyboard;
        float button;
        float keyboard;

        public SavedState(Parcelable superState) {
            super(superState);
@@ -341,16 +342,16 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
        public SavedState(Parcel source) {
            super(source);
            timeout = source.readInt();
            button = source.readInt();
            keyboard = source.readInt();
            button = source.readFloat();
            keyboard = source.readFloat();
        }

        @Override
        public void writeToParcel(Parcel dest, int flags) {
            super.writeToParcel(dest, flags);
            dest.writeInt(timeout);
            dest.writeInt(button);
            dest.writeInt(keyboard);
            dest.writeFloat(button);
            dest.writeFloat(keyboard);
        }

        public static final Parcelable.Creator<SavedState> CREATOR =
@@ -370,53 +371,53 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
            SeekBar.OnSeekBarChangeListener, CheckBox.OnCheckedChangeListener {
        private String mSetting;
        private boolean mIsSingleValue;
        private int mDefaultBrightness;
        private float mDefaultBrightness;
        private CheckBox mCheckBox;
        private SeekBar mSeekBar;
        private TextView mValue;

        public BrightnessControl(String setting, boolean singleValue, int defaultBrightness) {
        public BrightnessControl(String setting, boolean singleValue, float defaultBrightness) {
            mSetting = setting;
            mIsSingleValue = singleValue;
            mDefaultBrightness = defaultBrightness;
        }

        public BrightnessControl(String setting, boolean singleValue) {
            this(setting, singleValue, 255);
            this(setting, singleValue, 1.0f);
        }

        public void init(ViewGroup container) {
            int brightness = getBrightness(true);
            float brightness = getBrightness(true);

            if (mIsSingleValue) {
                container.findViewById(R.id.seekbar_container).setVisibility(View.GONE);
                mCheckBox = (CheckBox) container.findViewById(R.id.backlight_switch);
                mCheckBox.setChecked(brightness != 0);
                mCheckBox.setChecked(brightness != 0.0f);
                mCheckBox.setOnCheckedChangeListener(this);
            } else {
                container.findViewById(R.id.checkbox_container).setVisibility(View.GONE);
                mSeekBar = (SeekBar) container.findViewById(R.id.seekbar);
                mValue = (TextView) container.findViewById(R.id.value);

                mSeekBar.setMax(255);
                mSeekBar.setProgress(brightness);
                mSeekBar.setMax(100);
                mSeekBar.setProgress((int)(brightness * 100.0f));
                mSeekBar.setOnSeekBarChangeListener(this);
            }

            handleBrightnessUpdate(brightness);
            handleBrightnessUpdate((int)(brightness * 100.0f));
        }

        public int getBrightness(boolean persisted) {
        public float getBrightness(boolean persisted) {
            if (mCheckBox != null && !persisted) {
                return mCheckBox.isChecked() ? mDefaultBrightness : 0;
                return mCheckBox.isChecked() ? mDefaultBrightness : 0.0f;
            } else if (mSeekBar != null && !persisted) {
                return mSeekBar.getProgress();
                return mSeekBar.getProgress() / 100.0f;
            }
            return LineageSettings.Secure.getInt(mResolver, mSetting, mDefaultBrightness);
            return LineageSettings.Secure.getFloat(mResolver, mSetting, mDefaultBrightness);
        }

        public void applyBrightness() {
            LineageSettings.Secure.putInt(mResolver, mSetting, getBrightness(false));
            LineageSettings.Secure.putFloat(mResolver, mSetting, getBrightness(false));
        }

        /* Behaviors when it's a seekbar */
@@ -443,11 +444,11 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
            updateTimeoutEnabledState();
        }

        public void setBrightness(int value) {
        public void setBrightness(float value) {
            if (mIsSingleValue) {
                mCheckBox.setChecked(value != 0);
                mCheckBox.setChecked(value != 0.0f);
            } else {
                mSeekBar.setProgress(value);
                mSeekBar.setProgress((int)(value * 100.0f));
            }
        }

@@ -458,7 +459,7 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
        private void handleBrightnessUpdate(int brightness) {
            updateBrightnessPreview();
            if (mValue != null) {
                mValue.setText(String.format("%d%%", (int)((brightness * 100) / 255)));
                mValue.setText(String.format("%d%%", brightness));
            }
            updateTimeoutEnabledState();
        }
@@ -469,7 +470,7 @@ public class ButtonBacklightBrightness extends CustomDialogPreference<AlertDialo
        private CheckBox mOnlyWhenPressedCheckBox;

        public ButtonBrightnessControl(String brightnessSetting, String onlyWhenPressedSetting,
                boolean singleValue, int defaultBrightness) {
                boolean singleValue, float defaultBrightness) {
            super(brightnessSetting, singleValue, defaultBrightness);
            mOnlyWhenPressedSetting = onlyWhenPressedSetting;
        }