mirror of
				https://framagit.org/tom79/fedilab-tube
				synced 2025-06-05 21:09:11 +02:00 
			
		
		
		
	some tries
This commit is contained in:
		| @@ -33,15 +33,14 @@ import android.view.LayoutInflater; | ||||
| import android.view.MotionEvent; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| import android.widget.Button; | ||||
| import android.widget.EditText; | ||||
| import android.widget.ImageView; | ||||
| import android.widget.LinearLayout; | ||||
| import android.widget.TextView; | ||||
| import android.widget.Toast; | ||||
|  | ||||
| import androidx.annotation.NonNull; | ||||
| import androidx.appcompat.widget.PopupMenu; | ||||
| import androidx.constraintlayout.widget.ConstraintLayout; | ||||
| import androidx.core.content.ContextCompat; | ||||
| import androidx.lifecycle.LifecycleOwner; | ||||
| import androidx.lifecycle.ViewModelProvider; | ||||
| @@ -59,6 +58,7 @@ import app.fedilab.fedilabtube.client.APIResponse; | ||||
| import app.fedilab.fedilabtube.client.RetrofitPeertubeAPI; | ||||
| import app.fedilab.fedilabtube.client.data.CommentData.Comment; | ||||
| import app.fedilab.fedilabtube.client.entities.Report; | ||||
| import app.fedilab.fedilabtube.databinding.DrawerCommentBinding; | ||||
| import app.fedilab.fedilabtube.helper.CommentDecorationHelper; | ||||
| import app.fedilab.fedilabtube.helper.EmojiHelper; | ||||
| import app.fedilab.fedilabtube.helper.Helper; | ||||
| @@ -104,8 +104,8 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|     public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { | ||||
|  | ||||
|         context = parent.getContext(); | ||||
|         LayoutInflater layoutInflater = LayoutInflater.from(this.context); | ||||
|         return new ViewHolder(layoutInflater.inflate(R.layout.drawer_comment, parent, false)); | ||||
|         DrawerCommentBinding itemBinding = DrawerCommentBinding.inflate(LayoutInflater.from(parent.getContext()), parent, false); | ||||
|         return new ViewHolder(itemBinding); | ||||
|     } | ||||
|  | ||||
|     @SuppressLint({"SetJavaScriptEnabled", "ClickableViewAccessibility"}) | ||||
| @@ -121,23 +121,25 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|  | ||||
|         if (comment == null) | ||||
|             return; | ||||
|         holder.main_container.setTag(i); | ||||
|         holder.binding.mainContainer.setTag(i); | ||||
|  | ||||
|         LinearLayout.LayoutParams params = new LinearLayout.LayoutParams( | ||||
|                 LinearLayout.LayoutParams.MATCH_PARENT, | ||||
|                 LinearLayout.LayoutParams.WRAP_CONTENT | ||||
|         ConstraintLayout.LayoutParams params = new ConstraintLayout.LayoutParams( | ||||
|                 (int) Helper.convertDpToPixel(40, context), | ||||
|                 (int) Helper.convertDpToPixel(40, context) | ||||
|         ); | ||||
|         if (comment.isReply()) { | ||||
|             int ident = CommentDecorationHelper.getIndentation(comment.getInReplyToCommentId(), comments); | ||||
|             holder.decoration.setVisibility(View.VISIBLE); | ||||
|             holder.binding.decorationCurved.setVisibility(View.VISIBLE); | ||||
|             holder.binding.decorationCurvedLine.setVisibility(View.VISIBLE); | ||||
|             params.setMargins((int) Helper.convertDpToPixel(ident * 10, context), 0, 0, 0); | ||||
|         } else { | ||||
|             holder.decoration.setVisibility(View.GONE); | ||||
|             holder.binding.decorationCurved.setVisibility(View.GONE); | ||||
|             holder.binding.decorationCurvedLine.setVisibility(View.GONE); | ||||
|             params.setMargins(0, 0, 0, 0); | ||||
|         } | ||||
|         holder.main_container.setLayoutParams(params); | ||||
|         holder.more_actions.setOnClickListener(view -> { | ||||
|             PopupMenu popup = new PopupMenu(context, holder.more_actions); | ||||
|         holder.binding.commentAccountProfile.setLayoutParams(params); | ||||
|         holder.binding.moreActions.setOnClickListener(view -> { | ||||
|             PopupMenu popup = new PopupMenu(context, holder.binding.moreActions); | ||||
|             popup.getMenuInflater() | ||||
|                     .inflate(R.menu.comment_menu, popup.getMenu()); | ||||
|             if (!Helper.isOwner(context, comment.getAccount())) { | ||||
| @@ -219,7 +221,7 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|             }); | ||||
|             popup.show(); | ||||
|         }); | ||||
|         holder.comment_content.setOnTouchListener((view, motionEvent) -> { | ||||
|         holder.binding.commentContent.setOnTouchListener((view, motionEvent) -> { | ||||
|             if (motionEvent.getAction() == MotionEvent.ACTION_UP && !view.hasFocus()) { | ||||
|                 try { | ||||
|                     view.requestFocus(); | ||||
| @@ -234,22 +236,22 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|             commentSpan = Html.fromHtml(EmojiHelper.shortnameToUnicode(comment.getText()), Html.FROM_HTML_MODE_COMPACT); | ||||
|         else | ||||
|             commentSpan = Html.fromHtml(EmojiHelper.shortnameToUnicode(comment.getText())); | ||||
|         holder.comment_content.setText(commentSpan, TextView.BufferType.SPANNABLE); | ||||
|         holder.binding.commentContent.setText(commentSpan, TextView.BufferType.SPANNABLE); | ||||
|  | ||||
|         holder.comment_content.setMovementMethod(LinkMovementMethod.getInstance()); | ||||
|         holder.binding.commentContent.setMovementMethod(LinkMovementMethod.getInstance()); | ||||
|  | ||||
|         holder.comment_account_displayname.setText(comment.getAccount().getDisplayName()); | ||||
|         holder.binding.commentAccountDisplayname.setText(comment.getAccount().getDisplayName()); | ||||
|  | ||||
|  | ||||
|         if (context instanceof PeertubeActivity && !isThread) { | ||||
|             holder.main_container.setOnClickListener(v -> ((PeertubeActivity) context).openCommentThread(comment)); | ||||
|             holder.comment_content.setOnClickListener(v -> ((PeertubeActivity) context).openCommentThread(comment)); | ||||
|             holder.binding.mainContainer.setOnClickListener(v -> ((PeertubeActivity) context).openCommentThread(comment)); | ||||
|             holder.binding.commentContent.setOnClickListener(v -> ((PeertubeActivity) context).openCommentThread(comment)); | ||||
|         } | ||||
|         if (comment.getTotalReplies() > 0) { | ||||
|             holder.number_of_replies.setVisibility(View.VISIBLE); | ||||
|             holder.number_of_replies.setText(context.getResources().getQuantityString(R.plurals.number_of_replies, comment.getTotalReplies(), comment.getTotalReplies())); | ||||
|             holder.binding.numberOfReplies.setVisibility(View.VISIBLE); | ||||
|             holder.binding.numberOfReplies.setText(context.getResources().getQuantityString(R.plurals.number_of_replies, comment.getTotalReplies(), comment.getTotalReplies())); | ||||
|         } else { | ||||
|             holder.number_of_replies.setVisibility(View.GONE); | ||||
|             holder.binding.numberOfReplies.setVisibility(View.GONE); | ||||
|         } | ||||
|  | ||||
|         if (comment.getAccount() != null) { | ||||
| @@ -265,10 +267,10 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|                     wordtoSpan.setSpan(new ForegroundColorSpan(ContextCompat.getColor(context, android.R.color.darker_gray)), matchStart, matchEnd, Spanned.SPAN_INCLUSIVE_EXCLUSIVE); | ||||
|                 } | ||||
|             } | ||||
|             holder.comment_account_username.setText(wordtoSpan); | ||||
|             holder.binding.commentAccountUsername.setText(wordtoSpan); | ||||
|         } | ||||
|  | ||||
|         holder.comment_date.setText(Helper.dateDiff(context, comment.getCreatedAt())); | ||||
|         holder.binding.commentDate.setText(Helper.dateDiff(context, comment.getCreatedAt())); | ||||
|  | ||||
|         String avatarUrl; | ||||
|         if (instance != null) { | ||||
| @@ -276,9 +278,9 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|         } else { | ||||
|             avatarUrl = comment.getAccount().getAvatar() != null ? comment.getAccount().getAvatar().getPath() : null; | ||||
|         } | ||||
|         Helper.loadGiF(context, avatarUrl, holder.comment_account_profile); | ||||
|         Helper.loadGiF(context, avatarUrl, holder.binding.commentAccountProfile); | ||||
|  | ||||
|         holder.comment_account_profile.setOnClickListener(v -> { | ||||
|         holder.binding.commentAccountProfile.setOnClickListener(v -> { | ||||
|             Bundle b = new Bundle(); | ||||
|             Intent intent = new Intent(context, ShowAccountActivity.class); | ||||
|             b.putParcelable("account", comment.getAccount()); | ||||
| @@ -287,17 +289,17 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|             context.startActivity(intent); | ||||
|         }); | ||||
|         if (comment.isReply()) { | ||||
|             holder.replyButton.setVisibility(View.VISIBLE); | ||||
|             holder.binding.replyButton.setVisibility(View.VISIBLE); | ||||
|         } else { | ||||
|             holder.replyButton.setVisibility(View.GONE); | ||||
|             holder.binding.replyButton.setVisibility(View.GONE); | ||||
|         } | ||||
|         if (i == 0 && isThread) { | ||||
|             holder.post_reply_button.setVisibility(View.VISIBLE); | ||||
|             holder.binding.postReplyButton.setVisibility(View.VISIBLE); | ||||
|         } else { | ||||
|             holder.post_reply_button.setVisibility(View.GONE); | ||||
|             holder.binding.postReplyButton.setVisibility(View.GONE); | ||||
|         } | ||||
|         holder.post_reply_button.setOnClickListener(v -> ((PeertubeActivity) context).openPostComment(comment, i)); | ||||
|         holder.replyButton.setOnClickListener(v -> ((PeertubeActivity) context).openPostComment(comment, i)); | ||||
|         holder.binding.postReplyButton.setOnClickListener(v -> ((PeertubeActivity) context).openPostComment(comment, i)); | ||||
|         holder.binding.replyButton.setOnClickListener(v -> ((PeertubeActivity) context).openPostComment(comment, i)); | ||||
|     } | ||||
|  | ||||
|     public void manageVIewPostActions(RetrofitPeertubeAPI.ActionType statusAction, int i, APIResponse apiResponse) { | ||||
| @@ -358,40 +360,15 @@ public class CommentListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHo | ||||
|         void onAllCommentRemoved(); | ||||
|     } | ||||
|  | ||||
|  | ||||
|     static class ViewHolder extends RecyclerView.ViewHolder { | ||||
|         DrawerCommentBinding binding; | ||||
|  | ||||
|         TextView comment_content; | ||||
|         TextView comment_account_username; | ||||
|         TextView comment_account_displayname; | ||||
|         ImageView comment_account_profile; | ||||
|         TextView comment_date, replyButton; | ||||
|         LinearLayout main_container; | ||||
|         TextView more_actions, number_of_replies; | ||||
|         Button post_reply_button; | ||||
|         View decoration; | ||||
|  | ||||
|         @SuppressLint("SetJavaScriptEnabled") | ||||
|         ViewHolder(View itemView) { | ||||
|             super(itemView); | ||||
|             comment_content = itemView.findViewById(R.id.comment_content); | ||||
|             comment_account_username = itemView.findViewById(R.id.comment_account_username); | ||||
|             comment_account_profile = itemView.findViewById(R.id.comment_account_profile); | ||||
|             comment_account_displayname = itemView.findViewById(R.id.comment_account_displayname); | ||||
|             comment_date = itemView.findViewById(R.id.comment_date); | ||||
|             main_container = itemView.findViewById(R.id.main_container); | ||||
|             more_actions = itemView.findViewById(R.id.more_actions); | ||||
|             number_of_replies = itemView.findViewById(R.id.number_of_replies); | ||||
|             replyButton = itemView.findViewById(R.id.replyButton); | ||||
|             decoration = itemView.findViewById(R.id.decoration); | ||||
|             post_reply_button = itemView.findViewById(R.id.post_reply_button); | ||||
|  | ||||
|         ViewHolder(DrawerCommentBinding itemView) { | ||||
|             super(itemView.getRoot()); | ||||
|             binding = itemView; | ||||
|         } | ||||
|  | ||||
|         public View getView() { | ||||
|             return itemView; | ||||
|         } | ||||
|  | ||||
|  | ||||
|     } | ||||
|  | ||||
|  | ||||
| } | ||||
							
								
								
									
										63
									
								
								app/src/main/res/drawable/rounded_decoration.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										63
									
								
								app/src/main/res/drawable/rounded_decoration.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,63 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
|  | ||||
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item> | ||||
|         <shape android:shape="rectangle"> | ||||
|             <size | ||||
|                 android:width="60dp" | ||||
|                 android:height="60dp" /> | ||||
|             <corners android:bottomLeftRadius="60dp" /> | ||||
|             <stroke | ||||
|                 android:width="1dp" | ||||
|                 android:color="@color/colorAccent" /> | ||||
|         </shape> | ||||
|     </item> | ||||
|     <item | ||||
|         android:right="1dp" | ||||
|         android:top="-59dp"> | ||||
|         <shape android:shape="line"> | ||||
|             <size | ||||
|                 android:width="60dp" | ||||
|                 android:height="1dp" /> | ||||
|             <stroke | ||||
|                 android:width="1dp" | ||||
|                 android:color="?attr/backgroundColor" /> | ||||
|         </shape> | ||||
|     </item> | ||||
|     <item | ||||
|         android:right="-60dp" | ||||
|         android:top="-60dp"> | ||||
|         <rotate | ||||
|             android:fromDegrees="90" | ||||
|             android:pivotX="50%" | ||||
|             android:pivotY="50%" | ||||
|             android:toDegrees="-90"> | ||||
|             <shape android:shape="line"> | ||||
|                 <size | ||||
|                     android:width="60dp" | ||||
|                     android:height="1dp" /> | ||||
|                 <stroke | ||||
|                     android:width="1dp" | ||||
|                     android:color="?attr/backgroundColor" /> | ||||
|             </shape> | ||||
|         </rotate> | ||||
|     </item> | ||||
|     <item> | ||||
|         <clip> | ||||
|             <rotate | ||||
|                 android:fromDegrees="90" | ||||
|                 android:pivotX="50%" | ||||
|                 android:pivotY="50%" | ||||
|                 android:toDegrees="-90"> | ||||
|                 <shape android:shape="line"> | ||||
|                     <size | ||||
|                         android:width="60dp" | ||||
|                         android:height="1dp" /> | ||||
|                     <stroke | ||||
|                         android:width="1dp" | ||||
|                         android:color="?attr/backgroundColor" /> | ||||
|                 </shape> | ||||
|             </rotate> | ||||
|         </clip> | ||||
|     </item> | ||||
| </layer-list> | ||||
							
								
								
									
										24
									
								
								app/src/main/res/drawable/rounded_decoration_2.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								app/src/main/res/drawable/rounded_decoration_2.xml
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
|  | ||||
| <layer-list xmlns:android="http://schemas.android.com/apk/res/android"> | ||||
|     <item> | ||||
|         <shape android:shape="rectangle"> | ||||
|             <size | ||||
|                 android:width="30dp" | ||||
|                 android:height="30dp" /> | ||||
|             <solid android:color="@color/colorAccent" /> | ||||
|             <corners android:bottomLeftRadius="30dp" /> | ||||
|         </shape> | ||||
|     </item> | ||||
|     <item | ||||
|         android:bottom="1dp" | ||||
|         android:left="1dp"> | ||||
|         <shape android:shape="rectangle"> | ||||
|             <size | ||||
|                 android:width="30dp" | ||||
|                 android:height="30dp" /> | ||||
|             <solid android:color="?attr/backgroundView" /> | ||||
|             <corners android:bottomLeftRadius="30dp" /> | ||||
|         </shape> | ||||
|     </item> | ||||
| </layer-list> | ||||
| @@ -28,11 +28,43 @@ | ||||
|     <androidx.constraintlayout.widget.ConstraintLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content"> | ||||
|  | ||||
|         <View | ||||
|             android:id="@+id/decoration" | ||||
|             android:id="@+id/decoration_middle" | ||||
|             android:visibility="gone" | ||||
|             android:layout_width="2dp" | ||||
|             android:layout_height="0dp" | ||||
|             android:background="?attr/colorAccent" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintBottom_toTopOf="@+id/decoration_curved" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|         <View | ||||
|             android:id="@+id/decoration_curved" | ||||
|             android:layout_width="15dp" | ||||
|             android:layout_height="15dp" | ||||
|             android:background="@drawable/rounded_decoration_2" | ||||
|             android:visibility="gone" | ||||
|             app:layout_constraintBottom_toBottomOf="parent" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|         <View | ||||
|             android:id="@+id/decoration_curved_line" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="1dp" | ||||
|             android:background="@color/colorAccent" | ||||
|             android:visibility="gone" | ||||
|             app:layout_constraintBottom_toBottomOf="@+id/decoration_curved" | ||||
|             app:layout_constraintEnd_toStartOf="@+id/comment_account_profile" | ||||
|             app:layout_constraintStart_toEndOf="@+id/decoration_curved" /> | ||||
|  | ||||
|         <View | ||||
|             android:id="@+id/decoration_long" | ||||
|             android:layout_width="2dp" | ||||
|             android:layout_height="0dp" | ||||
|             android:background="?attr/colorAccent" | ||||
|             android:visibility="gone" | ||||
|             app:layout_constraintBottom_toBottomOf="parent" | ||||
|             app:layout_constraintStart_toStartOf="parent" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
| @@ -42,9 +74,10 @@ | ||||
|             android:layout_width="40dp" | ||||
|             android:layout_height="40dp" | ||||
|             android:layout_marginTop="5dp" | ||||
|             android:src="@drawable/missing_peertube" | ||||
|             android:layout_marginStart="10dp" | ||||
|             android:contentDescription="@string/profile_picture" | ||||
|             app:layout_constraintStart_toStartOf="@id/decoration" | ||||
|             app:layout_constraintStart_toStartOf="@id/decoration_long" | ||||
|             app:layout_constraintTop_toTopOf="parent" /> | ||||
|  | ||||
|         <TextView | ||||
| @@ -108,7 +141,7 @@ | ||||
|         <TextView | ||||
|             android:id="@+id/number_of_replies" | ||||
|             app:layout_constraintTop_toBottomOf="@+id/comment_content" | ||||
|             app:layout_constraintStart_toStartOf="@id/decoration" | ||||
|             app:layout_constraintStart_toStartOf="@id/comment_account_profile" | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:textColor="?attr/colorAccent"/> | ||||
|   | ||||
		Reference in New Issue
	
	Block a user