package com.rnoneclick.config;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Build;
import android.text.TextUtils;
import android.util.TypedValue;
import android.view.View;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

import com.mobile.auth.gatewayauth.AuthRegisterViewConfig;
import com.mobile.auth.gatewayauth.AuthRegisterXmlConfig;
import com.mobile.auth.gatewayauth.AuthUIConfig;
import com.mobile.auth.gatewayauth.AuthUIControlClickListener;
import com.mobile.auth.gatewayauth.CustomInterface;
import com.mobile.auth.gatewayauth.PhoneNumberAuthHelper;
import com.mobile.auth.gatewayauth.ResultCode;
import com.mobile.auth.gatewayauth.ui.AbstractPnsViewDelegate;
import com.rnoneclick.AppUtils;
import com.rnoneclick.R;

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

/**
 * xml文件方便预览
 * 可以通过addAuthRegisterXmlConfig一次性统一添加授权页的所有自定义view
 */
public class CustomXmlConfig extends BaseUIConfig {
    private boolean isCheck = false;

    public CustomXmlConfig(Activity activity, PhoneNumberAuthHelper authHelper) {
        super(activity, authHelper);
    }

    @SuppressLint("UseCompatLoadingForDrawables")
    @Override
    public void configAuthPage() {
        mAuthHelper.setUIClickListener(new AuthUIControlClickListener() {
            @Override
            public void onClick(String code, Context context, String jsonString) {
                JSONObject jsonObj = null;
                try {
                    if (!TextUtils.isEmpty(jsonString)) {
                        jsonObj = new JSONObject(jsonString);
                    }
                } catch (JSONException e) {
                    jsonObj = new JSONObject();
                }
                switch (code) {
                    //点击一键登录按钮会发出此回调
                    //当协议栏没有勾选时 点击按钮会有默认toast 如果不需要或者希望自定义内容 setLogBtnToastHidden(true)隐藏默认Toast
                    //通过此回调自己设置toast
                    case ResultCode.CODE_ERROR_USER_LOGIN_BTN:
                        if (jsonObj == null) {
                            return;
                        }
                        if (!jsonObj.optBoolean("isChecked")) {
                            Toast.makeText(mContext, R.string.custom_toast, Toast.LENGTH_SHORT).show();
                        }
                        break;
                    //checkbox状态改变触发此回调
                    case ResultCode.CODE_ERROR_USER_CHECKBOX:
                        if (jsonObj == null) {
                            return;
                        }
                        isCheck = jsonObj.optBoolean("isChecked");
                        break;

                    case ResultCode.CODE_ERROR_USER_SWITCH:

                        if (getOtherLogin() != null) {
                            getOtherLogin().call(0);
                        }
                        mAuthHelper.quitLoginPage();
                        break;
                    default:
                        break;
                }
            }
        });
        mAuthHelper.removeAuthRegisterXmlConfig();
        mAuthHelper.removeAuthRegisterViewConfig();
        int authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT;
        if (Build.VERSION.SDK_INT == 26) {
            authPageOrientation = ActivityInfo.SCREEN_ORIENTATION_BEHIND;
        }
        updateScreenSize(authPageOrientation);
        mAuthHelper.addAuthRegistViewConfig("switch_msg", new AuthRegisterViewConfig.Builder()
                .setView(initView(389))
                .setRootViewId(AuthRegisterViewConfig.RootViewId.ROOT_VIEW_ID_BODY)
                .setCustomInterface(new CustomInterface() {
                    @Override
                    public void onClick(Context context) {
                    }
                })
                .build());
        mAuthHelper.addAuthRegisterXmlConfig(new AuthRegisterXmlConfig.Builder()
                .setLayout(R.layout.custom_xml_new, new AbstractPnsViewDelegate() {
                    @Override
                    public void onViewCreated(View view) {
                        findViewById(R.id.ll_login_wechat).setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                if (!isCheck) {
                                    Toast.makeText(mContext, R.string.custom_toast, Toast.LENGTH_SHORT).show();
                                    return;
                                }
                                if (getOtherLogin() != null) {
                                    getOtherLogin().call(1);
                                }
                                mAuthHelper.quitLoginPage();
                            }
                        });
                        findViewById(R.id.iv_login_back).setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                mAuthHelper.quitLoginPage();
                            }
                        });
                        findViewById(R.id.ll_login_qq).setOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View v) {
                                if (!isCheck) {
                                    Toast.makeText(mContext, R.string.custom_toast, Toast.LENGTH_SHORT).show();
                                    return;
                                }
                                if (getOtherLogin() != null) {
                                    getOtherLogin().call(4);
                                }
                                mAuthHelper.quitLoginPage();
                            }
                        });
                    }
                })
                .build());
        int color = Color.parseColor("#131313");
        if (!TextUtils.isEmpty(OneKeyConfig.MAIN_COLOR)) {
            color = Color.parseColor(OneKeyConfig.MAIN_COLOR);
        }
        mAuthHelper.setAuthUIConfig(new AuthUIConfig.Builder()
                .setAppPrivacyOne("《隐私保护政策》", OneKeyConfig.PROTECT_PRIVACY_URL)
                .setAppPrivacyTwo(" 《注册协议》", OneKeyConfig.REGISTER_PRIVACY_URL)
                .setAppPrivacyColor(Color.parseColor("#3c3c3c"), color)
                .setPrivacyBefore("登录")
                .setPrivacyEnd("并授权乐学喵教育获得本机号码")
                .setPrivacyOffsetY_B(8)
                .setNavHidden(true)
                .setLogoHidden(true)
                .setSloganHidden(true)
                .setSwitchAccHidden(false)
                .setSwitchAccText("其他手机号码登录")
                .setSwitchOffsetY(402)
                .setSwitchAccTextSizeDp(16)
                .setSwitchAccTextColor(Color.parseColor("#999999"))
                .setPrivacyState(false)
                .setCheckboxHidden(false)
                .setCheckedImgPath("icon_check")
                .setUncheckedImgPath("icon_uncheck")
                .setLightColor(true)
                //自定义协议页跳转协议，需要在清单文件配置自定义intent-filter，不需要自定义协议页，则请不要配置ProtocolAction
//                .setProtocolAction("com.aliqin.baijiayun.protocolWeb")
                .setLogBtnToastHidden(true)
//                .setWebViewStatusBarColor(Color.TRANSPARENT)
//                .setStatusBarColor(Color.TRANSPARENT)
//                .setStatusBarUIFlag(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN)
                .setWebNavReturnImgDrawable(mContext.getResources().getDrawable(R.drawable.back))
                .setWebNavColor(Color.parseColor("#ffffff"))
                .setWebNavTextSizeDp(20)
                .setNumberColor(Color.parseColor("#333333"))
                .setNumberSizeDp(28)
                .setNumberTypeface(Typeface.defaultFromStyle(Typeface.BOLD))
                .setNumFieldOffsetY(265)
                .setAuthPageActIn("in_activity", "out_activity")
                .setAuthPageActOut("in_activity", "out_activity")
                .setVendorPrivacyPrefix("《")
                .setVendorPrivacySuffix("》")
                .setPageBackgroundPath("page_background_color")
                .setLogBtnBackgroundPath("one_click_btn")
                .setLogBtnHeight(76)
                .setLogBtnWidth(296)
                .setScreenOrientation(authPageOrientation)
                .setLogBtnText(OneKeyConfig.LOGIN_BTN_TEXT)
                .setLogBtnTextColor(Color.parseColor("#FFFFFF"))
                .setLogBtnTextSizeDp(16)

                .setLogBtnMarginLeftAndRight(28)
                .setLogBtnOffsetY(317)
                .setStatusBarHidden(false)
                .create());
    }

    protected View initView(int marginTop) {
        TextView switchTV = new TextView(mContext);
        RelativeLayout relativeLayout = new RelativeLayout(mContext);
        RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.MATCH_PARENT, AppUtils.dp2px(mContext, 100));
        params.setMargins(0, AppUtils.dp2px(mContext, marginTop), 0, 0);
        relativeLayout.setLayoutParams(params);

        RelativeLayout.LayoutParams mLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
        mLayoutParams.setMargins(0, AppUtils.dp2px(mContext, 18), 0, 0);
        mLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL, RelativeLayout.TRUE);
//        switchTV.setText("未注册的用户验证通过后将自动注册");
        switchTV.setText("");
        switchTV.setTextColor(Color.parseColor("#999999"));
        switchTV.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12F);
        switchTV.setLayoutParams(mLayoutParams);
        relativeLayout.addView(switchTV);
        return relativeLayout;
    }
}
