diff --git a/.idea/deploymentTargetDropDown.xml b/.idea/deploymentTargetDropDown.xml
new file mode 100644
index 0000000..38fe66f
--- /dev/null
+++ b/.idea/deploymentTargetDropDown.xml
@@ -0,0 +1,17 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 02549a2..7dae684 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -13,7 +13,6 @@
-
@@ -23,8 +22,6 @@
-
-
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index df9f9d6..6168258 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -20,7 +20,7 @@
+ android:screenOrientation="landscape" >
@@ -39,6 +39,7 @@
android:name=".MemberRoomActivity"
android:exported="true"
android:screenOrientation="landscape" />
+
call, Response response) {
if (response.isSuccessful()) {
//ridとnicknameをIrisへ
- String rid = response.body().getRid();
+ /*String rid = response.body().getRid();
((Iris) getApplication()).setRid(rid);
- ((Iris) getApplication()).setNickname(nickname);
+ ((Iris) getApplication()).setNickname(nickname);*/
//次の画面へ遷移
Intent intent = new Intent(CreateRoomActivity.this,OwnerRoomActivity.class);
startActivity(intent);
diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
index 4575e47..ffdbe20 100644
--- a/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingActivity.java
@@ -1,14 +1,74 @@
package org.ntlab.irisclient;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+import android.content.Intent;
import android.os.Bundle;
+import android.view.View;
+import android.widget.TextView;
-public class DrawingActivity extends AppCompatActivity {
+import org.ntlab.irisclient.viewmodels.DrawingStateViewModel;
+
+import java.util.List;
+
+public class DrawingActivity extends AppCompatActivity implements View.OnClickListener {
+
+ private DrawingCanvas drawingCanvas;
+ DrawingStateViewModel drawingStateViewModel = new ViewModelProvider(this).get(DrawingStateViewModel.class);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_drawing);
+
+ drawingCanvas = (DrawingCanvas) findViewById(R.id.canvas);
+
+ //Irisから必要な情報を取得
+ Iris iris = (Iris) this.getApplication();
+ String rid = iris.getRid();
+ String nickName = iris.getNickname();
+
+ //viewModelに必用な情報をセット
+ drawingStateViewModel.setRid(rid);
+ drawingStateViewModel.setNickName(nickName);
+
+ findViewById(R.id.okButtton).setOnClickListener(this);//お絵描き終了ボタン
+ TextView textKeyword =(TextView)findViewById(R.id.textKeyword);//keywordのTextView
+
+ //getKeywords
+ List keywords = drawingStateViewModel.getKeywords(rid);
+
+ //getDno
+ drawingStateViewModel.getDno().observe(this, new Observer() {
+ @Override
+ public void onChanged(Integer dno) {
+ String keyword = keywords.get(dno);
+ textKeyword.setText(keyword);
+ }
+ });
+
+ //getState
+ drawingStateViewModel.getState().observe(this, new Observer() {
+ @Override
+ public void onChanged(Integer state) {
+ //stateが変わったらゲーム画面へ遷移
+ Intent intent = new Intent(DrawingActivity.this, GameActivity.class);
+ startActivity(intent);
+ }
+ });
+ //タイマースタート呼び出し
+ drawingStateViewModel.start(500);
}
+
+ @Override
+ public void onClick(View v){
+ if(v.getId() == R.id.okButtton) {//okButtonが押されたときの処理
+ drawingStateViewModel.putDrawing();
+ }else if(v.getId() == R.id.clearButton){//clearButtonが押されたときの処理
+ drawingCanvas.clearCanvas();
+ }
+ }
+
}
\ No newline at end of file
diff --git a/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
new file mode 100644
index 0000000..9c11905
--- /dev/null
+++ b/app/src/main/java/org/ntlab/irisclient/DrawingCanvas.java
@@ -0,0 +1,70 @@
+package org.ntlab.irisclient;
+
+import android.content.Context;
+import android.graphics.Canvas;
+import android.graphics.Color;
+import android.graphics.Paint;
+import android.graphics.Path;
+import android.util.AttributeSet;
+import android.view.MotionEvent;
+import android.view.View;
+
+import androidx.annotation.Nullable;
+
+public class DrawingCanvas extends View {
+
+ private Path path;
+ private Paint paint;
+
+ public DrawingCanvas(Context context, @Nullable AttributeSet attrs) {
+ super(context, attrs);
+
+ //1)コンストラクタ(≒必需品)
+ path = new Path();//線を引いたり、図形を描いたり、要するにグラフィック
+
+ paint = new Paint();//筆の種類
+ paint.setColor(Color.RED);//色の指定
+ paint.setStyle(Paint.Style.STROKE);//線をひく
+ paint.setStrokeWidth(20);//幅
+ }
+
+ //2)onDraw(描画の準備/プロペラが回りだした状態)
+ @Override
+ protected void onDraw(Canvas canvas) {
+ super.onDraw(canvas);
+ canvas.drawPath(path,paint);
+ }
+
+ //3)実際の操縦 (条件分岐:押したとき、動かしたとき、放した時)
+ @Override
+ public boolean onTouchEvent(MotionEvent event) {
+ //(3-1)座標を取得(x座標、y座標)
+ float x = event.getX();
+ float y = event.getY();
+
+ //(3-2)タッチの処理
+ switch (event.getAction()){
+ case MotionEvent.ACTION_DOWN://タッチした瞬間
+ path.moveTo(x,y);
+ invalidate();
+ break;
+ case MotionEvent.ACTION_MOVE://動かしている間
+ path.lineTo(x,y);
+ invalidate();
+ break;
+ case MotionEvent.ACTION_UP://手を離す
+ break;
+ }
+
+ //return super.onTouchEvent(event);
+ return true;
+ }
+
+
+ //4)クリア処理
+ public void clearCanvas(){
+ path.reset();
+ invalidate();
+ }
+
+}
diff --git a/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java
index 1a45425..b5c51d3 100644
--- a/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/EnterRoomActivity.java
@@ -69,11 +69,12 @@
public void onResponse(Call call, Response response) {
if(response.isSuccessful()){
- /*String responseRid = response.body().getRid();
- ((Iris) getApplication()).setRid(responseRid);*/
+ String responseRid = response.body().getRid();
+ ((Iris) getApplication()).setRid(responseRid);
+ ((Iris) getApplication()).setNickname(name);
Intent intent = new Intent(EnterRoomActivity.this,MemberRoomActivity.class);
- intent.putExtra("nickname", name);
+ //intent.putExtra("nickname", name);
startActivity(intent);
}else {
Snackbar.make(v, "部屋に同名のプレイヤーがいるか,満席です", Snackbar.LENGTH_LONG).show();
diff --git a/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java b/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java
index b18a537..371c130 100644
--- a/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java
+++ b/app/src/main/java/org/ntlab/irisclient/MemberListAdapter.java
@@ -8,31 +8,83 @@
import android.widget.ArrayAdapter;
import android.widget.TextView;
-import org.ntlab.irisclient.models.Member;
+import java.util.List;
public class MemberListAdapter extends ArrayAdapter {
- private LayoutInflater mLayoutInflater;
+ static class ViewHolder {
+ TextView textView;
+ }
+ private LayoutInflater inflater;
+ private final int itemLayoutId;
+ private final List memberList;
final int redColor = Color.rgb(172, 32,32);
final int blueColor = Color.rgb(32, 32, 172);
final int grayColor = Color.rgb(172, 172, 172);
- public MemberListAdapter(Context context) {
+ public MemberListAdapter(Context context, int itemLayoutId,
+ List members) {
super(context, 0);
- mLayoutInflater = LayoutInflater.from(context);
+ this.inflater = (LayoutInflater) context.getSystemService(
+ Context.LAYOUT_INFLATER_SERVICE);
+ this.itemLayoutId = itemLayoutId;
+ this.memberList = members;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
+ ViewHolder holder;
+
+ if (convertView == null) {
+ // activity_member_room.xml に member_list_layout.xml を inflate して convertView とする
+ convertView = inflater.inflate(itemLayoutId, parent, false);
+
+ // ViewHolder を生成
+ holder = new ViewHolder();
+ holder.textView = convertView.findViewById(R.id.textView);
+
+ convertView.setTag(holder);
+
+ if (position == 0) {
+ // 背景色を変える
+ convertView.setBackgroundColor(Color.rgb(255, 127, 255));
+ }else{
+ convertView.setBackgroundColor(Color.rgb(0, 125, 0));
+ }
+ }
+ else {
+ holder = (ViewHolder) convertView.getTag();
+ }
+
+ // 現在の position にあるファイル名リストを holder の textView にセット
+ holder.textView.setText(memberList.get(position));
+
+ return convertView;
+/*
View root = mLayoutInflater.inflate(R.layout.activity_member_room, null);
String item = getItem(position);
root.setBackgroundColor(redColor);
+*/
+ }
- return root;
+ @Override
+ public int getCount() {
+ // texts 配列の要素数
+ return memberList.size();
+ }
+
+ @Override
+ public String getItem(int position) {
+ return null;
+ }
+
+ @Override
+ public long getItemId(int position) {
+ return 0;
}
}
diff --git a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java
index 2e2d6cb..76ef2a2 100644
--- a/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/MemberRoomActivity.java
@@ -17,21 +17,24 @@
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 members = new ArrayList<>();
String r = "roomid";
String myName = "null";
- //String roomId = ((Iris) getApplication()).getRid();
- //private RoomViewModel roomViewModel;
@@ -41,6 +44,9 @@
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");
@@ -63,14 +69,33 @@
m2.setBelongs("b");
m2.setMaster(true);
+ Member m3 = new Member("m3");
+ m2.setBelongs("r");
+ m2.setMaster(false);
+ Member m4 = new Member("m4");
+ m2.setBelongs("b");
+ m2.setMaster(false);
+ Member m5 = new Member("m5");
+ m2.setBelongs("r");
+ m2.setMaster(false);
members.add(m1.getNickname());
members.add(m2.getNickname());
+ members.add(m3.getNickname());
+ members.add(m4.getNickname());
+ members.add(m5.getNickname());
ListView membersList = (ListView) findViewById(R.id.MembersList);
- // ArrayAdapter adapter = new MemberListAdapter(this.getApplicationContext());
- ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, members);
+ //ArrayAdapter adapter = new MemberListAdapter(this.getApplicationContext());
+ //ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_list_item_1, members);
+ /*ArrayAdapter adapter = new ArrayAdapter(this.getApplicationContext(),
+ R.layout.member_list_layout, members);*/
+ /*ArrayAdapter adapter = new ArrayAdapter(this.getApplicationContext(),
+ android.R.layout.simple_list_item_1, members);*/
+
+ BaseAdapter adapter = new MemberListAdapter(this.getApplicationContext(),
+ R.layout.member_list_layout, members);
membersList.setAdapter(adapter);
@@ -84,7 +109,18 @@
//---------------------------------------------------------------
//部屋ID情報
TextView RoomIdText = findViewById(R.id.roomID);
- RoomIdText.setText(r);
+ RoomIdText.setText(roomId);
+
+ /*roomViewModel.getMembersLiveData().observe(this, new Observer>() {
+ private List members;
+ @Override
+ public void onChanged(List members) {
+
+ }
+ });
+
+ roomViewModel.start(500);*/
+
}
/*
@@ -170,9 +206,7 @@
copyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
- r = "コピーボタン検知しました";
- TextView RoomIdText = findViewById(R.id.roomID);
- RoomIdText.setText(r);
+ Snackbar.make(v, "コピーしました", Snackbar.LENGTH_LONG).show();
}
});
}
diff --git a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java
index 98d4be8..67b9399 100644
--- a/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java
+++ b/app/src/main/java/org/ntlab/irisclient/OwnerRoomActivity.java
@@ -10,11 +10,16 @@
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
+import androidx.lifecycle.Observer;
+import androidx.lifecycle.ViewModelProvider;
+import org.ntlab.irisclient.models.Member;
import org.ntlab.irisclient.resources.RoomsRest;
+import org.ntlab.irisclient.viewmodels.RoomViewModel;
import java.util.ArrayList;
import java.util.Collections;
+import java.util.List;
import retrofit2.Call;
import retrofit2.Callback;
@@ -26,14 +31,27 @@
//フィールド
String r = "部屋ID " + "123456";
- String nickname = ((Iris) getApplication()).getNickname();
- String rid = ((Iris) getApplication()).getRid();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_owner_room);
+ String nickname = ((Iris) getApplication()).getNickname();
+ String rid = ((Iris) getApplication()).getRid();
+
+ //RoomViewModelへのアクセス
+ RoomViewModel roomViewModel = new ViewModelProvider(this).get(RoomViewModel.class);
+
+ //LiveData(List)への購読
+ roomViewModel.getMembersLiveData().observe(this, new Observer>() {
+ private List members;
+ @Override
+ public void onChanged(List members) {
+
+ }
+ });
+
//--------------------------------------------------------------------------
//各ボタン処理
ArrayList members = new ArrayList<>();
@@ -170,6 +188,10 @@
//部屋ID情報
TextView RoomIdText = findViewById(R.id.roomID);
RoomIdText.setText(r);
+
+
+
+ roomViewModel.start(500);
}
/*private getMemberInformation(){
diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java
index 47dba99..2c50ffa 100644
--- a/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/DrawingStateViewModel.java
@@ -1,13 +1,15 @@
package org.ntlab.irisclient.viewmodels;
-import org.ntlab.irisclient.models.DrawingState;
+
import org.ntlab.irisclient.resources.DrawingRest;
import org.ntlab.irisclient.resources.RoomsRest;
import androidx.lifecycle.LiveData;
import androidx.lifecycle.MutableLiveData;
-import androidx.lifecycle.ViewModel;
+import java.nio.charset.Charset;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
import java.util.List;
import retrofit2.Retrofit;
@@ -16,7 +18,7 @@
import retrofit2.Response;
import retrofit2.converter.jackson.JacksonConverterFactory;
-public class DrawingStateViewModel extends ViewModel {
+public class DrawingStateViewModel extends TimerViewModel {
final private MutableLiveData stateMutableLiveData=new MutableLiveData<>();
final private MutableLiveData dnoMutableLiveData=new MutableLiveData<>();
@@ -24,6 +26,8 @@
private Integer drawingStatePreData;
private Integer dnoPreData;
+ private String rid;
+ private String nickName;
//フィールド
public DrawingStateViewModel(MutableLiveData drawingStateMutableLiveData) {
@@ -34,14 +38,14 @@
}
//ゲッター
- public LiveData getDrawingStateLiveData(){
- return this.stateMutableLiveData;
- }
+// public LiveData getDrawingStateLiveData(){
+// return this.stateMutableLiveData;
+// }
+
public void updateState(String rid) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
- final DrawingRest drawingRest = retrofit.create(DrawingRest.class);
Call call = roomsRest.getState(rid);
call.enqueue(new Callback() {
@@ -63,41 +67,61 @@
public void onFailure(Call call, Throwable t) {
}
});
- }
-// public void updateDno(String rid) {
-//
-// final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
-// final DrawingRest drawingRest = retrofit.create(DrawingRest.class);
-// Call call = drawingRest.getDno(rid,nickname);
-//
-// call.enqueue(new Callback() {
-// @Override
-// public void onResponse(Call call, Response response) {
-// if (response.isSuccessful()){
-//
-// if(response.body().equals(drawingStatePreData)){
-// //値が一緒なら書き換えない
-// }else{
-// //値が異なるときのみライブデータを上書き
-// dnoMutableLiveData.setValue(response.body());
-// dnoPreData = response.body();
-// }
-// }
-// }
-//
-// @Override
-// public void onFailure(Call call, Throwable t) {
-// }
-// });
-// }
-public List getKeywords(String rid){
- return null;
- }
-public LiveData getDno(){
- return this.dnoMutableLiveData;
- }
-public LiveData getState(){
- return this.stateMutableLiveData;
- }
+ }
+ public void updateDno(String rid, String nickname) {
+ final DrawingRest drawingRest = retrofit.create(DrawingRest.class);
+ Call call = drawingRest.getDno(rid,nickname);
+
+ call.enqueue(new Callback() {
+ @Override
+ public void onResponse(Call call, Response response) {
+ if (response.isSuccessful()){
+
+ if(response.body().equals(drawingStatePreData)){
+ //値が一緒なら書き換えない
+ }else{
+ //値が異なるときのみライブデータを上書き
+ dnoMutableLiveData.setValue(response.body());
+ dnoPreData = response.body();
+ }
+ }
+ }
+
+ @Override
+ public void onFailure(Call call, Throwable t) {
+ }
+ });
+ }
+
+ public List getKeywords(String rid){
+ final DrawingRest drawingRest = retrofit.create(DrawingRest.class);
+ List call = (List) drawingRest.getKeywords(rid);
+ return call;
+ }
+ public LiveData getDno(){
+ return this.dnoMutableLiveData;
+ }
+ public LiveData getState(){
+ return this.stateMutableLiveData;
+ }
+
+ public void setRid(String rid){
+ this.rid = rid;
+ }
+
+ public void setNickName(String nickName){
+ this.nickName = nickName;
+ }
+ @Override
+ public void update() {
+ updateState(rid);
+ updateDno(rid, nickName);
+ }
+ public String putDrawing(){
+ String string = "sample";
+ Base64.Encoder encoder = Base64.getEncoder();
+ String encoded = encoder.encodeToString(string.getBytes());
+ return encoded;
+ }
}
diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
new file mode 100644
index 0000000..e4d1820
--- /dev/null
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/GameViewModel.java
@@ -0,0 +1,81 @@
+package org.ntlab.irisclient.viewmodels;
+
+import org.ntlab.irisclient.entities.RoomJson;
+import org.ntlab.irisclient.models.Member;
+import org.ntlab.irisclient.models.Settings;
+import org.ntlab.irisclient.resources.RoomsRest;
+
+import androidx.lifecycle.LiveData;
+import androidx.lifecycle.MutableLiveData;
+import androidx.lifecycle.ViewModel;
+
+import java.util.List;
+
+import retrofit2.Call;
+import retrofit2.Callback;
+import retrofit2.Response;
+import retrofit2.Retrofit;
+import retrofit2.converter.jackson.JacksonConverterFactory;
+
+public class GameViewModel extends TimerViewModel {
+
+
+ //フィールド
+ private String rid;
+ final private MutableLiveData roomMutableLiveData;
+ final private MutableLiveData settingsMutableLiveData;
+ final private Retrofit retrofit;
+
+ //更新比較用フィールド
+ private Settings settingsPreData;
+ private RoomJson roomJsonPreData;
+
+ //------------------------------------------------------------------
+ //コンストラクタ
+ public GameViewModel() {
+ this.roomMutableLiveData = new MutableLiveData<>();
+ this.settingsMutableLiveData = new MutableLiveData<>();
+ this.retrofit = new Retrofit.Builder()
+ .baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/")
+ .addConverterFactory(JacksonConverterFactory.create())
+ .build();
+ }
+
+ //----------------------------------------------------
+ //setter
+ public void setRid(String rid) {
+ this.rid = rid;
+ }
+
+ //--------------------------------------------------------------
+ // getter
+ public LiveData getRoomLiveData() {
+ return this.roomMutableLiveData;
+ }
+ public LiveData getSettingsLiveData() {
+ return this.settingsMutableLiveData;
+ }
+
+ //-----------------------------------------------------------------------------
+ // updates
+ @Override
+ public void update() {
+ updateRoom(rid);
+ updateDno(rid);
+ }
+ //部屋の情報の更新(RoomJson)
+ public void updateRoom(String rid) {
+ final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
+
+
+ }
+
+
+ public void updateDno(String rid) {
+ final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
+
+
+ }
+
+
+}
diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java
index 10f4836..47ccf45 100644
--- a/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/RoomViewModel.java
@@ -17,21 +17,22 @@
import retrofit2.Retrofit;
import retrofit2.converter.jackson.JacksonConverterFactory;
-public class RoomViewModel extends ViewModel {
+public class RoomViewModel extends TimerViewModel {
//フィールド
- final private MutableLiveData roomMutableLiveData;
+ private String rid;
+ final private MutableLiveData> membersLiveData;
final private MutableLiveData settingsMutableLiveData;
final private Retrofit retrofit;
//更新比較用フィールド
+ private List membersPreData;
private Settings settingsPreData;
- private RoomJson roomJsonPreData;
//------------------------------------------------------------------
//コンストラクタ
public RoomViewModel() {
- this.roomMutableLiveData = new MutableLiveData<>();
+ this.membersLiveData = new MutableLiveData<>();
this.settingsMutableLiveData = new MutableLiveData<>();
this.retrofit = new Retrofit.Builder()
.baseUrl("http://nitta-lab-www.is.konan-u.ac.jp/iris/")
@@ -40,9 +41,13 @@
}
//-----------------------------------------------------------------
+ //setter
+ public void setRid(String rid){
+ this.rid = rid;
+ }
// getter
- public LiveData getRoomLiveData() {
- return this.roomMutableLiveData;
+ public LiveData> getMembersLiveData() {
+ return this.membersLiveData;
}
public LiveData getSettingsLiveData() {
return this.settingsMutableLiveData;
@@ -50,8 +55,14 @@
//-----------------------------------------------------------------------------
// updates
+ @Override
+ public void update(){
+ updateMembers(rid);
+ updateSettings(rid);
+ }
+
//部屋の情報の更新(RoomJson)
- public void updateRoom(String rid) {
+ public void updateMembers(String rid) {
final RoomsRest roomsRest = retrofit.create(RoomsRest.class);
Call> call = roomsRest.getRoomMember(rid);
@@ -61,13 +72,18 @@
public void onResponse(Call> call, Response> response) {
if (response.isSuccessful()){
+ membersLiveData.setValue(response.body());
+ membersPreData = response.body();
+
+ /*
if(response.body().equals(roomJsonPreData)){
//値が一緒なら書き換えない
}else{
//値が異なるときのみライブデータを上書き
- roomMutableLiveData.setValue((RoomJson) response.body());
- roomJsonPreData = (RoomJson) response.body();
+ membersLiveData.setValue(response.body());
+ roomJsonPreData = response.body();
}
+ */
}
}
@@ -88,13 +104,18 @@
public void onResponse(Call call, Response response) {
if (response.isSuccessful()){
+ settingsMutableLiveData.setValue(response.body());
+ settingsPreData = response.body();
+
+ /*
if(response.body().equals(settingsPreData)){
//値が一緒なら書き換えない
}else{
//値が異なるときのみライブデータを上書き
settingsMutableLiveData.setValue(response.body());
settingsPreData = response.body();
- }
+ }*/
+
}
}
diff --git a/app/src/main/java/org/ntlab/irisclient/viewmodels/TimerViewModel.java b/app/src/main/java/org/ntlab/irisclient/viewmodels/TimerViewModel.java
new file mode 100644
index 0000000..9254669
--- /dev/null
+++ b/app/src/main/java/org/ntlab/irisclient/viewmodels/TimerViewModel.java
@@ -0,0 +1,48 @@
+package org.ntlab.irisclient.viewmodels;
+
+
+import android.util.Log;
+ import android.view.MotionEvent;
+
+ import androidx.lifecycle.LiveData;
+ import androidx.lifecycle.MutableLiveData;
+ import androidx.lifecycle.ViewModel;
+
+ import java.util.ArrayList;
+ import java.util.Collection;
+ import java.util.HashMap;
+ import java.util.Random;
+ import java.util.concurrent.ScheduledThreadPoolExecutor;
+ import java.util.concurrent.TimeUnit;
+
+
+//-----------------------------------------------------------------
+//
+abstract class TimerViewModel extends ViewModel implements Runnable {
+
+ private ScheduledThreadPoolExecutor thread = null;
+
+
+ //-----------------------------------------------------------------
+ // 一定間隔でサーバー上の筆跡を取得する(GET)
+ @Override
+ public void run() {
+ update();
+ }
+
+ public abstract void update();
+
+ //-----------------------------------------------------------------
+ //何ミリ秒ごとにrun()を実行するかを決める
+ public void start(int interval) {
+ thread = new ScheduledThreadPoolExecutor(1);
+ thread.scheduleWithFixedDelay(this, interval, 1000L, TimeUnit.MILLISECONDS);
+ }
+
+ //-----------------------------------------------------------------
+ //
+ public void stop() {
+ thread.shutdown();
+ }
+ //-----------------------------------------------------------------
+}
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_drawing.xml b/app/src/main/res/layout/activity_drawing.xml
index 5935a37..db68bde 100644
--- a/app/src/main/res/layout/activity_drawing.xml
+++ b/app/src/main/res/layout/activity_drawing.xml
@@ -7,37 +7,52 @@
tools:context=".DrawingActivity">
+
+
+ android:text="clear"
+ tools:layout_editor_absoluteX="62dp"
+ tools:layout_editor_absoluteY="280dp" />
+ tools:layout_editor_absoluteX="72dp"
+ tools:layout_editor_absoluteY="16dp" />
-
+
+
+
+
+ tools:layout_editor_absoluteX="234dp"
+ tools:layout_editor_absoluteY="79dp">
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_member_room.xml b/app/src/main/res/layout/activity_member_room.xml
index 5880112..09afd02 100644
--- a/app/src/main/res/layout/activity_member_room.xml
+++ b/app/src/main/res/layout/activity_member_room.xml
@@ -101,13 +101,13 @@
+ app:layout_constraintVertical_bias="0.619" />
\ No newline at end of file
diff --git a/app/src/main/res/layout/member_list_layout.xml b/app/src/main/res/layout/member_list_layout.xml
new file mode 100644
index 0000000..9aaf809
--- /dev/null
+++ b/app/src/main/res/layout/member_list_layout.xml
@@ -0,0 +1,18 @@
+
+
+
+
+
+
+
+