mirror of https://github.com/tasks/tasks
Merge remote-tracking branch 'origin/120221_sb_swipe_between_lists' into 120221_sb_swipe_between_lists
commit
ed6984e58d
@ -0,0 +1,74 @@
|
|||||||
|
package com.todoroo.astrid.adapter;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
|
import android.os.Parcelable;
|
||||||
|
import android.support.v4.app.Fragment;
|
||||||
|
import android.support.v4.app.FragmentManager;
|
||||||
|
import android.support.v4.app.FragmentStatePagerAdapter;
|
||||||
|
|
||||||
|
import com.todoroo.astrid.activity.TaskListFragment;
|
||||||
|
import com.todoroo.astrid.adapter.FilterAdapter.FilterDataSourceChangedListener;
|
||||||
|
import com.todoroo.astrid.api.Filter;
|
||||||
|
import com.todoroo.astrid.api.FilterWithCustomIntent;
|
||||||
|
|
||||||
|
public class TaskListFragmentPagerAdapter extends FragmentStatePagerAdapter implements FilterDataSourceChangedListener {
|
||||||
|
|
||||||
|
private final FilterAdapter filterAdapter;
|
||||||
|
|
||||||
|
public TaskListFragmentPagerAdapter(FragmentManager fm, FilterAdapter filterAdapter) {
|
||||||
|
super(fm);
|
||||||
|
this.filterAdapter = filterAdapter;
|
||||||
|
filterAdapter.setDataSourceChangedListener(this);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void filterDataSourceChanged() {
|
||||||
|
notifyDataSetChanged();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Fragment getItem(int position) {
|
||||||
|
return getFragmentForFilter(filterAdapter.getItem(position));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public CharSequence getPageTitle(int position) {
|
||||||
|
return filterAdapter.getItem(position).title;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int addOrLookup(Filter filter) {
|
||||||
|
return filterAdapter.addOrLookup(filter);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Filter getFilter(int position) {
|
||||||
|
return filterAdapter.getItem(position);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getCount() {
|
||||||
|
return filterAdapter.getCount();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Fragment getFragmentForFilter(Filter filter) {
|
||||||
|
Bundle extras = getExtrasForFilter(filter);
|
||||||
|
return TaskListFragment.instantiateWithFilterAndExtras(filter, extras, TaskListFragment.class);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Bundle getExtrasForFilter(Filter filter) {
|
||||||
|
Bundle extras;
|
||||||
|
if (filter instanceof FilterWithCustomIntent) {
|
||||||
|
extras = ((FilterWithCustomIntent) filter).customExtras;
|
||||||
|
} else {
|
||||||
|
extras = new Bundle();
|
||||||
|
}
|
||||||
|
if (filter != null)
|
||||||
|
extras.putParcelable(TaskListFragment.TOKEN_FILTER, filter);
|
||||||
|
return extras;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Parcelable saveState() {
|
||||||
|
return null; // Don't save state
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,40 @@
|
|||||||
|
package com.todoroo.astrid.ui;
|
||||||
|
|
||||||
|
import android.content.Context;
|
||||||
|
import android.support.v4.view.PagerAdapter;
|
||||||
|
import android.support.v4.view.ViewPager;
|
||||||
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
|
import com.todoroo.astrid.adapter.TaskListFragmentPagerAdapter;
|
||||||
|
import com.todoroo.astrid.api.Filter;
|
||||||
|
|
||||||
|
public class TaskListFragmentPager extends ViewPager {
|
||||||
|
|
||||||
|
public TaskListFragmentPager(Context context, AttributeSet attrs) {
|
||||||
|
super(context, attrs);
|
||||||
|
}
|
||||||
|
|
||||||
|
@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);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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
|
||||||
|
* @param index
|
||||||
|
*/
|
||||||
|
public void showFilter(int index) {
|
||||||
|
setCurrentItem(index, true);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue