summaryrefslogtreecommitdiffstats
path: root/src/com/android/dialer/calllog/CallLogActivity.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/dialer/calllog/CallLogActivity.java')
-rw-r--r--src/com/android/dialer/calllog/CallLogActivity.java77
1 files changed, 67 insertions, 10 deletions
diff --git a/src/com/android/dialer/calllog/CallLogActivity.java b/src/com/android/dialer/calllog/CallLogActivity.java
index c7862aee6..33e72bc12 100644
--- a/src/com/android/dialer/calllog/CallLogActivity.java
+++ b/src/com/android/dialer/calllog/CallLogActivity.java
@@ -31,15 +31,18 @@ import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.MotionEvent;
+import android.view.ViewGroup;
import com.android.contacts.common.interactions.TouchPointManager;
import com.android.contacts.common.list.ViewPagerTabs;
+import com.android.contacts.commonbind.analytics.AnalyticsUtil;
import com.android.dialer.DialtactsActivity;
import com.android.dialer.R;
import com.android.dialer.voicemail.VoicemailStatusHelper;
import com.android.dialer.voicemail.VoicemailStatusHelperImpl;
-public class CallLogActivity extends Activity implements CallLogQueryHandler.Listener {
+public class CallLogActivity extends Activity implements CallLogQueryHandler.Listener,
+ ViewPager.OnPageChangeListener {
private Handler mHandler;
private ViewPager mViewPager;
private ViewPagerTabs mViewPagerTabs;
@@ -81,19 +84,34 @@ public class CallLogActivity extends Activity implements CallLogQueryHandler.Lis
public Fragment getItem(int position) {
switch (position) {
case TAB_INDEX_ALL:
- mAllCallsFragment = new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
- return mAllCallsFragment;
+ return new CallLogFragment(CallLogQueryHandler.CALL_TYPE_ALL);
case TAB_INDEX_MISSED:
- mMissedCallsFragment = new CallLogFragment(Calls.MISSED_TYPE);
- return mMissedCallsFragment;
+ return new CallLogFragment(Calls.MISSED_TYPE);
case TAB_INDEX_VOICEMAIL:
- mVoicemailFragment = new CallLogFragment(Calls.VOICEMAIL_TYPE);
- return mVoicemailFragment;
+ return new CallLogFragment(Calls.VOICEMAIL_TYPE);
}
throw new IllegalStateException("No fragment at position " + position);
}
@Override
+ public Object instantiateItem(ViewGroup container, int position) {
+ final CallLogFragment fragment =
+ (CallLogFragment) super.instantiateItem(container, position);
+ switch (position) {
+ case TAB_INDEX_ALL:
+ mAllCallsFragment = fragment;
+ break;
+ case TAB_INDEX_MISSED:
+ mMissedCallsFragment = fragment;
+ break;
+ case TAB_INDEX_VOICEMAIL:
+ mVoicemailFragment = fragment;
+ break;
+ }
+ return fragment;
+ }
+
+ @Override
public CharSequence getPageTitle(int position) {
return mTabTitles[position];
}
@@ -149,9 +167,9 @@ public class CallLogActivity extends Activity implements CallLogQueryHandler.Lis
mViewPagerAdapter = new ViewPagerAdapter(getFragmentManager());
mViewPager.setAdapter(mViewPagerAdapter);
mViewPager.setOffscreenPageLimit(2);
+ mViewPager.setOnPageChangeListener(this);
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
@@ -174,6 +192,7 @@ public class CallLogActivity extends Activity implements CallLogQueryHandler.Lis
CallLogQueryHandler callLogQueryHandler =
new CallLogQueryHandler(this.getContentResolver(), this);
callLogQueryHandler.fetchVoicemailStatus();
+ sendScreenViewForChildFragment(mViewPager.getCurrentItem());
}
@Override
@@ -186,9 +205,8 @@ public class CallLogActivity extends Activity implements CallLogQueryHandler.Lis
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
final MenuItem itemDeleteAll = menu.findItem(R.id.delete_all);
-
- // If onPrepareOptionsMenu is called before fragments loaded. Don't do anything.
if (mAllCallsFragment != null && itemDeleteAll != null) {
+ // If onPrepareOptionsMenu is called before fragments are loaded, don't do anything.
final CallLogAdapter adapter = mAllCallsFragment.getAdapter();
itemDeleteAll.setVisible(adapter != null && !adapter.isEmpty());
}
@@ -238,4 +256,43 @@ public class CallLogActivity extends Activity implements CallLogQueryHandler.Lis
// Return false; did not take ownership of cursor
return false;
}
+
+ @Override
+ public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
+ mViewPagerTabs.onPageScrolled(position, positionOffset, positionOffsetPixels);
+ }
+
+ @Override
+ public void onPageSelected(int position) {
+ if (isResumed()) {
+ sendScreenViewForChildFragment(position);
+ }
+ mViewPagerTabs.onPageSelected(position);
+ }
+
+ @Override
+ public void onPageScrollStateChanged(int state) {
+ mViewPagerTabs.onPageScrollStateChanged(state);
+ }
+
+ private void sendScreenViewForChildFragment(int position) {
+ AnalyticsUtil.sendScreenView(CallLogFragment.class.getSimpleName(), this,
+ getFragmentTagForPosition(position));
+ }
+
+ /**
+ * Returns the fragment located at the given position in the {@link ViewPagerAdapter}. May
+ * be null if the position is invalid.
+ */
+ private String getFragmentTagForPosition(int position) {
+ switch (position) {
+ case TAB_INDEX_ALL:
+ return "All";
+ case TAB_INDEX_MISSED:
+ return "Missed";
+ case TAB_INDEX_VOICEMAIL:
+ return "Voicemail";
+ }
+ return null;
+ }
}