diff options
author | Yorke Lee <yorkelee@google.com> | 2013-09-17 19:25:32 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2013-09-17 19:25:32 +0000 |
commit | e40ea13d87f3d409453bd22555d9aafcb8fa0639 (patch) | |
tree | 0816817dda65a6cf41fc0c4b1d41256ea7ed442c /src/com/android/dialer/list | |
parent | ed537e1bdf8c2b50f710aafa2c767dde5f32070c (diff) | |
parent | 21299c354c4178dd8f89eef42872cbd62cd4aaf0 (diff) |
Merge "Fix missed calls not updating properly" into klp-dev
Diffstat (limited to 'src/com/android/dialer/list')
-rw-r--r-- | src/com/android/dialer/list/PhoneFavoriteFragment.java | 44 | ||||
-rw-r--r-- | src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java | 5 |
2 files changed, 46 insertions, 3 deletions
diff --git a/src/com/android/dialer/list/PhoneFavoriteFragment.java b/src/com/android/dialer/list/PhoneFavoriteFragment.java index a9613478a..beeb320dd 100644 --- a/src/com/android/dialer/list/PhoneFavoriteFragment.java +++ b/src/com/android/dialer/list/PhoneFavoriteFragment.java @@ -18,9 +18,12 @@ package com.android.dialer.list; import android.app.Activity; import android.app.Fragment; import android.app.LoaderManager; +import android.content.Context; import android.content.CursorLoader; import android.content.Loader; +import android.content.SharedPreferences; import android.database.Cursor; +import android.database.MatrixCursor; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; @@ -42,7 +45,9 @@ import com.android.contacts.common.ContactTileLoaderFactory; import com.android.contacts.common.GeoUtil; import com.android.contacts.common.list.ContactEntry; import com.android.contacts.common.list.ContactTileView; +import com.android.dialer.DialtactsActivity; import com.android.dialer.R; +import com.android.dialer.calllog.CallLogQuery; import com.android.dialer.calllog.ContactInfoHelper; import com.android.dialer.calllog.CallLogAdapter; import com.android.dialer.calllog.CallLogQueryHandler; @@ -74,6 +79,9 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen */ private static int LOADER_ID_CONTACT_TILE = 1; + private static final String KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE = + "key_last_dismissed_call_shortcut_date"; + public interface OnShowAllContactsListener { public void onShowAllContacts(); } @@ -157,6 +165,17 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen */ private View mEmptyView; + /** + * Call shortcuts older than this date (persisted in shared preferences) will not show up in + * at the top of the screen + */ + private long mLastCallShortcutDate = 0; + + /** + * The date of the current call shortcut that is showing on screen. + */ + private long mCurrentCallShortcutDate = 0; + private final ContactTileView.Listener mContactTileAdapterListener = new ContactTileAdapterListener(); private final LoaderManager.LoaderCallbacks<Cursor> mContactTileLoaderListener = @@ -195,6 +214,11 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen @Override public void onResume() { super.onResume(); + final SharedPreferences prefs = getActivity().getSharedPreferences( + DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE); + + mLastCallShortcutDate = prefs.getLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, 0); + fetchCalls(); mCallLogAdapter.setLoading(true); getLoaderManager().getLoader(LOADER_ID_CONTACT_TILE).forceLoad(); @@ -231,7 +255,7 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen }); mContactTileAdapter.setEmptyView(mEmptyView); - mAdapter = new PhoneFavoriteMergedAdapter(getActivity(), mContactTileAdapter, + mAdapter = new PhoneFavoriteMergedAdapter(getActivity(), this, mContactTileAdapter, mCallLogAdapter, mShowAllContactsButton); mListView.setAdapter(mAdapter); @@ -308,13 +332,20 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen @Override public void onCallsFetched(Cursor cursor) { mCallLogAdapter.setLoading(false); + + // Save the date of the most recent call log item + if (cursor != null && cursor.moveToFirst()) { + mCurrentCallShortcutDate = cursor.getLong(CallLogQuery.DATE); + } + mCallLogAdapter.changeCursor(cursor); + mAdapter.notifyDataSetChanged(); } @Override public void fetchCalls() { - mCallLogQueryHandler.fetchNewCalls(CallLogQueryHandler.CALL_TYPE_ALL); + mCallLogQueryHandler.fetchCalls(CallLogQueryHandler.CALL_TYPE_ALL, mLastCallShortcutDate); } @Override @@ -452,4 +483,13 @@ public class PhoneFavoriteFragment extends Fragment implements OnItemClickListen public void cacheOffsetsForDatasetChange() { saveOffsets(); } + + public void dismissShortcut() { + mLastCallShortcutDate = mCurrentCallShortcutDate; + final SharedPreferences prefs = getActivity().getSharedPreferences( + DialtactsActivity.SHARED_PREFS_NAME, Context.MODE_PRIVATE); + prefs.edit().putLong(KEY_LAST_DISMISSED_CALL_SHORTCUT_DATE, mLastCallShortcutDate) + .apply(); + fetchCalls(); + } } diff --git a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java index c7554e212..cf2aeeee9 100644 --- a/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java +++ b/src/com/android/dialer/list/PhoneFavoriteMergedAdapter.java @@ -53,6 +53,7 @@ public class PhoneFavoriteMergedAdapter extends BaseAdapter { private final PhoneFavoritesTileAdapter mContactTileAdapter; private final CallLogAdapter mCallLogAdapter; private final View mShowAllContactsButton; + private final PhoneFavoriteFragment mFragment; private final int mCallLogPadding; @@ -70,7 +71,7 @@ public class PhoneFavoriteMergedAdapter extends BaseAdapter { mCallLogQueryHandler.markNewVoicemailsAsOld(); CallLogNotificationsHelper.removeMissedCallNotifications(); CallLogNotificationsHelper.updateVoicemailNotifications(mContext); - mCallLogQueryHandler.fetchNewCalls(CallLogQueryHandler.CALL_TYPE_ALL); + mFragment.dismissShortcut(); } @Override @@ -96,11 +97,13 @@ public class PhoneFavoriteMergedAdapter extends BaseAdapter { }; public PhoneFavoriteMergedAdapter(Context context, + PhoneFavoriteFragment fragment, PhoneFavoritesTileAdapter contactTileAdapter, CallLogAdapter callLogAdapter, View showAllContactsButton) { final Resources resources = context.getResources(); mContext = context; + mFragment = fragment; mCallLogPadding = resources.getDimensionPixelSize(R.dimen.recent_call_log_item_padding); mContactTileAdapter = contactTileAdapter; mCallLogAdapter = callLogAdapter; |