package nico.styTool.plus;

import android.annotation.TargetApi;
import android.content.ClipboardManager;
import android.content.ComponentName;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Picture;
import android.graphics.PixelFormat;
import android.net.Uri;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.PopupMenu;
import android.widget.TextView;
import android.widget.Toast;

import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.HashMap;

import android.webkit.*;
import android.net.http.*;
import android.app.*;
import android.os.*;
import android.view.*;

import java.io.*;

import android.graphics.*;
import android.graphics.drawable.*;
import android.widget.*;

import java.util.*;
import java.lang.reflect.*;

import android.content.*;

public class MainActivity extends Activity {
    private String webviewi = "sdk_data_2";
    WebView webview;

    private ImageView dip_a;

    MaterialDialog mMaterialDialog;
    private int mColor;
    private ImageView dip_b;
    private boolean isChange = false;
    private ImageView dip_c;
    private boolean isUsername = false;
    public static final int REQUEST_CODE = 9;
    public static final int RESULT_CODE = 10;
    private final String LIST = "List";
    private final String URL = "Url";
    private ImageView dip_d;
    private Bookmark m_bookmark = null;
    private SearchHistorysDao dao;
    private ArrayList<SearchHistorysBean> historywordsList = new ArrayList<SearchHistorysBean>();
    private SearchHistoryAdapter mAdapter;
    private int count;
    private LinearLayout dip_m;
    PopupWindow popupWindow;
    private ListView lv_history_word;

    private ImageView btn_search;

    private EditText et_search_keyword;
    private TextView Az;

    private SlideBottomPanel sbv;

    private Num bnp;  //private Timer timer;

    private void setButtonListeners(LinearLayout layout) {
        Button camera = (Button) layout.findViewById(R.id.camera);
        Button gallery = (Button) layout.findViewById(R.id.gallery);
        Button savepicture = (Button) layout.findViewById(R.id.savepicture);
        Button cancel = (Button) layout.findViewById(R.id.cancel);

        camera.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (popupWindow != null && popupWindow.isShowing()) {
                    //在此处添加你的按键处理 xxx
                    popupWindow.dismiss();
                }
            }
        });
        gallery.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (popupWindow != null && popupWindow.isShowing()) {
                    //在此处添加你的按键处理 xxx
                    popupWindow.dismiss();
                }
            }
        });
        savepicture.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (popupWindow != null && popupWindow.isShowing()) {
                    //在此处添加你的按键处理 xxx
                    popupWindow.dismiss();
                }
            }
        });
        cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (popupWindow != null && popupWindow.isShowing()) {
                    popupWindow.dismiss();
                }
            }
        });
    }

    void bottomwindow(View view) {
        if (popupWindow != null && popupWindow.isShowing()) {
            return;
        }
        LinearLayout layout = (LinearLayout) getLayoutInflater().inflate(R.layout.window_popup, null);
        popupWindow = new PopupWindow(layout,
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.WRAP_CONTENT);
        //点击空白处时,隐藏掉pop窗口
        popupWindow.setFocusable(true);
        popupWindow.setBackgroundDrawable(new BitmapDrawable());
        //添加弹出、弹入的动画
        popupWindow.setAnimationStyle(R.style.Popupwindow);
        int[] location = new int[4];
        view.getLocationOnScreen(location);
        popupWindow.showAtLocation(view, Gravity.BOTTOM, 0, -location[1]);
        //添加按键事件监听
        setButtonListeners(layout);
        //添加pop窗口关闭事件,主要是实现关闭时改变背景的透明度
        popupWindow.setOnDismissListener(new poponDismissListener());
        backgroundAlpha(1f);
    }

    /**
     * 设置添加屏幕的背景透明度
     *
     * @param bgAlpha
     */
    public void backgroundAlpha(float bgAlpha) {
        WindowManager.LayoutParams lp = getWindow().getAttributes();
        lp.alpha = bgAlpha; //0.0-1.0
        getWindow().setAttributes(lp);
        getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
    }

    class poponDismissListener implements PopupWindow.OnDismissListener {

        @Override
        public void onDismiss() {
            backgroundAlpha(1f);

        }

    }

    private void mk() {
        lv_history_word = (ListView) findViewById(R.id.lv_history_word);
        et_search_keyword = (EditText) findViewById(R.id.et_search_keyword);
        et_search_keyword.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus) {
                } else {
                }
            }
        });

        btn_search = (ImageView) findViewById(R.id.btn_search);
        mAdapter = new SearchHistoryAdapter(historywordsList);
        count = mAdapter.getCount();
        if (count > 1) {
        } else {
        }
        lv_history_word.setAdapter(mAdapter);
        lv_history_word.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {

                SearchHistorysBean bean = (SearchHistorysBean) mAdapter.getItem(position);

                et_search_keyword.setText(bean.historyword);

                mAdapter.notifyDataSetChanged();
                btn_search.performClick();
            }
        });
        btn_search.setOnClickListener(new View.OnClickListener() {

            private PopupMenu popupMenu;

            @TargetApi(Build.VERSION_CODES.HONEYCOMB)
            @Override
            public void onClick(View v) {
                String searchWord = et_search_keyword.getText().toString().trim();
                if (TextUtils.isEmpty(searchWord)) {
                } else {
                    final String a = et_search_keyword.getText().toString().trim();
                    popupMenu = new PopupMenu(MainActivity.this, v);
                    popupMenu.getMenuInflater().inflate(R.menu.headmenu, popupMenu.getMenu());
                    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            switch (item.getItemId()) {
                                case R.id.camera:
                                    webview.loadUrl("http://www.wangpansou.cn/s.php?wp=0&ty=gn&op=gn&q=" + a);
                                    break;
                                case R.id.gallery:
                                    webview.loadUrl("https://m.baidu.com/s?from=2001a&bd_page_type=1&word=" + a);
                                    break;
                                case R.id.cancel:
                                    webview.loadUrl(a);
                                    break;
                                case R.id.ds://谷歌
                                    webview.loadUrl("https://www.google.com.hk/search?q=" + a);
                                    break;

                            }
                            return false;
                        }
                    });
                    popupMenu.show();
                }
            }
        });

        ImageView A = (ImageView) findViewById(R.id.ahostTextView1);
        A.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent();
                intent.setClass(MainActivity.this, GankIoActivity.class);
                startActivity(intent);
            }
        });
        ImageView C = (ImageView) findViewById(R.id.ahostTextView3);
        C.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yr();
            }
        });
    }

    class SearchHistoryAdapter extends BaseAdapter {
        private ArrayList<SearchHistorysBean> historywordsList;

        public SearchHistoryAdapter(ArrayList<SearchHistorysBean> historywordsList) {
            this.historywordsList = historywordsList;
        }

        @Override
        public int getCount() {

            return historywordsList == null ? 0 : historywordsList.size();
        }

        @Override
        public Object getItem(int position) {

            return historywordsList.get(position);
        }

        @Override
        public long getItemId(int position) {

            return position;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            ViewHolder holder = null;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = LayoutInflater.from(MainActivity.this).inflate(R.layout.item_search_history_word, null);
                holder.tv_word = (TextView) convertView.findViewById(R.id.tv_search_record);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }

            holder.tv_word.setText(historywordsList.get(position).toString());

            return convertView;
        }

    }

    class ViewHolder {
        TextView tv_word;
    }

    @Override
    public void onBackPressed() {
        if (webview.canGoBack()) {
            // webview.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
            webview.goBack();

        } else {
            yr();
            sbv.hide();
        }
    }

    private void initEvent() {
        Az.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            }
        });


    }

    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == REQUEST_CODE && resultCode == RESULT_CODE) {
            Bundle bundle = data.getExtras();
            if (isUsername) {
            } else {
            }
            isChange = true;

        }
    }

    private void yr() {
        mMaterialDialog.setTitle("是否退出Frin")
                .setMessage(webview.getUrl())
                .setPositiveButton("取消", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mMaterialDialog.dismiss();

                    }
                }).setNegativeButton("退出", new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mMaterialDialog.dismiss();
                finish();
            }
        })
                .setCanceledOnTouchOutside(true)
                .setOnDismissListener(
                        new DialogInterface.OnDismissListener() {
                            @Override
                            public void onDismiss(DialogInterface dialog) {
                            }
                        }).show();


    }

    public void showHistory() {
        ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
        WebBackForwardList backlist = webview.copyBackForwardList();

        for (int i = 0; i < backlist.getSize(); i++) {
            HashMap<String, String> map = new HashMap<String, String>();
            map.put("Title", backlist.getItemAtIndex(i).getTitle());
            map.put("Url", backlist.getItemAtIndex(i).getUrl());

            list.add(map);
        }

        Intent intent = new Intent(this, ListShower.class);
        Bundle bundler = new Bundle();

        bundler.putSerializable(LIST, list);
        intent.putExtras(bundler);

        startActivityForResult(intent, 1);
    }

    public static String getSharePreString(Context context, String field) {
        SharedPreferences sp = context.getSharedPreferences("nico.styTool.plus_preferences", Context.MODE_PRIVATE);
        String value = sp.getString(field, "");
        return value;
    }

    private void a() {

        ImageView dipud = (ImageView) findViewById(R.id.ahostImageView1);
        dipud.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mMaterialDialog.setTitle("书签")
                        .setMessage("Go")
                        .setPositiveButton("查看书签", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                ArrayList<HashMap<String, String>> list = null;
                                m_bookmark.openMyBookmark(MainActivity.this);
                                list = m_bookmark.getList();
                                m_bookmark.closeMyBookmark();
                                Intent intent = new Intent(MainActivity.this, ListShower.class);
                                Bundle bundler = new Bundle();
                                bundler.putSerializable(LIST, list);
                                intent.putExtras(bundler);

                                startActivityForResult(intent, 1);
                                mMaterialDialog.dismiss();
                            }
                        }).setNegativeButton("添加书签", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        String Title = webview.getTitle();
                        String Url = webview.getUrl();
                        m_bookmark.openMyBookmark(MainActivity.this);
                        m_bookmark.insert(Title, Url);
                        m_bookmark.closeMyBookmark();
                        mMaterialDialog.dismiss();
                    }
                })
                        .setCanceledOnTouchOutside(true)
                        .show();

            }
        });
        dip_d = (ImageView) findViewById(R.id.appbarmiuiImageView1);
        dip_d.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                webview.goBack();
            }
        });

        dip_c = (ImageView) findViewById(R.id.appbarmiuiImageView2);
        dip_c.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                webview.goForward();
            }
        });
        dip_b = (ImageView) findViewById(R.id.appbarmiuiImageView3);
        dip_b.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                webview.reload();
            }
        });

        dip_a = (ImageView) findViewById(R.id.appbarmiuiImageView4);
        dip_a.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                SharedPreferences sharedPreferences = getSharedPreferences(Constant.android, Activity.MODE_PRIVATE);
                String dt = sharedPreferences.getString(Constant.id, "");
                mMaterialDialog.setTitle("长按链接复制")
                        .setMessage(dt)
                        .setPositiveButton("第三方", new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                SharedPreferences sharedPreferences = getSharedPreferences(Constant.android, Activity.MODE_PRIVATE);
                                String htmly = sharedPreferences.getString(Constant.id, "");
                                Intent sendIntent = new Intent();
                                sendIntent.setAction(Intent.ACTION_SEND);
                                sendIntent.putExtra(Intent.EXTRA_TEXT, htmly);
                                sendIntent.setType("text/plain");
                                startActivity(sendIntent);
                                mMaterialDialog.dismiss();
                            }
                        }).setNegativeButton("浏览器打开", new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        mMaterialDialog.dismiss();
                        SharedPreferences sharedPreferencesb = getSharedPreferences(Constant.android, Activity.MODE_PRIVATE);
                        String htmlyy = sharedPreferencesb.getString(Constant.id, "");
                        Uri uri = Uri.parse(htmlyy);
                        Intent intent = new Intent(Intent.ACTION_VIEW, uri);
                        startActivity(intent);
                    }
                })
                        .setCanceledOnTouchOutside(true)
                        .setOnDismissListener(
                                new DialogInterface.OnDismissListener() {
                                    @Override
                                    public void onDismiss(DialogInterface dialog) {
                                        //Toast.makeText(MainActivity.this,"onDismiss",Toast.LENGTH_SHORT).show();
                                    }
                                }).show();
            }
        });
    }

    private void e() {
        dip_m = (LinearLayout) findViewById(R.id.mainLinearLayout1);
        dip_m.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                sbv.displayPanel();
            }
        });
    }

    private String initContent(String content, boolean night, boolean flag) {
        try {
            InputStream inputStream = getResources().getAssets().open(
                    "discover.html");
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    inputStream), 16 * 1024);
            StringBuilder sBuilder = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sBuilder.append(line + "\n");
            }
            String modelHtml = sBuilder.toString();
            inputStream.close();
            reader.close();

            String contentNew = modelHtml.replace(
                    "<--@#$%discoverContent@#$%-->", content);
            if (night) {
                contentNew = contentNew.replace("<--@#$%colorfontsize2@#$%-->",
                        "color:#8f8f8f ;");
            } else {
                contentNew = contentNew.replace("<--@#$%colorfontsize2@#$%-->",
                        "color:#333333 ;");
            }
            if (flag) {
                contentNew = contentNew.replace(
                        "<--@#$%colorbackground@#$%-->", "background:#B4CDE6");
            } else {
                contentNew = contentNew.replace(
                        "<--@#$%colorbackground@#$%-->", "background:#F9BADA");
            }
            return contentNew;

        } catch (IOException e) {
// TODO Auto-generated catch block
            e.printStackTrace();
        }
        return null;
    }

    @Deprecated
    private void initWebView() {
        sbv = (SlideBottomPanel) findViewById(R.id.sbv);
        m_bookmark = new Bookmark();
        m_bookmark.initDB(this);
        Az = (TextView) findViewById(R.id.ahostTextView4);
        webview = (WebView) findViewById(R.id.webView);
        WebSettings webSettings = webview.getSettings();
        webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setDomStorageEnabled(true);
        bnp = (Num) findViewById(R.id.numberbar1);
        webview.loadUrl("http://hao.xiaomi.com");

    }

    @Override
    protected void onDestroy() {
        if (webview != null) {
            webview.destroy();
        }
        super.onDestroy();
    }

    @JavascriptInterface
    public void openImage(String img) {
        System.out.println(img);
        System.out.println(img);
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //getSupportActionBar().hide();
        getWindow().setFormat(PixelFormat.TRANSLUCENT);
        setContentView(R.layout.a_host);
        mMaterialDialog = new MaterialDialog(this);
        dao = new SearchHistorysDao(this);
        historywordsList = dao.findAll();

        a();
        e();
        mk();
        initWebView();
        initEvent();
        webview.setDownloadListener(new MyDownLoadListener());
        webview.setWebViewClient(new MyWebViewClient());
        webview.setWebChromeClient(new MyWebChromeClient());

    }


    private class MyWebViewClient extends WebViewClient {

        @Override
        public void onPageFinished(WebView view, String url) {
            view.getSettings().setJavaScriptEnabled(true);
            super.onPageFinished(view, url);
        }

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            view.loadUrl(url);
            return true;
        }
    }

    private class MyWebChromeClient extends WebChromeClient {

        @Override
        public void onProgressChanged(WebView view, int newProgress) {
            bnp.setProgress(newProgress);
        }

        @Override
        public void onReceivedTitle(WebView view, String title) {

            super.onReceivedTitle(view, title);

            TextView iconthis = (TextView) findViewById(R.id.appbarmiuiTextView1);
            iconthis.setText(title);
        }
    }

    private class MyDownLoadListener implements DownloadListener {
        @Override
        public void onDownloadStart(String r, String userAgent, String contentDisposition, String mimetype, long contentLength) {

        }
    }
}