blob: cd80608073aba94b2191017f22d78c46de311c26 [file] [log] [blame]
/*
* Copyright (C) 2022 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.launcher3.logging;
import static com.android.launcher3.logging.KeyboardStateManager.KeyboardState.NO_IME_ACTION;
import android.os.SystemClock;
/**
* Class to maintain keyboard states.
*/
public class KeyboardStateManager {
private long mUpdatedTime;
private int mImeHeightPx;
// Height of the keyboard when it's shown.
// mImeShownHeightPx>=mImeHeightPx always.
private int mImeShownHeightPx;
// Indicate if the latest All Apps session was started from a11y action (rather than a direct
// user interaction).
private boolean mLaunchedFromA11y;
public enum KeyboardState {
NO_IME_ACTION,
SHOW,
HIDE,
}
private KeyboardState mKeyboardState;
public KeyboardStateManager(int defaultImeShownHeightPx) {
mKeyboardState = NO_IME_ACTION;
mImeShownHeightPx = defaultImeShownHeightPx;
}
/**
* Returns time when keyboard state was updated.
*/
public long getLastUpdatedTime() {
return mUpdatedTime;
}
/**
* Returns current keyboard state.
*/
public KeyboardState getKeyboardState() {
return mKeyboardState;
}
/**
* Setter method to set keyboard state.
*/
public void setKeyboardState(KeyboardState keyboardState) {
mUpdatedTime = SystemClock.elapsedRealtime();
mKeyboardState = keyboardState;
}
/**
* Returns keyboard's current height.
*/
public int getImeHeight() {
return mImeHeightPx;
}
/**
* Returns keyboard's height in pixels when shown.
*/
public int getImeShownHeight() {
return mImeShownHeightPx;
}
/**
* Setter method to set keyboard height in pixels.
*/
public void setImeHeight(int imeHeightPx) {
mImeHeightPx = imeHeightPx;
if (mImeHeightPx > 0) {
// Update the mImeShownHeightPx with the actual ime height when shown and store it
// for future sessions.
mImeShownHeightPx = mImeHeightPx;
}
}
/** Getter for {@code mLaunchedFromA11y} */
public boolean getLaunchedFromA11y() {
return mLaunchedFromA11y;
}
/** Setter for {@code mLaunchedFromA11y} */
public void setLaunchedFromA11y(boolean fromA11y) {
mLaunchedFromA11y = fromA11y;
}
}