package com.reactnativenavigation.screens;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.View;
import android.view.ViewGroup;
import com.facebook.react.bridge.Arguments;
import com.facebook.react.bridge.WritableMap;
import com.reactnativenavigation.NavigationApplication;
import com.reactnativenavigation.events.EventBus;
import com.reactnativenavigation.events.ScreenChangedEvent;
import com.reactnativenavigation.events.ViewPagerScreenChangedEvent;
import com.reactnativenavigation.events.ViewPagerScreenScrollStartEvent;
import com.reactnativenavigation.params.PageParams;
import com.reactnativenavigation.views.ContentView;
import java.util.List;
class ContentViewPagerAdapter extends PagerAdapter implements ViewPager.OnPageChangeListener {
private List<ContentView> contentViews;
private List<PageParams> pageParams;
private int currentPosition = 0;
ContentViewPagerAdapter(List<ContentView> contentViews, List<PageParams> pageParams) {
this.contentViews = contentViews;
this.pageParams = pageParams;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
return contentViews.get(position);
}
@Override
public int getCount() {
return contentViews.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public CharSequence getPageTitle(int position) {
return pageParams.get(position).title;
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
EventBus.instance.post(new ViewPagerScreenChangedEvent());
currentPosition = position;
EventBus.instance.post(new ScreenChangedEvent(pageParams.get(currentPosition)));
sendTabSelectedEventToJs();
}
@Override
public void onPageScrollStateChanged(int state) {
if (state == ViewPager.SCROLL_STATE_DRAGGING) {
EventBus.instance.post(new ViewPagerScreenScrollStartEvent());
}
}
private void sendTabSelectedEventToJs() {
WritableMap data = Arguments.createMap();
String navigatorEventId = contentViews.get(currentPosition).getNavigatorEventId();
NavigationApplication.instance.getEventEmitter().sendNavigatorEvent("tabSelected", navigatorEventId, data);
}
}