package com.dyh.browser.activity;

import android.content.DialogInterface;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AlertDialog;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.text.TextUtils;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.EditText;

import com.dyh.browser.plugin.HostManager;
import com.dyh.browser.util.WebUtil;
import com.dyh.movienow.R;
import com.dyh.movienow.base.BaseActivity;
import com.dyh.movienow.constants.Auto;
import com.dyh.movienow.util.Helper;
import com.dyh.movienow.util.ShareUtil;
import com.dyh.movienow.util.ToastMgr;

import java.util.List;

import cn.refactor.lib.colordialog.ColorDialog;

/**
 * 作者:By hdy
 * 日期:On 2018/6/17
 * 时间:At 11:19
 */

public class HostActivity extends BaseActivity {
    private RecyclerView recyclerView;
    private HostAdapter adapter;

    @Override
    protected void initLayout(Bundle savedInstanceState) {
        setContentView(R.layout.browser_ac_home);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        getMenuInflater().inflate(R.menu.host_right_top, menu);
        return true;
    }

    @Override
    protected void initView() {
        try {
            setSupportActionBar((Toolbar) findView(R.id.home_toolbar));
            getSupportActionBar().setDisplayHomeAsUpEnabled(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
        setTitle("广告拦截");
        recyclerView = findView(R.id.home_recy);
    }

    @Override
    protected void processLogic(Bundle savedInstanceState) {
        adapter = new HostAdapter(getContext());
        adapter.setOnItemClickListener(new HostAdapter.OnItemClickListener() {
            @Override
            public void onClick(View view, int position, String url) {
                if (!url.startsWith("http")) {
                    url = "http://" + url;
                }
                WebUtil.goWeb(getContext(), url, 2);
            }

            @Override
            public void onLongClick(String title, final String url) {
                ColorDialog colorDialog = new ColorDialog(getContext());
                colorDialog.setTheTitle("温馨提示")
                        .setContentText("确认删除该拦截网址吗?删除后无法恢复,可以复制网址分享给别人,点击空白处取消")
                        .setPositiveListener("删除", new ColorDialog.OnPositiveListener() {
                            @Override
                            public void onClick(ColorDialog dialog) {
                                HostManager.getInstance().delete(url);
                                adapter.notifyDataSetChanged();
                                ToastMgr.toastShortCenter(getContext(), "删除成功");
                                dialog.dismiss();
                            }
                        })
                        .setNegativeListener("复制", new ColorDialog.OnNegativeListener() {
                            @Override
                            public void onClick(ColorDialog dialog) {
                                ShareUtil.copyToClipboard(getContext(), url);
                                ToastMgr.toastShortCenter(getContext(), "复制成功");
                                dialog.dismiss();
                            }
                        });
                colorDialog.setCancelable(true);
                colorDialog.show();
            }
        });
        GridLayoutManager gridLayoutManager = new GridLayoutManager(getContext(), 1);
        recyclerView.setLayoutManager(gridLayoutManager);
        recyclerView.setAdapter(adapter);
        String sss = getIntent().getStringExtra("ads");
        if(!TextUtils.isEmpty(sss)){
            showAdd(sss);
        }
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
            case android.R.id.home:
                finish();
                break;
            case R.id.action_share:
                shareAds();
                break;
            case R.id.action_add:
                showAdd(null);
                break;
            case R.id.action_delete:
                HostManager.getInstance().deleteAll();
                adapter.notifyDataSetChanged();
                ToastMgr.toastShortBottomCenter(getContext(),"已删除全部拦截规则");
                break;
        }
        return super.onOptionsItemSelected(item);
    }

    private void showAdd(@Nullable String text) {
        final EditText et = new EditText(getContext());
        et.setHint("添加多个请用; 隔开(英文分号加空格)");
        if(text!=null){
            et.setText(text);
        }
        new AlertDialog.Builder(getContext()).setTitle("添加拦截网址或者域名")
                .setView(et)
                .setCancelable(true)
                .setPositiveButton("保存", new DialogInterface.OnClickListener() {
                    public void onClick(DialogInterface dialog, int which) {
                        String input = et.getText().toString();
                        if (TextUtils.isEmpty(input)) {
                            ToastMgr.toastShortCenter(getContext(), "网址不能为空");
                        } else {
                            String[] ss = input.split("; ");
                            for (String s : ss) {
                                HostManager.getInstance().addUrl(s);
                            }
                            adapter.notifyDataSetChanged();
                            ToastMgr.toastShortBottomCenter(getContext(), "已成功添加" + ss.length + "条网址");
                        }
                    }
                })
                .setNegativeButton("取消", new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialogInterface, int i) {
                        dialogInterface.dismiss();
                    }
                })
                .show();
    }

    private void shareAds() {
        List<String> ads = HostManager.getInstance().getUrlList();
        if(ads.size()<1){
            ToastMgr.toastShortBottomCenter(getContext(),"没有拦截规则哦");
            return;
        }
        StringBuilder sb = new StringBuilder();
        for (int i = 0; i < ads.size()-1; i++) {
            sb.append(ads.get(i)).append("; ");
        }
        sb.append(ads.get(ads.size()-1));
        String text = sb.toString();
        text = Auto.AD + text;
        Helper.copyToClipboard(getContext(),text);
        ToastMgr.toastShortBottomCenter(getContext(),"已经复制全部拦截规则");
    }
}