/** * Copyright (c) 2012 Todoroo Inc * * See the file "LICENSE" for the full license governing this code. */ package com.todoroo.astrid.ui; import android.app.Activity; import android.content.Context; import android.graphics.Rect; import android.support.v4.view.PagerAdapter; import android.support.v4.view.ViewPager; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import com.timsu.astrid.R; import com.todoroo.andlib.utility.DialogUtilities; import com.todoroo.andlib.utility.Preferences; import com.todoroo.astrid.activity.TaskListFragment; import com.todoroo.astrid.adapter.TaskListFragmentPagerAdapter; import com.todoroo.astrid.api.Filter; import com.todoroo.astrid.service.ThemeService; import com.todoroo.astrid.utility.Flags; public class TaskListFragmentPager extends ViewPager { public static final String PREF_SHOWED_SWIPE_HELPER = "showed_swipe_helper"; //$NON-NLS-1$ public TaskListFragmentPager(Context context, AttributeSet attrs) { super(context, attrs); setOffscreenPageLimit(1); setPageMargin(1); setPageMarginDrawable(R.drawable.vertical_separator); } @Override public void setAdapter(PagerAdapter adapter) { if (!(adapter instanceof TaskListFragmentPagerAdapter)) throw new ClassCastException("TaskListFragmentPager requires an adapter of type TaskListFragmentPagerAdapter"); //$NON-NLS-1$ super.setAdapter(adapter); } /** * Hack to enable reloading fragments while they are being viewed */ public void forceReload() { int position = getCurrentItem(); setAdapter(getAdapter()); setCurrentItem(position, false); } /** * Show the supplied filter, adding it to the data source if it doesn't exist * @param f */ public void showFilter(Filter f) { TaskListFragmentPagerAdapter adapter = (TaskListFragmentPagerAdapter) getAdapter(); showFilter(adapter.addOrLookup(f)); } /** * Show the filter at the supplied index, with animation * @param index */ public void showFilter(int index) { setCurrentItem(index, true); } /** * Returns the currently showing fragment * @return */ public TaskListFragment getCurrentFragment() { return (TaskListFragment) ((TaskListFragmentPagerAdapter) getAdapter()).lookupFragmentForPosition(getCurrentItem()); } @Override public boolean onInterceptTouchEvent(MotionEvent ev) { if (checkForPeopleHeaderScroll(ev)) return false; if (Flags.check(Flags.TLFP_NO_INTERCEPT_TOUCH)) return false; return super.onInterceptTouchEvent(ev); } private boolean checkForPeopleHeaderScroll(MotionEvent ev) { TaskListFragment current = getCurrentFragment(); if (current != null) { View v = current.getView(); if (v != null) { View peopleView = v.findViewById(R.id.shared_with); if (peopleView != null) { Rect rect = new Rect(); peopleView.getHitRect(rect); if (rect.contains((int) ev.getX(), (int) ev.getY())) return true; } } } return false; } @SuppressWarnings("nls") public static void showSwipeBetweenHelper(Activity activity) { if (!Preferences.getBoolean(PREF_SHOWED_SWIPE_HELPER, false)) { String body = String.format("<h3>%s</h3><img src='%s'><br><br>%s", activity.getString(R.string.swipe_lists_helper_header), "subtasks_horizontal.png", activity.getString(R.string.swipe_lists_helper_subtitle)); String color = ThemeService.getDialogTextColorString(); String html = String.format("<html><body style='text-align:center;color:%s'>%s</body></html>", color, body); DialogUtilities.htmlDialog(activity, html, R.string.swipe_lists_helper_title); Preferences.setBoolean(PREF_SHOWED_SWIPE_HELPER, true); } } }