diff options
Diffstat (limited to 'src')
6 files changed, 46 insertions, 19 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java index d1a687240..52a33f2b3 100644 --- a/src/com/android/dialer/DialtactsActivity.java +++ b/src/com/android/dialer/DialtactsActivity.java @@ -547,6 +547,14 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O prepareVoiceSearchButton(); mDialerDatabaseHelper.startSmartDialUpdateThread(); mFloatingActionButtonController.align(getFabAlignment(), false /* animate */); + + if (getIntent().hasExtra(EXTRA_SHOW_TAB)) { + int index = getIntent().getIntExtra(EXTRA_SHOW_TAB, ListsFragment.TAB_INDEX_SPEED_DIAL); + if (index < mListsFragment.getTabCount()) { + mListsFragment.showTab(index); + } + } + Trace.endSection(); } @@ -905,14 +913,10 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O @Override public void onNewIntent(Intent newIntent) { setIntent(newIntent); + mStateSaved = false; displayFragment(newIntent); - if (newIntent.hasExtra(EXTRA_SHOW_TAB)) { - mListsFragment.showTab( - getIntent().getIntExtra(EXTRA_SHOW_TAB, mListsFragment.TAB_INDEX_SPEED_DIAL)); - } - invalidateOptionsMenu(); } @@ -1217,6 +1221,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O @Override public void onCallNumberDirectly(String phoneNumber, boolean isVideoCall) { + if (phoneNumber == null) { + // Invalid phone number, but let the call go through so that InCallUI can show + // an error message. + phoneNumber = ""; + } Intent intent = isVideoCall ? IntentUtil.getVideoCallIntent(phoneNumber, getCallOrigin()) : IntentUtil.getCallIntent(phoneNumber, getCallOrigin()); diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java index 83e55944f..510847264 100644 --- a/src/com/android/dialer/calllog/CallLogAdapter.java +++ b/src/com/android/dialer/calllog/CallLogAdapter.java @@ -361,10 +361,13 @@ public class CallLogAdapter extends GroupingListAdapter @Override public void changeCursor(Cursor cursor) { - // Data has changed; reset so that the first call log list item will be expanded. - mHasBoundFirstView = false; - mCurrentlyExpandedPosition = RecyclerView.NO_POSITION; - mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM; + // Don't auto-expand the first item for the voicemail list fragment since that will + // trigger an unwanted voicemail download and playback. + if (mVoicemailPlaybackPresenter == null) { + mHasBoundFirstView = false; + mCurrentlyExpandedPosition = RecyclerView.NO_POSITION; + mCurrentlyExpandedRowId = NO_EXPANDED_LIST_ITEM; + } super.changeCursor(cursor); } @@ -578,8 +581,10 @@ public class CallLogAdapter extends GroupingListAdapter // In case ViewHolders were added/removed, update the expanded position if the rowIds // match so that we can restore the correct expanded state on rebind. mCurrentlyExpandedPosition = position; - } else if (!mHasBoundFirstView) { + } else if (!mHasBoundFirstView && mVoicemailPlaybackPresenter == null) { // Expand the first view when loading the call log to expose the actions. + // Don't auto-expand the first item for the voicemail list fragment since that will + // trigger an unwanted voicemail download and playback. mCurrentlyExpandedRowId = views.rowId; mCurrentlyExpandedPosition = position; mHasBoundFirstView = true; diff --git a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java index 6c0ecf72b..401b0b641 100644 --- a/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java +++ b/src/com/android/dialer/list/DialerPhoneNumberListAdapter.java @@ -44,11 +44,6 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { super(context); mCountryIso = GeoUtil.getCurrentCountryIso(context); - - // Enable all shortcuts by default - for (int i = 0; i < mShortcutEnabled.length; i++) { - mShortcutEnabled[i] = true; - } } @Override @@ -67,6 +62,12 @@ public class DialerPhoneNumberListAdapter extends PhoneNumberListAdapter { return count; } + public void disableAllShortcuts() { + for (int i = 0; i < mShortcutEnabled.length; i++) { + mShortcutEnabled[i] = false; + } + } + @Override public int getItemViewType(int position) { final int shortcut = getShortcutTypeFromPosition(position); diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java index e45da0ce0..33c977670 100644 --- a/src/com/android/dialer/list/ListsFragment.java +++ b/src/com/android/dialer/list/ListsFragment.java @@ -347,6 +347,10 @@ public class ListsFragment extends Fragment return mRemoveView; } + public int getTabCount() { + return mViewPagerAdapter.getCount(); + } + private int getRtlPosition(int position) { if (DialerUtils.isRtl()) { return mViewPagerAdapter.getCount() - 1 - position; diff --git a/src/com/android/dialer/list/SearchFragment.java b/src/com/android/dialer/list/SearchFragment.java index 1f33d5b75..106545eaf 100644 --- a/src/com/android/dialer/list/SearchFragment.java +++ b/src/com/android/dialer/list/SearchFragment.java @@ -345,7 +345,9 @@ public class SearchFragment extends PhoneNumberPickerFragment { super.startLoading(); } else if (TextUtils.isEmpty(getQueryString())) { // Clear out any existing call shortcuts. - getAdapter().setQueryString(null); + final DialerPhoneNumberListAdapter adapter = + (DialerPhoneNumberListAdapter) getAdapter(); + adapter.disableAllShortcuts(); } } diff --git a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java index 4597d35d0..19f71455d 100644 --- a/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java +++ b/src/com/android/dialer/voicemail/VoicemailPlaybackPresenter.java @@ -521,7 +521,9 @@ public class VoicemailPlaybackPresenter mIsPrepared = false; } - mView.onPlaybackError(); + if (mView != null) { + mView.onPlaybackError(); + } mPosition = 0; mIsPlaying = false; @@ -536,7 +538,9 @@ public class VoicemailPlaybackPresenter // Reset the seekbar position to the beginning. mPosition = 0; - mView.setClipPosition(0, mDuration.get()); + if (mView != null) { + mView.setClipPosition(0, mDuration.get()); + } } @Override @@ -610,7 +614,9 @@ public class VoicemailPlaybackPresenter mPosition = mMediaPlayer.getCurrentPosition(); Log.d(TAG, "Paused playback at " + mPosition + "."); - mView.onPlaybackStopped(); + if (mView != null) { + mView.onPlaybackStopped(); + } mAudioManager.abandonAudioFocus(this); mActivity.getWindow().clearFlags(LayoutParams.FLAG_KEEP_SCREEN_ON); |