package com.mm.android.deviceaddmodule.p_init;

import android.os.Bundle;
import android.support.annotation.Nullable;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.company.NetSDK.DEVICE_NET_INFO_EX;
import com.lechange.opensdk.media.DeviceInitInfo;
import com.mm.android.deviceaddmodule.R;
import com.mm.android.deviceaddmodule.base.BaseDevAddFragment;
import com.mm.android.deviceaddmodule.contract.InitContract;
import com.mm.android.deviceaddmodule.helper.DeviceAddHelper;
import com.mm.android.deviceaddmodule.helper.PageNavigationHelper;
import com.mm.android.deviceaddmodule.mobilecommon.AppConsume.ProviderManager;
import com.mm.android.deviceaddmodule.mobilecommon.common.LCConfiguration;
import com.mm.android.deviceaddmodule.mobilecommon.utils.StringUtils;
import com.mm.android.deviceaddmodule.mobilecommon.widget.ClearPasswordEditText;
import com.mm.android.deviceaddmodule.presenter.InitPresenter;

/**
 * 设备初始化页面
 */
public class InitFragment extends BaseDevAddFragment implements InitContract.View, View.OnClickListener {
    static String DEVICE_PARAM="device_param";
    InitContract.Presenter mPresenter;
    private ClearPasswordEditText mPasswordNewEdt;;
    private TextView mInitTv;
    long mEventStartTime;       //统计开始时间

    public static InitFragment newInstance(DeviceInitInfo device_net_info_ex) {
        InitFragment fragment = new InitFragment();
        Bundle args = new Bundle();
        args.putSerializable(DEVICE_PARAM,device_net_info_ex);
        fragment.setArguments(args);
        return fragment;
    }

    private final TextWatcher mTextWatcher = new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence s, int arg1, int arg2, int arg3) {
            String pwd = StringUtils.strPsswordFilter(s.toString());
            if (!pwd.equals(s.toString())) {
                mPasswordNewEdt.setText(pwd);
                mPasswordNewEdt.setSelection(pwd.length());
            }
            mInitTv.setEnabled(pwd.length() >= 8);
        }

        @Override
        public void beforeTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        }

        @Override
        public void afterTextChanged(Editable arg0) {
        }
    };


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_init, container, false);
    }

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
        DeviceAddHelper.updateTile(DeviceAddHelper.TitleMode.MORE);
        mEventStartTime = System.currentTimeMillis();
    }

    protected void initView(View view) {
        setProgressDialogCancelable(false);
        mPasswordNewEdt = view.findViewById(R.id.et_pwd_new);
        mPasswordNewEdt.openEyeMode(ProviderManager.getAppProvider().getAppType()!= LCConfiguration.APP_LECHANGE_OVERSEA);
        mInitTv = view.findViewById(R.id.tv_init);
        mInitTv.setEnabled(false);
        mInitTv.setOnClickListener(this);
        mPasswordNewEdt.addTextChangedListener(mTextWatcher);
    }

    protected void initData() {
        mPresenter = new InitPresenter(this);
        if(getArguments()!=null){
            DeviceInitInfo device_net_info_ex=(DeviceInitInfo) getArguments().getSerializable(DEVICE_PARAM);
            mPresenter.setDeviceEX(device_net_info_ex);
            mPresenter.checkDevice();
        }
        mPresenter.playTipSound();
    }

    @Override
    public void onDestroyView() {
        super.onDestroyView();
        mPresenter.recyle();
    }

    @Override
    public void onClick(View v) {
        int id = v.getId();
        if (id == R.id.tv_init) {
            if(mPresenter.isPwdValid()) {
                mPresenter.startDevInitByIp();
            }
        }
    }

    @Override
    public int getMusicRes() {
        return R.raw.voiceprompt_lc_device_psw;
    }

    @Override
    public String getInitPwd() {
        return mPasswordNewEdt.getText().toString();
    }

    @Override
    public void goSoftAPWifiListPage() {
        PageNavigationHelper.gotoSoftApWifiListPage(this);
    }

    @Override
    public void goConnectCloudPage() {
        PageNavigationHelper.gotoCloudConnectPage(this);
    }

    @Override
    public void goErrorTipPage() {
        //toast(R.string.add_device_init_failed_tip);
        PageNavigationHelper.gotoErrorTipPage(this,DeviceAddHelper.ErrorCode.INIT_ERROR_INIT_FAILED);
    }
}