package com.example.dm.myapplication.main;

import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.engine.DiskCacheStrategy;
import com.example.dm.myapplication.R;
import com.example.dm.myapplication.beans.AppUser;
import com.example.dm.myapplication.me.MeFavouritrActivity;
import com.example.dm.myapplication.me.MeFeedbackAty;
import com.example.dm.myapplication.me.MeInfoDetailActivity;
import com.example.dm.myapplication.me.MeSettingsAty;

import cn.bmob.v3.BmobUser;
import cn.bmob.v3.listener.BmobUpdateListener;
import cn.bmob.v3.update.BmobUpdateAgent;
import cn.bmob.v3.update.UpdateResponse;
import cn.bmob.v3.update.UpdateStatus;


/**
 * Created by dm on 16-3-29.
 * 第四个页面
 */
public class FourthFragment extends Fragment {
    private static final String LOG = "LOG";
    private static final String SHARE_APK_LINK = "我正在使用『AbsentM』个人App,感觉很不错,推荐您也来试试。下载地址:https://o8zyn0sct.qnssl.com/app-debug-v0.1.0.apk PC端直接点击链接下载安装至手机,Android手机端请复制链接至手机浏览器下载。";

    private static final int REQUEST_CODE = 1;

    private RelativeLayout meInfoRout;
    private ImageView meAvatarImv;
    private TextView meNickNameTv;
    private TextView meMessageTv;

    private RelativeLayout meCollectRout;
    private RelativeLayout meFeedbackRout;
    private RelativeLayout meShareRout;
    private RelativeLayout meUpdateRout;
    private RelativeLayout meSettingsRout;


    private View view;


    @Override
    public View onCreateView(LayoutInflater inflater,
                             ViewGroup container,
                             Bundle savedInstanceState) {
        view = inflater.inflate(R.layout.fg4, container, false);

        initView();  // 控件初始化
        fillDatas();
        eventsDeal();  // 事件处理

        return view;
    }

    private void fillDatas() {
        AppUser appUser = BmobUser.getCurrentUser(AppUser.class);
        if (appUser == null) {
            meNickNameTv.setText("未登录, 请点击登录");
            meMessageTv.setText("这位童鞋很懒, 什么都没留下...");
            meAvatarImv.setImageResource(R.drawable.app_icon);
        } else {
            meNickNameTv.setText(appUser.getUserNickName());

            if ("".equals(appUser.getUserMessage()) || null == appUser.getUserMessage()) {
                meMessageTv.setText("这位童鞋很懒, 什么都没留下...");
            } else {
                meMessageTv.setText(appUser.getUserMessage());
            }

            Log.i(LOG, "appUser.getUserAvatarUrl() = " + appUser.getUserAvatarUrl());

            if ("".equals(appUser.getUserAvatarUrl()) || null == appUser.getUserAvatarUrl()) {
                meAvatarImv.setImageResource(R.drawable.app_icon);
            } else {
                Glide.with(FourthFragment.this)
                        .load(appUser.getUserAvatarUrl())
                        .error(R.drawable.app_icon)
                        .centerCrop()
                        .diskCacheStrategy(DiskCacheStrategy.ALL)
                        .into(meAvatarImv);
            }
        }

        // 自动更新检测
        BmobUpdateAgent.setUpdateListener(new BmobUpdateListener() {
            @Override
            public void onUpdateReturned(int updateStatus, UpdateResponse updateResponse) {
                switch (updateStatus) {
                    case UpdateStatus.Yes:
                        Log.i("LOG", "YYYYYYYY");
                        break;
                    case UpdateStatus.No:
                        Log.i("LOG", "NNNNNNNNN");
                        Toast.makeText(getActivity(), "已是最新版本", Toast.LENGTH_SHORT).show();
                        break;
                    case UpdateStatus.TimeOut:
                        Log.i("LOG", "TTTTTTTTT");
                        Toast.makeText(getActivity(), "连接超时,请稍后再试",
                                Toast.LENGTH_SHORT).show();
                        break;
                    default:
                        Log.i("LOG", "FFFFFFFFF");
                        Toast.makeText(getActivity(), "连接超时,请稍后再试",
                                Toast.LENGTH_SHORT).show();
                        break;
                }
            }
        });
    }

    /**
     * 初始化
     */
    private void initView() {
        meInfoRout = (RelativeLayout) view.findViewById(R.id.me_info_rout);
        meAvatarImv = (ImageView) view.findViewById(R.id.me_avatar_imv);
        meNickNameTv = (TextView) view.findViewById(R.id.me_nickname_tv);
        meMessageTv = (TextView) view.findViewById(R.id.me_message_tv);

        meCollectRout = (RelativeLayout) view.findViewById(R.id.me_collect_rout);
        meFeedbackRout = (RelativeLayout) view.findViewById(R.id.me_feedback_rout);
        meShareRout = (RelativeLayout) view.findViewById(R.id.me_share_rout);
        meUpdateRout = (RelativeLayout) view.findViewById(R.id.me_update_rout);
        meSettingsRout = (RelativeLayout) view.findViewById(R.id.me_settings_rout);
    }

    /**
     * 界面控件事件处理
     */
    private void eventsDeal() {
        meInfoRout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String nicknameStr = meNickNameTv.getText().toString();
                String messageStr = meMessageTv.getText().toString();

                AppUser appUser = BmobUser.getCurrentUser(AppUser.class);
                if (appUser == null) {
                    startActivity(new Intent(getActivity(), LoginActivity.class));
                } else {
                    Intent intent = new Intent();
                    intent.putExtra("FourthFragment.nickname", nicknameStr);
                    intent.putExtra("FourthFragment.messageStr", messageStr);
                    intent.setClass(getActivity(), MeInfoDetailActivity.class);
                    FourthFragment.this.startActivityForResult(intent, REQUEST_CODE);
                }
            }
        });

        meCollectRout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), MeFavouritrActivity.class));
            }
        });

        meFeedbackRout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), MeFeedbackAty.class));
            }
        });

        meShareRout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent shareIntent = new Intent();
                shareIntent.setAction(Intent.ACTION_SEND);
                shareIntent.putExtra(Intent.EXTRA_TEXT, SHARE_APK_LINK);
                shareIntent.setType("text/plain");

                //设置分享列表的标题,并且每次都显示分享列表
                startActivity(Intent.createChooser(shareIntent, "分享到"));
            }
        });

        meUpdateRout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                BmobUpdateAgent.forceUpdate(getActivity());
            }
        });

        meSettingsRout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                startActivity(new Intent(getActivity(), MeSettingsAty.class));
            }
        });
    }

    @Override
    public void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE && resultCode == 1) {
            String nicknameStr = data.getStringExtra("MeInfoDetailActivity.nicknameStr");
            String messageStr = data.getStringExtra("MeInfoDetailActivity.messageStr");
            String avatarUrl = data.getStringExtra("MeInfoDetailActivity.avatarUrl");

            Log.i(LOG, "Four, nicknameStr = " + nicknameStr);
            Log.i(LOG, "Four, messageStr = " + messageStr);
            Log.i(LOG, "Four, avatarUrl = " + avatarUrl);
            meNickNameTv.setText(nicknameStr);
            meMessageTv.setText(messageStr);

            Glide.with(FourthFragment.this)
                    .load(avatarUrl)
                    .error(R.drawable.app_icon)
                    .centerCrop()
                    .diskCacheStrategy(DiskCacheStrategy.ALL)
                    .into(meAvatarImv);
        }
    }
}