Newer
Older
IrisClient / app / src / main / java / org / ntlab / irisclient / MemberRoomActivity.java
package org.ntlab.irisclient;

import androidx.appcompat.app.AppCompatActivity;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewModelProvider;
import androidx.recyclerview.widget.RecyclerView;

import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ImageButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

import com.google.android.material.snackbar.Snackbar;

import org.ntlab.irisclient.entities.RoomJson;
import org.ntlab.irisclient.models.Member;
import org.ntlab.irisclient.viewmodels.RoomViewModel;

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


public class MemberRoomActivity extends AppCompatActivity {

    //RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class);

    //フィールド
    ArrayList<String> viewMembers = new ArrayList<>();
    ArrayList<String> oldMembers = new ArrayList<>();
    String r = "roomid";
    String myName = "null";




    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_member_room);

        String roomId = ((Iris) getApplication()).getRid();
        String nickname = ((Iris) getApplication()).getNickname();



        //自分のなまえ
        Intent intentMain = getIntent();
        myName = intentMain.getStringExtra("nickname");

        //--------------------------------------------------------------------------
        //メンバー表示
        Member mn = new Member(myName);
        mn.setBelongs("g");
        mn.setMaster(false);

        viewMembers.add(mn.getNickname());

        //--------------------------------------------------------------------------
        //RoomViewModelへのアクセス
        RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class);

        roomViewModel.setRid(roomId);

        /*memberList = roomViewModel.getMembersLiveData().getValue();

        memberList.forEach(m -> members.add(m.getNickname()));*/

        ListView membersList = (ListView) findViewById(R.id.MembersList);

        BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(), R.layout.member_list_layout, viewMembers);
        membersList.setAdapter(adapter);

        //LiveData(List<Member>)への購読
        /*roomViewModel.getMembersLiveData().observe(this, new Observer<List<Member>>() {
            //private List<Member> members;
            @Override
            public void onChanged(List<Member> irisMembers) {
                int i = 0;
                if(irisMembers.size() == oldMembers.size()) {

                    do {
                        if (irisMembers.get(i).getNickname().equals(oldMembers.get(i))) {
                            i++;
                        } else {
                            viewMembers.clear();
                            irisMembers.forEach(m -> viewMembers.add(m.getNickname()));
                            System.arraycopy(viewMembers, 0, oldMembers, 0, viewMembers.size());

                            BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers);
                            membersList.setAdapter(adapter);

                            break;
                        }

                    } while (i < oldMembers.size());
                } else {
                    viewMembers.clear();
                    irisMembers.forEach(m -> viewMembers.add(m.getNickname()));
                    System.arraycopy(viewMembers, 0, oldMembers, 0, viewMembers.size());

                    BaseAdapter adapter = new MemberListAdapter(getApplicationContext(), R.layout.member_list_layout, viewMembers);
                    membersList.setAdapter(adapter);
                }

            }
        });*/

        roomViewModel.getStateLiveData().observe(this, new Observer<Integer>() {
            @Override
            public void onChanged(Integer state) {
                if(state >= 1){
                    Intent intent = new Intent(MemberRoomActivity.this,DrawingActivity.class);
                    startActivity(intent);
                }
            }
        });


        //--------------------------------------------------------------------------
        //各ボタン処理
        buttonProcesses();



        //---------------------------------------------------------------
        //settings情報
        String s = "設定されている内容がここに表示されるはずです";
        TextView settingsText = findViewById(R.id.settings);
        settingsText.setText(s);

        //---------------------------------------------------------------
        //部屋ID情報
        TextView RoomIdText = findViewById(R.id.roomID);
        RoomIdText.setText(roomId);

        roomViewModel.start(500);

    }

    /*
    // 初期化
    private void init() {
        setContentView(R.layout.activity_member_room);
        startObserve();
    }


    /*private getMemberInformation(){

    }*/

    /*private void addMemberToMemberList(String m){
        members.add(m);
    }*/

    public void buttonProcesses(){
        Button redMasterButton = (Button) findViewById(R.id.beRedMaster);
        Button redSpyButton = (Button) findViewById(R.id.beRedSpy);
        Button blueMasterButton = (Button) findViewById(R.id.beBlueMaster);
        Button blueSpyButton = (Button) findViewById(R.id.beBlueSpy);
        ImageButton copyButton = (ImageButton) findViewById(R.id.copyButton);
        ImageButton homeButton = (ImageButton) findViewById(R.id.homeButton);

        redMasterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                r = "赤マスターボタン検知しました";
                TextView RoomIdText = findViewById(R.id.roomID);
                RoomIdText.setText(r);
            }
        });

        redSpyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                r = "赤諜報員ボタン検知しました";
                TextView RoomIdText = findViewById(R.id.roomID);
                RoomIdText.setText(r);
            }
        });

        blueMasterButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                r = "青マスターボタン検知しました";
                TextView RoomIdText = findViewById(R.id.roomID);
                RoomIdText.setText(r);
            }
        });

        blueSpyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                r = "青諜報員ボタン検知しました";
                TextView RoomIdText = findViewById(R.id.roomID);
                RoomIdText.setText(r);
            }
        });

        homeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                r = "ホームボタン検知しました";
                TextView RoomIdText = findViewById(R.id.roomID);
                RoomIdText.setText(r);
            }
        });

        copyButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Snackbar.make(v, "コピーしました", Snackbar.LENGTH_LONG).show();
            }
        });
    }
}