diff --git a/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java b/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java index 696407e..2d461a6 100644 --- a/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java +++ b/app/src/main/java/com/example/tampopo_client/views/FriendIconView.java @@ -30,8 +30,8 @@ private TextView mFriendNickname; private ImageView mFriendChatNotification; private boolean chatNotification = false; - private String friendActivity; private String friendUserId; + private String friendUserNickname; private ChatViewModel chatViewModel; // TODO: CHANGE @@ -41,8 +41,7 @@ public void onChanged(List activityList) { if (activityList != null && !activityList.isEmpty()) { Activity act = activityList.get(0); - friendActivity = act.getText(); - setComment(act.getUserId()); + setComment(act.getText()); } } }; @@ -57,7 +56,11 @@ //chatLiveData private final Observer chatObserver = new Observer() { @Override - public void onChanged(String chat) { + public void onChanged(String fromUserId) { + if (friendUserId.equals(fromUserId)) { + chatNotification = true; + mFriendChatNotification.setVisibility(View.VISIBLE); + } } }; @@ -69,9 +72,10 @@ return chatObserver; } - public FriendIconView(Context context, String friendUserId, ChatViewModel chatViewModel) { + public FriendIconView(Context context, String friendUserId,String friendUserNickname, ChatViewModel chatViewModel) { this(context); this.friendUserId = friendUserId; + this.friendUserNickname = friendUserNickname; this.chatViewModel = chatViewModel; init(null, 0); } @@ -114,34 +118,35 @@ //iconを押したらチャットを始めることができる(チャットのダイアログができたらFriendActivityを変更) mFriendIcon.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { + //通話に出る場合 if (chatNotification) { - Context ctx = getContext(); - Intent intent = new Intent(ctx, ChatActivity.class); - ctx.startActivity(intent); - mFriendChatNotification.setVisibility(View.GONE); - } else { - // 通話をかける場合 - showCallRequestDialog(getContext(), FriendIconView.this.friendUserId); + answeringCallDialog(getContext(), FriendIconView.this.friendUserNickname); + } // 通話をかける場合 + else if(!chatNotification){ + showCallRequestDialog(getContext(), FriendIconView.this.friendUserNickname); } } }); } - public void showCallRequestDialog(Context context, String fromUserName) { - Dialog dialog = new Dialog(context); - dialog.setContentView(R.layout.dialog_chat_receved); - dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); - dialog.getWindow().setDimAmount(0.5f); + //通話に出る際のダイアログの表示 + public void answeringCallDialog(Context context, String fromUserNickname){ + Dialog fromDialog = new Dialog(context); + fromDialog.setContentView(R.layout.dialog_chat_receved); + fromDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); + fromDialog.getWindow().setDimAmount(0.5f); // メッセージテキスト - TextView tvMessage = dialog.findViewById(R.id.tv_message); - tvMessage.setText(fromUserName + " さんと通話を開始しますか?"); + TextView tvMessage = fromDialog.findViewById(R.id.tv_message); + tvMessage.setText(fromUserNickname + " さんから通話リクエストが届いています。\n通話を開始しますか?"); // 開始ボタン - Button btnStart = dialog.findViewById(R.id.btn_start); + Button btnStart = fromDialog.findViewById(R.id.btn_start); btnStart.setOnClickListener(v -> { Toast.makeText(context, "通話を開始しました", Toast.LENGTH_SHORT).show(); - dialog.dismiss(); + fromDialog.dismiss(); + mFriendChatNotification.setVisibility(View.GONE);//赤丸を消す + chatNotification = false; // 通話を開始する Tampopo tampopo = (Tampopo) ((MainActivity) getContext()).getApplication(); @@ -150,25 +155,58 @@ // ChatActivityに画面遷移する Context ctx = getContext(); Intent intent = new Intent(ctx, ChatActivity.class); - intent.putExtra("friendId", friendUserId); -// intent.putExtra("chatroomId", chatroomId); - ctx.startActivity(intent); }); // キャンセルボタン - Button btnCancel = dialog.findViewById(R.id.btn_cancel); - btnCancel.setOnClickListener(v -> dialog.dismiss()); + Button btnCancel = fromDialog.findViewById(R.id.btn_cancel); + btnCancel.setOnClickListener(v -> fromDialog.dismiss()); - dialog.show(); + fromDialog.show(); } + //通話をかける際のダイアログの表示 + public void showCallRequestDialog(Context context, String toUserNickname) { + Dialog toDialog = new Dialog(context); + toDialog.setContentView(R.layout.dialog_chat_receved); + toDialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); + toDialog.getWindow().setDimAmount(0.5f); + + // メッセージテキスト + TextView tvMessage = toDialog.findViewById(R.id.tv_message); + tvMessage.setText(toUserNickname + " さんと通話を開始しますか?"); + + // 開始ボタン + Button btnStart = toDialog.findViewById(R.id.btn_start); + btnStart.setOnClickListener(v -> { + Toast.makeText(context, "通話を開始しました", Toast.LENGTH_SHORT).show(); + toDialog.dismiss(); + + // 通話を開始する + Tampopo tampopo = (Tampopo) ((MainActivity) getContext()).getApplication(); +// String chatroomId = chatViewModel.enterChatroom(tampopo.getUserId(), friendUserId, tampopo.getToken()); + + // ChatActivityに画面遷移する + Context ctx = getContext(); + Intent intent = new Intent(ctx, ChatActivity.class); + ctx.startActivity(intent); + }); + + // キャンセルボタン + Button btnCancel = toDialog.findViewById(R.id.btn_cancel); + btnCancel.setOnClickListener(v -> toDialog.dismiss()); + + toDialog.show(); + } + + //変更されたニックネームをセット public void setNickname(String nickname) { if (mFriendNickname != null) { mFriendNickname.setText(nickname); } } + //アクティビティの背景(吹き出し) public void setImageResource(int resId) { if (mFriendIcon != null) { mFriendIcon.setImageResource(resId); @@ -179,6 +217,7 @@ return mFriendIcon; } + //アクティビティをセット public void setComment(String comment) { if (mFriendComment != null) { int comment_length = comment.length(); @@ -229,6 +268,7 @@ public void setChatNotification(boolean chat) { //チャットを終了するときのonclickで一緒にsetChatNotification(false)もする(アイコン周りの赤丸を消す) //true(チャット通知が来た時)なら表示 + chatNotification = chat; if (chat) { mFriendChatNotification.setVisibility(View.VISIBLE); }