package com.wapchief.jpushim.activity;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.kyleduo.switchbutton.SwitchButton;
import com.wapchief.jpushim.R;
import com.wapchief.jpushim.framework.base.BaseActivity;
import com.wapchief.jpushim.framework.base.BaseApplication;
import com.wapchief.jpushim.framework.helper.SharedPrefHelper;

import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import cn.jpush.im.android.api.JMessageClient;
import cn.jpush.im.android.api.callback.IntegerCallback;
import cn.jpush.im.api.BasicCallback;

import static android.content.Intent.FLAG_ACTIVITY_NO_HISTORY;
import static cn.jpush.im.android.api.JMessageClient.FLAG_NOTIFY_SILENCE;
import static cn.jpush.im.android.api.JMessageClient.FLAG_NOTIFY_WITH_SOUND;
import static cn.jpush.im.android.api.JMessageClient.FLAG_NOTIFY_WITH_VIBRATE;

/**
 * Created by wapchief on 2017/7/21.
 */

public class SettingActivity extends BaseActivity {
    @BindView(R.id.title_bar_title)
    TextView mTitleBarTitle;
    @BindView(R.id.title_options_img)
    ImageView mTitleOptionsImg;

    @BindView(R.id.setting_push)
    SwitchButton mSettingPush;
    @BindView(R.id.setting_noisy)
    SwitchButton mSettingNoisy;
    @BindView(R.id.setting_roaming)
    SwitchButton mSettingRoaming;
    @BindView(R.id.setting_push_vib)
    SwitchButton mSettingPushVib;
    @BindView(R.id.setting_push_music)
    SwitchButton mSettingPushMusic;
    @BindView(R.id.setting_push_led)
    SwitchButton mSettingPushLed;
    @BindView(R.id.title_bar_back)
    ImageView mTitleBarBack;
    @BindView(R.id.setting_exit)
    RelativeLayout mSettingExit;
    @BindView(R.id.setting_password)
    RelativeLayout mSettingPassword;
    private SharedPrefHelper helper;

    @Override
    protected int setContentView() {
        return R.layout.activity_setting;
    }

    @Override
    protected void initView() {
        helper = SharedPrefHelper.getInstance();
        initTitleBar();
        initSwitchOnClick();
    }

    @Override
    protected void onResume() {
        super.onResume();
        mSettingPushVib.setChecked(helper.getVib());
        mSettingPushMusic.setChecked(helper.getMusic());
    }

    private void initSwitchOnClick() {

        /*免打扰*/
        JMessageClient.getNoDisturbGlobal(new IntegerCallback() {
            @Override
            public void gotResult(int i, String s, Integer integer) {
//                Log.e("disturb===", "" + i + "," + s + "," + integer);
                if (integer == 1) {
                    mSettingNoisy.setChecked(true);
                } else {
                    mSettingNoisy.setChecked(false);
                }
            }
        });

        mSettingNoisy.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    disturbGlobal(1);
                } else {
                    disturbGlobal(0);
                }
            }
        });

        /*消息漫游,默认开启状态*/
        mSettingRoaming.setChecked(helper.getRoaming());
        mSettingRoaming.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    JMessageClient.init(BaseApplication.baseApplication, true);
                } else {
                    JMessageClient.init(BaseApplication.baseApplication, false);
                }
                helper.setRoaming(b);
            }
        });


        pushMusic();
        pushVib();
    }

    /*提示音*/
    private void pushMusic() {
        mSettingPushMusic.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    if (helper.getVib()) {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE | FLAG_NOTIFY_WITH_SOUND | FLAG_NOTIFY_WITH_VIBRATE);
                    } else {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE | FLAG_NOTIFY_WITH_SOUND);
                    }
                    helper.setMusic(true);
                } else {
                    if (helper.getVib()) {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE | FLAG_NOTIFY_WITH_VIBRATE);
                    } else {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE);
                    }
                    helper.setMusic(false);
                }
            }
        });
    }

    /*震动*/
    private void pushVib() {
        mSettingPushVib.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
                if (b) {
                    if (helper.getMusic()) {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE | FLAG_NOTIFY_WITH_SOUND | FLAG_NOTIFY_WITH_VIBRATE);
                    } else {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE | FLAG_NOTIFY_WITH_VIBRATE);
                    }
                } else {
                    if (helper.getMusic()) {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE | FLAG_NOTIFY_WITH_SOUND);
                    } else {
                        JMessageClient.setNotificationFlag(FLAG_NOTIFY_SILENCE);
                    }
                }
                helper.setVib(b);
            }
        });
    }

    /*全局免打扰*/
    private void disturbGlobal(int i) {
        JMessageClient.setNoDisturbGlobal(i, new BasicCallback() {
            @Override
            public void gotResult(int i, String s) {
//                Log.e("disturb2===", "" + i + "," + s + ",");

            }
        });
    }


    private void initTitleBar() {
        mTitleBarBack.setImageDrawable(getResources().getDrawable(R.mipmap.icon_back));
        mTitleBarTitle.setText("设置");
        mTitleOptionsImg.setVisibility(View.GONE);
    }

    @Override
    protected void initData() {

    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // TODO: add setContentView(...) invocation
        ButterKnife.bind(this);
    }

    @OnClick({R.id.title_bar_back, R.id.setting_exit,R.id.setting_password})
    public void onViewClicked(View view) {
        switch (view.getId()) {
            case R.id.title_bar_back:
                finish();
                break;
            case R.id.setting_exit:
                JMessageClient.logout();
                helper.setUserPW("");
                helper.setNakeName("");
                Intent intent = new Intent(SettingActivity.this, LoginActivity.class);
                startActivity(intent);
                break;
            case R.id.setting_password:
                startActivity(new Intent(SettingActivity.this, PassWordActivity.class));
                break;

        }
    }
}