diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 56c3abd..0a5abc1 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,6 +34,11 @@ android:screenOrientation="landscape" android:exported="true" > + + \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/irisclient/CreateRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/CreateRoomActivity.java index 8354a6f..f47a29f 100644 --- a/app/src/main/java/org/ntlab/irisclient/CreateRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/CreateRoomActivity.java @@ -31,7 +31,6 @@ } //------------------------------------------------------------------------------------------------------------------------------------------ //バックボタンを押した場合、前の画面に遷移 - Intent intent = getIntent(); ImageButton imageButton = (ImageButton) findViewById(R.id.backButton); // view経由でimageButtonを探す imageButton.setOnClickListener(new View.OnClickListener() { @@ -55,10 +54,9 @@ //ニックネームが入力されていれば次の画面へ } else { - Intent i = new Intent(getApplication(), MainActivity/*OwnerRoomActivityに変更する*/.class); - startActivity(i); - } - + Intent intent = new Intent(CreateRoomActivity.this,OwnerRoomActivity.class); + startActivity(intent); + } } }); diff --git a/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java index 19d8314..6c9ef0b 100644 --- a/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java @@ -2,8 +2,26 @@ import androidx.appcompat.app.ActionBar; import androidx.appcompat.app.AppCompatActivity; +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; +import android.content.Intent; import android.os.Bundle; +import android.view.View; +import android.widget.Button; +import android.widget.EditText; +import android.widget.ImageButton; + +import com.google.android.material.snackbar.Snackbar; + +import org.ntlab.irisclient.entities.MemberJson; +import org.ntlab.irisclient.resources.RoomsRest; + +import java.util.List; + public class EnterRoomActivity extends AppCompatActivity { @@ -11,11 +29,58 @@ protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_enter_room); - ActionBar actionBar = getSupportActionBar(); if(actionBar != null) { actionBar.hide(); } + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final RoomsRest roomsRest = retrofit.create(RoomsRest.class); + + ImageButton imageButton = (ImageButton) findViewById(R.id.backButton); // view経由でimageButtonを探す + imageButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + Intent i = new Intent(v.getContext(), MainActivity.class); + startActivity(i); + } + }); + + Button nextButton = findViewById(R.id.EntryRoomButton); + nextButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v) { + EditText nicknameForm = findViewById(R.id.nicknameEditText); + EditText roomIdForm = findViewById(R.id.roomIdEditText); + + String name = nicknameForm.getText().toString(); + String rid = roomIdForm.getText().toString(); + + //ニックネームまたは部屋番号が入力されていない場合エラーメッセージを表示する + if (name.isEmpty() || rid.isEmpty()) { + nicknameForm.setError("ニックネームを入力されていません"); + roomIdForm.setError("部屋番号を入力されていません"); + } else { + Call> call = roomsRest.postMembers(rid,name); + call.enqueue(new Callback>() { + @Override + public void onResponse(Call> call, Response> response) { + if(response.isSuccessful()){ + Intent intent = new Intent(EnterRoomActivity.this,MemberRoomActivity.class); + startActivity(intent); + } + } + + @Override + public void onFailure(Call> call, Throwable t) { + + } + }); + } + } + }); + } + } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/irisclient/MainActivity.java b/app/src/main/java/org/ntlab/irisclient/MainActivity.java index fd1080f..0bb3ca4 100644 --- a/app/src/main/java/org/ntlab/irisclient/MainActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/MainActivity.java @@ -20,6 +20,14 @@ actionBar.hide(); } + Button createButton =(Button)findViewById(R.id.create_room); + createButton.setOnClickListener(new View.OnClickListener() { + public void onClick(View v){ + Intent intent = new Intent(MainActivity.this,CreateRoomActivity.class); + startActivity(intent); + } + }); + Button entryButton =(Button)findViewById(R.id.entry_room); entryButton.setOnClickListener(new View.OnClickListener() { public void onClick(View v){ diff --git a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java index 7b0fb26..6ea2cb8 100644 --- a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java +++ b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java @@ -1,52 +1,180 @@ package org.ntlab.irisclient; -import androidx.appcompat.app.ActionBar; -import androidx.appcompat.app.AppCompatActivity; -import androidx.recyclerview.widget.LinearLayoutManager; -import androidx.recyclerview.widget.RecyclerView; - +import android.graphics.Color; import android.os.Bundle; import android.view.View; +import android.widget.ArrayAdapter; import android.widget.Button; +import android.widget.ImageButton; +import android.widget.ListView; +import android.widget.TextView; -import java.util.Locale; +import androidx.appcompat.app.AppCompatActivity; + +import org.ntlab.irisclient.resources.RoomsRest; + +import java.util.ArrayList; +import java.util.Collections; + +import retrofit2.Call; +import retrofit2.Callback; +import retrofit2.Response; +import retrofit2.Retrofit; +import retrofit2.converter.jackson.JacksonConverterFactory; public class OwnerRoomActivity extends AppCompatActivity { -// private final String[] dataset = new String[20]; + //フィールド + String r = "部屋ID " + "123456"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_owner_room); - //上のバーを消す - ActionBar actionBar = getSupportActionBar(); - if (actionBar != null) { - actionBar.hide(); - } + //-------------------------------------------------------------------------- + //各ボタン処理 + ArrayList members = new ArrayList<>(); + 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); + Button randomButton = (Button) findViewById(R.id.random); + Button startButton = (Button) findViewById(R.id.start); + ImageButton copyButton = (ImageButton) findViewById(R.id.copyButton); -// RecyclerView recyclerView = findViewById(R.id.my_recycler_view); -// -// // use this setting to improve performance if you know that changes -// // in content do not change the layout size of the RecyclerView -// recyclerView.setHasFixedSize(true); -// -// // use a linear layout manager -// RecyclerView.LayoutManager rLayoutManager = new LinearLayoutManager(this); -// -// recyclerView.setLayoutManager(rLayoutManager); -// -// int i = 0; -// while (i < 10) { -// dataset[i] = String.format(Locale.ENGLISH, "Data_0%d", i); -// i++; -// } -// -// MyAdapter adapter = new MyAdapter(dataset); -// recyclerView.setAdapter(adapter); + //--------------------------------------------------------------------------- + //メンバーリスト + ArrayAdapter adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, members); + ListView listView = (ListView)findViewById(R.id.MembersList); + listView.setAdapter(adapter); + redMasterButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + r = "部屋ID " + "red"; + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); + members.clear(); + members.add("マスターのRedさん"); + ListView listView = (ListView)findViewById(R.id.MembersList); + + listView.setAdapter(adapter); + } + }); + + redSpyButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + r = "部屋ID " + "red"; + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); + + members.add("スパイのRedさん"); + ListView listView = (ListView)findViewById(R.id.MembersList); + listView.setAdapter(adapter); + } + }); + + blueMasterButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + r = "部屋ID " + "blue"; + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); + + members.add("マスターのBlueさん"); + listView.setBackgroundColor(Color.parseColor("#e83a48")); + ListView listView = (ListView)findViewById(R.id.MembersList); + listView.setAdapter(adapter); + + } + }); + + blueSpyButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + r = "部屋ID " + "red"; + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); + + members.add("スパイのBlueさん"); + ListView listView = (ListView)findViewById(R.id.MembersList); + listView.setBackgroundColor(Color.parseColor("#3a5fe8")); + listView.setAdapter(adapter); + } + }); + + randomButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + r = "部屋ID " + "random"; + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); + + members.add("ランダムさん"); + ListView listView = (ListView)findViewById(R.id.MembersList); + listView.setAdapter(adapter); + + Retrofit retrofit = new Retrofit.Builder() + .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/") + .addConverterFactory(JacksonConverterFactory.create()) + .build(); + final RoomsRest roomsRest = retrofit.create(RoomsRest.class); + + } + }); + + startButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + r = "部屋ID " + "start"; + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); + + members.add("スタートさん"); + ListView listView = (ListView)findViewById(R.id.MembersList); + listView.setAdapter(adapter); + } + }); + + copyButton.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + r = "部屋ID " + "copy"; + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); + + members.add("コピーしました"); + ListView listView = (ListView)findViewById(R.id.MembersList); + listView.setAdapter(adapter); + } + }); + + //-------------------------------------------------------------------------- + //メンバー表示 + + //members.add("1さん"); + + //--------------------------------------------------------------- + //settings情報 + String s = "設定\\nお絵描き"; + TextView settingsText = findViewById(R.id.settings); + settingsText.setText(s); + + //--------------------------------------------------------------- + //部屋ID情報 + TextView RoomIdText = findViewById(R.id.roomID); + RoomIdText.setText(r); } + + /*private getMemberInformation(){ + + }*/ + + /*private void addMemberToMemberList(String m){ + members.add(m); + }*/ } \ No newline at end of file diff --git a/app/src/main/java/org/ntlab/irisclient/entities/MemberJson.java b/app/src/main/java/org/ntlab/irisclient/entities/MemberJson.java new file mode 100644 index 0000000..67eeb76 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/entities/MemberJson.java @@ -0,0 +1,4 @@ +package org.ntlab.irisclient.entities; + +public class MemberJson { +} diff --git a/app/src/main/java/org/ntlab/irisclient/entities/RoomJson.java b/app/src/main/java/org/ntlab/irisclient/entities/RoomJson.java new file mode 100644 index 0000000..427716b --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/entities/RoomJson.java @@ -0,0 +1,4 @@ +package org.ntlab.irisclient.entities; + +public class RoomJson { +} diff --git a/app/src/main/java/org/ntlab/irisclient/resources/RoomsRest.java b/app/src/main/java/org/ntlab/irisclient/resources/RoomsRest.java new file mode 100644 index 0000000..cfc2bb0 --- /dev/null +++ b/app/src/main/java/org/ntlab/irisclient/resources/RoomsRest.java @@ -0,0 +1,114 @@ +package org.ntlab.irisclient.resources; + +import org.ntlab.irisclient.entities.MemberJson; +import org.ntlab.irisclient.entities.RoomJson; + +import java.util.List; + +import retrofit2.Call; +import retrofit2.http.DELETE; +import retrofit2.http.Field; +import retrofit2.http.FormUrlEncoded; +import retrofit2.http.GET; +import retrofit2.http.POST; +import retrofit2.http.PUT; +import retrofit2.http.Path; + +public interface RoomsRest { + + //---------------------------------------------- + // ルームの作成メソッド + @FormUrlEncoded + @POST("rooms") + Call makeRooms( + @Field("nickname") String nickname + ); + + //----------------------------------------------- + // メンバー情報を取得するメソッド + @GET("rooms/{rid}") + Call getRoomMember( + @Path("rid") String rid + ); + + //---------------------------------------------- + //ルームを削除するメソッド + @DELETE("rooms/{rid}") + Call deleteRooms( + @Path("rid") String rid + ); + + //-------------------------------------------------- + // ランダムなチーム編成を行うメソッド + @FormUrlEncoded + @PUT("rooms/{rid}/members") + Call> putMembers( + @Path("rid") String rid, + @Field("nickname") String nickname + ); + + //------------------------------------------------ + //自分のニックネームを送り、部屋に参加するメソッド + @FormUrlEncoded + @POST("rooms/{rid}/members") + Call> postMembers( + @Path("rid") String rid, + @Field("nickname") String nickname + ); + + //---------------------------------------------------- + //チーム変更、役職を変更するメソッド + @FormUrlEncoded + @PUT("rooms/{rid}/members/{nickname}") + Call putMember( + @Path("rid") String rid, + @Path("nickname") String nickname, + @Field("belongs") String belongs, + @Field("is-master") boolean isMaster + ); + + //-------------------------------------------------- + //退出するメソッド + @DELETE("rooms/{rid}/members/{nickname}") + Call deleteMember( + @Path("rid") String rid, + @Path("nickname") String nickname + ); + + //---------------------------------------- + //設定の情報を入手するメソッド + @GET("rooms/{rid}/settings") + Call getSettings( + @Path("rid") String rid + ); + + //------------------------------------------------- + //ゲームの設定を記録するメソッド + @FormUrlEncoded + @PUT("rooms/{rid}/settings") + Call putSettings( + @Path("rid") String rid, + @Field("drawingTimer") boolean dTimer, + @Field("drawingTimerTimes") int dTimerTimes, + @Field("gameTimer") boolean gTimer, + @Field("gameTimerTimes") int gTimerTimes, + @Field("gameTimerFirstThinkingTimes") int gTimerFTTimes + ); + + //----------------------------------------------- + //部屋の情報を入手するメソッド + @GET("rooms/{rid}/state") + Call getState( + @Path("rid") String rid + ); + + //----------------------------------------------- + //部屋の状態を記録するメソッド + @FormUrlEncoded + @PUT("rooms/{rid}/state") + Call putState( + @Path("rid") String rid, + @Field("nickname") String nickname, + @Field("state") Integer state + ); +} diff --git a/app/src/main/res/layout/activity_enter_room.xml b/app/src/main/res/layout/activity_enter_room.xml index cbbf45e..7b8ed06 100644 --- a/app/src/main/res/layout/activity_enter_room.xml +++ b/app/src/main/res/layout/activity_enter_room.xml @@ -47,7 +47,7 @@ app:layout_constraintVertical_bias="0.084" /> + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_owner_room.xml b/app/src/main/res/layout/activity_owner_room.xml index 3d8d964..78046f0 100644 --- a/app/src/main/res/layout/activity_owner_room.xml +++ b/app/src/main/res/layout/activity_owner_room.xml @@ -4,120 +4,136 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:backgroundTint="#804747" tools:context=".OwnerRoomActivity"> - -