package com.android.systemui.statusbar.phone; import java.util.ArrayList; import android.content.Context; import android.util.AttributeSet; import android.util.Slog; import android.view.MotionEvent; import android.widget.FrameLayout; public class PanelBar extends FrameLayout { public static final boolean DEBUG = true; public static final String TAG = PanelView.class.getSimpleName(); public static final void LOG(String fmt, Object... args) { if (!DEBUG) return; Slog.v(TAG, String.format(fmt, args)); } private PanelHolder mPanelHolder; private ArrayList mPanels = new ArrayList(); private PanelView mTouchingPanel; public PanelBar(Context context, AttributeSet attrs) { super(context, attrs); } @Override protected void onFinishInflate() { super.onFinishInflate(); } public void addPanel(PanelView pv) { mPanels.add(pv); pv.setBar(this); } public void setPanelHolder(PanelHolder ph) { if (ph == null) { Slog.e(TAG, "setPanelHolder: null PanelHolder", new Throwable()); return; } ph.setBar(this); mPanelHolder = ph; final int N = ph.getChildCount(); for (int i=0; i 0f) { fullyClosed = false; final float thisFrac = pv.getExpandedFraction(); LOG("panel %s: f=%.1f", pv, thisFrac); if (panel == pv) { if (thisFrac == 1f) fullyOpened = true; } else { pv.setExpandedFraction(1f-frac); } } } if (fullyOpened) onPanelFullyOpened(); if (fullyClosed) onAllPanelsCollapsed(); else onPanelPeeked(); LOG("panelExpansionChanged: [%s%s ]", fullyOpened?" fullyOpened":"", fullyClosed?" fullyClosed":""); } public void collapseAllPanels(boolean animate) { for (PanelView pv : mPanels) { if (animate && pv == mTouchingPanel) { mTouchingPanel.collapse(); } else { pv.setExpandedFraction(0); // just in case } } } public void onPanelPeeked() { LOG("onPanelPeeked"); } public void onAllPanelsCollapsed() { LOG("onAllPanelsCollapsed"); } public void onPanelFullyOpened() { LOG("onPanelFullyOpened"); } }