diff options
author | Sarmad Hashmi <mhashmi@google.com> | 2016-02-25 18:26:30 +0000 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2016-02-25 18:26:30 +0000 |
commit | 55b9d729f5a80621449756eced19faf8dde9420c (patch) | |
tree | 8bb0dcc5a7ee4bd68a1b946b8142896a606b32da | |
parent | 41b824f645a5a38ffe436eda4a43b48a1ca11fca (diff) | |
parent | cb55981252b49e476e1adf9f2d5ec19a658d2aa4 (diff) |
Mark missed calls as read on swipe.
am: cb55981252
* commit 'cb55981252b49e476e1adf9f2d5ec19a658d2aa4':
Mark missed calls as read on swipe.
-rw-r--r-- | src/com/android/dialer/DialtactsActivity.java | 16 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogAdapter.java | 4 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/CallLogFragment.java | 28 | ||||
-rw-r--r-- | src/com/android/dialer/list/ListsFragment.java | 15 |
4 files changed, 47 insertions, 16 deletions
diff --git a/src/com/android/dialer/DialtactsActivity.java b/src/com/android/dialer/DialtactsActivity.java index d50748303..d12cf24df 100644 --- a/src/com/android/dialer/DialtactsActivity.java +++ b/src/com/android/dialer/DialtactsActivity.java @@ -240,6 +240,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O private FloatingActionButtonController mFloatingActionButtonController; private int mActionBarHeight; + private int mPreviouslySelectedTabIndex; /** * The text returned from a voice search query. Set in {@link #onActivityResult} and used in @@ -423,7 +424,7 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O mIsLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; - + mPreviouslySelectedTabIndex = ListsFragment.TAB_INDEX_SPEED_DIAL; final View floatingActionButtonContainer = findViewById( R.id.floating_action_button_container); ImageButton floatingActionButton = (ImageButton) findViewById(R.id.floating_action_button); @@ -567,6 +568,11 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O @Override protected void onPause() { + // Only clear missed calls if the pause was not triggered by an orientation change + // (or any other confirguration change) + if (!isChangingConfigurations()) { + updateMissedCalls(); + } if (mClearSearchOnPause) { hideDialpadAndSearchUi(); mClearSearchOnPause = false; @@ -1328,7 +1334,9 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O @Override public void onPageSelected(int position) { + updateMissedCalls(); int tabIndex = mListsFragment.getCurrentTabIndex(); + mPreviouslySelectedTabIndex = tabIndex; if (tabIndex == ListsFragment.TAB_INDEX_ALL_CONTACTS) { mFloatingActionButtonController.changeIcon( getResources().getDrawable(R.drawable.ic_person_add_24dp), @@ -1389,4 +1397,10 @@ public class DialtactsActivity extends TransactionSafeActivity implements View.O } return FloatingActionButtonController.ALIGN_END; } + + private void updateMissedCalls() { + if (mPreviouslySelectedTabIndex == ListsFragment.TAB_INDEX_HISTORY) { + mListsFragment.markMissedCallsAsReadAndRemoveNotifications(); + } + } } diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java index 7c2e80df1..6f96ee529 100644 --- a/src/com/android/dialer/calllog/CallLogAdapter.java +++ b/src/com/android/dialer/calllog/CallLogAdapter.java @@ -16,6 +16,7 @@ package com.android.dialer.calllog; +import com.android.dialer.DialtactsActivity; import com.google.common.annotations.VisibleForTesting; import android.content.Context; @@ -171,6 +172,9 @@ public class CallLogAdapter extends GroupingListAdapter } else { if (viewHolder.callType == CallLog.Calls.MISSED_TYPE) { CallLogAsyncTaskUtil.markCallAsRead(mContext, viewHolder.callIds); + if (!mIsCallLogActivity) { + ((DialtactsActivity) v.getContext()).updateTabUnreadCounts(); + } } expandViewHolderActions(viewHolder); } diff --git a/src/com/android/dialer/calllog/CallLogFragment.java b/src/com/android/dialer/calllog/CallLogFragment.java index ac8dfdabe..9cd1359c7 100644 --- a/src/com/android/dialer/calllog/CallLogFragment.java +++ b/src/com/android/dialer/calllog/CallLogFragment.java @@ -67,6 +67,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis private static final String KEY_FILTER_TYPE = "filter_type"; private static final String KEY_LOG_LIMIT = "log_limit"; private static final String KEY_DATE_LIMIT = "date_limit"; + private static final String KEY_IS_CALL_LOG_ACTIVITY = "is_call_log_activity"; // No limit specified for the number of logs to show; use the CallLogQueryHandler's default. private static final int NO_LOG_LIMIT = -1; @@ -194,6 +195,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis mCallTypeFilter = state.getInt(KEY_FILTER_TYPE, mCallTypeFilter); mLogLimit = state.getInt(KEY_LOG_LIMIT, mLogLimit); mDateLimit = state.getLong(KEY_DATE_LIMIT, mDateLimit); + mIsCallLogActivity = state.getBoolean(KEY_IS_CALL_LOG_ACTIVITY, mIsCallLogActivity); } final Activity activity = getActivity(); @@ -355,7 +357,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis @Override public void onStop() { - updateOnTransition(false /* onEntry */); + updateOnTransition(); super.onStop(); } @@ -375,6 +377,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis outState.putInt(KEY_FILTER_TYPE, mCallTypeFilter); outState.putInt(KEY_LOG_LIMIT, mLogLimit); outState.putLong(KEY_DATE_LIMIT, mDateLimit); + outState.putBoolean(KEY_IS_CALL_LOG_ACTIVITY, mIsCallLogActivity); mAdapter.onSaveInstanceState(outState); } @@ -382,6 +385,9 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis @Override public void fetchCalls() { mCallLogQueryHandler.fetchCalls(mCallTypeFilter, mDateLimit); + if (!mIsCallLogActivity) { + ((ListsFragment) getParentFragment()).updateTabUnreadCounts(); + } } private void updateEmptyMessage(int filterType) { @@ -429,7 +435,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis if (mMenuVisible != menuVisible) { mMenuVisible = menuVisible; if (!menuVisible) { - updateOnTransition(false /* onEntry */); + updateOnTransition(); } else if (isResumed()) { refreshData(); } @@ -448,7 +454,7 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis fetchCalls(); mCallLogQueryHandler.fetchVoicemailStatus(); mCallLogQueryHandler.fetchMissedCallsUnreadCount(); - updateOnTransition(true /* onEntry */); + updateOnTransition(); mRefreshDataRequired = false; } else { // Refresh the display of the existing data to update the timestamp text descriptions. @@ -457,23 +463,17 @@ public class CallLogFragment extends Fragment implements CallLogQueryHandler.Lis } /** - * Updates the call data and notification state on entering or leaving the call log tab. - * - * If we are leaving the call log tab, mark all the missed calls as read. + * Updates the voicemail notification state. * * TODO: Move to CallLogActivity */ - private void updateOnTransition(boolean onEntry) { + private void updateOnTransition() { // We don't want to update any call data when keyguard is on because the user has likely not // seen the new calls yet. // This might be called before onCreate() and thus we need to check null explicitly. - if (mKeyguardManager != null && !mKeyguardManager.inKeyguardRestrictedInputMode()) { - // On either of the transitions we update the missed call and voicemail notifications. - // While exiting we additionally consume all missed calls (by marking them as read). - mCallLogQueryHandler.markNewCallsAsOld(); - if (mCallTypeFilter == Calls.VOICEMAIL_TYPE) { - CallLogNotificationsHelper.updateVoicemailNotifications(getActivity()); - } + if (mKeyguardManager != null && !mKeyguardManager.inKeyguardRestrictedInputMode() + && mCallTypeFilter == Calls.VOICEMAIL_TYPE) { + CallLogNotificationsHelper.updateVoicemailNotifications(getActivity()); } } diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java index 9f761486d..5b7c950bf 100644 --- a/src/com/android/dialer/list/ListsFragment.java +++ b/src/com/android/dialer/list/ListsFragment.java @@ -36,6 +36,7 @@ import com.android.contacts.common.list.ViewPagerTabs; import com.android.dialer.DialtactsActivity; import com.android.dialer.R; import com.android.dialer.calllog.CallLogFragment; +import com.android.dialer.calllog.CallLogNotificationsHelper; import com.android.dialer.calllog.CallLogQueryHandler; import com.android.dialer.calllog.VisualVoicemailCallLogFragment; import com.android.dialer.logging.Logger; @@ -376,7 +377,8 @@ public class ListsFragment extends Fragment /** * External method to update unread count because the unread count changes when the user - * expands a voicemail in the call log. + * expands a voicemail in the call log or when the user expands an unread call in the call + * history tab. */ public void updateTabUnreadCounts() { if (mCallLogQueryHandler != null) { @@ -387,6 +389,17 @@ public class ListsFragment extends Fragment } } + /** + * External method to mark all missed calls as read. + */ + public void markMissedCallsAsReadAndRemoveNotifications() { + if (mCallLogQueryHandler != null) { + mCallLogQueryHandler.markMissedCallsAsRead(); + CallLogNotificationsHelper.removeMissedCallNotifications(getActivity()); + } + } + + public void showRemoveView(boolean show) { mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE); mRemoveView.setAlpha(show ? 0 : 1); |