package com.weikou.beibeivideo.ui.main;
import android.content.Context;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.google.gson.FieldNamingPolicy;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.lcjian.library.RetainViewFragment;
import com.lcjian.library.util.cache.DiskLruCache;
import com.lcjian.library.util.common.StorageUtils;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.viewpagerindicator.MTabPageIndicator;
import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
import com.weikou.beibeivideo.BeibeiVideoAPI;
import com.weikou.beibeivideo.entity.VideoType;
import com.weikou.beibeivideo.ui.dialog.UserProtocolDialog;
import com.weikou.beibeivideo.ui.recommend.RecommendFragment;
import com.weikou.beibeivideo.util.BeibeiConstant;
import com.weikou.beibeivideo.util.UserUtil;
import com.yeshi.buwanshequ.R;
import org.apache.http.Header;
import org.json.JSONObject;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import de.greenrobot.event.EventBus;
/**
* Created by weikou2015 on 2017/9/14.
*/
public class RecommendCategoryFragment extends RetainViewFragment {
/*
* viewpager定义
*/
GoogleMusicAdapter adapter;
ViewPager pager;
MTabPageIndicator indicator;
FrameLayout fl_indicator;
private DiskLruCache cache;
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
try {
cache = DiskLruCache.open(
new File(StorageUtils.getCacheDirectory(getContext())
.toString(), "http"), getVersionNum(getContext()),
1, 1024 * 1024);
} catch (IOException e) {
e.printStackTrace();
}
showProtocol();
}
private void showProtocol() {
String data = "感谢您对布丸影视大全一直以来的信任!
";
data += "我们依照新的监管要求条例更新了";
data += String.format("《隐私政策》和", BeibeiConstant.PRIVACY_POLICY);
data += String.format("《用户协议》", BeibeiConstant.USER_AGREEMENT);
data += "为采取相应安全保护措施,尽力保护您的个人信息安全可控,特向你说明如下:
" +
"1、您在使用布丸影视大全各项产品或服务时,将会提供与具体功能相关的个人信息(可能涉及帐号、位置、存储等信息)。
" +
"2、您可以随时查询、更正、删除您的个人信息,我们也提供账户注销的渠道。
" +
"3、未经您的再次同意,我们不会将上述信息用于您未授权的其他用途或目的。
" +
"4、未经监护人同意,我们不会收集使用14周岁以下(含14周岁)未成年人个人信息,且不会利用其信息推送新闻、时政信息、广告等定向推送活动。";
if (!UserUtil.isAgreeUserProtocol(getContext())) {
new UserProtocolDialog.Builder(getActivity()).setNegativeButton("不同意", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
getActivity().finish();
}
}).setPositiveButton("同意", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
UserUtil.agreeUserProtocol(getContext());
}
}).setData(data).create().show();
}
}
public static int getVersionNum(Context context) {
try {
PackageInfo pi = context.getPackageManager().getPackageInfo(
context.getPackageName(), 0);
return pi.versionCode;
} catch (PackageManager.NameNotFoundException e) {
e.printStackTrace();
return 1;
}
}
@Override
public int getContentResource() {
return R.layout.fragment_recommend_category;
}
@Override
public void onCreateView(View contentView, Bundle savedInstanceState) {
pager = contentView.findViewById(R.id.pager_recomend_category);
fl_indicator = contentView.findViewById(R.id.fl_indicator);
pager = contentView.findViewById(R.id.pager_recomend_category);
if (fl_indicator.getChildCount() > 0) {
fl_indicator.removeAllViews();
}
DiskLruCache.Snapshot snapshot = null;
try {
if (cache != null) {
snapshot = cache.get(getKey("getCategories"));
if (snapshot != null) {
Gson gson = new GsonBuilder().setFieldNamingPolicy(
FieldNamingPolicy.UPPER_CAMEL_CASE).create();
List list = gson.fromJson(
snapshot.getString(0),
new TypeToken>() {
}.getType());
// categories.addAll(list);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
if (snapshot != null) {
snapshot.close();
}
}
adapter = new GoogleMusicAdapter(
getChildFragmentManager(), categories);
pager.setAdapter(adapter);
indicator = new MTabPageIndicator(
pager.getContext());
indicator.setViewPager(pager, 0);
fl_indicator.addView(indicator);
getCategories();
}
private String getKey(String method) {
return new Md5FileNameGenerator().generate(method);
}
@Override
public void onResume() {
super.onResume();
EventBus.getDefault().register(this);
}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putString("flash back", "show");
super.onSaveInstanceState(outState);
}
@Override
public void onPause() {
super.onPause();
EventBus.getDefault().unregister(this);
}
public void onEventMainThread(VideoType type) {
getCategories();
}
List categories = new ArrayList<>();
int count = 1;
private void getCategories() {
SharedPreferences preferences = pager.getContext().getSharedPreferences(
"user", Context.MODE_PRIVATE);
String uid = preferences.getString("uid", "");
BeibeiVideoAPI.getChoiceClass(pager.getContext(), uid,
new BasicTextHttpResponseHandler() {
@Override
public void onSuccessPerfect(int statusCode,
Header[] headers, JSONObject jsonObject)
throws Exception {
if (jsonObject.getBoolean("IsPost")) {
Gson gson = new GsonBuilder().setFieldNamingPolicy(
FieldNamingPolicy.UPPER_CAMEL_CASE)
.create();
categories.clear();
List list = gson.fromJson(
jsonObject.getJSONObject("Data")
.getJSONArray("data").toString(),
new TypeToken>() {
}.getType());
list=list.subList(0,1);
categories.addAll(list);
adapter.notifyDataSetChanged();
indicator.notifyDataSetChanged();
count++;
try {
DiskLruCache.Editor editor = cache
.edit(getKey("getCategories"));
editor.set(0, gson.toJson(categories));
editor.commit();
} catch (IOException e) {
}
}
}
@Override
public void onFinish() {
super.onFinish();
}
});
}
class GoogleMusicAdapter extends FragmentStatePagerAdapter {
private List mlist;
FragmentManager fm;
public GoogleMusicAdapter(FragmentManager fm, List list) {
super(fm);
this.mlist = list;
this.fm = fm;
}
@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}
@Override
public Fragment getItem(int position) {
return RecommendFragment.newInstance(mlist.get(position), position + "");
}
@Override
public CharSequence getPageTitle(int position) {
return mlist.get(position).getName();
}
@Override
public int getCount() {
return mlist.size();
}
@Override
public void finishUpdate(ViewGroup container) {
try {
super.finishUpdate(container);
} catch (NullPointerException nullPointerException) {
Log.d("NullPointerException", "Catch the NullPointerException in FragmentPagerAdapter.finishUpdate");
}
}
}
}