summaryrefslogtreecommitdiff
path: root/src/com/android/dialer
diff options
context:
space:
mode:
authorIhab Awad <ihab@google.com>2014-03-18 16:19:00 -0700
committerIhab Awad <ihab@google.com>2014-03-20 11:14:13 -0700
commitfb00cb8395f99842a41fd68980b2e87ae840c617 (patch)
treed2febd883785598d84a3f294d7b0046636df8b23 /src/com/android/dialer
parentf3db08a45846fd7a99460ea4eb4e10fa58499cd1 (diff)
Fix problem where swiping upward in overflow menu did not display the
correct options menu items. b/13441681 Change-Id: If4f6970a4dd92e20ab1c04eae5228a0475bf445c
Diffstat (limited to 'src/com/android/dialer')
-rw-r--r--src/com/android/dialer/DialtactsActivity.java31
-rw-r--r--src/com/android/dialer/dialpad/DialpadFragment.java11
2 files changed, 25 insertions, 17 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java
index 8bca7dd8b..f302f2953 100644
--- a/src/com/android/dialer/DialtactsActivity.java
+++ b/src/com/android/dialer/DialtactsActivity.java
@@ -151,6 +151,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
private View mDialpadButton;
private View mDialButton;
private PopupMenu mOverflowMenu;
+ private PopupMenu mDialpadOverflowMenu;
// Padding view used to shift the fragment frame up when the dialpad is shown so that
// the contents of the fragment frame continue to exist in a layout of the same height
@@ -337,9 +338,6 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
prepareSearchView();
- hideDialpadFragment(false, false);
- setupFakeActionBarItems();
-
mDialerDatabaseHelper = DatabaseHelperManager.getDatabaseHelper(this);
SmartDialPrefix.initializeNanpSettings(this);
}
@@ -347,6 +345,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
@Override
protected void onResume() {
super.onResume();
+ setupFakeActionBarItems();
if (mFirstLaunch) {
displayFragment(getIntent());
} else if (!phoneIsInUse() && mInCallDialpadUp) {
@@ -451,7 +450,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
switch (view.getId()) {
case R.id.overflow_menu: {
if (isDialpadShowing()) {
- mDialpadFragment.optionsMenuInvoked(view);
+ mDialpadOverflowMenu.show();
} else {
mOverflowMenu.show();
}
@@ -545,6 +544,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
ft.commit();
mDialButton.setVisibility(shouldShowOnscreenDialButton() ? View.VISIBLE : View.GONE);
mDialpadButton.setVisibility(View.GONE);
+ mMenuButton.setOnTouchListener(mDialpadOverflowMenu.getDragToOpenListener());
}
public void hideDialpadFragment(boolean animate, boolean clearDialpad) {
@@ -562,6 +562,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
ft.commit();
mDialButton.setVisibility(View.GONE);
mDialpadButton.setVisibility(View.VISIBLE);
+ mMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
}
private void prepareSearchView() {
@@ -664,16 +665,17 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
});
}
-
- public void setupFakeActionBarItems() {
+ private void setupFakeActionBarItems() {
mMenuButton = findViewById(R.id.overflow_menu);
if (mMenuButton != null) {
mMenuButton.setOnClickListener(this);
-
- mOverflowMenu = new OverflowPopupMenu(DialtactsActivity.this, mMenuButton);
- final Menu menu = mOverflowMenu.getMenu();
- mOverflowMenu.inflate(R.menu.dialtacts_options);
- mOverflowMenu.setOnMenuItemClickListener(this);
+ if (mOverflowMenu == null) {
+ mOverflowMenu = buildOptionsMenu(mMenuButton);
+ }
+ if (mDialpadOverflowMenu == null) {
+ mDialpadOverflowMenu = mDialpadFragment.buildOptionsMenu(mMenuButton);
+ }
+ // Initial state is with dialpad fragment not shown
mMenuButton.setOnTouchListener(mOverflowMenu.getDragToOpenListener());
}
@@ -692,6 +694,13 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
mDialpadButton.setOnClickListener(this);
}
+ private PopupMenu buildOptionsMenu(View invoker) {
+ PopupMenu menu = new OverflowPopupMenu(this, invoker);
+ menu.inflate(R.menu.dialtacts_options);
+ menu.setOnMenuItemClickListener(this);
+ return menu;
+ }
+
private void fixIntent(Intent intent) {
// This should be cleaned up: the call key used to send an Intent
// that just said to go to the recent calls list. It now sends this
diff --git a/src/com/android/dialer/dialpad/DialpadFragment.java b/src/com/android/dialer/dialpad/DialpadFragment.java
index 7762721a1..2d3c0ee32 100644
--- a/src/com/android/dialer/dialpad/DialpadFragment.java
+++ b/src/com/android/dialer/dialpad/DialpadFragment.java
@@ -936,18 +936,17 @@ public class DialpadFragment extends Fragment
}
/**
- * Called by the containing Activity to tell this Fragment that the gesture to display the
- * "options" menu has been invoked.
+ * Called by the containing Activity to tell this Fragment to build an overflow options
+ * menu for display by the container when appropriate.
*
* @param invoker the View that invoked the options menu, to act as an anchor location.
*/
- public void optionsMenuInvoked(View invoker) {
+ public PopupMenu buildOptionsMenu(View invoker) {
final PopupMenu popupMenu = new PopupMenu(getActivity(), invoker);
- final Menu menu = popupMenu.getMenu();
popupMenu.inflate(R.menu.dialpad_options);
popupMenu.setOnMenuItemClickListener(this);
- setupMenuItems(menu);
- popupMenu.show();
+ setupMenuItems(popupMenu.getMenu());
+ return popupMenu;
}
/**