summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/list
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/dialer/list')
-rw-r--r--src/com/android/dialer/list/ListsFragment.java50
1 files changed, 41 insertions, 9 deletions
diff --git a/src/com/android/dialer/list/ListsFragment.java b/src/com/android/dialer/list/ListsFragment.java
index feab201f3..09a4cb21e 100644
--- a/src/com/android/dialer/list/ListsFragment.java
+++ b/src/com/android/dialer/list/ListsFragment.java
@@ -110,6 +110,7 @@ public class ListsFragment extends Fragment
* The position of the currently selected tab.
*/
private int mTabIndex = TAB_INDEX_SPEED_DIAL;
+ private CallLogQueryHandler mCallLogQueryHandler;
public class ViewPagerAdapter extends FragmentPagerAdapter {
public ViewPagerAdapter(FragmentManager fm) {
@@ -199,9 +200,9 @@ public class ListsFragment extends Fragment
}
// Fetch voicemail status to determine if we should show the voicemail tab.
- CallLogQueryHandler callLogQueryHandler =
+ mCallLogQueryHandler =
new CallLogQueryHandler(getActivity(), getActivity().getContentResolver(), this);
- callLogQueryHandler.fetchVoicemailStatus();
+ mCallLogQueryHandler.fetchVoicemailStatus();
Trace.endSection();
}
@@ -227,13 +228,13 @@ public class ListsFragment extends Fragment
mTabTitles[TAB_INDEX_VOICEMAIL] = getResources().getString(R.string.tab_voicemail);
mTabIcons = new int[TAB_COUNT_WITH_VOICEMAIL];
- mTabIcons[TAB_INDEX_SPEED_DIAL] = R.drawable.tab_speed_dial;
- mTabIcons[TAB_INDEX_HISTORY] = R.drawable.tab_history;
- mTabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.tab_contacts;
- mTabIcons[TAB_INDEX_VOICEMAIL] = R.drawable.tab_voicemail;
+ mTabIcons[TAB_INDEX_SPEED_DIAL] = R.drawable.ic_grade_24dp;
+ mTabIcons[TAB_INDEX_HISTORY] = R.drawable.ic_schedule_24dp;
+ mTabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.ic_people_24dp;
+ mTabIcons[TAB_INDEX_VOICEMAIL] = R.drawable.ic_voicemail_24dp;
mViewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header);
- mViewPagerTabs.setTabIcons(mTabIcons);
+ mViewPagerTabs.configureTabIcons(mTabIcons);
mViewPagerTabs.setViewPager(mViewPager);
addOnPageChangeListener(mViewPagerTabs);
@@ -319,8 +320,12 @@ public class ListsFragment extends Fragment
mViewPagerTabs.setViewPager(mViewPager);
mPrefs.edit()
- .putBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, hasActiveVoicemailProvider)
- .commit();
+ .putBoolean(PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, hasActiveVoicemailProvider)
+ .commit();
+ }
+
+ if (hasActiveVoicemailProvider) {
+ mCallLogQueryHandler.fetchVoicemailUnreadCount();
}
if (mHasActiveVoicemailProvider && mShowVoicemailTabAfterVoicemailStatusIsFetched) {
@@ -330,6 +335,23 @@ public class ListsFragment extends Fragment
}
@Override
+ public void onVoicemailUnreadCountFetched(Cursor cursor) {
+ if (getActivity() == null || getActivity().isFinishing() || cursor == null) {
+ return;
+ }
+
+ int count = 0;
+ try {
+ count = cursor.getCount();
+ } finally {
+ cursor.close();
+ }
+
+ mViewPagerTabs.setUnreadCount(count, TAB_INDEX_VOICEMAIL);
+ mViewPagerTabs.setViewPager(mViewPager);
+ }
+
+ @Override
public boolean onCallsFetched(Cursor statusCursor) {
// Return false; did not take ownership of cursor
return false;
@@ -339,6 +361,16 @@ public class ListsFragment extends Fragment
return mTabIndex;
}
+ /**
+ * External method to update unread count because the unread count changes when the user
+ * expands a voicemail in the call log.
+ */
+ public void updateTabUnreadCounts() {
+ if (mHasActiveVoicemailProvider) {
+ mCallLogQueryHandler.fetchVoicemailUnreadCount();
+ }
+ }
+
public void showRemoveView(boolean show) {
mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE);
mRemoveView.setAlpha(show ? 0 : 1);