Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 33a3023e authored by Daisuke Miyakawa's avatar Daisuke Miyakawa
Browse files

Show call settings menu correctly when no hard menu key

TESTED:
- call settings is visible on every fragment (phone with hard menu key)
- call settings is visible appropriately (phone without hard menu key)

Bug: 5172892
Change-Id: I1d5c115f4f1ee0bdecf858789f648aa5b05c331c
parent 8feafa54
Loading
Loading
Loading
Loading
+6 −0
Original line number Diff line number Diff line
@@ -30,4 +30,10 @@
        android:icon="@drawable/ic_menu_wait"
        android:title="@string/add_wait"
        android:showAsAction="withText" />

    <item
        android:id="@+id/menu_call_settings_dialpad"
        android:title="@string/call_settings"
        android:icon="@drawable/ic_menu_settings_holo_light"
        android:showAsAction="withText" />
</menu>
+13 −2
Original line number Diff line number Diff line
@@ -58,6 +58,7 @@ import android.view.MenuItem;
import android.view.MenuItem.OnMenuItemClickListener;
import android.view.View;
import android.view.View.OnAttachStateChangeListener;
import android.view.ViewConfiguration;
import android.view.inputmethod.InputMethodManager;
import android.widget.SearchView;
import android.widget.SearchView.OnCloseListener;
@@ -653,15 +654,25 @@ public class DialtactsActivity extends Activity {
                    mFilterOptionsMenuItemClickListener);
            callSettingsMenuItem.setVisible(false);
        } else {
            final boolean showCallSettingsMenu;
            if (tab != null && tab.getPosition() == TAB_INDEX_DIALER) {
                searchMenuItem.setVisible(false);
                // When permanent menu key is _not_ available, the call settings menu should be
                // available via DialpadFragment.
                showCallSettingsMenu = ViewConfiguration.get(this).hasPermanentMenuKey();
            } else {
                searchMenuItem.setVisible(true);
                searchMenuItem.setOnMenuItemClickListener(mSearchMenuItemClickListener);
                showCallSettingsMenu = true;
            }
            filterOptionMenuItem.setVisible(false);

            if (showCallSettingsMenu) {
                callSettingsMenuItem.setVisible(true);
                callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent());
            } else {
                callSettingsMenuItem.setVisible(false);
            }
        }

        return true;
+10 −0
Original line number Diff line number Diff line
@@ -571,10 +571,20 @@ public class DialpadFragment extends Fragment
    }

    private void setupMenuItems(Menu menu) {
        final MenuItem callSettingsMenuItem = menu.findItem(R.id.menu_call_settings_dialpad);
        final MenuItem addToContactMenuItem = menu.findItem(R.id.menu_add_contacts);
        final MenuItem twoSecPauseMenuItem = menu.findItem(R.id.menu_2s_pause);
        final MenuItem waitMenuItem = menu.findItem(R.id.menu_add_wait);

        final Activity activity = getActivity();
        if (activity != null && ViewConfiguration.get(activity).hasPermanentMenuKey()) {
            // Call settings should be available via its parent Activity.
            callSettingsMenuItem.setVisible(false);
        } else {
            callSettingsMenuItem.setVisible(true);
            callSettingsMenuItem.setIntent(DialtactsActivity.getCallSettingsIntent());
        }

        // We show "add to contacts", "2sec pause", and "add wait" menus only when the user is
        // seeing usual dialpads and has typed at least one digit.
        // We never show a menu if the "choose dialpad" UI is up.