package com.yidianling.avchatkit.teamavchat;

import android.content.Context;
import android.util.Pair;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.LinearLayout;

import com.yidianling.avchatkit.AVChatKit;
import com.yidianling.im.R;
import com.yidianling.avchatkit.common.dialog.CustomAlertDialog;
import com.yidianling.avchatkit.teamavchat.adapter.TeamAVChatVoiceMuteAdapter;
import com.yidianling.avchatkit.teamavchat.module.TeamAVChatVoiceMuteItem;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by hzchenkang on 2017/5/9.
 */

public class TeamAVChatVoiceMuteDialog extends CustomAlertDialog {

    private TeamAVChatVoiceMuteAdapter adapter;
    private TeamVoiceMuteListener listener;
    private List<Pair<String, Boolean>> beforeMutes;

    public TeamAVChatVoiceMuteDialog(Context context, String teamId, List<Pair<String, Boolean>> voiceMutes) {
        super(context, voiceMutes == null ? 0 : voiceMutes.size());
        beforeMutes = voiceMutes;
        if (voiceMutes == null) {
            return;
        }
        setTitle("屏蔽音频");
        setCanceledOnTouchOutside(false);

        List<TeamAVChatVoiceMuteItem> data = new ArrayList<>();
        for (Pair<String, Boolean> voiceMute : voiceMutes) {
            TeamAVChatVoiceMuteItem item = new TeamAVChatVoiceMuteItem();
            item.setAccount(voiceMute.first);
            item.setMute(voiceMute.second);
            item.setDisplayName(AVChatKit.getTeamDataProvider().getTeamMemberDisplayName(teamId, item.getAccount()));
            data.add(item);
        }
        adapter = new TeamAVChatVoiceMuteAdapter(context, data);
        setAdapter(adapter, new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                //
                TeamAVChatVoiceMuteItem item = (TeamAVChatVoiceMuteItem) adapter.getItem(position);
                if (item == null) {
                    return;
                }
                item.setMute(!item.isMute());

                adapter.notifyDataSetChanged();
            }
        });
    }

    public void setTeamVoiceMuteListener(TeamVoiceMuteListener listener) {
        this.listener = listener;
    }

    public interface TeamVoiceMuteListener {
        void onVoiceMuteChange(List<Pair<String, Boolean>> voiceMuteAccounts);
    }

    @Override
    protected void addFootView(LinearLayout parent) {
        View footView = getLayoutInflater().inflate(R.layout.im_nim_easy_alert_dialog_bottom_button, null);
        Button positiveButton = (Button) footView.findViewById(R.id.easy_dialog_positive_btn);
        positiveButton.setVisibility(View.VISIBLE);
        positiveButton.setText(getContext().getString(R.string.im_save));

        Button negativeButton = (Button) footView.findViewById(R.id.easy_dialog_negative_btn);
        negativeButton.setVisibility(View.VISIBLE);

        positiveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (listener != null) {
                    List<Pair<String, Boolean>> items = new ArrayList<>();
                    List<TeamAVChatVoiceMuteItem> afterItems = adapter.getItems();

                    for (int i = 0; i < afterItems.size(); i++) {
                        if (afterItems.get(i).isMute() != beforeMutes.get(i).second) {
                            items.add(new Pair<>(beforeMutes.get(i).first, !beforeMutes.get(i).second));
                        }
                    }

                    listener.onVoiceMuteChange(items);
                }
                dismiss();
            }
        });
        negativeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                dismiss();
            }
        });
        parent.addView(footView);
    }
}