diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment.java index dabbf898d7..13e074e84a 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportAddPostsChoiceFragment.java @@ -1,8 +1,6 @@ package org.joinmastodon.android.fragments.report; import android.app.Activity; -import android.graphics.Canvas; -import android.graphics.Paint; import android.graphics.Rect; import android.net.Uri; import android.os.Bundle; @@ -25,6 +23,7 @@ import org.joinmastodon.android.ui.OutlineProviders; import org.joinmastodon.android.ui.displayitems.AudioStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.CheckableHeaderStatusDisplayItem; +import org.joinmastodon.android.ui.displayitems.DummyStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.LinkCardStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem; import org.joinmastodon.android.ui.displayitems.StatusDisplayItem; @@ -97,8 +96,7 @@ public void onSuccess(List result){ .exec(accountID); } - @Override - public void onItemClick(String id){ + public void onToggleItem(String id){ if(selectedIDs.contains(id)) selectedIDs.remove(id); else @@ -121,13 +119,20 @@ public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull R RecyclerView.ViewHolder holder=parent.getChildViewHolder(view); if(holder.getAbsoluteAdapterPosition()==0 || holder instanceof CheckableHeaderStatusDisplayItem.Holder) return; - outRect.left=V.dp(40); + boolean isRTL=parent.getLayoutDirection()==View.LAYOUT_DIRECTION_RTL; + if(isRTL) outRect.right=V.dp(40); + else outRect.left=V.dp(40); if(holder instanceof AudioStatusDisplayItem.Holder){ outRect.bottom=V.dp(16); }else if(holder instanceof LinkCardStatusDisplayItem.Holder || holder instanceof MediaGridStatusDisplayItem.Holder){ - outRect.bottom=V.dp(16); - outRect.left+=V.dp(16); - outRect.right=V.dp(16); + outRect.bottom=V.dp(8); + if(isRTL){ + outRect.right+=V.dp(16); + outRect.left=V.dp(16); + }else{ + outRect.left+=V.dp(16); + outRect.right=V.dp(16); + } } } }); @@ -155,9 +160,6 @@ protected RecyclerView.Adapter getAdapter(){ return adapter; } - protected void drawDivider(View child, View bottomSibling, RecyclerView.ViewHolder holder, RecyclerView.ViewHolder siblingHolder, RecyclerView parent, Canvas c, Paint paint){ - } - private void onButtonClick(View v){ Bundle args=new Bundle(); args.putString("account", accountID); @@ -201,7 +203,9 @@ protected boolean wantsElevationOnScrollEffect(){ @Override protected List buildDisplayItems(Status s){ - return StatusDisplayItem.buildItems(this, s, accountID, s, knownAccounts, getFilterContext(), StatusDisplayItem.FLAG_INSET | StatusDisplayItem.FLAG_NO_FOOTER | StatusDisplayItem.FLAG_CHECKABLE | StatusDisplayItem.FLAG_MEDIA_FORCE_HIDDEN); + List items=StatusDisplayItem.buildItems(this, s, accountID, s, knownAccounts, getFilterContext(), StatusDisplayItem.FLAG_NO_FOOTER | StatusDisplayItem.FLAG_CHECKABLE | StatusDisplayItem.FLAG_MEDIA_FORCE_HIDDEN); + items.add(new DummyStatusDisplayItem(s.getID(), this)); + return items; } @Override diff --git a/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportReasonChoiceFragment.java b/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportReasonChoiceFragment.java index 7834867d0d..ede23f10a7 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportReasonChoiceFragment.java +++ b/mastodon/src/main/java/org/joinmastodon/android/fragments/report/ReportReasonChoiceFragment.java @@ -204,14 +204,6 @@ public void onDraw(@NonNull Canvas c, @NonNull RecyclerView parent, @NonNull Rec float off=paint.getStrokeWidth()/2f; c.drawRoundRect(V.dp(16)-off, top-off, parent.getWidth()-V.dp(16)+off, bottom+off, V.dp(12), V.dp(12), paint); } - - @Override - public void getItemOffsets(@NonNull Rect outRect, @NonNull View view, @NonNull RecyclerView parent, @NonNull RecyclerView.State state){ - RecyclerView.ViewHolder holder=parent.getChildViewHolder(view); - if(holder instanceof StatusDisplayItem.Holder){ - outRect.left=outRect.right=V.dp(16); - } - } }); } } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/CheckableHeaderStatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/CheckableHeaderStatusDisplayItem.java index d444a89d06..999303f5eb 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/CheckableHeaderStatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/CheckableHeaderStatusDisplayItem.java @@ -3,13 +3,13 @@ import android.app.Activity; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityNodeInfo; import android.widget.CheckBox; import org.joinmastodon.android.R; import org.joinmastodon.android.fragments.BaseStatusListFragment; +import org.joinmastodon.android.fragments.report.ReportAddPostsChoiceFragment; import org.joinmastodon.android.model.Account; -import org.joinmastodon.android.model.Notification; -import org.joinmastodon.android.model.ScheduledStatus; import org.joinmastodon.android.model.Status; import org.joinmastodon.android.ui.views.CheckableRelativeLayout; @@ -34,8 +34,16 @@ public static class Holder extends HeaderStatusDisplayItem.Holder{ public Holder(Activity activity, ViewGroup parent){ super(activity, R.layout.display_item_header_checkable, parent); checkbox=findViewById(R.id.checkbox); - view=(CheckableRelativeLayout) itemView; + view=findViewById(R.id.checkbox_wrap); checkbox.setBackground(new CheckBox(activity).getButtonDrawable()); + view.setOnClickListener(this::onToggle); + view.setAccessibilityDelegate(new View.AccessibilityDelegate(){ + @Override + public void onInitializeAccessibilityNodeInfo(View host, AccessibilityNodeInfo info){ + super.onInitializeAccessibilityNodeInfo(host, info); + info.setClassName(CheckBox.class.getName()); + } + }); } @Override @@ -46,6 +54,12 @@ public void onBind(HeaderStatusDisplayItem item){ } } + private void onToggle(View v){ + if(item.parentFragment instanceof ReportAddPostsChoiceFragment reportFragment){ + reportFragment.onToggleItem(item.parentID); + } + } + public void setIsChecked(Predicate isChecked){ this.isChecked=isChecked; } diff --git a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java index b71c585d8d..08943d3c03 100644 --- a/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java +++ b/mastodon/src/main/java/org/joinmastodon/android/ui/displayitems/StatusDisplayItem.java @@ -274,9 +274,11 @@ public static ArrayList buildItems(BaseStatusListFragment } PhotoLayoutHelper.TiledLayoutResult layout=PhotoLayoutHelper.processThumbs(imageAttachments); MediaGridStatusDisplayItem mediaGrid=new MediaGridStatusDisplayItem(parentID, fragment, layout, imageAttachments, statusForContent); - if((flags & FLAG_MEDIA_FORCE_HIDDEN)!=0) + if((flags & FLAG_MEDIA_FORCE_HIDDEN)!=0){ mediaGrid.sensitiveTitle=fragment.getString(R.string.media_hidden); - else if(statusForContent.sensitive && AccountSessionManager.get(accountID).getLocalPreferences().revealCWs && !AccountSessionManager.get(accountID).getLocalPreferences().hideSensitiveMedia) + statusForContent.sensitiveRevealed=false; + statusForContent.sensitive=true; + } else if(statusForContent.sensitive && AccountSessionManager.get(accountID).getLocalPreferences().revealCWs && !AccountSessionManager.get(accountID).getLocalPreferences().hideSensitiveMedia) statusForContent.sensitiveRevealed=true; contentItems.add(mediaGrid); } diff --git a/mastodon/src/main/res/layout/display_item_header_checkable.xml b/mastodon/src/main/res/layout/display_item_header_checkable.xml index 7b51fa1508..5c8ffc70ce 100644 --- a/mastodon/src/main/res/layout/display_item_header_checkable.xml +++ b/mastodon/src/main/res/layout/display_item_header_checkable.xml @@ -1,40 +1,39 @@ - - - - + android:layout_width="56dp" + android:layout_height="match_parent" + android:paddingTop="16dp"> - + + + + + + + - \ No newline at end of file + diff --git a/mastodon/src/main/res/layout/fragment_report_comment.xml b/mastodon/src/main/res/layout/fragment_report_comment.xml index 29364afb60..9a635cbb68 100644 --- a/mastodon/src/main/res/layout/fragment_report_comment.xml +++ b/mastodon/src/main/res/layout/fragment_report_comment.xml @@ -54,7 +54,7 @@ android:id="@+id/forward_report" android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="20dp" + android:layout_marginTop="8dp" android:paddingHorizontal="16dp" android:paddingVertical="12dp" android:background="?android:selectableItemBackground">