Merge "Close notification blame popups when the panel disappears." into jb-dev

This commit is contained in:
Daniel Sandler
2012-05-07 05:59:05 -07:00
committed by Android (Google) Code Review
4 changed files with 33 additions and 6 deletions

View File

@@ -74,6 +74,7 @@ public class SwipeHelper implements Gefingerpoken {
private boolean mLongPressSent;
private View.OnLongClickListener mLongPressListener;
private Runnable mWatchLongPress;
private long mLongPressTimeout;
public SwipeHelper(int swipeDirection, Callback callback, float densityScale,
float pagingTouchSlop) {
@@ -83,6 +84,8 @@ public class SwipeHelper implements Gefingerpoken {
mVelocityTracker = VelocityTracker.obtain();
mDensityScale = densityScale;
mPagingTouchSlop = pagingTouchSlop;
mLongPressTimeout = (long) (ViewConfiguration.getLongPressTimeout() * 1.5f); // extra long-press!
}
public void setLongPressListener(View.OnLongClickListener listener) {
@@ -180,7 +183,7 @@ public class SwipeHelper implements Gefingerpoken {
}
}
private void removeLongPressCallback() {
public void removeLongPressCallback() {
if (mWatchLongPress != null) {
mHandler.removeCallbacks(mWatchLongPress);
}
@@ -214,7 +217,7 @@ public class SwipeHelper implements Gefingerpoken {
}
};
}
mHandler.postDelayed(mWatchLongPress, ViewConfiguration.getLongPressTimeout());
mHandler.postDelayed(mWatchLongPress, mLongPressTimeout);
}
}

View File

@@ -91,6 +91,8 @@ public abstract class BaseStatusBar extends SystemUI implements
protected RecentsPanelView mRecentsPanel;
protected RecentTasksLoader mRecentTasksLoader;
protected PopupMenu mNotificationBlamePopup;
// UI-specific methods
/**
@@ -238,9 +240,11 @@ public abstract class BaseStatusBar extends SystemUI implements
final String packageNameF = (String) v.getTag();
if (packageNameF == null) return false;
if (v.getWindowToken() == null) return false;
PopupMenu popup = new PopupMenu(mContext, v);
popup.getMenuInflater().inflate(R.menu.notification_popup_menu, popup.getMenu());
popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
mNotificationBlamePopup = new PopupMenu(mContext, v);
mNotificationBlamePopup.getMenuInflater().inflate(
R.menu.notification_popup_menu,
mNotificationBlamePopup.getMenu());
mNotificationBlamePopup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.notification_inspect_item) {
startApplicationDetailsActivity(packageNameF);
@@ -251,13 +255,20 @@ public abstract class BaseStatusBar extends SystemUI implements
return true;
}
});
popup.show();
mNotificationBlamePopup.show();
return true;
}
};
}
public void dismissPopups() {
if (mNotificationBlamePopup != null) {
mNotificationBlamePopup.dismiss();
mNotificationBlamePopup = null;
}
}
public void dismissIntruder() {
// pass
}

View File

@@ -1247,6 +1247,10 @@ public class PhoneStatusBar extends BaseStatusBar {
return;
}
mExpanded = false;
// Close any "App info" popups that might have snuck on-screen
dismissPopups();
if (mPostCollapseCleanup != null) {
mPostCollapseCleanup.run();
mPostCollapseCleanup = null;

View File

@@ -32,6 +32,7 @@ import android.view.MotionEvent;
import android.view.View;
import android.view.ViewConfiguration;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.LinearLayout;
import com.android.systemui.ExpandHelper;
@@ -108,6 +109,14 @@ public class NotificationRowLayout
mSwipeHelper.setLongPressListener(listener);
}
@Override
public void onWindowFocusChanged(boolean hasWindowFocus) {
super.onWindowFocusChanged(hasWindowFocus);
if (!hasWindowFocus) {
mSwipeHelper.removeLongPressCallback();
}
}
public void setAnimateBounds(boolean anim) {
mAnimateBounds = anim;
}