Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +36 −18 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ import android.view.View; import android.view.WindowManager; import android.view.animation.AnimationUtils; import android.widget.RemoteViews.OnClickHandler; import android.widget.TextView; import com.android.internal.R; import com.android.internal.policy.impl.keyguard.KeyguardSecurityModel.SecurityMode; Loading Loading @@ -144,7 +143,7 @@ public class KeyguardHostView extends KeyguardViewBase { private int getWidgetPosition(int id) { final int children = mAppWidgetContainer.getChildCount(); for (int i = 0; i < children; i++) { if (mAppWidgetContainer.getChildAt(i).getId() == id) { if (mAppWidgetContainer.getWidgetPageAt(i).getContent().getId() == id) { return i; } } Loading Loading @@ -864,7 +863,8 @@ public class KeyguardHostView extends KeyguardViewBase { @Override LockPatternUtils getLockPatternUtils() { return mLockPatternUtils; }}; } }; private void addDefaultWidgets() { LayoutInflater inflater = LayoutInflater.from(mContext); Loading Loading @@ -906,6 +906,33 @@ public class KeyguardHostView extends KeyguardViewBase { initializeTransportControl(); } private void removeTransportFromWidgetPager() { int page = getWidgetPosition(R.id.keyguard_transport_control); if (page != -1) { mAppWidgetContainer.removeWidget(mTransportControl); // XXX keep view attached so we still get show/hide events from AudioManager KeyguardHostView.this.addView(mTransportControl); mTransportControl.setVisibility(View.GONE); mTransportState = TRANSPORT_GONE; mTransportControl.post(mSwitchPageRunnable); } } private void addTransportToWidgetPager() { if (getWidgetPosition(R.id.keyguard_transport_control) == -1) { KeyguardHostView.this.removeView(mTransportControl); // insert to left of camera if it exists, otherwise after right-most widget int lastWidget = mAppWidgetContainer.getChildCount() - 1; int position = 0; // handle no widget case if (lastWidget >= 0) { position = isCameraPage(lastWidget) ? lastWidget : lastWidget + 1; } mAppWidgetContainer.addWidget(mTransportControl, position); mTransportControl.setVisibility(View.VISIBLE); } } private void initializeTransportControl() { mTransportControl = (KeyguardTransportControlView) findViewById(R.id.keyguard_transport_control); Loading @@ -917,24 +944,14 @@ public class KeyguardHostView extends KeyguardViewBase { mTransportControl.setKeyguardCallback(new TransportCallback() { @Override public void onListenerDetached() { int page = getWidgetPosition(R.id.keyguard_transport_control); if (page != -1) { mAppWidgetContainer.removeView(mTransportControl); // XXX keep view attached so we still get show/hide events from AudioManager KeyguardHostView.this.addView(mTransportControl); mTransportControl.setVisibility(View.GONE); mTransportState = TRANSPORT_GONE; removeTransportFromWidgetPager(); mTransportControl.post(mSwitchPageRunnable); } } @Override public void onListenerAttached() { if (getWidgetPosition(R.id.keyguard_transport_control) == -1) { KeyguardHostView.this.removeView(mTransportControl); mAppWidgetContainer.addView(mTransportControl, 0); mTransportControl.setVisibility(View.VISIBLE); } // Transport will be added when playstate changes... mTransportControl.post(mSwitchPageRunnable); } @Override Loading Loading @@ -1058,6 +1075,7 @@ public class KeyguardHostView extends KeyguardViewBase { mTransportControl.isMusicPlaying() || mTransportState == TRANSPORT_VISIBLE; if (isMusicPlaying) { mTransportState = TRANSPORT_VISIBLE; addTransportToWidgetPager(); } else if (mTransportState == TRANSPORT_VISIBLE) { mTransportState = TRANSPORT_INVISIBLE; } Loading @@ -1081,7 +1099,7 @@ public class KeyguardHostView extends KeyguardViewBase { // if music playing, show transport if (isMusicPlaying) { if (DEBUG) Log.d(TAG, "Music playing, show transport"); return mAppWidgetContainer.indexOfChild(mTransportControl); return mAppWidgetContainer.getWidgetPageIndex(mTransportControl); } // if we have a valid sticky widget, show it Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardTransportControlView.java +2 −10 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; Loading @@ -49,14 +50,13 @@ import java.lang.ref.WeakReference; /** * This is the widget responsible for showing music controls in keyguard. */ public class KeyguardTransportControlView extends KeyguardWidgetFrame implements OnClickListener { public class KeyguardTransportControlView extends FrameLayout implements OnClickListener { private static final int MSG_UPDATE_STATE = 100; private static final int MSG_SET_METADATA = 101; private static final int MSG_SET_TRANSPORT_CONTROLS = 102; private static final int MSG_SET_ARTWORK = 103; private static final int MSG_SET_GENERATION_ID = 104; private static final int MAXDIM = 512; private static final int DISPLAY_TIMEOUT_MS = 5000; // 5s protected static final boolean DEBUG = false; protected static final String TAG = "TransportControlView"; Loading Loading @@ -260,14 +260,6 @@ public class KeyguardTransportControlView extends KeyguardWidgetFrame implements mAttached = false; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // int dim = Math.min(MAXDIM, Math.max(getWidth(), getHeight())); // Log.v(TAG, "setting max bitmap size: " + dim + "x" + dim); // mAudioManager.remoteControlDisplayUsesBitmapSize(mIRCD, dim, dim); } class Metadata { private String artist; private String trackTitle; Loading policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java +44 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.res.Resources; import android.os.Handler; import android.os.HandlerThread; import android.util.AttributeSet; import android.util.Slog; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; Loading Loading @@ -62,6 +63,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit private boolean mShowHintsOnLayout = false; private static final long CUSTOM_WIDGET_USER_ACTIVITY_TIMEOUT = 30000; private static final String TAG = "KeyguardWidgetPager"; private int mPage = 0; private Callbacks mCallbacks; Loading Loading @@ -245,25 +247,40 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit } } // We enforce that all children are KeyguardWidgetFrames /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, int index) { enforceKeyguardWidgetFrame(child); super.addView(child, index); } /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, int width, int height) { enforceKeyguardWidgetFrame(child); super.addView(child, width, height); } /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, LayoutParams params) { enforceKeyguardWidgetFrame(child); super.addView(child, params); } /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, int index, LayoutParams params) { enforceKeyguardWidgetFrame(child); Loading Loading @@ -615,4 +632,30 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit } return false; } public void removeWidget(View view) { if (view instanceof KeyguardWidgetFrame) { removeView(view); } else { // Assume view was wrapped by a KeyguardWidgetFrame in KeyguardWidgetPager#addWidget(). // This supports legacy hard-coded "widgets" like KeyguardTransportControlView. int pos = getWidgetPageIndex(view); if (pos != -1) { KeyguardWidgetFrame frame = (KeyguardWidgetFrame) getChildAt(pos); frame.removeView(view); removeView(frame); } else { Slog.w(TAG, "removeWidget() can't find:" + view); } } } public int getWidgetPageIndex(View view) { if (view instanceof KeyguardWidgetFrame) { return indexOfChild(view); } else { // View was wrapped by a KeyguardWidgetFrame by KeyguardWidgetPager#addWidget() return indexOfChild((KeyguardWidgetFrame)view.getParent()); } } } Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardHostView.java +36 −18 Original line number Diff line number Diff line Loading @@ -48,7 +48,6 @@ import android.view.View; import android.view.WindowManager; import android.view.animation.AnimationUtils; import android.widget.RemoteViews.OnClickHandler; import android.widget.TextView; import com.android.internal.R; import com.android.internal.policy.impl.keyguard.KeyguardSecurityModel.SecurityMode; Loading Loading @@ -144,7 +143,7 @@ public class KeyguardHostView extends KeyguardViewBase { private int getWidgetPosition(int id) { final int children = mAppWidgetContainer.getChildCount(); for (int i = 0; i < children; i++) { if (mAppWidgetContainer.getChildAt(i).getId() == id) { if (mAppWidgetContainer.getWidgetPageAt(i).getContent().getId() == id) { return i; } } Loading Loading @@ -864,7 +863,8 @@ public class KeyguardHostView extends KeyguardViewBase { @Override LockPatternUtils getLockPatternUtils() { return mLockPatternUtils; }}; } }; private void addDefaultWidgets() { LayoutInflater inflater = LayoutInflater.from(mContext); Loading Loading @@ -906,6 +906,33 @@ public class KeyguardHostView extends KeyguardViewBase { initializeTransportControl(); } private void removeTransportFromWidgetPager() { int page = getWidgetPosition(R.id.keyguard_transport_control); if (page != -1) { mAppWidgetContainer.removeWidget(mTransportControl); // XXX keep view attached so we still get show/hide events from AudioManager KeyguardHostView.this.addView(mTransportControl); mTransportControl.setVisibility(View.GONE); mTransportState = TRANSPORT_GONE; mTransportControl.post(mSwitchPageRunnable); } } private void addTransportToWidgetPager() { if (getWidgetPosition(R.id.keyguard_transport_control) == -1) { KeyguardHostView.this.removeView(mTransportControl); // insert to left of camera if it exists, otherwise after right-most widget int lastWidget = mAppWidgetContainer.getChildCount() - 1; int position = 0; // handle no widget case if (lastWidget >= 0) { position = isCameraPage(lastWidget) ? lastWidget : lastWidget + 1; } mAppWidgetContainer.addWidget(mTransportControl, position); mTransportControl.setVisibility(View.VISIBLE); } } private void initializeTransportControl() { mTransportControl = (KeyguardTransportControlView) findViewById(R.id.keyguard_transport_control); Loading @@ -917,24 +944,14 @@ public class KeyguardHostView extends KeyguardViewBase { mTransportControl.setKeyguardCallback(new TransportCallback() { @Override public void onListenerDetached() { int page = getWidgetPosition(R.id.keyguard_transport_control); if (page != -1) { mAppWidgetContainer.removeView(mTransportControl); // XXX keep view attached so we still get show/hide events from AudioManager KeyguardHostView.this.addView(mTransportControl); mTransportControl.setVisibility(View.GONE); mTransportState = TRANSPORT_GONE; removeTransportFromWidgetPager(); mTransportControl.post(mSwitchPageRunnable); } } @Override public void onListenerAttached() { if (getWidgetPosition(R.id.keyguard_transport_control) == -1) { KeyguardHostView.this.removeView(mTransportControl); mAppWidgetContainer.addView(mTransportControl, 0); mTransportControl.setVisibility(View.VISIBLE); } // Transport will be added when playstate changes... mTransportControl.post(mSwitchPageRunnable); } @Override Loading Loading @@ -1058,6 +1075,7 @@ public class KeyguardHostView extends KeyguardViewBase { mTransportControl.isMusicPlaying() || mTransportState == TRANSPORT_VISIBLE; if (isMusicPlaying) { mTransportState = TRANSPORT_VISIBLE; addTransportToWidgetPager(); } else if (mTransportState == TRANSPORT_VISIBLE) { mTransportState = TRANSPORT_INVISIBLE; } Loading @@ -1081,7 +1099,7 @@ public class KeyguardHostView extends KeyguardViewBase { // if music playing, show transport if (isMusicPlaying) { if (DEBUG) Log.d(TAG, "Music playing, show transport"); return mAppWidgetContainer.indexOfChild(mTransportControl); return mAppWidgetContainer.getWidgetPageIndex(mTransportControl); } // if we have a valid sticky widget, show it Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardTransportControlView.java +2 −10 Original line number Diff line number Diff line Loading @@ -40,6 +40,7 @@ import android.util.Log; import android.view.KeyEvent; import android.view.View; import android.view.View.OnClickListener; import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.TextView; Loading @@ -49,14 +50,13 @@ import java.lang.ref.WeakReference; /** * This is the widget responsible for showing music controls in keyguard. */ public class KeyguardTransportControlView extends KeyguardWidgetFrame implements OnClickListener { public class KeyguardTransportControlView extends FrameLayout implements OnClickListener { private static final int MSG_UPDATE_STATE = 100; private static final int MSG_SET_METADATA = 101; private static final int MSG_SET_TRANSPORT_CONTROLS = 102; private static final int MSG_SET_ARTWORK = 103; private static final int MSG_SET_GENERATION_ID = 104; private static final int MAXDIM = 512; private static final int DISPLAY_TIMEOUT_MS = 5000; // 5s protected static final boolean DEBUG = false; protected static final String TAG = "TransportControlView"; Loading Loading @@ -260,14 +260,6 @@ public class KeyguardTransportControlView extends KeyguardWidgetFrame implements mAttached = false; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); // int dim = Math.min(MAXDIM, Math.max(getWidth(), getHeight())); // Log.v(TAG, "setting max bitmap size: " + dim + "x" + dim); // mAudioManager.remoteControlDisplayUsesBitmapSize(mIRCD, dim, dim); } class Metadata { private String artist; private String trackTitle; Loading
policy/src/com/android/internal/policy/impl/keyguard/KeyguardWidgetPager.java +44 −1 Original line number Diff line number Diff line Loading @@ -27,6 +27,7 @@ import android.content.res.Resources; import android.os.Handler; import android.os.HandlerThread; import android.util.AttributeSet; import android.util.Slog; import android.view.Gravity; import android.view.MotionEvent; import android.view.View; Loading Loading @@ -62,6 +63,7 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit private boolean mShowHintsOnLayout = false; private static final long CUSTOM_WIDGET_USER_ACTIVITY_TIMEOUT = 30000; private static final String TAG = "KeyguardWidgetPager"; private int mPage = 0; private Callbacks mCallbacks; Loading Loading @@ -245,25 +247,40 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit } } // We enforce that all children are KeyguardWidgetFrames /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, int index) { enforceKeyguardWidgetFrame(child); super.addView(child, index); } /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, int width, int height) { enforceKeyguardWidgetFrame(child); super.addView(child, width, height); } /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, LayoutParams params) { enforceKeyguardWidgetFrame(child); super.addView(child, params); } /** * Use addWidget() instead. * @deprecated */ @Override public void addView(View child, int index, LayoutParams params) { enforceKeyguardWidgetFrame(child); Loading Loading @@ -615,4 +632,30 @@ public class KeyguardWidgetPager extends PagedView implements PagedView.PageSwit } return false; } public void removeWidget(View view) { if (view instanceof KeyguardWidgetFrame) { removeView(view); } else { // Assume view was wrapped by a KeyguardWidgetFrame in KeyguardWidgetPager#addWidget(). // This supports legacy hard-coded "widgets" like KeyguardTransportControlView. int pos = getWidgetPageIndex(view); if (pos != -1) { KeyguardWidgetFrame frame = (KeyguardWidgetFrame) getChildAt(pos); frame.removeView(view); removeView(frame); } else { Slog.w(TAG, "removeWidget() can't find:" + view); } } } public int getWidgetPageIndex(View view) { if (view instanceof KeyguardWidgetFrame) { return indexOfChild(view); } else { // View was wrapped by a KeyguardWidgetFrame by KeyguardWidgetPager#addWidget() return indexOfChild((KeyguardWidgetFrame)view.getParent()); } } }