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()) diff --git a/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java b/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java index b70cc11..ffb0a47 100644 --- a/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java +++ b/app/src/main/java/com/example/tampopo_client/views/TestFriendIconActivity.java @@ -33,26 +33,28 @@ float density = getResources().getDisplayMetrics().density; //FriendIconView 1個目 + String uid = "haru"; FriendIconView view1 = new FriendIconView(this); + view1.setAccount(uid); FrameLayout.LayoutParams params1 = new FrameLayout.LayoutParams( - (int) (160*density), // width in px - (int) (100*density) // height in px + (int) (250*density), // width in px + (int) (250*density) // height in px ); view1.setLayoutParams(params1); - view1.setX(100); // px単位 + view1.setX(130); // px単位 view1.setY(150); rootLayout.addView(view1); //FriendIconView 2個目 FriendIconView view2 = new FriendIconView(this); FrameLayout.LayoutParams params2 = new FrameLayout.LayoutParams( - (int) (160*density), - (int) (100*density) + (int) (250*density), + (int) (250*density) ); - view1.setLayoutParams(params2); - view1.setX(100); - view1.setY(150); - rootLayout.addView(view1); + view2.setLayoutParams(params2); + view2.setX(200); + view2.setY(600); + rootLayout.addView(view2); setContentView(rootLayout); // diff --git a/app/src/main/res/layout/activity_test_friend_icon.xml b/app/src/main/res/layout/activity_test_friend_icon.xml index 958bb93..cd14344 100644 --- a/app/src/main/res/layout/activity_test_friend_icon.xml +++ b/app/src/main/res/layout/activity_test_friend_icon.xml @@ -8,26 +8,26 @@ android:background="#E0F7FA" tools:context=".views.TestFriendIconActivity"> - + + + + + + + + + + - + + + + + + + + + + + \ No newline at end of file