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

Commit 1b1fa7a1 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka Committed by Android (Google) Code Review
Browse files

Merge "SeekBarDialog supports neutral and dismiss listener"

parents 22959faa 88df3d92
Loading
Loading
Loading
Loading
+29 −7
Original line number Diff line number Diff line
@@ -30,6 +30,8 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener,
    public interface Listener {
        public void onPositiveButtonClick(final SeekBarDialog dialog);
        public void onNegativeButtonClick(final SeekBarDialog dialog);
        public void onNeutralButtonClick(final SeekBarDialog dialog);
        public void onDismiss(final SeekBarDialog dialog);
        public void onProgressChanged(final SeekBarDialog dialog);
        public void onStartTrackingTouch(final SeekBarDialog dialog);
        public void onStopTrackingTouch(final SeekBarDialog dialog);
@@ -39,7 +41,11 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener,
        @Override
        public void onPositiveButtonClick(final SeekBarDialog dialog) {}
        @Override
        public void onNegativeButtonClick(final SeekBarDialog dialog) { dialog.dismiss(); }
        public void onNegativeButtonClick(final SeekBarDialog dialog) {}
        @Override
        public void onNeutralButtonClick(final SeekBarDialog dialog) {}
        @Override
        public void onDismiss(final SeekBarDialog dialog) {}
        @Override
        public void onProgressChanged(final SeekBarDialog dialog) {}
        @Override
@@ -63,6 +69,9 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener,
        dialogBuilder.setView(builder.mView);
        dialogBuilder.setPositiveButton(android.R.string.ok, this);
        dialogBuilder.setNegativeButton(android.R.string.cancel, this);
        if (builder.mNeutralButtonTextResId != 0) {
            dialogBuilder.setNeutralButton(builder.mNeutralButtonTextResId, this);
        }
        mDialog = dialogBuilder.create();
        mListener = (builder.mListener == null) ? EMPTY_ADAPTER : builder.mListener;
        mValueView = (TextView)builder.mView.findViewById(R.id.seek_bar_dialog_value);
@@ -101,15 +110,21 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener,
    }

    @Override
    public void onClick(final DialogInterface dialog, int which) {
        if (which == DialogInterface.BUTTON_POSITIVE) {
    public void onClick(final DialogInterface dialog, final int which) {
        switch (which) {
        case DialogInterface.BUTTON_POSITIVE:
            mListener.onPositiveButtonClick(this);
            return;
        }
        if (which == DialogInterface.BUTTON_NEGATIVE) {
            break;
        case DialogInterface.BUTTON_NEGATIVE:
            mListener.onNegativeButtonClick(this);
            break;
        case DialogInterface.BUTTON_NEUTRAL:
            mListener.onNeutralButtonClick(this);
            break;
        default:
            return;
        }
        mListener.onDismiss(this);
    }

    @Override
@@ -135,6 +150,7 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener,
        final AlertDialog.Builder mDialogBuilder;
        final View mView;

        int mNeutralButtonTextResId;
        int mMaxValue;
        int mValueFormatResId;
        int mValue;
@@ -150,8 +166,14 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener,
            return this;
        }

        public Builder setNeutralButtonText(final int resId) {
            mNeutralButtonTextResId = resId;
            return this;
        }

        public Builder setMaxValue(final int max) {
            mMaxValue = max;
            mValue = Math.min(mValue, max);
            return this;
        }

@@ -161,7 +183,7 @@ public final class SeekBarDialog implements DialogInterface.OnClickListener,
        }

        public Builder setValue(final int value) {
            mValue = value;
            mValue = Math.min(value, mMaxValue);
            return this;
        }

+18 −4
Original line number Diff line number Diff line
@@ -308,10 +308,17 @@ public final class SettingsFragment extends InputMethodSettingsFragment
        final Context context = getActivity();
        final PreferenceScreen settingsPref = mKeypressVibrationDurationSettingsPref;
        final SeekBarDialog.Listener listener = new SeekBarDialog.Adapter() {
            private void writePreference(final SharedPreferences sp, final int value) {
                sp.edit().putInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, value).apply();
            }

            @Override
            public void onPositiveButtonClick(final SeekBarDialog dialog) {
                final int ms = dialog.getValue();
                sp.edit().putInt(Settings.PREF_VIBRATION_DURATION_SETTINGS, ms).apply();
                writePreference(sp, dialog.getValue());
            }

            @Override
            public void onDismiss(final SeekBarDialog dialog) {
                if (settingsPref != null) {
                    settingsPref.setSummary(dialog.getValueText());
                }
@@ -348,10 +355,17 @@ public final class SettingsFragment extends InputMethodSettingsFragment
        final AudioManager am = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
        final PreferenceScreen settingsPref = mKeypressSoundVolumeSettingsPref;
        final SeekBarDialog.Listener listener = new SeekBarDialog.Adapter() {
            private void writePreference(final SharedPreferences sp, final float value) {
                sp.edit().putFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, value).apply();
            }

            @Override
            public void onPositiveButtonClick(final SeekBarDialog dialog) {
                final float volume = dialog.getValue() / PERCENT_FLOAT;
                sp.edit().putFloat(Settings.PREF_KEYPRESS_SOUND_VOLUME, volume).apply();
                writePreference(sp, dialog.getValue() / PERCENT_FLOAT);
            }

            @Override
            public void onDismiss(final SeekBarDialog dialog) {
                if (settingsPref != null) {
                    settingsPref.setSummary(dialog.getValueText());
                }