summaryrefslogtreecommitdiff
path: root/src/com/android/dialer/calllog
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/dialer/calllog')
-rw-r--r--src/com/android/dialer/calllog/CallLogAdapter.java2
-rw-r--r--src/com/android/dialer/calllog/CallLogQueryHandler.java13
-rw-r--r--src/com/android/dialer/calllog/IntentProvider.java3
-rw-r--r--src/com/android/dialer/calllog/NewCallLogActivity.java189
-rw-r--r--src/com/android/dialer/calllog/NewCallLogAdapter.java23
-rw-r--r--src/com/android/dialer/calllog/NewCallLogFragment.java179
-rw-r--r--src/com/android/dialer/calllog/NewCallLogListItemHelper.java9
7 files changed, 270 insertions, 148 deletions
diff --git a/src/com/android/dialer/calllog/CallLogAdapter.java b/src/com/android/dialer/calllog/CallLogAdapter.java
index 46f010a15..46bb4fd28 100644
--- a/src/com/android/dialer/calllog/CallLogAdapter.java
+++ b/src/com/android/dialer/calllog/CallLogAdapter.java
@@ -517,7 +517,7 @@ import java.util.LinkedList;
views.primaryActionView.setTag(
IntentProvider.getCallDetailIntentProvider(
- this, c.getPosition(), c.getLong(CallLogQuery.ID), count));
+ getCursor(), c.getPosition(), c.getLong(CallLogQuery.ID), count));
// Store away the voicemail information so we can play it directly.
if (callType == Calls.VOICEMAIL_TYPE) {
String voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
diff --git a/src/com/android/dialer/calllog/CallLogQueryHandler.java b/src/com/android/dialer/calllog/CallLogQueryHandler.java
index fed381427..91a2e5d2b 100644
--- a/src/com/android/dialer/calllog/CallLogQueryHandler.java
+++ b/src/com/android/dialer/calllog/CallLogQueryHandler.java
@@ -45,7 +45,7 @@ import java.util.List;
import javax.annotation.concurrent.GuardedBy;
/** Handles asynchronous queries to the call log. */
-/*package*/ class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler {
+public class CallLogQueryHandler extends NoNullCursorAsyncQueryHandler {
private static final String[] EMPTY_STRING_ARRAY = new String[0];
private static final String TAG = "CallLogQueryHandler";
@@ -62,6 +62,8 @@ import javax.annotation.concurrent.GuardedBy;
/** The token for the query to fetch voicemail status messages. */
private static final int QUERY_VOICEMAIL_STATUS_TOKEN = 58;
+ private final int mLogLimit;
+
/**
* Call type similar to Calls.INCOMING_TYPE used to specify all types instead of one particular
* type.
@@ -121,10 +123,16 @@ import javax.annotation.concurrent.GuardedBy;
}
public CallLogQueryHandler(ContentResolver contentResolver, Listener listener) {
+ this(contentResolver, listener, -1);
+ }
+
+ public CallLogQueryHandler(ContentResolver contentResolver, Listener listener, int limit) {
super(contentResolver);
mListener = new WeakReference<Listener>(listener);
+ mLogLimit = limit;
}
+
/**
* Fetches the list of calls from the call log for a given type.
* <p>
@@ -154,8 +162,9 @@ import javax.annotation.concurrent.GuardedBy;
selection = String.format("(%s = ?)", Calls.TYPE);
selectionArgs.add(Integer.toString(callType));
}
+ final int limit = (mLogLimit == -1) ? NUM_LOGS_TO_DISPLAY : mLogLimit;
Uri uri = Calls.CONTENT_URI_WITH_VOICEMAIL.buildUpon()
- .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(NUM_LOGS_TO_DISPLAY))
+ .appendQueryParameter(Calls.LIMIT_PARAM_KEY, Integer.toString(limit))
.build();
startQuery(token, requestId, uri,
CallLogQuery._PROJECTION, selection, selectionArgs.toArray(EMPTY_STRING_ARRAY),
diff --git a/src/com/android/dialer/calllog/IntentProvider.java b/src/com/android/dialer/calllog/IntentProvider.java
index 1b79d6ebc..01ebf2f3e 100644
--- a/src/com/android/dialer/calllog/IntentProvider.java
+++ b/src/com/android/dialer/calllog/IntentProvider.java
@@ -62,11 +62,10 @@ public abstract class IntentProvider {
}
public static IntentProvider getCallDetailIntentProvider(
- final CallLogAdapter adapter, final int position, final long id, final int groupSize) {
+ final Cursor cursor, final int position, final long id, final int groupSize) {
return new IntentProvider() {
@Override
public Intent getIntent(Context context) {
- Cursor cursor = adapter.getCursor();
cursor.moveToPosition(position);
Intent intent = new Intent(context, CallDetailActivity.class);
diff --git a/src/com/android/dialer/calllog/NewCallLogActivity.java b/src/com/android/dialer/calllog/NewCallLogActivity.java
new file mode 100644
index 000000000..a3704cc98
--- /dev/null
+++ b/src/com/android/dialer/calllog/NewCallLogActivity.java
@@ -0,0 +1,189 @@
+/*
+ * Copyright (C) 2013 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.dialer.calllog;
+
+import android.app.ActionBar;
+import android.app.Activity;
+import android.app.Fragment;
+import android.app.FragmentManager;
+import android.app.ActionBar.Tab;
+import android.app.ActionBar.TabListener;
+import android.app.FragmentTransaction;
+import android.content.Intent;
+import android.os.Bundle;
+import android.provider.CallLog.Calls;
+import android.support.v13.app.FragmentPagerAdapter;
+import android.support.v4.view.PagerTabStrip;
+import android.support.v4.view.ViewPager;
+import android.support.v4.view.ViewPager.OnPageChangeListener;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+
+import com.android.dialer.NewDialtactsActivity;
+import com.android.dialer.R;
+import com.android.dialer.calllog.NewCallLogFragment;
+
+public class NewCallLogActivity extends Activity {
+
+ private ViewPager mViewPager;
+ private ViewPagerAdapter mViewPagerAdapter;
+ private NewCallLogFragment mAllCallsFragment;
+ private NewCallLogFragment mMissedCallsFragment;
+ private NewCallLogFragment mVoicemailsFragment;
+
+ private static final int TAB_INDEX_ALL = 0;
+ private static final int TAB_INDEX_MISSED = 1;
+ private static final int TAB_INDEX_VOICEMAIL = 2;
+
+ private static final int TAB_INDEX_COUNT = 3;
+
+ public class ViewPagerAdapter extends FragmentPagerAdapter {
+ public ViewPagerAdapter(FragmentManager fm) {
+ super(fm);
+ }
+
+ @Override
+ public Fragment getItem(int position) {
+ switch (position) {
+ case TAB_INDEX_ALL:
+ mAllCallsFragment = new NewCallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
+ return mAllCallsFragment;
+ case TAB_INDEX_MISSED:
+ mMissedCallsFragment = new NewCallLogFragment(Calls.MISSED_TYPE);
+ return mMissedCallsFragment;
+ case TAB_INDEX_VOICEMAIL:
+ mVoicemailsFragment = new NewCallLogFragment(Calls.VOICEMAIL_TYPE);
+ return mVoicemailsFragment;
+ }
+ throw new IllegalStateException("No fragment at position " + position);
+ }
+
+ @Override
+ public int getCount() {
+ return TAB_INDEX_COUNT;
+ }
+ }
+
+ private final TabListener mTabListener = new TabListener() {
+ @Override
+ public void onTabUnselected(Tab tab, FragmentTransaction ft) {
+ }
+
+ @Override
+ public void onTabSelected(Tab tab, FragmentTransaction ft) {
+ if (mViewPager != null && mViewPager.getCurrentItem() != tab.getPosition()) {
+ mViewPager.setCurrentItem(tab.getPosition(), true);
+ }
+ }
+
+ @Override
+ public void onTabReselected(Tab tab, FragmentTransaction ft) {
+ }
+ };
+
+ private final OnPageChangeListener mOnPageChangeListener = new OnPageChangeListener() {
+
+ @Override
+ public void onPageScrolled(
+ int position, float positionOffset, int positionOffsetPixels) {}
+
+ @Override
+ public void onPageSelected(int position) {
+ final ActionBar actionBar = getActionBar();
+ actionBar.selectTab(actionBar.getTabAt(position));
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int arg0) {
+ }
+ };
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ setContentView(R.layout.call_log_activity_new);
+
+ final ActionBar actionBar = getActionBar();
+ actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
+ actionBar.setDisplayShowHomeEnabled(true);
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ actionBar.setDisplayShowTitleEnabled(true);
+
+ final Tab allTab = actionBar.newTab();
+ final String allTitle = getString(R.string.call_log_all_title);
+ allTab.setContentDescription(allTitle);
+ allTab.setText(allTitle);
+ allTab.setTabListener(mTabListener);
+ actionBar.addTab(allTab);
+
+ final Tab missedTab = actionBar.newTab();
+ final String missedTitle = getString(R.string.call_log_missed_title);
+ missedTab.setContentDescription(missedTitle);
+ missedTab.setText(missedTitle);
+ missedTab.setTabListener(mTabListener);
+ actionBar.addTab(missedTab);
+
+ final Tab voicemailTab = actionBar.newTab();
+ final String voicemailTitle = getString(R.string.call_log_voicemail_title);
+ voicemailTab.setContentDescription(voicemailTitle);
+ voicemailTab.setText(voicemailTitle);
+ voicemailTab.setTabListener(mTabListener);
+ actionBar.addTab(voicemailTab);
+
+ mViewPager = (ViewPager) findViewById(R.id.call_log_pager);
+ mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
+ mViewPager.setAdapter(mViewPagerAdapter);
+ mViewPager.setOnPageChangeListener(mOnPageChangeListener);
+ mViewPager.setOffscreenPageLimit(2);
+ }
+
+ @Override
+ public boolean onCreateOptionsMenu(Menu menu) {
+ final MenuInflater inflater = getMenuInflater();
+ inflater.inflate(R.menu.call_log_options_new, menu);
+ return true;
+ }
+
+ @Override
+ public boolean onPrepareOptionsMenu(Menu menu) {
+ final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all);
+
+ final NewCallLogAdapter adapter = mAllCallsFragment.getAdapter();
+ // Check if all the menu items are inflated correctly. As a shortcut, we assume all
+ // menu items are ready if the first item is non-null.
+ if (itemDeleteAll != null) {
+ itemDeleteAll.setEnabled(adapter != null && !adapter.isEmpty());
+ }
+ return true;
+ }
+
+ @Override
+ public boolean onOptionsItemSelected(MenuItem item) {
+ switch (item.getItemId()) {
+ case android.R.id.home:
+ final Intent intent = new Intent(this, NewDialtactsActivity.class);
+ intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
+ startActivity(intent);
+ return true;
+ case R.id.delete_all:
+ ClearCallLogDialog.show(getFragmentManager());
+ return true;
+ }
+ return super.onOptionsItemSelected(item);
+ }
+}
diff --git a/src/com/android/dialer/calllog/NewCallLogAdapter.java b/src/com/android/dialer/calllog/NewCallLogAdapter.java
index 079919f59..c2f7c71e6 100644
--- a/src/com/android/dialer/calllog/NewCallLogAdapter.java
+++ b/src/com/android/dialer/calllog/NewCallLogAdapter.java
@@ -46,7 +46,7 @@ import java.util.LinkedList;
/**
* Adapter class to fill in data for the Call Log.
*/
-/*package*/ class NewCallLogAdapter extends GroupingListAdapter
+public class NewCallLogAdapter extends GroupingListAdapter
implements ViewTreeObserver.OnPreDrawListener, CallLogGroupBuilder.GroupCreator {
/** Interface used to initiate a refresh of the content. */
public interface CallFetcher {
@@ -166,7 +166,7 @@ import java.util.LinkedList;
private QueryThread mCallerIdThread;
/** Instance of helper class for managing views. */
- private final CallLogListItemHelper mCallLogViewsHelper;
+ private final NewCallLogListItemHelper mCallLogViewsHelper;
/** Helper to set up contact photos. */
private final ContactPhotoManager mContactPhotoManager;
@@ -227,7 +227,7 @@ import java.util.LinkedList;
}
};
- NewCallLogAdapter(Context context, CallFetcher callFetcher,
+ public NewCallLogAdapter(Context context, CallFetcher callFetcher,
ContactInfoHelper contactInfoHelper) {
super(context);
@@ -246,7 +246,7 @@ import java.util.LinkedList;
PhoneCallDetailsHelper phoneCallDetailsHelper = new PhoneCallDetailsHelper(
resources, callTypeHelper, mPhoneNumberHelper);
mCallLogViewsHelper =
- new CallLogListItemHelper(
+ new NewCallLogListItemHelper(
phoneCallDetailsHelper, mPhoneNumberHelper, resources);
mCallLogGroupBuilder = new CallLogGroupBuilder(this);
}
@@ -259,7 +259,7 @@ import java.util.LinkedList;
mCallFetcher.fetchCalls();
}
- void setLoading(boolean loading) {
+ public void setLoading(boolean loading) {
mLoading = loading;
}
@@ -444,7 +444,7 @@ import java.util.LinkedList;
protected View newStandAloneView(Context context, ViewGroup parent) {
LayoutInflater inflater =
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
+ View view = inflater.inflate(R.layout.new_call_log_list_item, parent, false);
findAndCacheViews(view);
return view;
}
@@ -458,7 +458,7 @@ import java.util.LinkedList;
protected View newChildView(Context context, ViewGroup parent) {
LayoutInflater inflater =
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
+ View view = inflater.inflate(R.layout.new_call_log_list_item, parent, false);
findAndCacheViews(view);
return view;
}
@@ -472,7 +472,7 @@ import java.util.LinkedList;
protected View newGroupView(Context context, ViewGroup parent) {
LayoutInflater inflater =
(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
- View view = inflater.inflate(R.layout.call_log_list_item, parent, false);
+ View view = inflater.inflate(R.layout.new_call_log_list_item, parent, false);
findAndCacheViews(view);
return view;
}
@@ -515,9 +515,10 @@ import java.util.LinkedList;
final ContactInfo cachedContactInfo = getContactInfoFromCallLog(c);
- /*views.primaryActionView.setTag(
+ views.primaryActionView.setTag(
IntentProvider.getCallDetailIntentProvider(
- this, c.getPosition(), c.getLong(CallLogQuery.ID), count));*/
+ getCursor(), c.getPosition(), c.getLong(CallLogQuery.ID), count));
+
// Store away the voicemail information so we can play it directly.
if (callType == Calls.VOICEMAIL_TYPE) {
String voicemailUri = c.getString(CallLogQuery.VOICEMAIL_URI);
@@ -715,7 +716,7 @@ import java.util.LinkedList;
private void setPhoto(CallLogListItemViews views, long photoId, Uri contactUri) {
views.quickContactView.assignContactUri(contactUri);
- mContactPhotoManager.loadThumbnail(views.quickContactView, photoId, true);
+ mContactPhotoManager.loadThumbnail(views.quickContactView, photoId, false /* darkTheme */);
}
/**
diff --git a/src/com/android/dialer/calllog/NewCallLogFragment.java b/src/com/android/dialer/calllog/NewCallLogFragment.java
index d5b17952c..c470c55d4 100644
--- a/src/com/android/dialer/calllog/NewCallLogFragment.java
+++ b/src/com/android/dialer/calllog/NewCallLogFragment.java
@@ -34,7 +34,6 @@ import android.provider.ContactsContract;
import android.telephony.PhoneNumberUtils;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
-import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.Menu;
@@ -59,10 +58,11 @@ import com.google.common.annotations.VisibleForTesting;
import java.util.List;
/**
- * Displays a list of call log entries.
+ * Displays a list of call log entries. To filter for a particular kind of call
+ * (all, missed or voicemails), specify it in the constructor.
*/
public class NewCallLogFragment extends ListFragment
- implements CallLogQueryHandler.Listener, CallLogAdapter.CallFetcher {
+ implements CallLogQueryHandler.Listener, NewCallLogAdapter.CallFetcher {
private static final String TAG = "CallLogFragment";
/**
@@ -70,7 +70,7 @@ public class NewCallLogFragment extends ListFragment
*/
private static final int EMPTY_LOADER_ID = 0;
- private CallLogAdapter mAdapter;
+ private NewCallLogAdapter mAdapter;
private CallLogQueryHandler mCallLogQueryHandler;
private boolean mScrollToTop;
@@ -81,7 +81,6 @@ public class NewCallLogFragment extends ListFragment
private View mStatusMessageView;
private TextView mStatusMessageText;
private TextView mStatusMessageAction;
- private TextView mFilterStatusView;
private KeyguardManager mKeyguardManager;
private boolean mEmptyLoaderRunning;
@@ -114,11 +113,30 @@ public class NewCallLogFragment extends ListFragment
// Default to all calls.
private int mCallTypeFilter = CallLogQueryHandler.CALL_TYPE_ALL;
+ // Log limit - if no limit is specified, then the default in {@link NewCallLogQueryHandler}
+ // will be used.
+ private int mLogLimit = -1;
+
+ public NewCallLogFragment() {
+ this(CallLogQueryHandler.CALL_TYPE_ALL, -1);
+ }
+
+ public NewCallLogFragment(int filterType) {
+ this(filterType, -1);
+ }
+
+ public NewCallLogFragment(int filterType, int logLimit) {
+ super();
+ mCallTypeFilter = filterType;
+ mLogLimit = logLimit;
+ }
+
@Override
public void onCreate(Bundle state) {
super.onCreate(state);
- mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(), this);
+ mCallLogQueryHandler = new CallLogQueryHandler(getActivity().getContentResolver(),
+ this, mLogLimit);
mKeyguardManager =
(KeyguardManager) getActivity().getSystemService(Context.KEYGUARD_SERVICE);
getActivity().getContentResolver().registerContentObserver(
@@ -126,6 +144,7 @@ public class NewCallLogFragment extends ListFragment
getActivity().getContentResolver().registerContentObserver(
ContactsContract.Contacts.CONTENT_URI, true, mContactsObserver);
setHasOptionsMenu(true);
+ updateCallList(mCallTypeFilter);
}
/** Called by the CallLogQueryHandler when the list of calls has been fetched or updated. */
@@ -205,20 +224,20 @@ public class NewCallLogFragment extends ListFragment
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) {
- View view = inflater.inflate(R.layout.call_log_fragment, container, false);
+ View view = inflater.inflate(R.layout.new_call_log_fragment, container, false);
mVoicemailStatusHelper = new VoicemailStatusHelperImpl();
mStatusMessageView = view.findViewById(R.id.voicemail_status);
mStatusMessageText = (TextView) view.findViewById(R.id.voicemail_status_message);
mStatusMessageAction = (TextView) view.findViewById(R.id.voicemail_status_action);
- mFilterStatusView = (TextView) view.findViewById(R.id.filter_status);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
+ updateEmptyMessage(mCallTypeFilter);
String currentCountryIso = GeoUtil.getCurrentCountryIso(getActivity());
- mAdapter = new CallLogAdapter(getActivity(), this,
+ mAdapter = new NewCallLogAdapter(getActivity(), this,
new ContactInfoHelper(getActivity(), currentCountryIso));
setListAdapter(mAdapter);
getListView().setItemsCanFocus(true);
@@ -250,6 +269,7 @@ public class NewCallLogFragment extends ListFragment
@Override
public void onResume() {
+ Log.d(TAG, "Call Log Fragment resume");
super.onResume();
refreshData();
}
@@ -320,132 +340,30 @@ public class NewCallLogFragment extends ListFragment
mCallLogQueryHandler.fetchVoicemailStatus();
}
- @Override
- public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
- super.onCreateOptionsMenu(menu, inflater);
- inflater.inflate(R.menu.call_log_options, menu);
- }
-
- @Override
- public void onPrepareOptionsMenu(Menu menu) {
- final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all);
- // Check if all the menu items are inflated correctly. As a shortcut, we assume all
- // menu items are ready if the first item is non-null.
- if (itemDeleteAll != null) {
- itemDeleteAll.setEnabled(mAdapter != null && !mAdapter.isEmpty());
-
- showAllFilterMenuOptions(menu);
- hideCurrentFilterMenuOption(menu);
-
- // Only hide if not available. Let the above calls handle showing.
- if (!mVoicemailSourcesAvailable) {
- menu.findItem(R.id.show_voicemails_only).setVisible(false);
- }
+ private void updateCallList(int filterType) {
+ if (filterType == CallLogQueryHandler.CALL_TYPE_ALL) {
+ unregisterPhoneCallReceiver();
+ } else {
+ // TODO krelease: Make this work
+ //registerPhoneCallReceiver();
}
+ mCallLogQueryHandler.fetchCalls(filterType);
}
- private void hideCurrentFilterMenuOption(Menu menu) {
- MenuItem item = null;
- switch (mCallTypeFilter) {
- case CallLogQueryHandler.CALL_TYPE_ALL:
- item = menu.findItem(R.id.show_all_calls);
- break;
- case Calls.INCOMING_TYPE:
- item = menu.findItem(R.id.show_incoming_only);
- break;
- case Calls.OUTGOING_TYPE:
- item = menu.findItem(R.id.show_outgoing_only);
- break;
+ private void updateEmptyMessage(int filterType) {
+ final String message;
+ switch (filterType) {
case Calls.MISSED_TYPE:
- item = menu.findItem(R.id.show_missed_only);
+ message = getString(R.string.recentMissed_empty);
break;
case Calls.VOICEMAIL_TYPE:
- menu.findItem(R.id.show_voicemails_only);
+ message = getString(R.string.recentVoicemails_empty);
break;
- }
- if (item != null) {
- item.setVisible(false);
- }
- }
-
- private void showAllFilterMenuOptions(Menu menu) {
- menu.findItem(R.id.show_all_calls).setVisible(true);
- menu.findItem(R.id.show_incoming_only).setVisible(true);
- menu.findItem(R.id.show_outgoing_only).setVisible(true);
- menu.findItem(R.id.show_missed_only).setVisible(true);
- menu.findItem(R.id.show_voicemails_only).setVisible(true);
- }
-
- @Override
- public boolean onOptionsItemSelected(MenuItem item) {
- switch (item.getItemId()) {
- case R.id.delete_all:
- ClearCallLogDialog.show(getFragmentManager());
- return true;
-
- case R.id.show_outgoing_only:
- // We only need the phone call receiver when there is an active call type filter.
- // Not many people may use the filters so don't register the receiver until now .
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.OUTGOING_TYPE);
- updateFilterTypeAndHeader(Calls.OUTGOING_TYPE);
- return true;
-
- case R.id.show_incoming_only:
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.INCOMING_TYPE);
- updateFilterTypeAndHeader(Calls.INCOMING_TYPE);
- return true;
-
- case R.id.show_missed_only:
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.MISSED_TYPE);
- updateFilterTypeAndHeader(Calls.MISSED_TYPE);
- return true;
-
- case R.id.show_voicemails_only:
- registerPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(Calls.VOICEMAIL_TYPE);
- updateFilterTypeAndHeader(Calls.VOICEMAIL_TYPE);
- return true;
-
- case R.id.show_all_calls:
- // Filter is being turned off, receiver no longer needed.
- unregisterPhoneCallReceiver();
- mCallLogQueryHandler.fetchCalls(CallLogQueryHandler.CALL_TYPE_ALL);
- updateFilterTypeAndHeader(CallLogQueryHandler.CALL_TYPE_ALL);
- return true;
-
default:
- return false;
- }
- }
-
- private void updateFilterTypeAndHeader(int filterType) {
- mCallTypeFilter = filterType;
-
- switch (filterType) {
- case CallLogQueryHandler.CALL_TYPE_ALL:
- mFilterStatusView.setVisibility(View.GONE);
- break;
- case Calls.INCOMING_TYPE:
- showFilterStatus(R.string.call_log_incoming_header);
- break;
- case Calls.OUTGOING_TYPE:
- showFilterStatus(R.string.call_log_outgoing_header);
- break;
- case Calls.MISSED_TYPE:
- showFilterStatus(R.string.call_log_missed_header);
- break;
- case Calls.VOICEMAIL_TYPE:
- showFilterStatus(R.string.call_log_voicemail_header);
+ message = getString(R.string.recentCalls_empty);
break;
}
- }
-
- private void showFilterStatus(int resId) {
- mFilterStatusView.setText(resId);
- mFilterStatusView.setVisibility(View.VISIBLE);
+ ((TextView) getListView().getEmptyView()).setText(message);
}
public void callSelectedEntry() {
@@ -489,8 +407,7 @@ public class NewCallLogFragment extends ListFragment
}
}
- @VisibleForTesting
- CallLogAdapter getAdapter() {
+ NewCallLogAdapter getAdapter() {
return mAdapter;
}
@@ -547,6 +464,8 @@ public class NewCallLogFragment extends ListFragment
updateOnTransition(true);
}
+ // TODO krelease: Figure out if we still need this. If so, it should be probably be moved to
+ // the call log activity instead, or done only in a single call log fragment.
private void updateOnTransition(boolean onEntry) {
// We don't want to update any call data when keyguard is on because the user has likely not
// seen the new calls yet.
@@ -570,9 +489,13 @@ public class NewCallLogFragment extends ListFragment
getActivity().startService(serviceIntent);
}
+ // TODO krelease: Make the ViewPager switch to the correct tab (All) when a phone call is
+ // placed.
+ // This should probably be moved to the call log activity.
/**
* Register a phone call filter to reset the call type when a phone call is place.
*/
+ /*
private void registerPhoneCallReceiver() {
if (mPhoneStateListener != null) {
return; // Already registered.
@@ -592,13 +515,13 @@ public class NewCallLogFragment extends ListFragment
if (getActivity() == null || getActivity().isFinishing()) {
return;
}
- updateFilterTypeAndHeader(CallLogQueryHandler.CALL_TYPE_ALL);
}
});
}
};
mTelephonyManager.listen(mPhoneStateListener, PhoneStateListener.LISTEN_CALL_STATE);
}
+ */
/**
* Un-registers the phone call receiver.
diff --git a/src/com/android/dialer/calllog/NewCallLogListItemHelper.java b/src/com/android/dialer/calllog/NewCallLogListItemHelper.java
index 371094d34..6cb80a051 100644
--- a/src/com/android/dialer/calllog/NewCallLogListItemHelper.java
+++ b/src/com/android/dialer/calllog/NewCallLogListItemHelper.java
@@ -27,8 +27,12 @@ import com.android.dialer.R;
/**
* Helper class to fill in the views of a call log entry.
+ * TODO krelease: The only difference between this and the original is that we don't touch
+ * divider views, which are not present in the new dialer. Once the new dialer replaces
+ * the old one, we can replace it entirely. Otherwise we would have redundant divider=null
+ * checks all over the place.
*/
-/*package*/ class NewCallLogListItemHelper {
+/* package */class NewCallLogListItemHelper {
/** Helper for populating the details of a phone call. */
private final PhoneCallDetailsHelper mPhoneCallDetailsHelper;
/** Helper for handling phone numbers. */
@@ -67,15 +71,12 @@ import com.android.dialer.R;
if (canPlay) {
// Playback action takes preference.
configurePlaySecondaryAction(views, isHighlighted);
- views.dividerView.setVisibility(View.VISIBLE);
} else if (canCall) {
// Call is the secondary action.
configureCallSecondaryAction(views, details);
- views.dividerView.setVisibility(View.VISIBLE);
} else {
// No action available.
views.secondaryActionView.setVisibility(View.GONE);
- views.dividerView.setVisibility(View.GONE);
}
}