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

Commit b4765ac7 authored by Jeff Brown's avatar Jeff Brown
Browse files

Use new input manager API.

Bug: 6110399
Change-Id: I13f23b5d0aa5dc461a135303fc47432a6d57cbb4
parent e46c5f30
Loading
Loading
Loading
Loading
+13 −39
Original line number Diff line number Diff line
@@ -19,22 +19,20 @@ package com.android.settings;
import android.content.ContentResolver;
import android.content.Context;
import android.database.ContentObserver;
import android.hardware.input.InputManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Parcel;
import android.os.Parcelable;
import android.os.RemoteException;
import android.os.ServiceManager;
import android.preference.SeekBarDialogPreference;
import android.provider.Settings;
import android.provider.Settings.SettingNotFoundException;
import android.util.AttributeSet;
import android.view.IWindowManager;
import android.view.View;
import android.widget.SeekBar;

public class PointerSpeedPreference extends SeekBarDialogPreference implements
        SeekBar.OnSeekBarChangeListener {
    private final InputManager mIm;
    private SeekBar mSeekBar;

    private int mOldSpeed;
@@ -42,9 +40,6 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements

    private boolean mTouchInProgress;

    private static final int MIN_SPEED = -7;
    private static final int MAX_SPEED = 7;

    private ContentObserver mSpeedObserver = new ContentObserver(new Handler()) {
        @Override
        public void onChange(boolean selfChange) {
@@ -54,6 +49,7 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements

    public PointerSpeedPreference(Context context, AttributeSet attrs) {
        super(context, attrs);
        mIm = (InputManager)getContext().getSystemService(Context.INPUT_SERVICE);
    }

    @Override
@@ -72,15 +68,15 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements
        super.onBindDialogView(view);

        mSeekBar = getSeekBar(view);
        mSeekBar.setMax(MAX_SPEED - MIN_SPEED);
        mOldSpeed = getSpeed(0);
        mSeekBar.setProgress(mOldSpeed - MIN_SPEED);
        mSeekBar.setMax(InputManager.MAX_POINTER_SPEED - InputManager.MIN_POINTER_SPEED);
        mOldSpeed = mIm.getPointerSpeed();
        mSeekBar.setProgress(mOldSpeed - InputManager.MIN_POINTER_SPEED);
        mSeekBar.setOnSeekBarChangeListener(this);
    }

    public void onProgressChanged(SeekBar seekBar, int progress, boolean fromTouch) {
        if (!mTouchInProgress) {
            setSpeed(progress + MIN_SPEED);
            mIm.tryPointerSpeed(progress + InputManager.MIN_POINTER_SPEED);
        }
    }

@@ -90,22 +86,12 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements

    public void onStopTrackingTouch(SeekBar seekBar) {
        mTouchInProgress = false;
        setSpeed(seekBar.getProgress() + MIN_SPEED);
    }

    private int getSpeed(int defaultValue) {
        int speed = defaultValue;
        try {
            speed = Settings.System.getInt(getContext().getContentResolver(),
                    Settings.System.POINTER_SPEED);
        } catch (SettingNotFoundException snfe) {
        }
        return speed;
        mIm.tryPointerSpeed(seekBar.getProgress() + InputManager.MIN_POINTER_SPEED);
    }

    private void onSpeedChanged() {
        int speed = getSpeed(0);
        mSeekBar.setProgress(speed - MIN_SPEED);
        int speed = mIm.getPointerSpeed();
        mSeekBar.setProgress(speed - InputManager.MIN_POINTER_SPEED);
    }

    @Override
@@ -115,8 +101,7 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements
        final ContentResolver resolver = getContext().getContentResolver();

        if (positiveResult) {
            Settings.System.putInt(resolver, Settings.System.POINTER_SPEED,
                    mSeekBar.getProgress() + MIN_SPEED);
            mIm.setPointerSpeed(mSeekBar.getProgress() + InputManager.MIN_POINTER_SPEED);
        } else {
            restoreOldState();
        }
@@ -127,21 +112,10 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements
    private void restoreOldState() {
        if (mRestoredOldState) return;

        setSpeed(mOldSpeed);
        mIm.tryPointerSpeed(mOldSpeed);
        mRestoredOldState = true;
    }

    private void setSpeed(int speed) {
        try {
            IWindowManager wm = IWindowManager.Stub.asInterface(
                    ServiceManager.getService("window"));
            if (wm != null) {
                wm.setPointerSpeed(speed);
            }
        } catch (RemoteException e) {
        }
    }

    @Override
    protected Parcelable onSaveInstanceState() {
        final Parcelable superState = super.onSaveInstanceState();
@@ -169,7 +143,7 @@ public class PointerSpeedPreference extends SeekBarDialogPreference implements
        super.onRestoreInstanceState(myState.getSuperState());
        mOldSpeed = myState.oldSpeed;
        mSeekBar.setProgress(myState.progress);
        setSpeed(myState.progress + MIN_SPEED);
        mIm.tryPointerSpeed(myState.progress + InputManager.MIN_POINTER_SPEED);
    }

    private static class SavedState extends BaseSavedState {