diff options
Diffstat (limited to 'src/com/android/dialer/calllog')
-rwxr-xr-x | src/com/android/dialer/calllog/CallLogActivity.java | 230 | ||||
-rwxr-xr-x | src/com/android/dialer/calllog/MSimCallLogFragment.java | 133 | ||||
-rw-r--r-- | src/com/android/dialer/calllog/SpinnerContent.java | 127 |
3 files changed, 179 insertions, 311 deletions
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java index 10a77e10d..fe79ea6c0 100755 --- a/src/com/android/dialer/calllog/CallLogActivity.java +++ b/src/com/android/dialer/calllog/CallLogActivity.java @@ -22,12 +22,7 @@ import android.app.FragmentManager; import android.app.FragmentTransaction; import android.content.Context; import android.content.Intent; -import android.database.Cursor; import android.os.Bundle; -import android.os.Handler; -import android.provider.CallLog; -import android.provider.CallLog.Calls; -import android.telephony.TelephonyManager; import android.support.v13.app.FragmentPagerAdapter; import android.support.v4.view.ViewPager; import android.text.TextUtils; @@ -41,80 +36,49 @@ import android.view.MotionEvent; import android.widget.SearchView; import android.widget.SearchView.OnCloseListener; import android.widget.SearchView.OnQueryTextListener; -import android.util.Log; import com.android.contacts.common.interactions.TouchPointManager; import com.android.contacts.common.list.ViewPagerTabs; import com.android.dialer.DialtactsActivity; import com.android.dialer.R; -import com.android.dialer.voicemail.VoicemailStatusHelper; -import com.android.dialer.voicemail.VoicemailStatusHelperImpl; import com.android.dialerbind.analytics.AnalyticsActivity; -import com.android.dialer.calllog.CallLogFragment; import com.android.dialer.callstats.CallStatsFragment; import com.android.dialer.widget.DoubleDatePickerDialog; -public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHandler.Listener, +public class CallLogActivity extends AnalyticsActivity implements DoubleDatePickerDialog.OnDateSetListener { - private Handler mHandler; private ViewPager mViewPager; private ViewPagerTabs mViewPagerTabs; private FragmentPagerAdapter mViewPagerAdapter; - private CallLogFragment mAllCallsFragment; - private CallLogFragment mMissedCallsFragment; private CallStatsFragment mStatsFragment; - private CallLogFragment mVoicemailFragment; - private VoicemailStatusHelper mVoicemailStatusHelper; - - private static final int WAIT_FOR_VOICEMAIL_PROVIDER_TIMEOUT_MS = 300; - private boolean mSwitchToVoicemailTab; private MSimCallLogFragment mMSimCallsFragment; private CallLogSearchFragment mSearchFragment; private SearchView mSearchView; private boolean mInSearchUi; - private String[] mTabTitles; - - private static final int TAB_INDEX_ALL = 0; - private static final int TAB_INDEX_MISSED = 1; - private static final int TAB_INDEX_STATS = 2; - private static final int TAB_INDEX_VOICEMAIL = 3; - - private static final int TAB_INDEX_COUNT_DEFAULT = 3; - private static final int TAB_INDEX_COUNT_WITH_VOICEMAIL = 4; - - private boolean mHasActiveVoicemailProvider; - - private final Runnable mWaitForVoicemailTimeoutRunnable = new Runnable() { - @Override - public void run() { - mViewPagerTabs.setViewPager(mViewPager); - mViewPager.setCurrentItem(TAB_INDEX_ALL); - mSwitchToVoicemailTab = false; - } - }; private static final int TAB_INDEX_MSIM = 0; - private static final int TAB_INDEX_COUNT_MSIM = 1; + private static final int TAB_INDEX_MSIM_STATS = 1; + private static final int TAB_INDEX_COUNT_MSIM = 2; - public class ViewPagerAdapter extends FragmentPagerAdapter { - public ViewPagerAdapter(FragmentManager fm) { + public class MSimViewPagerAdapter extends FragmentPagerAdapter { + private String[] mTabTitles; + + public MSimViewPagerAdapter(FragmentManager fm) { super(fm); + + mTabTitles = new String[TAB_INDEX_COUNT_MSIM]; + mTabTitles[0] = getString(R.string.call_log_all_title); + mTabTitles[1] = getString(R.string.call_log_stats_title); } @Override public Fragment getItem(int position) { switch (position) { - case TAB_INDEX_ALL: - mAllCallsFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL); - return mAllCallsFragment; - case TAB_INDEX_MISSED: - mMissedCallsFragment = new CallLogFragment(Calls.MISSED_TYPE); - return mMissedCallsFragment; - case TAB_INDEX_VOICEMAIL: - mVoicemailFragment = new CallLogFragment(Calls.VOICEMAIL_TYPE); - return mVoicemailFragment; - case TAB_INDEX_STATS: + case TAB_INDEX_MSIM: + mMSimCallsFragment = new MSimCallLogFragment(); + return mMSimCallsFragment; + case TAB_INDEX_MSIM_STATS: mStatsFragment = new CallStatsFragment(); return mStatsFragment; } @@ -128,28 +92,6 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa @Override public int getCount() { - return mHasActiveVoicemailProvider ? TAB_INDEX_COUNT_WITH_VOICEMAIL : - TAB_INDEX_COUNT_DEFAULT; - } - } - - public class MSimViewPagerAdapter extends FragmentPagerAdapter { - public MSimViewPagerAdapter(FragmentManager fm) { - super(fm); - } - - @Override - public Fragment getItem(int position) { - switch (position) { - case TAB_INDEX_MSIM: - mMSimCallsFragment = new MSimCallLogFragment(); - return mMSimCallsFragment; - } - throw new IllegalStateException("No fragment at position " + position); - } - - @Override - public int getCount() { return TAB_INDEX_COUNT_MSIM; } } @@ -166,14 +108,6 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - if (getTelephonyManager().isMultiSimEnabled()) { - initMSimCallLog(); - addSearchFragment(); - return; - } - - mHandler = new Handler(); - setContentView(R.layout.call_log_activity); getWindow().setBackgroundDrawable(null); @@ -183,57 +117,15 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa actionBar.setDisplayShowTitleEnabled(true); actionBar.setElevation(0); - int startingTab = TAB_INDEX_ALL; - final Intent intent = getIntent(); - if (intent != null) { - final int callType = intent.getIntExtra(CallLog.Calls.EXTRA_CALL_TYPE_FILTER, -1); - if (callType == CallLog.Calls.MISSED_TYPE) { - startingTab = TAB_INDEX_MISSED; - } else if (callType == CallLog.Calls.VOICEMAIL_TYPE) { - startingTab = TAB_INDEX_VOICEMAIL; - } - } - - mTabTitles = new String[TAB_INDEX_COUNT_WITH_VOICEMAIL]; - mTabTitles[0] = getString(R.string.call_log_all_title); - mTabTitles[1] = getString(R.string.call_log_missed_title); - mTabTitles[2] = getString(R.string.call_log_stats_title); - mTabTitles[3] = getString(R.string.call_log_voicemail_title); - mViewPager = (ViewPager) findViewById(R.id.call_log_pager); - mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager()); + mViewPagerAdapter = new MSimViewPagerAdapter(getFragmentManager()); mViewPager.setAdapter(mViewPagerAdapter); - mViewPager.setOffscreenPageLimit(2); mViewPagerTabs = (ViewPagerTabs) findViewById(R.id.viewpager_header); mViewPager.setOnPageChangeListener(mViewPagerTabs); - - if (startingTab == TAB_INDEX_VOICEMAIL) { - // The addition of the voicemail tab is an asynchronous process, so wait till the tab - // is added, before attempting to switch to it. If the querying of CP2 for voicemail - // providers takes too long, give up and show the first tab instead. - mSwitchToVoicemailTab = true; - mHandler.postDelayed(mWaitForVoicemailTimeoutRunnable, - WAIT_FOR_VOICEMAIL_PROVIDER_TIMEOUT_MS); - } else { - mViewPagerTabs.setViewPager(mViewPager); - mViewPager.setCurrentItem(startingTab); - } + mViewPagerTabs.setViewPager(mViewPager); addSearchFragment(); - mVoicemailStatusHelper = new VoicemailStatusHelperImpl(); - } - - @Override - protected void onResume() { - super.onResume(); - - if (getTelephonyManager().isMultiSimEnabled()) - return; - - CallLogQueryHandler callLogQueryHandler = - new CallLogQueryHandler(this.getContentResolver(), this); - callLogQueryHandler.fetchVoicemailStatus(); } @Override @@ -243,25 +135,6 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa } } - private TelephonyManager getTelephonyManager() { - return (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); - } - - private void initMSimCallLog() { - setContentView(R.layout.msim_call_log_activity); - getWindow().setBackgroundDrawable(null); - - final ActionBar actionBar = getActionBar(); - actionBar.setDisplayShowHomeEnabled(true); - actionBar.setDisplayHomeAsUpEnabled(true); - actionBar.setDisplayShowTitleEnabled(true); - - mViewPager = (ViewPager) findViewById(R.id.call_log_pager); - - mViewPagerAdapter = new MSimViewPagerAdapter(getFragmentManager()); - mViewPager.setAdapter(mViewPagerAdapter); - } - @Override public boolean onCreateOptionsMenu(Menu menu) { final MenuInflater inflater = getMenuInflater(); @@ -286,16 +159,12 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa itemSearchCallLog.setVisible(adapter != null && !adapter.isEmpty()); } - // If onPrepareOptionsMenu is called before fragments loaded. Don't do anything. - if (mAllCallsFragment != null && itemDeleteAll != null) { - final CallLogAdapter adapter = mAllCallsFragment.getAdapter(); - itemDeleteAll.setVisible(adapter != null && !adapter.isEmpty()); - } - if (mMSimCallsFragment != null && itemDeleteAll != null) { - final CallLogAdapter adapter = mMSimCallsFragment.getAdapter(); - itemDeleteAll.setVisible(adapter != null && !adapter.isEmpty()); - } + // If onPrepareOptionsMenu is called before fragments loaded. Don't do anything. + if (mMSimCallsFragment != null && itemDeleteAll != null) { + final CallLogAdapter adapter = mMSimCallsFragment.getAdapter(); + itemDeleteAll.setVisible(adapter != null && !adapter.isEmpty()); + } } return true; } @@ -325,35 +194,6 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa startActivity(intent); } - @Override - public void onVoicemailStatusFetched(Cursor statusCursor) { - if (this.isFinishing()) { - return; - } - - mHandler.removeCallbacks(mWaitForVoicemailTimeoutRunnable); - // Update mHasActiveVoicemailProvider, which controls the number of tabs displayed. - int activeSources = mVoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor); - if (activeSources > 0 != mHasActiveVoicemailProvider) { - mHasActiveVoicemailProvider = activeSources > 0; - mViewPagerAdapter.notifyDataSetChanged(); - mViewPagerTabs.setViewPager(mViewPager); - if (mSwitchToVoicemailTab) { - mViewPager.setCurrentItem(TAB_INDEX_VOICEMAIL, false); - } - } else if (mSwitchToVoicemailTab) { - // The voicemail tab was requested, but it does not exist because there are no - // voicemail sources. Just fallback to the first item instead. - mViewPagerTabs.setViewPager(mViewPager); - } - } - - @Override - public boolean onCallsFetched(Cursor statusCursor) { - // Return false; did not take ownership of cursor - return false; - } - private void enterSearchUi() { if (mSearchFragment == null) { return; @@ -379,9 +219,8 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa transaction.commitAllowingStateLoss(); getFragmentManager().executePendingTransactions(); mViewPager.setVisibility(View.GONE); - if (!getTelephonyManager().isMultiSimEnabled()) { - mViewPagerTabs.setVisibility(View.GONE); - } + mViewPagerTabs.setVisibility(View.GONE); + // We need to call this and onActionViewCollapsed() manually, since we // are using a custom // layout instead of asking the search menu item to take care of @@ -391,7 +230,7 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa } private void updateFragmentVisibility(int position, boolean visibility) { - if (position >= TAB_INDEX_ALL) { + if (position >= TAB_INDEX_MSIM) { final Fragment fragment = getFragmentAt(position); if (fragment != null) { fragment.setMenuVisibility(visibility); @@ -402,17 +241,9 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa private Fragment getFragmentAt(int position) { switch (position) { - case TAB_INDEX_ALL: - if (getTelephonyManager().isMultiSimEnabled()) { - return mMSimCallsFragment; - } else { - return mAllCallsFragment; - } - case TAB_INDEX_MISSED: - return mMissedCallsFragment; - case TAB_INDEX_VOICEMAIL: - return mVoicemailFragment; - case TAB_INDEX_STATS: + case TAB_INDEX_MSIM: + return mMSimCallsFragment; + case TAB_INDEX_MSIM_STATS: return mStatsFragment; default: throw new IllegalStateException("Unknown fragment index: " @@ -548,9 +379,8 @@ public class CallLogActivity extends AnalyticsActivity implements CallLogQueryHa } mViewPager.setVisibility(View.VISIBLE); - if (!getTelephonyManager().isMultiSimEnabled()) { - mViewPagerTabs.setVisibility(View.VISIBLE); - } + mViewPagerTabs.setVisibility(View.VISIBLE); + hideInputMethod(getCurrentFocus()); // Request to update option menu. diff --git a/src/com/android/dialer/calllog/MSimCallLogFragment.java b/src/com/android/dialer/calllog/MSimCallLogFragment.java index 36fca8782..4f5c48deb 100755 --- a/src/com/android/dialer/calllog/MSimCallLogFragment.java +++ b/src/com/android/dialer/calllog/MSimCallLogFragment.java @@ -74,13 +74,6 @@ public class MSimCallLogFragment extends CallLogFragment { // Default to all slots. private int mCallSubFilter = CallLogQueryHandler.CALL_SUB_ALL; - // The index for call type spinner. - private static final int INDEX_CALL_TYPE_ALL = 0; - private static final int INDEX_CALL_TYPE_INCOMING = 1; - private static final int INDEX_CALL_TYPE_OUTGOING = 2; - private static final int INDEX_CALL_TYPE_MISSED = 3; - private static final int INDEX_CALL_TYPE_VOICEMAIL = 4; - private OnItemSelectedListener mSubSelectedListener = new OnItemSelectedListener() { @Override @@ -104,23 +97,7 @@ public class MSimCallLogFragment extends CallLogFragment { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { Log.i(TAG, "Status selected, position: " + position); - switch (position) { - case INDEX_CALL_TYPE_ALL: - mCallTypeFilter = CallLogQueryHandler.CALL_TYPE_ALL; - break; - case INDEX_CALL_TYPE_INCOMING: - mCallTypeFilter = Calls.INCOMING_TYPE; - break; - case INDEX_CALL_TYPE_OUTGOING: - mCallTypeFilter = Calls.OUTGOING_TYPE; - break; - case INDEX_CALL_TYPE_MISSED: - mCallTypeFilter = Calls.MISSED_TYPE; - break; - case INDEX_CALL_TYPE_VOICEMAIL: - mCallTypeFilter = Calls.VOICEMAIL_TYPE; - break; - } + mCallTypeFilter = ((SpinnerContent)parent.getItemAtPosition(position)).value; mCallLogQueryHandler.fetchCalls(mCallTypeFilter, 0, mCallSubFilter); } @@ -182,72 +159,35 @@ public class MSimCallLogFragment extends CallLogFragment { return; } - // Update the sub filter's content. - mCallSubFilter = getSelectedSub(); - ArrayAdapter<SpinnerContent> filterSubAdapter = new ArrayAdapter<SpinnerContent>( - this.getActivity(), R.layout.call_log_spinner_item, setupSubFilterContent()); - mFilterSubSpinnerView.setAdapter(filterSubAdapter); - mFilterSubSpinnerView.setOnItemSelectedListener(mSubSelectedListener); - SpinnerContent.setSpinnerContentValue(mFilterSubSpinnerView, mCallSubFilter); + 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 { + mCallSubFilter = getSelectedSub(); + 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, setupStatusFilterContent()); + this.getActivity(), R.layout.call_log_spinner_item, + SpinnerContent.setupStatusFilterContent(getActivity(), mVoicemailSourcesAvailable)); mFilterStatusSpinnerView.setAdapter(filterStatusAdapter); mFilterStatusSpinnerView.setOnItemSelectedListener(mStatusSelectedListener); SpinnerContent.setSpinnerContentValue(mFilterStatusSpinnerView, mCallTypeFilter); } - private SpinnerContent[] setupSubFilterContent() { - TelephonyManager telephonyManager = - (TelephonyManager) getActivity().getSystemService(Context.TELEPHONY_SERVICE); - int count = telephonyManager.getPhoneCount(); - // Update the filter sub content. - SpinnerContent filterSub[] = new SpinnerContent[count + 1]; - filterSub[0] = new SpinnerContent(CallLogQueryHandler.CALL_SUB_ALL, - getString(R.string.call_log_show_all_slots)); - for (int i = 0; i < count; i++) { - String subDisplayName = PhoneAccountUtils.getAccountLabel(getActivity(), - MoreContactUtils.getAccount(i)); - filterSub[i + 1] = new SpinnerContent(i, subDisplayName); - } - return filterSub; - } - - private SpinnerContent[] setupStatusFilterContent() { - // Didn't show the voice mail item if not available. - int statusCount = mVoicemailSourcesAvailable ? 5 : 4; - SpinnerContent filterStatus[] = new SpinnerContent[statusCount]; - for (int i = 0; i < statusCount; i++) { - int value = CallLogQueryHandler.CALL_TYPE_ALL; - String label = null; - switch (i) { - case INDEX_CALL_TYPE_ALL: - value = CallLogQueryHandler.CALL_TYPE_ALL; - label = getString(R.string.call_log_all_calls_header); - break; - case INDEX_CALL_TYPE_INCOMING: - value = Calls.INCOMING_TYPE; - label = getString(R.string.call_log_incoming_header); - break; - case INDEX_CALL_TYPE_OUTGOING: - value = Calls.OUTGOING_TYPE; - label = getString(R.string.call_log_outgoing_header); - break; - case INDEX_CALL_TYPE_MISSED: - value = Calls.MISSED_TYPE; - label = getString(R.string.call_log_missed_header); - break; - case INDEX_CALL_TYPE_VOICEMAIL: - value = Calls.VOICEMAIL_TYPE; - label = getString(R.string.call_log_voicemail_header); - break; - } - filterStatus[i] = new SpinnerContent(value, label); - } - return filterStatus; - } - /** * @return the saved selected subscription. */ @@ -266,33 +206,4 @@ public class MSimCallLogFragment extends CallLogFragment { PreferenceManager.getDefaultSharedPreferences(this.getActivity()).edit() .putInt(PREFERENCE_KEY_CALLLOG_SUB, sub).commit(); } - - /** - * To save the spinner content. - */ - private static class SpinnerContent { - public final int value; - public final String label; - - public static void setSpinnerContentValue(Spinner spinner, int value) { - for (int i = 0, count = spinner.getCount(); i < count; i++) { - SpinnerContent sc = (SpinnerContent) spinner.getItemAtPosition(i); - if (sc.value == value) { - spinner.setSelection(i, true); - Log.i(TAG, "Set selection for spinner(" + sc + ") with the value: " + value); - return; - } - } - } - - public SpinnerContent(int value, String label) { - this.value = value; - this.label = label; - } - - @Override - public String toString() { - return label; - } - } } diff --git a/src/com/android/dialer/calllog/SpinnerContent.java b/src/com/android/dialer/calllog/SpinnerContent.java new file mode 100644 index 000000000..614b594db --- /dev/null +++ b/src/com/android/dialer/calllog/SpinnerContent.java @@ -0,0 +1,127 @@ +/* + * Copyright (C) 2014 The CyanogenMod 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.content.Context; +import android.provider.CallLog; +import android.telephony.TelephonyManager; +import android.text.TextUtils; +import android.util.Log; +import android.widget.Spinner; + +import com.android.contacts.common.MoreContactUtils; +import com.android.dialer.R; + +import java.util.ArrayList; +import java.util.List; + +/** + * To save the spinner content. + */ +public class SpinnerContent { + private static String TAG = SpinnerContent.class.getSimpleName(); + + public final int value; + public final String label; + + // The index for call type spinner. + private static final int INDEX_CALL_TYPE_ALL = 0; + private static final int INDEX_CALL_TYPE_INCOMING = 1; + private static final int INDEX_CALL_TYPE_OUTGOING = 2; + private static final int INDEX_CALL_TYPE_MISSED = 3; + private static final int INDEX_CALL_TYPE_VOICEMAIL = 4; + + public static void setSpinnerContentValue(Spinner spinner, int value) { + for (int i = 0, count = spinner.getCount(); i < count; i++) { + SpinnerContent sc = (SpinnerContent) spinner.getItemAtPosition(i); + if (sc.value == value) { + spinner.setSelection(i, true); + Log.i(TAG, "Set selection for spinner(" + sc + ") with the value: " + value); + return; + } + } + } + + public SpinnerContent(int value, String label) { + this.value = value; + this.label = label; + } + + @Override + public String toString() { + return label; + } + + /** + * @return the spinner contents for the different sims (all, sim0, sim1 etc) + */ + public static List<SpinnerContent> setupSubFilterContent(Context context) { + TelephonyManager telephonyManager = + (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); + int count = telephonyManager.getPhoneCount(); + // Update the filter sub content. + ArrayList<SpinnerContent> values = new ArrayList<SpinnerContent>(count + 1); + values.add(new SpinnerContent(CallLogQueryHandler.CALL_SUB_ALL, + context.getString(R.string.call_log_show_all_slots))); + for (int i = 0; i < count; i++) { + String subDisplayName = PhoneAccountUtils.getAccountLabel(context, + MoreContactUtils.getAccount(i)); + if (!TextUtils.isEmpty(subDisplayName)) { + values.add(new SpinnerContent(i, subDisplayName)); + } + } + return values; + } + + /** + * @param voicemailAvailable true if voicemail should be included in the return values + * @return the spinner contents for the different call types (incoming, outgoing etc) + */ + public static List<SpinnerContent> setupStatusFilterContent(Context context, + boolean voicemailAvailable) { + // Didn't show the voice mail item if not available. + int statusCount = voicemailAvailable ? 5 : 4; + ArrayList<SpinnerContent> values = new ArrayList<SpinnerContent>(statusCount); + for (int i = 0; i < statusCount; i++) { + int value = CallLogQueryHandler.CALL_TYPE_ALL; + String label = null; + switch (i) { + case INDEX_CALL_TYPE_ALL: + value = CallLogQueryHandler.CALL_TYPE_ALL; + label = context.getString(R.string.call_log_all_calls_header); + break; + case INDEX_CALL_TYPE_INCOMING: + value = CallLog.Calls.INCOMING_TYPE; + label = context.getString(R.string.call_log_incoming_header); + break; + case INDEX_CALL_TYPE_OUTGOING: + value = CallLog.Calls.OUTGOING_TYPE; + label = context.getString(R.string.call_log_outgoing_header); + break; + case INDEX_CALL_TYPE_MISSED: + value = CallLog.Calls.MISSED_TYPE; + label = context.getString(R.string.call_log_missed_header); + break; + case INDEX_CALL_TYPE_VOICEMAIL: + value = CallLog.Calls.VOICEMAIL_TYPE; + label = context.getString(R.string.call_log_voicemail_header); + break; + } + values.add(new SpinnerContent(value, label)); + } + return values; + } +} |