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 93b6087..b01017c 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 @@ -2,6 +2,7 @@ import static androidx.core.content.ContextCompat.startActivity; +import android.app.Dialog; import android.content.Context; import android.content.Intent; import android.content.res.TypedArray; @@ -14,10 +15,12 @@ import android.util.Log; import android.view.LayoutInflater; import android.view.View; +import android.widget.Button; import android.widget.FrameLayout; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.TextView; +import android.widget.Toast; import androidx.activity.EdgeToEdge; import androidx.lifecycle.Observer; @@ -51,6 +54,7 @@ private boolean chatNotification = false; private Observer> activityObserver; String friendActivity = "123"; + private String userId; public FriendIconView(Context context) { super(context); init(null, 0); @@ -86,11 +90,17 @@ //iconを押したらチャットを始めることができる(チャットのダイアログができたらFriendActivityを変更) mFriendIcon.setOnClickListener(new View.OnClickListener() { public void onClick(View v) { - Context ctx = getContext(); - Intent intent = new Intent(ctx, ChatActivity. class); - ctx.startActivity(intent); + if(chatNotification) { + Context ctx = getContext(); + Intent intent = new Intent(ctx, ChatActivity.class); + ctx.startActivity(intent); + mFriendChatNotification.setVisibility(View.GONE); + }else{ + showCallRequestDialog(getContext(),FriendIconView.this.userId); + } } }); + // if(attrs != null){ // TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.FriendIconView, defStyle, 0); // String nickname = a.getString(R.styleable.FriendIconView_nickname); @@ -134,7 +144,34 @@ // invalidateTextPaintAndMeasurements(); // } + 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); + + // メッセージテキスト + TextView tvMessage = dialog.findViewById(R.id.tv_message); + tvMessage.setText(fromUserName + " さんから通話リクエストが届いています。\n通話を開始しますか?"); + + // 開始ボタン + Button btnStart = dialog.findViewById(R.id.btn_start); + btnStart.setOnClickListener(v -> { + Toast.makeText(context, "通話を開始しました", Toast.LENGTH_SHORT).show(); + dialog.dismiss(); + Context ctx = getContext(); + Intent intent = new Intent(ctx, ChatActivity.class); + ctx.startActivity(intent); + // TODO: 実際の通話開始処理をここに書く + }); + + // キャンセルボタン + Button btnCancel = dialog.findViewById(R.id.btn_cancel); + btnCancel.setOnClickListener(v -> dialog.dismiss()); + + dialog.show(); + } public void setNickname(String nickname) { if (mFriendNickname != null) { mFriendNickname.setText(nickname); @@ -180,7 +217,8 @@ //uidを引数にカスタムビューにニックネーム,コメント,アイコンをセットする public void setAccount(String uid){ - setNickname("haru"); + this.userId = uid; + setNickname(userId); setComment((friendActivity)); String imageUrl = "http://nitta-lab-www.is.konan-u.ac.jp/tampopo-data/icon" + uid + ".jpg"; Glide.with(getContext())