RoomCreateRoomDialog.java 7.17 KB
package com.chudiangameplay.android.dialog;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import com.chudiangameplay.android.R;
import com.chudiangameplay.android.adapter.CreateRoomCategoryAdapter;
import com.chudiangameplay.android.bean.RoomCheckCreateBean;
import com.chudiangameplay.android.bean.UploadFileInfo;
import com.chudiangameplay.android.interface_.CommCallBack;
import com.chudiangameplay.android.interface_.OkHttpCallBack;
import com.chudiangameplay.android.manager.API_RoomManager;
import com.chudiangameplay.android.responce.BaseResponce;
import com.chudiangameplay.android.responce.Room_GetRoomInfoResponce;
import com.chudiangameplay.android.ui.activity.BaseActivity;
import com.chudiangameplay.android.util.AnimUtil;
import com.chudiangameplay.android.util.GlideUtil;
import com.chudiangameplay.android.util.StatusBarUtil_Dialog;
import com.chudiangameplay.android.util.Util;

public class RoomCreateRoomDialog extends BaseDialog implements View.OnClickListener {

    Context mContext;
    public RoomCreateRoomDialog(@NonNull Context context) {
        super(context, R.style.myDialog);
        mContext = context;
    }


    LinearLayout ll_content;
    View view_bg, main;

    CommCallBack callBack;
    RoomCheckCreateBean createBean;
    ImageView iv_img;
    RelativeLayout rl_uploadimg;
    EditText et_room_name;
    RecyclerView recyclerview_type;
    TextView tv_submit;
    CreateRoomCategoryAdapter adapter;

    String icon;
    int cateId = -1;

    //设置回调
    public void setCallBack(CommCallBack callBack) {
        this.callBack = callBack;
    }

    public void setData( RoomCheckCreateBean createBean) {
        this.createBean = createBean;
    }

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.dialog_room_create_room);
        initView();
        StatusBarUtil_Dialog.setImmersiveStatusBar(this, true);
    }

    private void initView() {
        main = findViewById(R.id.main);
        ll_content = findViewById(R.id.ll_content);
        view_bg = findViewById(R.id.view_bg);
        iv_img = findViewById(R.id.iv_img);
        rl_uploadimg = findViewById(R.id.rl_uploadimg);
        et_room_name = findViewById(R.id.et_room_name);
        recyclerview_type = findViewById(R.id.recyclerview_type);
        tv_submit = findViewById(R.id.tv_submit);
        view_bg.setOnClickListener(this);
        ll_content.setOnClickListener(this);
        tv_submit.setOnClickListener(this);
        rl_uploadimg.setOnClickListener(this);
        findViewById(R.id.iv_close).setOnClickListener(this);

        recyclerview_type.setLayoutManager(new LinearLayoutManager(getContext(), LinearLayoutManager.HORIZONTAL, false));
        adapter = new CreateRoomCategoryAdapter(getContext(), new CommCallBack() {
            @Override
            public void onResult(Object obj) {
                if(obj instanceof RoomCheckCreateBean.RoomCategoryItem){
                    cateId = ((RoomCheckCreateBean.RoomCategoryItem)obj).id;
                    checkData();
                }
            }
        });
        recyclerview_type.setAdapter(adapter);

        AnimUtil.fadeIn(view_bg);
        AnimUtil.fadeIn(ll_content);

        bindUi();
        addLayoutListener(main, ll_content);
        et_room_name.addTextChangedListener(new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {

            }

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {

            }

            @Override
            public void afterTextChanged(Editable s) {
                checkData();
            }
        });
    }

    private void bindUi() {
        if(createBean != null){
            icon = createBean.icon;

            adapter.setData(createBean.roomCategoryList);
            adapter.notifyDataSetChanged();

            GlideUtil.displayImage(getContext(), createBean.icon, iv_img,  -1);
            et_room_name.setText(createBean.name);
            et_room_name.setSelection(createBean.name.length());
        }
    }

    @Override
    public void onClick(View v) {
        if (Util.isFastClick()) {
            return;
        }
        switch (v.getId()) {
            case R.id.view_bg:
            case R.id.iv_close:
                dismissWithAnim();
                break;
            case R.id.ll_content:
                //不处理,只消耗点击事件
                break;
            case R.id.tv_submit:
                submit();
                break;
            case R.id.rl_uploadimg:
                uploadImg();
                break;
        }
    }

    private void uploadImg() {
        if(mContext instanceof BaseActivity){
            ((BaseActivity)mContext).
                    upLoadPhoto(false, new CommCallBack() {
                        @Override
                        public void onResult(Object obj) {
                            UploadFileInfo fileInfo = (UploadFileInfo) obj;
                            icon = fileInfo.url;
                            GlideUtil.displayImage(mContext, fileInfo.url, iv_img, -1, 0);
                        }
                    });
        }
    }

    private void submit(){
        API_RoomManager.room_create(mContext, icon, et_room_name.getText().toString().trim(), cateId,  new OkHttpCallBack() {
            @Override
            public void onSuccess(BaseResponce baseResponce) {
                if (BaseResponce.Status_Success.equals(baseResponce.status)) {
                    if(callBack != null){
                        Room_GetRoomInfoResponce responce = (Room_GetRoomInfoResponce) baseResponce;
                        if(responce != null && responce.data != null){
                            callBack.onResult(responce.data.roomNo);
                        }
                    }
                    dismissWithAnim();
                }
            }

            @Override
            public void onFailure(BaseResponce baseResponce) {
            }
        });

    }

    private void checkData(){
        if(et_room_name.getText().toString().trim().length() == 0){
            tv_submit.setEnabled(false);
        }else{
            if(TextUtils.isEmpty(icon) || cateId < 0){
                tv_submit.setEnabled(false);
            }else{
                tv_submit.setEnabled(true);
            }
        }
    }

    public void dismissWithAnim() {
        if (view_bg.getAnimation() != null) return;
        AnimUtil.fadeOut(ll_content, null);
        AnimUtil.fadeOut(view_bg, new CommCallBack() {
            @Override
            public void onResult(Object obj) {
                dismiss();
            }
        });
    }

    @Override
    public void onBackPressed() {
        dismissWithAnim();
    }
}