diff options
Diffstat (limited to 'src/com/android/dialer/callstats/CallStatsFragment.java')
-rw-r--r-- | src/com/android/dialer/callstats/CallStatsFragment.java | 90 |
1 files changed, 77 insertions, 13 deletions
diff --git a/src/com/android/dialer/callstats/CallStatsFragment.java b/src/com/android/dialer/callstats/CallStatsFragment.java index c67e746ba..a1f87be9f 100644 --- a/src/com/android/dialer/callstats/CallStatsFragment.java +++ b/src/com/android/dialer/callstats/CallStatsFragment.java @@ -25,7 +25,9 @@ import android.os.Bundle; import android.os.Handler; import android.provider.CallLog; import android.provider.ContactsContract; +import android.telephony.TelephonyManager; import android.text.format.DateUtils; +import android.util.Log; import android.view.ContextThemeWrapper; import android.view.LayoutInflater; import android.view.Menu; @@ -34,12 +36,15 @@ import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; +import android.widget.AdapterView.OnItemSelectedListener; import android.widget.ArrayAdapter; import android.widget.Spinner; import android.widget.TextView; import com.android.dialer.R; +import com.android.dialer.calllog.CallLogQueryHandler; import com.android.dialer.calllog.ContactInfo; +import com.android.dialer.calllog.SpinnerContent; import com.android.dialer.widget.DoubleDatePickerDialog; import java.util.List; @@ -50,9 +55,7 @@ public class CallStatsFragment extends ListFragment implements AdapterView.OnItemSelectedListener, DoubleDatePickerDialog.OnDateSetListener { private static final String TAG = "CallStatsFragment"; - private Spinner mFilterSpinner; - - private int mCallTypeFilter = CallStatsQueryHandler.CALL_TYPE_ALL; + private int mCallTypeFilter = CallLogQueryHandler.CALL_TYPE_ALL; private long mFilterFrom = -1; private long mFilterTo = -1; private boolean mSortByDuration = true; @@ -61,6 +64,13 @@ public class CallStatsFragment extends ListFragment implements private CallStatsAdapter mAdapter; private CallStatsQueryHandler mCallStatsQueryHandler; + // Add and change for filter call stats. + private Spinner mFilterSubSpinnerView; + private Spinner mFilterStatusSpinnerView; + + // Default to all slots. + private int mCallSubFilter = CallStatsQueryHandler.CALL_SUB_ALL; + private TextView mSumHeaderView; private TextView mDateFilterView; @@ -72,6 +82,23 @@ public class CallStatsFragment extends ListFragment implements } }; + private OnItemSelectedListener mSubSelectedListener = new OnItemSelectedListener() { + + @Override + public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { + Log.i(TAG, "Sub selected, position: " + position); + int sub = position - 1; + mCallSubFilter = sub; + mCallStatsQueryHandler.fetchCalls(mFilterFrom, mFilterTo, mCallSubFilter); + } + + @Override + public void onNothingSelected(AdapterView<?> parent) { + // Do nothing. + } + + }; + public static class CallStatsNavAdapter extends ArrayAdapter<String> { private LayoutInflater mMainInflater; private LayoutInflater mDropdownInflater; @@ -123,9 +150,54 @@ public class CallStatsFragment extends ListFragment implements View view = inflater.inflate(R.layout.call_stats_fragment, container, false); mSumHeaderView = (TextView) view.findViewById(R.id.sum_header); mDateFilterView = (TextView) view.findViewById(R.id.date_filter); + mFilterSubSpinnerView = (Spinner) view.findViewById(R.id.filter_sub_spinner); + mFilterStatusSpinnerView = (Spinner) view.findViewById(R.id.filter_status_spinner); + + // Update the filter views. + updateFilterSpinnerViews(); + return view; } + /** + * Initialize the filter views content. + */ + private void updateFilterSpinnerViews() { + if (mFilterSubSpinnerView == null + || mFilterStatusSpinnerView == null) { + Log.w(TAG, "The filter spinner view is null!"); + return; + } + + final TelephonyManager telephony = (TelephonyManager) getActivity().getSystemService( + Context.TELEPHONY_SERVICE); + if (!telephony.isMultiSimEnabled()) { + mFilterSubSpinnerView.setVisibility(View.GONE); + } else { + // Update the sub filter's content. + ArrayAdapter<SpinnerContent> filterSubAdapter = new ArrayAdapter<SpinnerContent>( + this.getActivity(), R.layout.call_log_spinner_item, + SpinnerContent.setupSubFilterContent(getActivity())); + + if (filterSubAdapter.getCount() <= 1) { + mFilterSubSpinnerView.setVisibility(View.GONE); + } else { + mFilterSubSpinnerView.setAdapter(filterSubAdapter); + mFilterSubSpinnerView.setOnItemSelectedListener(mSubSelectedListener); + SpinnerContent.setSpinnerContentValue(mFilterSubSpinnerView, mCallSubFilter); + } + } + + + // Update the status filter's content. + ArrayAdapter<SpinnerContent> filterStatusAdapter = new ArrayAdapter<SpinnerContent>( + this.getActivity(), R.layout.call_log_spinner_item, + SpinnerContent.setupStatusFilterContent(getActivity(), false)); + mFilterStatusSpinnerView.setAdapter(filterStatusAdapter); + mFilterStatusSpinnerView.setOnItemSelectedListener(this); + SpinnerContent.setSpinnerContentValue(mFilterStatusSpinnerView, mCallTypeFilter); + } + @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); @@ -142,19 +214,11 @@ public class CallStatsFragment extends ListFragment implements final MenuItem resetItem = menu.findItem(R.id.reset_date_filter); final MenuItem sortDurationItem = menu.findItem(R.id.sort_by_duration); final MenuItem sortCountItem = menu.findItem(R.id.sort_by_count); - final MenuItem filterItem = menu.findItem(R.id.filter); resetItem.setVisible(mFilterFrom != -1); sortDurationItem.setVisible(!mSortByDuration); sortCountItem.setVisible(mSortByDuration); - mFilterSpinner = (Spinner) filterItem.getActionView(); - CallStatsNavAdapter filterAdapter = new CallStatsNavAdapter(getActivity(), - android.R.layout.simple_list_item_1, - getResources().getStringArray(R.array.call_stats_nav_items)); - mFilterSpinner.setAdapter(filterAdapter); - mFilterSpinner.setOnItemSelectedListener(this); - super.onCreateOptionsMenu(menu, inflater); } @@ -190,7 +254,7 @@ public class CallStatsFragment extends ListFragment implements @Override public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) { - mCallTypeFilter = pos; + mCallTypeFilter = ((SpinnerContent)parent.getItemAtPosition(pos)).value; mAdapter.updateDisplayedData(mCallTypeFilter, mSortByDuration); if (mDataLoaded) { updateHeader(); @@ -251,7 +315,7 @@ public class CallStatsFragment extends ListFragment implements } private void fetchCalls() { - mCallStatsQueryHandler.fetchCalls(mFilterFrom, mFilterTo); + mCallStatsQueryHandler.fetchCalls(mFilterFrom, mFilterTo, mCallSubFilter); } private void updateHeader() { |