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 34e4347..61ad06e 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 @@ -1,61 +1,36 @@ package com.example.tampopo_client.views; -import static androidx.core.content.ContextCompat.startActivity; - import android.app.Dialog; import android.content.Context; import android.content.Intent; -import android.content.res.TypedArray; -import android.graphics.Canvas; -import android.graphics.Color; -import android.graphics.Paint; -import android.graphics.drawable.Drawable; -import android.text.TextPaint; import android.util.AttributeSet; -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; import com.bumptech.glide.Glide; import com.example.tampopo_client.R; import com.example.tampopo_client.models.Activity; -import com.example.tampopo_client.viewmodels.ActivityViewModel; -import com.example.tampopo_client.viewmodels.UserViewModel; import com.google.android.material.imageview.ShapeableImageView; import java.util.List; -import java.util.Map; -/** - * TODO: document your custom view class. - */ public class FriendIconView extends FrameLayout { - private String mExampleString; // TODO: use a default from R.string... - // private int mExampleColor = Color.RED; // TODO: use a default from R.color... - private float mExampleDimension = 0; // TODO: use a default from R.dimen... - private Drawable mExampleDrawable; - - private TextPaint mTextPaint; - private float mTextWidth; - private float mTextHeight; private ShapeableImageView mFriendIcon; private ImageView mFriendCommentImage; private TextView mFriendComment; private TextView mFriendNickname; private ImageView mFriendChatNotification; private boolean chatNotification = false; - private Observer> activityObserver; - String friendActivity; + private String friendActivity; private String userId; + private String chatroomId = null; // TODO: CHANGE //ActivityLiveData @@ -70,15 +45,6 @@ } }; - //iconLiveData -// private final Observer iconObserver = new Observer() { -// @Override -// public void onChanged(String iconUrl) { -// setAccount(iconUrl.getUserId()); -// // TODO: Implement this method -// } -// }; - //userLiveData private final Observer userObserver = new Observer() { @Override @@ -93,30 +59,35 @@ } }; - public Observer> getActivityObserver() { - return activityObserver; + public Observer> getActivitiesObserver() { + return activitiesObserver; } -// public Observer getIconObserver() { -// return iconObserver; -// } - - public ObservergetChatObserver(){ + public Observer getChatObserver() { return chatObserver; } + public FriendIconView(Context context, String userId) { + this(context); + this.userId = userId; + init(null, 0); + } + public FriendIconView(Context context) { super(context); + this.userId = null; init(null, 0); } public FriendIconView(Context context, AttributeSet attrs) { super(context, attrs); + this.userId = null; init(attrs, 0); } public FriendIconView(Context context, AttributeSet attrs, int defStyle) { super(context, attrs, defStyle); + this.userId = null; init(attrs, defStyle); } @@ -146,57 +117,14 @@ 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); -// if(nickname != null){ -// setNickname(nickname); -// } -// Drawable iconDrawable = a.getDrawable(R.styleable.FriendIconView_iconSrc); -// if(iconDrawable != null){ -// mFriendIcon.setImageDrawable(iconDrawable); -// } -// a.recycle(); -// } - - // Load attributes -// final TypedArray a = getContext().obtainStyledAttributes( -// attrs, R.styleable.FriendIconView, defStyle, 0); -// -// mExampleString = a.getString( -// R.styleable.FriendIconView_exampleString); -// mExampleColor = a.getColor( -// R.styleable.FriendIconView_exampleColor, -// mExampleColor); -// // Use getDimensionPixelSize or getDimensionPixelOffset when dealing with -// // values that should fall on pixel boundaries. -// mExampleDimension = a.getDimension( -// R.styleable.FriendIconView_exampleDimension, -// mExampleDimension); -// -// if (a.hasValue(R.styleable.FriendIconView_exampleDrawable)) { -// mExampleDrawable = a.getDrawable( -// R.styleable.FriendIconView_exampleDrawable); -// mExampleDrawable.setCallback(this); -// } - -// // Set up a default TextPaint object -// mTextPaint = new TextPaint(); -// mTextPaint.setFlags(Paint.ANTI_ALIAS_FLAG); -// mTextPaint.setTextAlign(Paint.Align.LEFT); -// -// // Update TextPaint and text measurements from attributes -// 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); @@ -211,10 +139,14 @@ btnStart.setOnClickListener(v -> { Toast.makeText(context, "通話を開始しました", Toast.LENGTH_SHORT).show(); dialog.dismiss(); + + // ChatActivityに画面遷移する Context ctx = getContext(); Intent intent = new Intent(ctx, ChatActivity.class); + intent.putExtra("friendId", userId); + intent.putExtra("chatroomId", chatroomId); + ctx.startActivity(intent); - // TODO: 実際の通話開始処理をここに書く }); // キャンセルボタン @@ -230,6 +162,10 @@ } } + public void setChatroomId(String chatroomId) { + this.chatroomId = chatroomId; + } + public void setImageResource(int resId) { if (mFriendIcon != null) { mFriendIcon.setImageResource(resId); @@ -270,16 +206,23 @@ // viewModel.getActivitiesLiveDataFromUserId(uid).observeForever(activityObserver); // } - //uidを引数にカスタムビューにニックネーム,コメント,アイコンをセットする - public void setAccount(String uid, String iconUrl) { - this.userId = uid; - setNickname("nitta"); - //String imageUrl = "http://nitta-lab-www.is.konan-u.ac.jp/tampopo-data/icon" + uid + ".jpg"; - Glide.with(getContext()) - .load(iconUrl) - .into(getImageView()); + /** + * FriendIconViewのアイコン画像を更新する + * + * @param iconUrl アイコン画像のURL + */ + public void setIconUrl(String iconUrl) { + Glide.with(getContext()).load(iconUrl).into(getImageView()); } + //uidを引数にカスタムビューにニックネーム,コメント,アイコンをセットする +// public void setAccount(String uid, String iconUrl) { +// this.userId = uid; +// setNickname("nitta"); +// //String imageUrl = "http://nitta-lab-www.is.konan-u.ac.jp/tampopo-data/icon" + uid + ".jpg"; +// Glide.with(getContext()).load(iconUrl).into(getImageView()); +// } + public void setChatNotification(boolean chat) { //チャットを終了するときのonclickで一緒にsetChatNotification(false)もする(アイコン周りの赤丸を消す) //true(チャット通知が来た時)なら表示 @@ -291,124 +234,4 @@ mFriendChatNotification.setVisibility(View.GONE); } } -// private void invalidateTextPaintAndMeasurements() { -// mTextPaint.setTextSize(mExampleDimension); -// mTextPaint.setColor(mExampleColor); -// mTextWidth = mTextPaint.measureText(mExampleString); -// -// Paint.FontMetrics fontMetrics = mTextPaint.getFontMetrics(); -// mTextHeight = fontMetrics.bottom; -// } - -// @Override -// protected void onDraw(Canvas canvas) { -// super.onDraw(canvas); -// -// // TODO: consider storing these as member variables to reduce -// // allocations per draw cycle. -// int paddingLeft = getPaddingLeft(); -// int paddingTop = getPaddingTop(); -// int paddingRight = getPaddingRight(); -// int paddingBottom = getPaddingBottom(); -// -// int contentWidth = getWidth() - paddingLeft - paddingRight; -// int contentHeight = getHeight() - paddingTop - paddingBottom; -// -// // Draw the text. -// canvas.drawText(mExampleString, -// paddingLeft + (contentWidth - mTextWidth) / 2, -// paddingTop + (contentHeight + mTextHeight) / 2, -// mTextPaint); -// -// // Draw the example drawable on top of the text. -// if (mExampleDrawable != null) { -// mExampleDrawable.setBounds(paddingLeft, paddingTop, -// paddingLeft + contentWidth, paddingTop + contentHeight); -// mExampleDrawable.draw(canvas); -// } -// } - - /** - * Gets the example string attribute value. - * - * @return The example string attribute value. - */ - public String getExampleString() { - return mExampleString; - } - - /** - * Sets the view"s example string attribute value. In the example view, this string - * is the text to draw. - * - * @param exampleString The example string attribute value to use. - */ -// public void setExampleString(String exampleString) { -// mExampleString = exampleString; -// invalidateTextPaintAndMeasurements(); -// } - - /** - * Gets the example color attribute value. - * - * @return The example color attribute value. - */ -// public int getExampleColor() { -// return mExampleColor; -// } - - /** - * Sets the view"s example color attribute value. In the example view, this color - * is the font color. - * - * @param exampleColor The example color attribute value to use. - */ -// public void setExampleColor(int exampleColor) { -// mExampleColor = exampleColor; -// invalidateTextPaintAndMeasurements(); -// } - - /** - * Gets the example dimension attribute value. - * - * @return The example dimension attribute value. - */ - public float getExampleDimension() { - return mExampleDimension; - } - - /** - * Sets the view"s example dimension attribute value. In the example view, this dimension - * is the font size. - * - * @param exampleDimension The example dimension attribute value to use. - */ -// public void setExampleDimension(float exampleDimension) { -// mExampleDimension = exampleDimension; -// invalidateTextPaintAndMeasurements(); -// } - - /** - * Gets the example drawable attribute value. - * - * @return The example drawable attribute value. - */ - public Drawable getExampleDrawable() { - return mExampleDrawable; - } - - /** - * Sets the view"s example drawable attribute value. In the example view, this drawable is - * drawn above the text. - * - * @param exampleDrawable The example drawable attribute value to use. - */ - public void setExampleDrawable(Drawable exampleDrawable) { - mExampleDrawable = exampleDrawable; - } - -// @Override -// public void onChanged(List activityList) { -// activityList.get(0). -// } }