blob: 4a7ea965b2200938340ecb58e1e7d55ca320d06d [file] [log] [blame]
/*
* Copyright (C) 2014 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.systemui.statusbar.stack;
import android.view.View;
import com.android.systemui.statusbar.ActivatableNotificationView;
import com.android.systemui.statusbar.ExpandableNotificationRow;
import com.android.systemui.statusbar.policy.HeadsUpManager;
import java.util.ArrayList;
/**
* A global state to track all input states for the algorithm.
*/
public class AmbientState {
private ArrayList<View> mDraggedViews = new ArrayList<View>();
private int mScrollY;
private boolean mDimmed;
private ActivatableNotificationView mActivatedChild;
private float mOverScrollTopAmount;
private float mOverScrollBottomAmount;
private int mSpeedBumpIndex = -1;
private boolean mDark;
private boolean mHideSensitive;
private HeadsUpManager mHeadsUpManager;
private float mStackTranslation;
private int mLayoutHeight;
private int mTopPadding;
private boolean mShadeExpanded;
private float mMaxHeadsUpTranslation;
public int getScrollY() {
return mScrollY;
}
public void setScrollY(int scrollY) {
this.mScrollY = scrollY;
}
public void onBeginDrag(View view) {
mDraggedViews.add(view);
}
public void onDragFinished(View view) {
mDraggedViews.remove(view);
}
public ArrayList<View> getDraggedViews() {
return mDraggedViews;
}
/**
* @param dimmed Whether we are in a dimmed state (on the lockscreen), where the backgrounds are
* translucent and everything is scaled back a bit.
*/
public void setDimmed(boolean dimmed) {
mDimmed = dimmed;
}
/** In dark mode, we draw as little as possible, assuming a black background */
public void setDark(boolean dark) {
mDark = dark;
}
public void setHideSensitive(boolean hideSensitive) {
mHideSensitive = hideSensitive;
}
/**
* In dimmed mode, a child can be activated, which happens on the first tap of the double-tap
* interaction. This child is then scaled normally and its background is fully opaque.
*/
public void setActivatedChild(ActivatableNotificationView activatedChild) {
mActivatedChild = activatedChild;
}
public boolean isDimmed() {
return mDimmed;
}
public boolean isDark() {
return mDark;
}
public boolean isHideSensitive() {
return mHideSensitive;
}
public ActivatableNotificationView getActivatedChild() {
return mActivatedChild;
}
public void setOverScrollAmount(float amount, boolean onTop) {
if (onTop) {
mOverScrollTopAmount = amount;
} else {
mOverScrollBottomAmount = amount;
}
}
public float getOverScrollAmount(boolean top) {
return top ? mOverScrollTopAmount : mOverScrollBottomAmount;
}
public int getSpeedBumpIndex() {
return mSpeedBumpIndex;
}
public void setSpeedBumpIndex(int speedBumpIndex) {
mSpeedBumpIndex = speedBumpIndex;
}
public void setHeadsUpManager(HeadsUpManager headsUpManager) {
mHeadsUpManager = headsUpManager;
}
public float getStackTranslation() {
return mStackTranslation;
}
public void setStackTranslation(float stackTranslation) {
mStackTranslation = stackTranslation;
}
public int getLayoutHeight() {
return mLayoutHeight;
}
public void setLayoutHeight(int layoutHeight) {
mLayoutHeight = layoutHeight;
}
public float getTopPadding() {
return mTopPadding;
}
public void setTopPadding(int topPadding) {
mTopPadding = topPadding;
}
public int getInnerHeight() {
return mLayoutHeight - mTopPadding - getTopHeadsUpPushIn();
}
private int getTopHeadsUpPushIn() {
ExpandableNotificationRow topHeadsUpEntry = getTopHeadsUpEntry();
return topHeadsUpEntry != null ? topHeadsUpEntry.getHeadsUpHeight()
- topHeadsUpEntry.getMinHeight(): 0;
}
public boolean isShadeExpanded() {
return mShadeExpanded;
}
public void setShadeExpanded(boolean shadeExpanded) {
mShadeExpanded = shadeExpanded;
}
public void setMaxHeadsUpTranslation(float maxHeadsUpTranslation) {
mMaxHeadsUpTranslation = maxHeadsUpTranslation;
}
public float getMaxHeadsUpTranslation() {
return mMaxHeadsUpTranslation;
}
public ExpandableNotificationRow getTopHeadsUpEntry() {
HeadsUpManager.HeadsUpEntry topEntry = mHeadsUpManager.getTopEntry();
return topEntry == null ? null : topEntry.entry.row;
}
}