package com.yyquan.jzh.fragment.news;


import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.LayoutInflater;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RadioGroup;
import android.widget.TextView;
import android.widget.Toast;

import com.demievil.library.RefreshLayout;

import com.loopj.android.http.AsyncHttpClient;
import com.loopj.android.http.AsyncHttpResponseHandler;
import com.loopj.android.http.RequestParams;
import com.yyquan.jzh.R;
import com.yyquan.jzh.activity.MainActivity;
import com.yyquan.jzh.activity.NewsContentActivity;
import com.yyquan.jzh.adapter.LoginPagerAdapter;
import com.yyquan.jzh.adapter.TitleListViewAdapter;
import com.yyquan.jzh.entity.CommonConstant;
import com.yyquan.jzh.entity.Ip;
import com.yyquan.jzh.entity.News_content;
import com.yyquan.jzh.entity.News_type;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

import cz.msebera.android.httpclient.Header;


public class titleFragment extends Fragment implements  View.OnClickListener, AdapterView.OnItemClickListener, SwipeRefreshLayout.OnRefreshListener, RefreshLayout.OnLoadListener {

    private View view;
    View footerLayout;

    RefreshLayout mRefreshLayout;
    ListView mlistview;
    private TitleListViewAdapter adapter;
    private ArrayList<News_content> list;
    private News_type news;
    private TextView tv_more;
    private ProgressBar pb;
    int index = 0;
    int news_size;




    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        if (view == null) {
            view = inflater.inflate(R.layout.fragment_title, container, false);
            mlistview = (ListView) view.findViewById(R.id.fragment_content_listview);
            mRefreshLayout = (RefreshLayout) view.findViewById(R.id.fragment_content_swipe_container);
            footerLayout = getActivity().getLayoutInflater().inflate(R.layout.list_item_more, null);
            tv_more = (TextView) footerLayout.findViewById(R.id.text_more);
            pb = (ProgressBar) footerLayout.findViewById(R.id.load_progress_bar);
            tv_more.setOnClickListener(this);
            mlistview.addFooterView(footerLayout);
            mRefreshLayout.setOnRefreshListener(this);
            mRefreshLayout.setOnLoadListener(this);
            mlistview.setOnItemClickListener(this);
            mRefreshLayout.setChildView(mlistview);
            mRefreshLayout.setColorSchemeResources(android.R.color.holo_blue_bright,
                    android.R.color.holo_green_dark,
                    android.R.color.holo_red_light,
                    android.R.color.black);
            list = new ArrayList<>();
            Bundle bd = getArguments();
            if (bd != null) {
                news = (News_type) bd.getSerializable(CommonConstant.TABPAGE_ENTITY);
                getData(news);

            }


        }

        return view;
    }




    /**
     * 获取数据
     */
    private void getData(News_type news) {
        AsyncHttpClient client = new AsyncHttpClient();
        RequestParams params = new RequestParams();
        params.put("type", news.getType_name());
        params.put("limit", index);
        params.put("action", "search_title");
        client.post(Ip.ip + news.getType_url(), params, new AsyncHttpResponseHandler() {
            @Override
            public void onSuccess(int statusCode, Header[] headers, byte[] responseBody) {
                String str = new String(responseBody);
                // Toast.makeText(getActivity(), str, Toast.LENGTH_SHORT).show();
                if (str != null) {

                    try {
                        JSONObject object = new JSONObject(str);

                        if (object.getString("code").equals("success")) {
                            JSONArray array = object.getJSONArray("data");
                            for (int i = 0; i < array.length(); i++) {
                                object = array.getJSONObject(i);
                                News_content content = new News_content();
                                content.setCpinglun(object.getString("pinglun"));
                                news_size = object.getInt("wenzhang");
                                object = object.getJSONObject("cdata");
                                content.setCid(object.getInt("cid"));
                                content.setCtitle(object.getString("ctitle"));
                               // content.setCzhaiyao(object.getString("czhaiyao"));
                                content.setCimage(object.getString("cimage"));
                                content.setCauthor(object.getString("cauthor"));
                               // content.setCcontent(object.getString("ccontent"));
                                content.setCtime(object.getString("ctime"));
                                list.add(content);

                            }
                            Message m = Message.obtain(h, 1);
                            h.sendMessage(m);
                        }
                    } catch (JSONException e) {
                        mRefreshLayout.setLoading(false);
                        mRefreshLayout.setRefreshing(false);
                        e.printStackTrace();

                    }

                }


            }

            @Override
            public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) {
                Toast.makeText(getActivity(), "网络链接失败,请查看网络设置", Toast.LENGTH_SHORT).show();
                mRefreshLayout.setLoading(false);
                mRefreshLayout.setRefreshing(false);

            }
        });

    }

    /**
     * 业务逻辑处理
     */
    private Handler h = new Handler() {
        @Override
        public void handleMessage(Message msg) {
            switch (msg.what) {
                case 1:
                    if (index == 0) {
                        adapter = new TitleListViewAdapter(getActivity(), list);
                        mlistview.setAdapter(adapter);
                        mRefreshLayout.setRefreshing(false);
                    } else {
                        adapter.setList(list);
                        adapter.notifyDataSetChanged();
                        tv_more.setVisibility(View.VISIBLE);
                        pb.setVisibility(View.GONE);
                        mRefreshLayout.setLoading(false);
                    }


                    break;
            }
        }
    };

    /**
     * 可见时调用
     *
     * @param isVisibleToUser
     */
    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser && view != null) {

            // getData(news);


        } else {

        }
    }

    /**
     * 单例模式,获取数据并实例化
     *
     * @param news
     * @return
     */
    public static titleFragment newInstance(News_type news) {
        Bundle bd = new Bundle();
        bd.putSerializable(CommonConstant.TABPAGE_ENTITY, news);
        titleFragment fragment = new titleFragment();
        fragment.setArguments(bd);
        return fragment;
    }


    /**
     * 上拉加载方法
     */
    @Override
    public void onLoad() {
        loadData();
    }

    /**
     * 下拉刷新方法
     */
    @Override
    public void onRefresh() {
        index = 0;
        tv_more.setEnabled(true);
        tv_more.setText("加载更多");
        list = new ArrayList<News_content>();
        getData(news);
        tv_more.setVisibility(View.VISIBLE);
        pb.setVisibility(View.GONE);
        mRefreshLayout.setLoading(false);
    }

    /**
     * 加载更多数据
     */
    private void loadData() {
        index += 10;
        if (news_size == list.size()) {
            tv_more.setText("数据已加载完毕");

            tv_more.setEnabled(false);
            return;
        }
        tv_more.setVisibility(View.GONE);
        pb.setVisibility(View.VISIBLE);
        getData(news);
    }

    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

        if (position < list.size()) {
            Intent intent = new Intent(getActivity(), NewsContentActivity.class);
            intent.putExtra("news_content", list.get(position));
            intent.putExtra("user", ((MainActivity) this.getActivity()).user);
            intent.putExtra("url", news.getType_url());
            startActivity(intent);
        }


        //Toast.makeText(getActivity(), position + "11", Toast.LENGTH_SHORT).show();


    }

    @Override
    public void onClick(View v) {
        switch (v.getId()) {
            case R.id.text_more:
                loadData();
                 break;
        }
    }




}