package com.mummyding.app.leisure.ui.science;

import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.PersistableBundle;
import android.support.v4.widget.NestedScrollView;
import android.util.Log;
import android.view.View;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import com.mummyding.app.leisure.R;
import com.mummyding.app.leisure.database.cache.cache.ScienceCache;
import com.mummyding.app.leisure.database.table.ScienceTable;
import com.mummyding.app.leisure.model.science.ArticleBean;
import com.mummyding.app.leisure.model.science.ScienceBean;
import com.mummyding.app.leisure.support.DisplayUtil;
import com.mummyding.app.leisure.support.HttpUtil;
import com.mummyding.app.leisure.support.Settings;
import com.mummyding.app.leisure.support.Utils;
import com.mummyding.app.leisure.support.parser.ScienceContentParser;
import com.mummyding.app.leisure.ui.support.BaseDetailsActivity;
import com.squareup.okhttp.Callback;
import com.squareup.okhttp.Request;
import com.squareup.okhttp.Response;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Created by MummyDing on 16-2-18.
 * GitHub: https://github.com/MummyDing
 * Blog: http://blog.csdn.net/mummyding
 */
public class ScienceDetailsActivity extends BaseDetailsActivity {

    private static final String TAG = "ScienceDetailsActivity";
    private ScienceCache mCache;
    private ArticleBean articleBean;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mCache = new ScienceCache();
        articleBean = (ArticleBean) getIntent().getSerializableExtra(getString(R.string.id_science));
        isCollected = (articleBean.getIs_collected() == 1);
        initView();
    }

    @Override
    protected void initView() {
        super.initView();
        contentView.setWebViewClient(new WebViewClient(){
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return true;
            }

            @Override
            public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
                super.onReceivedError(view, request, error);
            }
        });
    }

    @Override
    protected void onDataRefresh() {

        Utils.getRawHtmlFromUrl(articleBean.getUrl(), new Callback() {
            @Override
            public void onFailure(Request request, IOException e) {
                Log.d(TAG, "onFailure: " + e.getMessage());
            }

            @Override
            public void onResponse(final Response response) throws IOException {
                final String rawData = response.body().string();
                Handler handler = new Handler(Looper.getMainLooper());
                handler.post(new Runnable() {
                    @Override
                    public void run() {
                        ScienceContentParser myParse = new ScienceContentParser(rawData);
                        String data = myParse.getEndStr();
                        scrollView.setVisibility(View.VISIBLE);
                        scrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
                            @Override
                            public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                                topImage.setTranslationY(Math.max(-scrollY / 2, -DisplayUtil.dip2px(getBaseContext(), 170)));
                            }
                        });
                        contentView.loadDataWithBaseURL("file:///android_asset/", "<link rel=\"stylesheet\" type=\"text/css\" href=\"guokr.css\" />" + data, "text/html", "utf-8", null);
                    }
                });
            }
        });
        if(HttpUtil.isWIFI == true || Settings.getInstance().getBoolean(Settings.NO_PIC_MODE, false) == false) {
            setMainContentBg(articleBean.getImage_info().getUrl());
        }

        hideLoading();
    }

    @Override
    protected void removeFromCollection() {
        mCache.execSQL(ScienceTable.updateCollectionFlag(articleBean.getTitle(), 0));
        mCache.execSQL(ScienceTable.deleteCollectionFlag(articleBean.getTitle()));
    }

    @Override
    protected void addToCollection() {
        mCache.execSQL(ScienceTable.updateCollectionFlag(articleBean.getTitle(),1));
        mCache.addToCollection(articleBean);
    }

    @Override
    protected String getShareInfo() {
        return "["+articleBean.getTitle()+"]:"+articleBean.getUrl()+" ( "+getString(R.string.text_share_from)+getString(R.string.app_name)+")";
    }
}