package com.swifty.fillcolor.controller.main;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.StaggeredGridLayoutManager;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.Toast;
import com.swifty.fillcolor.MyApplication;
import com.swifty.fillcolor.broadcast.LoginSuccessBroadcast;
import com.swifty.fillcolor.factory.MyDialogFactory;
import com.swifty.fillcolor.factory.SharedPreferencesFactory;
import com.swifty.fillcolor.listener.OnLoadCacheImageListener;
import com.swifty.fillcolor.listener.OnLoadUserPaintListener;
import com.swifty.fillcolor.listener.OnLoginSuccessListener;
import com.swifty.fillcolor.R;
import com.swifty.fillcolor.controller.BaseFragment;
import com.swifty.fillcolor.model.UserFragmentModel;
import com.swifty.fillcolor.model.bean.CacheImageBean;
import com.swifty.fillcolor.model.bean.LocalImageBean;
import com.swifty.fillcolor.model.bean.UserBean;
import com.swifty.fillcolor.util.L;
import com.swifty.fillcolor.util.ListAnimationUtil;
import com.swifty.fillcolor.util.UmengLoginUtil;
import com.swifty.fillcolor.view.EmptyRecyclerView;
import java.util.ArrayList;
import java.util.List;
import butterknife.Bind;
import butterknife.ButterKnife;
/**
* Created by Swifty.Wang on 2015/8/18.
*/
public class UserFragment extends BaseFragment implements OnLoginSuccessListener {
private static UserFragment fragment;
@Bind(R.id.userpaintlist)
EmptyRecyclerView userpaintlist;
@Bind(R.id.swiperefresh)
SwipeRefreshLayout refreshLayout;
RecyclerView.Adapter adapter;
@Bind(R.id.emptylay_paintlist)
LinearLayout emptylayPaintlist;
List<LocalImageBean> localImageBeans;
@Bind(R.id.tab_imagecache)
RadioButton tabImagecache;
@Bind(R.id.tab_local)
RadioButton tabLocal;
@Bind(R.id.tab_cloud)
RadioButton tabCloud;
@Bind(R.id.usertabs)
RadioGroup usertabs;
MyDialogFactory myDialogFactory;
public static UserFragment getInstance() {
if (fragment == null) {
fragment = new UserFragment();
}
fragment.setRetainInstance(true);
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_user, container, false);
ButterKnife.bind(this, rootView);
initViews();
addEvents();
return rootView;
}
private void initViews() {
myDialogFactory = new MyDialogFactory(getActivity());
userpaintlist.setEmptyView(emptylayPaintlist);
refreshLayout.setColorSchemeResources(R.color.red, R.color.orange, R.color.green, R.color.maincolor);
loadLocalPaints();
}
private void showUserLoginxDialog() {
myDialogFactory.showLoginDialog(this);
}
private void addEvents() {
swipeRefreshLayout = refreshLayout;
refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
L.e("load");
if (usertabs.getCheckedRadioButtonId() == R.id.tab_local) {
//change vertical recycleview to listview
userpaintlist.setLayoutManager(new LinearLayoutManager(getActivity()));
//clear recycleview
userpaintlist.setAdapter(new LocalPaintAdapter(getActivity(), localImageBeans));
OnLoadUserPaintListener onLoadUserPaintListener = new OnLoadUserPaintListener() {
@Override
public void loadUserPaintFinished(List<LocalImageBean> list) {
if (list != null) {
localImageBeans = list;
adapter = new LocalPaintAdapter(getActivity(), localImageBeans);
userpaintlist.setAdapter(ListAnimationUtil.addScaleandAlphaAnim(adapter));
}
refreshLayout.setRefreshing(false);
}
};
UserFragmentModel.getInstance(getActivity()).obtainLocalPaintList(onLoadUserPaintListener);
} else if (usertabs.getCheckedRadioButtonId() == R.id.tab_imagecache) {
loadCacheImages();
} else if (usertabs.getCheckedRadioButtonId() == R.id.tab_cloud) {
//load cloud paints
}
}
});
usertabs.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup, int i) {
if (i == R.id.tab_local) {
loadLocalPaints();
} else if (i == R.id.tab_imagecache) {
loadCacheImages();
} else {
//load cloud paints
}
}
});
tabCloud.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
// if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
// if (MyApplication.user != null) {
// return false;
// } else {
// myDialogFactory.showLoginDialog(UserFragment.this);
// return true;
// }
// }
// return false;
Toast.makeText(getActivity(), getString(R.string.comingsoon), Toast.LENGTH_SHORT).show();
return true;
}
});
}
private void loadCacheImages() {
refreshLayout.post(new Runnable() {
@Override
public void run() {
refreshLayout.setRefreshing(true);
}
});
//change vertical recycleview to gridview
StaggeredGridLayoutManager layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
userpaintlist.setLayoutManager(layoutManager);
//clear recycleview
userpaintlist.scrollToPosition(0);
userpaintlist.setAdapter(new CacheImageAdapter(getActivity(), new ArrayList<CacheImageBean>()));
//load cache paints
OnLoadCacheImageListener loadUserPaintListener = new OnLoadCacheImageListener() {
@Override
public void loadCacheImageSuccess(List<CacheImageBean> cacheImageBeans) {
refreshLayout.setRefreshing(false);
if (cacheImageBeans != null) {
adapter = new CacheImageAdapter(getActivity(), cacheImageBeans);
userpaintlist.setAdapter(ListAnimationUtil.addScaleandAlphaAnim(adapter));
}
}
};
UserFragmentModel.getInstance(getActivity()).obtainCacheImageList(getActivity(), loadUserPaintListener);
}
private void loadLocalPaints() {
//change vertical recycleview to listview
userpaintlist.setLayoutManager(new LinearLayoutManager(getActivity()));
//clear recycleview
userpaintlist.setAdapter(new LocalPaintAdapter(getActivity(), localImageBeans));
//load local paints
OnLoadUserPaintListener onLoadUserPaintListener = new OnLoadUserPaintListener() {
@Override
public void loadUserPaintFinished(List<LocalImageBean> list) {
if (list != null) {
adapter = new LocalPaintAdapter(getActivity(), list);
userpaintlist.setAdapter(adapter);
}
}
};
UserFragmentModel.getInstance(getActivity()).obtainLocalPaintList(onLoadUserPaintListener);
}
@Override
public void onResume() {
super.onResume();
L.e("resume " + isAdded());
//awlays refreshlist when resume
if (isAdded()) {
if (tabLocal.isChecked()) {
if (adapter != null)
adapter.notifyDataSetChanged();
} else {
if (adapter != null)
adapter.notifyDataSetChanged();
}
}
}
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
UmengLoginUtil.getInstance().onActivityResult(requestCode, resultCode, data);
}
public void finish() {
L.e("Userfinish");
fragment = null;
}
@Override
public void onLoginSuccess(UserBean userBean) {
UmengLoginUtil.getInstance().loginSuccessEvent(getActivity(), userBean, myDialogFactory);
}
}