/** * Copyright (C) 2013 - 2015 the enviroCar community * * This file is part of the enviroCar app. * * The enviroCar app is free software: you can redistribute it and/or * modify it under the terms of the GNU General Public License as published * by the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * The enviroCar app is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General * Public License for more details. * * You should have received a copy of the GNU General Public License along * with the enviroCar app. If not, see http://www.gnu.org/licenses/. */ package org.envirocar.app.view.tracklist; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import org.envirocar.app.R; import org.envirocar.core.injection.BaseInjectorFragment; import org.envirocar.core.logging.Logger; import butterknife.ButterKnife; import butterknife.InjectView; /** * @author dewall */ public class TrackListPagerFragment extends BaseInjectorFragment { private static final Logger LOG = Logger.getLogger(TrackListPagerFragment.class); @InjectView(R.id.fragment_tracklist_layout_tablayout) protected TabLayout mTabLayout; @InjectView(R.id.fragment_tracklist_layout_viewpager) protected ViewPager mViewPager; private TrackListPagerAdapter trackListPageAdapter; @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { LOG.info("onCreateView()"); View content = inflater.inflate(R.layout.fragment_tracklist_layout, container, false); ButterKnife.inject(this, content); trackListPageAdapter = new TrackListPagerAdapter(getChildFragmentManager()); mViewPager.setAdapter(trackListPageAdapter); mTabLayout.setupWithViewPager(mViewPager); mViewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { // Nothing to do.. } @Override public void onPageSelected(int position) { LOG.info("Page selected=" + position); if (position == 0) { trackListPageAdapter.localCardFragment.loadDataset(); } else if (position == 1) { trackListPageAdapter.remoteCardFragment.loadDataset(); } } @Override public void onPageScrollStateChanged(int state) { // Nothing to do.. } }); mTabLayout.setSelectedTabIndicatorColor(getResources() .getColor(R.color.green_dark_cario)); return content; } @Override public void onResume() { LOG.info("onResume()"); super.onResume(); if (mViewPager.getCurrentItem() == 0) { trackListPageAdapter.localCardFragment.loadDataset(); } else { trackListPageAdapter.remoteCardFragment.loadDataset(); } } @Override public void onDestroyView() { LOG.info("onDestroyView()"); super.onDestroyView(); trackListPageAdapter.localCardFragment.onDestroyView(); trackListPageAdapter.remoteCardFragment.onDestroyView(); } /** * @author dewall */ class TrackListPagerAdapter extends FragmentStatePagerAdapter { private static final int NUM_PAGES = 2; private TrackListLocalCardFragment localCardFragment = new TrackListLocalCardFragment(); private TrackListRemoteCardFragment remoteCardFragment = new TrackListRemoteCardFragment(); /** * Constructor. * * @param fm the fragment manager of the application's current scope. */ public TrackListPagerAdapter(FragmentManager fm) { super(fm); remoteCardFragment = new TrackListRemoteCardFragment(); localCardFragment = new TrackListLocalCardFragment(); localCardFragment.setOnTrackUploadedListener(remoteCardFragment); } @Override public Fragment getItem(int position) { if (position == 0) { return localCardFragment; } else { return remoteCardFragment; } } @Override public int getCount() { return NUM_PAGES; } @Override public CharSequence getPageTitle(int position) { if (position == 0) { return getString(R.string.track_list_local_tracks); } else { return getString(R.string.track_list_remote_tracks); } } } }