package com.hexonxons.leprawatch.fragment.user;
import org.koroed.lepra.Lepra;
import org.koroed.lepra.content.LepraUser;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import com.hexonxons.leprawatch.R;
import com.hexonxons.leprawatch.system.Constants;
import com.hexonxons.leprawatch.view.LepraPagerAdapter;
import com.viewpagerindicator.TabPageIndicator;
public class UserFragment extends Fragment
{
public static final String TAG = "UserFragment";
// Lepra user.
private LepraUser mUser = null;
// Is after rotate.
private boolean mIsAfterRotate = false;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
if(savedInstanceState == null)
{
mUser = Lepra.getInstance().getContext().user;
}
else
{
mIsAfterRotate = true;
mUser = savedInstanceState.getParcelable(Constants.BUNDLE.KEY_USER);
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
ViewGroup rootView = (ViewGroup) inflater.inflate(R.layout.user_layout, container, false);
ViewPager pager = (ViewPager) rootView.findViewById(R.id.user_pager);
pager.setAdapter(new UserPagerAdapter(getChildFragmentManager()));
TabPageIndicator tabIndicator = (TabPageIndicator) rootView.findViewById(R.id.user_pager_titles);
tabIndicator.setViewPager(pager);
return rootView;
}
/**
* {@link https://code.google.com/p/android/issues/detail?id=25994} workaround.
*/
@Override
public Animation onCreateAnimation(int transit, boolean enter, int nextAnim)
{
if(enter)
{
if(mIsAfterRotate)
{
return super.onCreateAnimation(transit, enter, nextAnim);
}
else
{
return AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in);
}
}
else
{
return AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_out);
}
}
@Override
public void onSaveInstanceState(Bundle outState)
{
outState.putParcelable(Constants.BUNDLE.KEY_USER, mUser);
}
private class UserPagerAdapter extends LepraPagerAdapter
{
private static final int PAGER_COUNT = 3;
private String[] TITLES = getActivity().getResources().getStringArray(R.array.user_titles);
public UserPagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public CharSequence getPageTitle(int position)
{
return TITLES[position];
}
@Override
public int getCount()
{
return PAGER_COUNT;
}
@Override
public Fragment getItem(int position)
{
switch(position)
{
case 0:
{
UserProfileFragment fragment = new UserProfileFragment();
Bundle args = new Bundle();
args.putParcelable(Constants.BUNDLE.KEY_USER, mUser);
fragment.setArguments(args);
return fragment;
}
case 1:
{
return new UserPostsFragment();
}
case 2:
{
return new UserCommentsFragment();
}
default:
{
return null;
}
}
}
@Override
public String getItemTag(int position)
{
switch(position)
{
case 0:
{
return UserProfileFragment.TAG;
}
case 1:
{
return UserPostsFragment.TAG;
}
case 2:
{
return UserCommentsFragment.TAG;
}
default:
{
return null;
}
}
}
}
}