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

Commit a75dbeac authored by Tyler Gunn's avatar Tyler Gunn Committed by Natiq Ahmed
Browse files

Correcting population of search box with voice search results.

The issue is the onActivityResult callback which receives the result of
the voice search is called BEFORE the dialtacts activity is resumed, and
hence the search results fragment is not properly shown (since resume has
not yet completed).

Changed so that the search results are stored until onResume, where they
are applied to the search box.

Bug: 18410823
Change-Id: I02985f722643846067678a67f2c1fda76434fbc4
parent 39252724
Loading
Loading
Loading
Loading
+17 −1
Original line number Original line Diff line number Diff line
@@ -241,6 +241,12 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O


    private int mActionBarHeight;
    private int mActionBarHeight;


    /**
     * The text returned from a voice search query.  Set in {@link #onActivityResult} and used in
     * {@link #onResume()} to populate the search box.
     */
    private String mVoiceSearchQuery;

    private class OptionsPopupMenu extends PopupMenu {
    private class OptionsPopupMenu extends PopupMenu {
        public OptionsPopupMenu(Context context, View anchor) {
        public OptionsPopupMenu(Context context, View anchor) {
            super(context, anchor, Gravity.END);
            super(context, anchor, Gravity.END);
@@ -498,6 +504,16 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
            showDialpadFragment(false);
            showDialpadFragment(false);
            mShowDialpadOnResume = false;
            mShowDialpadOnResume = false;
        }
        }

        // If there was a voice query result returned in the {@link #onActivityResult} callback, it
        // will have been stashed in mVoiceSearchQuery since the search results fragment cannot be
        // shown until onResume has completed.  Active the search UI and set the search term now.
        if (!TextUtils.isEmpty(mVoiceSearchQuery)) {
            mActionBarController.onSearchBoxTapped();
            mSearchView.setText(mVoiceSearchQuery);
            mVoiceSearchQuery = null;
        }

        mFirstLaunch = false;
        mFirstLaunch = false;
        prepareVoiceSearchButton();
        prepareVoiceSearchButton();
        mDialerDatabaseHelper.startSmartDialUpdateThread();
        mDialerDatabaseHelper.startSmartDialUpdateThread();
@@ -655,7 +671,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O
                        RecognizerIntent.EXTRA_RESULTS);
                        RecognizerIntent.EXTRA_RESULTS);
                if (matches.size() > 0) {
                if (matches.size() > 0) {
                    final String match = matches.get(0);
                    final String match = matches.get(0);
                    mSearchView.setText(match);
                    mVoiceSearchQuery = match;
                } else {
                } else {
                    Log.e(TAG, "Voice search - nothing heard");
                    Log.e(TAG, "Voice search - nothing heard");
                }
                }