package com.github.devnied.emvnfccard.fragment;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.github.devnied.emvnfccard.R;
import com.github.devnied.emvnfccard.activity.IContentActivity;
import com.github.devnied.emvnfccard.adapter.ViewPagerAdapter;
import com.github.devnied.emvnfccard.fragment.viewPager.IFragment;
import com.github.devnied.emvnfccard.fragment.viewPager.impl.CardDetailFragment;
import com.github.devnied.emvnfccard.fragment.viewPager.impl.LogFragment;
import com.github.devnied.emvnfccard.fragment.viewPager.impl.TransactionHistoryFragment;
import com.github.devnied.emvnfccard.model.EmvTransactionRecord;
import com.github.devnied.emvnfccard.view.SlidingTabLayout;
/**
* View pager
*
* @author Millau Julien
*
*/
public class ViewPagerFragment extends Fragment implements IRefreshable {
/**
* Tab layout
*/
private SlidingTabLayout mTabLayout;
/**
* View pager
*/
private ViewPager mViewPager;
/**
* View pager Adapter
*/
private ViewPagerAdapter mViewPagerAdapter;
/**
* Fragment list
*/
private List<IFragment> fragments = new ArrayList<IFragment>(3);
/**
* Content activity
*/
private IContentActivity mContentActivity;
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container, final Bundle savedInstanceState) {
return inflater.inflate(R.layout.viewpager, container, false);
}
@Override
public void onViewCreated(final View view, final Bundle savedInstanceState) {
List<EmvTransactionRecord> transactions = null;
if (mContentActivity.getCard() != null) {
transactions = mContentActivity.getCard().getListTransactions();
}
// Add fragments
fragments.add(CardDetailFragment.newInstance(mContentActivity.getCard(), getString(R.string.viewpager_carddetail)));
fragments.add(TransactionHistoryFragment.newInstance(transactions, getString(R.string.viewpager_transactions)));
fragments.add(LogFragment.newInstance(mContentActivity.getLog(), getString(R.string.viewpager_log)));
// View pager
mViewPager = (ViewPager) view.findViewById(R.id.viewpager);
mViewPagerAdapter = new ViewPagerAdapter(getChildFragmentManager(), fragments);
mViewPager.setAdapter(mViewPagerAdapter);
// banner
view.findViewById(R.id.banner).setOnClickListener((View.OnClickListener) getActivity());
// Tab layout
mTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
mTabLayout.setViewPager(mViewPager);
mTabLayout.setCustomTabColorizer(new SlidingTabLayout.TabColorizer() {
@Override
public int getIndicatorColor(final int position) {
return Color.parseColor("#b3e5fc");
}
@Override
public int getDividerColor(final int position) {
return Color.parseColor("#03a9f4");
}
});
}
@Override
public void onAttach(final Activity activity) {
super.onAttach(activity);
mContentActivity = (IContentActivity) activity;
mContentActivity.setRefreshableContent(this);
}
@Override
public void update() {
for (IFragment frag : fragments) {
if (frag instanceof LogFragment) {
((LogFragment) frag).updateLog(mContentActivity.getLog());
} else if (frag instanceof CardDetailFragment) {
((CardDetailFragment) frag).update(mContentActivity.getCard());
} else if (frag instanceof TransactionHistoryFragment) {
((TransactionHistoryFragment) frag).update(mContentActivity.getCard() != null ? mContentActivity.getCard()
.getListTransactions() : null);
}
}
if (mViewPagerAdapter != null) {
if (getActivity() != null) {
mViewPagerAdapter.notifyDataSetChanged();
}
mTabLayout.updateTabs();
}
}
}