1ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/* 2ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Copyright (C) 2013 The Android Open Source Project 3ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 4ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Licensed under the Apache License, Version 2.0 (the "License"); 5ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * you may not use this file except in compliance with the License. 6ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * You may obtain a copy of the License at 7ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 8ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * http://www.apache.org/licenses/LICENSE-2.0 9ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 10ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Unless required by applicable law or agreed to in writing, software 11ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * distributed under the License is distributed on an "AS IS" BASIS, 12ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * See the License for the specific language governing permissions and 14ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * limitations under the License. 15ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 16d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian 17ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianpackage com.android.dialer.app.list; 18ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 19d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanianimport static com.android.dialer.app.list.DialtactsPagerAdapter.TAB_COUNT_WITH_VOICEMAIL; 20d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanianimport static com.android.dialer.app.list.DialtactsPagerAdapter.TAB_INDEX_ALL_CONTACTS; 21d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanianimport static com.android.dialer.app.list.DialtactsPagerAdapter.TAB_INDEX_HISTORY; 22d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanianimport static com.android.dialer.app.list.DialtactsPagerAdapter.TAB_INDEX_SPEED_DIAL; 23d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanianimport static com.android.dialer.app.list.DialtactsPagerAdapter.TAB_INDEX_VOICEMAIL; 24d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian 253331545bd3fb769ae3f9246c0bd92fe35c6308absailimport android.app.Fragment; 26ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.content.SharedPreferences; 27ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.database.ContentObserver; 28ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.database.Cursor; 29ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.os.Bundle; 30ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.os.Handler; 31ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.os.Trace; 32ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.preference.PreferenceManager; 33ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.provider.VoicemailContract; 34ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.support.v4.view.ViewPager.OnPageChangeListener; 35ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.view.LayoutInflater; 36ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.view.View; 37ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport android.view.ViewGroup; 38ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.contacts.common.list.ViewPagerTabs; 39ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.app.R; 40ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.app.calllog.CallLogFragment; 41d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanianimport com.android.dialer.app.calllog.CallLogNotificationsService; 42ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler; 43ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.app.voicemail.error.VoicemailStatusCorruptionHandler.Source; 44ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.common.LogUtil; 45ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.database.CallLogQueryHandler; 462f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanianimport com.android.dialer.database.CallLogQueryHandler.Listener; 478369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanianimport com.android.dialer.logging.DialerImpression; 48ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.logging.Logger; 498369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanianimport com.android.dialer.logging.ScreenEvent; 502f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanianimport com.android.dialer.logging.UiAction; 512f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanianimport com.android.dialer.performancereport.PerformanceReport; 52d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanianimport com.android.dialer.speeddial.SpeedDialFragment; 53c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanianimport com.android.dialer.util.PermissionsUtil; 54ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.voicemailstatus.VisualVoicemailEnabledChecker; 55ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport com.android.dialer.voicemailstatus.VoicemailStatusHelper; 56ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanianimport java.util.ArrayList; 57ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 58ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian/** 59ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Fragment that is used as the main screen of the Dialer. 60ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * 61ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * <p>Contains a ViewPager that contains various contact lists like the Speed Dial list and the All 62ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Contacts list. This will also eventually contain the logic that allows sliding the ViewPager 63ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * containing the lists up above the search bar and pin it against the top of the screen. 64ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 652f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanianpublic class ListsFragment extends Fragment implements OnPageChangeListener, Listener { 66ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 67ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private static final String TAG = "ListsFragment"; 682f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian 692f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian private DialerViewPager mViewPager; 70ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private ViewPagerTabs mViewPagerTabs; 71d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian private DialtactsPagerAdapter mAdapter; 72ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private RemoveView mRemoveView; 73ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private View mRemoveViewContent; 74d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian private Fragment mCurrentPage; 75ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private SharedPreferences mPrefs; 76ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private boolean mHasFetchedVoicemailStatus; 77ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private boolean mShowVoicemailTabAfterVoicemailStatusIsFetched; 78d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian private final ArrayList<OnPageChangeListener> mOnPageChangeListeners = new ArrayList<>(); 79ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** The position of the currently selected tab. */ 80ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private int mTabIndex = TAB_INDEX_SPEED_DIAL; 81cded3beaf28a703e1ef8f71bbc6836e6806c3736Tobias Thierer 822f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian private boolean mPaused; 83ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private CallLogQueryHandler mCallLogQueryHandler; 84ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 852f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian private UiAction.Type[] actionTypeList; 862f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian 87ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian private final ContentObserver mVoicemailStatusObserver = 88ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian new ContentObserver(new Handler()) { 89ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 90ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onChange(boolean selfChange) { 91ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onChange(selfChange); 92ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler.fetchVoicemailStatus(); 93ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 94ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian }; 95ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 96ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 97ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onCreate(Bundle savedInstanceState) { 98ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian LogUtil.d("ListsFragment.onCreate", null); 99ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.beginSection(TAG + " onCreate"); 100ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onCreate(savedInstanceState); 101ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mPrefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); 102ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.endSection(); 103ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 104ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 105ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 106ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onResume() { 107ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian LogUtil.d("ListsFragment.onResume", null); 108ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.beginSection(TAG + " onResume"); 109ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onResume(); 110ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 1118369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian mPaused = false; 1128369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian 113ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (getUserVisibleHint()) { 114ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian sendScreenViewForCurrentPosition(); 115ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 116ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 117ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Fetch voicemail status to determine if we should show the voicemail tab. 118ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler = 119ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian new CallLogQueryHandler(getActivity(), getActivity().getContentResolver(), this); 120ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler.fetchVoicemailStatus(); 121ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler.fetchMissedCallsUnreadCount(); 122ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.endSection(); 123d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mCurrentPage = mAdapter.getItem(mViewPager.getCurrentItem()); 124d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (mCurrentPage instanceof CallLogFragment) { 125d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian ((CallLogFragment) mCurrentPage).onVisible(); 126ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 127ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 128ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 129ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 130ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onPause() { 131ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian LogUtil.d("ListsFragment.onPause", null); 132d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (mCurrentPage instanceof CallLogFragment) { 133d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian ((CallLogFragment) mCurrentPage).onNotVisible(); 134ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 135ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onPause(); 1368369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian 1378369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian mPaused = true; 138ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 139ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 140ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 141ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onDestroyView() { 142ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onDestroyView(); 143ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPager.removeOnPageChangeListener(this); 144ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 145ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 146ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 147ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public View onCreateView( 148ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 149ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian LogUtil.d("ListsFragment.onCreateView", null); 150ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.beginSection(TAG + " onCreateView"); 151ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.beginSection(TAG + " inflate view"); 152ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final View parentView = inflater.inflate(R.layout.lists_fragment, container, false); 153ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.endSection(); 154ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.beginSection(TAG + " setup views"); 155d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian 1562f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian actionTypeList = new UiAction.Type[TAB_COUNT_WITH_VOICEMAIL]; 1572f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian actionTypeList[TAB_INDEX_SPEED_DIAL] = UiAction.Type.CHANGE_TAB_TO_FAVORITE; 1582f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian actionTypeList[TAB_INDEX_HISTORY] = UiAction.Type.CHANGE_TAB_TO_CALL_LOG; 1592f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian actionTypeList[TAB_INDEX_ALL_CONTACTS] = UiAction.Type.CHANGE_TAB_TO_CONTACTS; 1602f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian actionTypeList[TAB_INDEX_VOICEMAIL] = UiAction.Type.CHANGE_TAB_TO_VOICEMAIL; 1612f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian 162d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian String[] tabTitles = new String[TAB_COUNT_WITH_VOICEMAIL]; 163d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabTitles[TAB_INDEX_SPEED_DIAL] = getResources().getString(R.string.tab_speed_dial); 164d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabTitles[TAB_INDEX_HISTORY] = getResources().getString(R.string.tab_history); 165d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabTitles[TAB_INDEX_ALL_CONTACTS] = getResources().getString(R.string.tab_all_contacts); 166d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabTitles[TAB_INDEX_VOICEMAIL] = getResources().getString(R.string.tab_voicemail); 167d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian 168d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian int[] tabIcons = new int[TAB_COUNT_WITH_VOICEMAIL]; 169d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabIcons[TAB_INDEX_SPEED_DIAL] = R.drawable.quantum_ic_grade_white_24; 170d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabIcons[TAB_INDEX_HISTORY] = R.drawable.quantum_ic_schedule_white_24; 171d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabIcons[TAB_INDEX_ALL_CONTACTS] = R.drawable.quantum_ic_people_white_24; 172d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabIcons[TAB_INDEX_VOICEMAIL] = R.drawable.quantum_ic_voicemail_white_24; 173d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian 1742f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian mViewPager = (DialerViewPager) parentView.findViewById(R.id.lists_pager); 175d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mAdapter = 176d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian new DialtactsPagerAdapter( 177d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian getContext(), 178d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian getChildFragmentManager(), 179d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian tabTitles, 180d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mPrefs.getBoolean( 181d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, false)); 182d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mViewPager.setAdapter(mAdapter); 183ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPager.setOffscreenPageLimit(TAB_COUNT_WITH_VOICEMAIL - 1); 184ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPager.addOnPageChangeListener(this); 185ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian showTab(TAB_INDEX_SPEED_DIAL); 186ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 187ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs = (ViewPagerTabs) parentView.findViewById(R.id.lists_pager_header); 188d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mViewPagerTabs.configureTabIcons(tabIcons); 189ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs.setViewPager(mViewPager); 190ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian addOnPageChangeListener(mViewPagerTabs); 191ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mRemoveView = (RemoveView) parentView.findViewById(R.id.remove_view); 192ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mRemoveViewContent = parentView.findViewById(R.id.remove_view_content); 193ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 194c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian if (PermissionsUtil.hasReadVoicemailPermissions(getContext()) 195c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian && PermissionsUtil.hasAddVoicemailPermissions(getContext())) { 196c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian getActivity() 197c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian .getContentResolver() 198c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian .registerContentObserver( 199c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian VoicemailContract.Status.CONTENT_URI, true, mVoicemailStatusObserver); 200c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } else { 2012f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian LogUtil.w("ListsFragment.onCreateView", "no voicemail read permissions"); 202c857f90590e7d7fcffa89511982eb33afd34805fEric Erfanian } 203ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 204ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.endSection(); 205ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Trace.endSection(); 206ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return parentView; 207ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 208ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 209ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 210ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onDestroy() { 211ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getActivity().getContentResolver().unregisterContentObserver(mVoicemailStatusObserver); 212ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian super.onDestroy(); 213ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 214ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 215ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void addOnPageChangeListener(OnPageChangeListener onPageChangeListener) { 216ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (!mOnPageChangeListeners.contains(onPageChangeListener)) { 217ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mOnPageChangeListeners.add(onPageChangeListener); 218ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 219ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 220ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 221ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** 222ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * Shows the tab with the specified index. If the voicemail tab index is specified, but the 2232f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian * voicemail status hasn't been fetched, it will show the speed dial tab and try to show the 2242f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian * voicemail tab after the voicemail status has been fetched. 225ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 226ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void showTab(int index) { 227ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (index == TAB_INDEX_VOICEMAIL) { 228d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (mAdapter.hasActiveVoicemailProvider()) { 229d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mViewPager.setCurrentItem(mAdapter.getRtlPosition(TAB_INDEX_VOICEMAIL)); 230ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } else if (!mHasFetchedVoicemailStatus) { 231ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Try to show the voicemail tab after the voicemail status returns. 232ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mShowVoicemailTabAfterVoicemailStatusIsFetched = true; 233ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 234ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } else if (index < getTabCount()) { 235d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mViewPager.setCurrentItem(mAdapter.getRtlPosition(index)); 236ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 237ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 238ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 239ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 240ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { 241d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mTabIndex = mAdapter.getRtlPosition(position); 242ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 243ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final int count = mOnPageChangeListeners.size(); 244ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian for (int i = 0; i < count; i++) { 245ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mOnPageChangeListeners.get(i).onPageScrolled(position, positionOffset, positionOffsetPixels); 246ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 247ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 248ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 249ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 250ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onPageSelected(int position) { 2512f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian PerformanceReport.recordClick(actionTypeList[position]); 2522f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian 253ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian LogUtil.i("ListsFragment.onPageSelected", "position: %d", position); 254d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mTabIndex = mAdapter.getRtlPosition(position); 255ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 256ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Show the tab which has been selected instead. 257ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mShowVoicemailTabAfterVoicemailStatusIsFetched = false; 258ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 259ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final int count = mOnPageChangeListeners.size(); 260ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian for (int i = 0; i < count; i++) { 261ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mOnPageChangeListeners.get(i).onPageSelected(position); 262ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 263ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian sendScreenViewForCurrentPosition(); 264ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 265d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (mCurrentPage instanceof CallLogFragment) { 266d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian ((CallLogFragment) mCurrentPage).onNotVisible(); 267ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 268d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mCurrentPage = mAdapter.getItem(position); 269d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (mCurrentPage instanceof CallLogFragment) { 270d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian ((CallLogFragment) mCurrentPage).onVisible(); 271ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 272ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 273ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 274ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 275ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onPageScrollStateChanged(int state) { 276ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian final int count = mOnPageChangeListeners.size(); 277ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian for (int i = 0; i < count; i++) { 278ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mOnPageChangeListeners.get(i).onPageScrollStateChanged(state); 279ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 280ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 281ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 282ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 283ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onVoicemailStatusFetched(Cursor statusCursor) { 284ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mHasFetchedVoicemailStatus = true; 285ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 2868369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian if (getActivity() == null || mPaused) { 287ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return; 288ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 289ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 290ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian VoicemailStatusCorruptionHandler.maybeFixVoicemailStatus( 291ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian getContext(), statusCursor, Source.Activity); 292ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 293d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian // Update hasActiveVoicemailProvider, which controls the number of tabs displayed. 294ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian boolean hasActiveVoicemailProvider = 29510ae593a59aa50963e1d3159747da2d65ca79bedEric Erfanian VoicemailStatusHelper.getNumberActivityVoicemailSources(statusCursor) > 0; 296d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (hasActiveVoicemailProvider != mAdapter.hasActiveVoicemailProvider()) { 297d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mAdapter.setHasActiveVoicemailProvider(hasActiveVoicemailProvider); 298d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mAdapter.notifyDataSetChanged(); 299ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 300ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (hasActiveVoicemailProvider) { 3019a090c89e7a0c43a668bd6e2ac5e5e680f323aedEric Erfanian Logger.get(getContext()).logImpression(DialerImpression.Type.VVM_TAB_VISIBLE); 302ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs.updateTab(TAB_INDEX_VOICEMAIL); 303ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } else { 304ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs.removeTab(TAB_INDEX_VOICEMAIL); 305d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian mAdapter.removeVoicemailFragment(getChildFragmentManager()); 306ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 307ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 308ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mPrefs 309ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian .edit() 310ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian .putBoolean( 311ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian VisualVoicemailEnabledChecker.PREF_KEY_HAS_ACTIVE_VOICEMAIL_PROVIDER, 312ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian hasActiveVoicemailProvider) 313d5e47f6da5b08b13ecdfa7f1edc7e12aeb83fab9Eric Erfanian .apply(); 314ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 315ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 316ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (hasActiveVoicemailProvider) { 317ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler.fetchVoicemailUnreadCount(); 318ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 319ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 320d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (mAdapter.hasActiveVoicemailProvider() && mShowVoicemailTabAfterVoicemailStatusIsFetched) { 321ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mShowVoicemailTabAfterVoicemailStatusIsFetched = false; 322ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian showTab(TAB_INDEX_VOICEMAIL); 323ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 324ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 325ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 326ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 327ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onVoicemailUnreadCountFetched(Cursor cursor) { 328ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (getActivity() == null || getActivity().isFinishing() || cursor == null) { 329ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return; 330ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 331ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 332ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian int count = 0; 333ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian try { 334ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian count = cursor.getCount(); 335ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } finally { 336ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian cursor.close(); 337ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 338ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 339ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs.setUnreadCount(count, TAB_INDEX_VOICEMAIL); 340ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs.updateTab(TAB_INDEX_VOICEMAIL); 341ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 342ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 343ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 344ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void onMissedCallsUnreadCountFetched(Cursor cursor) { 345ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (getActivity() == null || getActivity().isFinishing() || cursor == null) { 346ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return; 347ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 348ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 349ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian int count = 0; 350ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian try { 351ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian count = cursor.getCount(); 352ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } finally { 353ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian cursor.close(); 354ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 355ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 356ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs.setUnreadCount(count, TAB_INDEX_HISTORY); 357ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mViewPagerTabs.updateTab(TAB_INDEX_HISTORY); 358ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 359ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 360ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian @Override 361ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public boolean onCallsFetched(Cursor statusCursor) { 362ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian // Return false; did not take ownership of cursor 363ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return false; 364ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 365ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 366ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public int getCurrentTabIndex() { 367ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return mTabIndex; 368ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 369ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 370ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** 371ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * External method to update unread count because the unread count changes when the user expands a 372ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian * voicemail in the call log or when the user expands an unread call in the call history tab. 373ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian */ 374ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void updateTabUnreadCounts() { 375ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (mCallLogQueryHandler != null) { 376ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler.fetchMissedCallsUnreadCount(); 377d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian if (mAdapter.hasActiveVoicemailProvider()) { 378ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler.fetchVoicemailUnreadCount(); 379ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 380ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 381ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 382ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 383ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian /** External method to mark all missed calls as read. */ 384ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void markMissedCallsAsReadAndRemoveNotifications() { 385ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (mCallLogQueryHandler != null) { 386ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mCallLogQueryHandler.markMissedCallsAsRead(); 3872f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian CallLogNotificationsService.cancelAllMissedCalls(getContext()); 388ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 389ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 390ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 391ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void showRemoveView(boolean show) { 392ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mRemoveViewContent.setVisibility(show ? View.VISIBLE : View.GONE); 393ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mRemoveView.setAlpha(show ? 0 : 1); 394ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian mRemoveView.animate().alpha(show ? 1 : 0).start(); 395ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 396ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 3972f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian public void showMultiSelectRemoveView(boolean show) { 3982f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian mViewPagerTabs.setVisibility(show ? View.GONE : View.VISIBLE); 3992f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian mViewPager.setEnableSwipingPages(!show); 4002f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian } 4012f1c7586bcce334ca69022eb8dc6d8965ceb6a05Eric Erfanian 402d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian public boolean hasFrequents() { 403d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian Fragment page = mAdapter.getItem(mAdapter.getRtlPosition(TAB_INDEX_SPEED_DIAL)); 404d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian return page instanceof OldSpeedDialFragment 405d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian ? ((OldSpeedDialFragment) page).hasFrequents() 406d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian : ((SpeedDialFragment) page).hasFrequents(); 407ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 408ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 409ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public RemoveView getRemoveView() { 410ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return mRemoveView; 411ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 412ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 413ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public int getTabCount() { 414d8046e520a866b9948ee9ba47cf642b441ca8e23Eric Erfanian return mAdapter.getCount(); 415ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 416ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 417ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian public void sendScreenViewForCurrentPosition() { 418ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian if (!isResumed()) { 419ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return; 420ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 421ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian 4228369df095a73a77b3715f8ae7ba06089cebca4ceEric Erfanian ScreenEvent.Type screenType; 423ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian switch (getCurrentTabIndex()) { 424ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian case TAB_INDEX_SPEED_DIAL: 425ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian screenType = ScreenEvent.Type.SPEED_DIAL; 426ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian break; 427ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian case TAB_INDEX_HISTORY: 428ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian screenType = ScreenEvent.Type.CALL_LOG; 429ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian break; 430ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian case TAB_INDEX_ALL_CONTACTS: 431ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian screenType = ScreenEvent.Type.ALL_CONTACTS; 432ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian break; 433ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian case TAB_INDEX_VOICEMAIL: 434ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian screenType = ScreenEvent.Type.VOICEMAIL_LOG; 435ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian break; 436ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian default: 437ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian return; 438ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 439ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian Logger.get(getActivity()).logScreenView(screenType, getActivity()); 440ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian } 441ccca31529c07970e89419fb85a9e8153a5396838Eric Erfanian} 442