fix report view, allow opening posts in list
closes sk22#928 closes sk22#441
This commit is contained in:
@@ -1,8 +1,6 @@
|
|||||||
package org.joinmastodon.android.fragments.report;
|
package org.joinmastodon.android.fragments.report;
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.graphics.Canvas;
|
|
||||||
import android.graphics.Paint;
|
|
||||||
import android.graphics.Rect;
|
import android.graphics.Rect;
|
||||||
import android.net.Uri;
|
import android.net.Uri;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
@@ -25,6 +23,7 @@ import org.joinmastodon.android.model.Status;
|
|||||||
import org.joinmastodon.android.ui.OutlineProviders;
|
import org.joinmastodon.android.ui.OutlineProviders;
|
||||||
import org.joinmastodon.android.ui.displayitems.AudioStatusDisplayItem;
|
import org.joinmastodon.android.ui.displayitems.AudioStatusDisplayItem;
|
||||||
import org.joinmastodon.android.ui.displayitems.CheckableHeaderStatusDisplayItem;
|
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.LinkCardStatusDisplayItem;
|
||||||
import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem;
|
import org.joinmastodon.android.ui.displayitems.MediaGridStatusDisplayItem;
|
||||||
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
|
import org.joinmastodon.android.ui.displayitems.StatusDisplayItem;
|
||||||
@@ -97,8 +96,7 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
|||||||
.exec(accountID);
|
.exec(accountID);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
public void onToggleItem(String id){
|
||||||
public void onItemClick(String id){
|
|
||||||
if(selectedIDs.contains(id))
|
if(selectedIDs.contains(id))
|
||||||
selectedIDs.remove(id);
|
selectedIDs.remove(id);
|
||||||
else
|
else
|
||||||
@@ -121,15 +119,22 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
|||||||
RecyclerView.ViewHolder holder=parent.getChildViewHolder(view);
|
RecyclerView.ViewHolder holder=parent.getChildViewHolder(view);
|
||||||
if(holder.getAbsoluteAdapterPosition()==0 || holder instanceof CheckableHeaderStatusDisplayItem.Holder)
|
if(holder.getAbsoluteAdapterPosition()==0 || holder instanceof CheckableHeaderStatusDisplayItem.Holder)
|
||||||
return;
|
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){
|
if(holder instanceof AudioStatusDisplayItem.Holder){
|
||||||
outRect.bottom=V.dp(16);
|
outRect.bottom=V.dp(16);
|
||||||
}else if(holder instanceof LinkCardStatusDisplayItem.Holder || holder instanceof MediaGridStatusDisplayItem.Holder){
|
}else if(holder instanceof LinkCardStatusDisplayItem.Holder || holder instanceof MediaGridStatusDisplayItem.Holder){
|
||||||
outRect.bottom=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.left+=V.dp(16);
|
||||||
outRect.right=V.dp(16);
|
outRect.right=V.dp(16);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
ProgressBar topProgress=view.findViewById(R.id.top_progress);
|
ProgressBar topProgress=view.findViewById(R.id.top_progress);
|
||||||
@@ -155,9 +160,6 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
|||||||
return adapter;
|
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){
|
private void onButtonClick(View v){
|
||||||
Bundle args=new Bundle();
|
Bundle args=new Bundle();
|
||||||
args.putString("account", accountID);
|
args.putString("account", accountID);
|
||||||
@@ -201,7 +203,9 @@ public class ReportAddPostsChoiceFragment extends StatusListFragment{
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected List<StatusDisplayItem> buildDisplayItems(Status s){
|
protected List<StatusDisplayItem> 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<StatusDisplayItem> 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
|
@Override
|
||||||
|
|||||||
@@ -204,14 +204,6 @@ public class ReportReasonChoiceFragment extends StatusListFragment{
|
|||||||
float off=paint.getStrokeWidth()/2f;
|
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);
|
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);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ package org.joinmastodon.android.ui.displayitems;
|
|||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
import android.view.accessibility.AccessibilityNodeInfo;
|
||||||
import android.widget.CheckBox;
|
import android.widget.CheckBox;
|
||||||
|
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
import org.joinmastodon.android.fragments.BaseStatusListFragment;
|
||||||
|
import org.joinmastodon.android.fragments.report.ReportAddPostsChoiceFragment;
|
||||||
import org.joinmastodon.android.model.Account;
|
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.model.Status;
|
||||||
import org.joinmastodon.android.ui.views.CheckableRelativeLayout;
|
import org.joinmastodon.android.ui.views.CheckableRelativeLayout;
|
||||||
|
|
||||||
@@ -34,8 +34,16 @@ public class CheckableHeaderStatusDisplayItem extends HeaderStatusDisplayItem{
|
|||||||
public Holder(Activity activity, ViewGroup parent){
|
public Holder(Activity activity, ViewGroup parent){
|
||||||
super(activity, R.layout.display_item_header_checkable, parent);
|
super(activity, R.layout.display_item_header_checkable, parent);
|
||||||
checkbox=findViewById(R.id.checkbox);
|
checkbox=findViewById(R.id.checkbox);
|
||||||
view=(CheckableRelativeLayout) itemView;
|
view=findViewById(R.id.checkbox_wrap);
|
||||||
checkbox.setBackground(new CheckBox(activity).getButtonDrawable());
|
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
|
@Override
|
||||||
@@ -46,6 +54,12 @@ public class CheckableHeaderStatusDisplayItem extends HeaderStatusDisplayItem{
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onToggle(View v){
|
||||||
|
if(item.parentFragment instanceof ReportAddPostsChoiceFragment reportFragment){
|
||||||
|
reportFragment.onToggleItem(item.parentID);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setIsChecked(Predicate<Holder> isChecked){
|
public void setIsChecked(Predicate<Holder> isChecked){
|
||||||
this.isChecked=isChecked;
|
this.isChecked=isChecked;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -274,9 +274,11 @@ public abstract class StatusDisplayItem{
|
|||||||
}
|
}
|
||||||
PhotoLayoutHelper.TiledLayoutResult layout=PhotoLayoutHelper.processThumbs(imageAttachments);
|
PhotoLayoutHelper.TiledLayoutResult layout=PhotoLayoutHelper.processThumbs(imageAttachments);
|
||||||
MediaGridStatusDisplayItem mediaGrid=new MediaGridStatusDisplayItem(parentID, fragment, layout, imageAttachments, statusForContent);
|
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);
|
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;
|
statusForContent.sensitiveRevealed=true;
|
||||||
contentItems.add(mediaGrid);
|
contentItems.add(mediaGrid);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,40 +1,39 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<org.joinmastodon.android.ui.views.CheckableRelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:paddingTop="16dp"
|
|
||||||
android:paddingRight="16dp"
|
|
||||||
android:paddingLeft="16dp"
|
|
||||||
android:clipToPadding="false">
|
android:clipToPadding="false">
|
||||||
|
|
||||||
<FrameLayout
|
<org.joinmastodon.android.ui.views.CheckableRelativeLayout
|
||||||
android:id="@+id/checkbox_wrap"
|
android:id="@+id/checkbox_wrap"
|
||||||
android:layout_width="wrap_content"
|
android:layout_width="56dp"
|
||||||
|
android:layout_height="match_parent"
|
||||||
|
android:paddingTop="16dp">
|
||||||
|
|
||||||
|
<FrameLayout
|
||||||
|
android:layout_width="match_parent"
|
||||||
android:layout_height="46sp"
|
android:layout_height="46sp"
|
||||||
android:duplicateParentState="true">
|
android:duplicateParentState="true">
|
||||||
|
|
||||||
<View
|
<View
|
||||||
android:id="@+id/checkbox"
|
android:id="@+id/checkbox"
|
||||||
android:layout_gravity="center_vertical"
|
|
||||||
android:layout_width="32dp"
|
android:layout_width="32dp"
|
||||||
android:layout_height="32dp"
|
android:layout_height="32dp"
|
||||||
android:layout_marginStart="-4dp"
|
android:layout_gravity="center"
|
||||||
android:layout_marginTop="0dp"
|
|
||||||
android:layout_marginEnd="12dp"
|
|
||||||
android:duplicateParentState="true"/>
|
android:duplicateParentState="true"/>
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
|
</org.joinmastodon.android.ui.views.CheckableRelativeLayout>
|
||||||
|
|
||||||
<FrameLayout
|
<FrameLayout
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="-16dp"
|
android:layout_marginHorizontal="-16dp"
|
||||||
android:layout_marginStart="-16dp"
|
|
||||||
android:layout_toEndOf="@id/checkbox_wrap">
|
android:layout_toEndOf="@id/checkbox_wrap">
|
||||||
|
|
||||||
<include layout="@layout/display_item_header" />
|
<include layout="@layout/display_item_header" />
|
||||||
|
|
||||||
</FrameLayout>
|
</FrameLayout>
|
||||||
|
|
||||||
</org.joinmastodon.android.ui.views.CheckableRelativeLayout>
|
</RelativeLayout>
|
||||||
|
|||||||
@@ -54,7 +54,7 @@
|
|||||||
android:id="@+id/forward_report"
|
android:id="@+id/forward_report"
|
||||||
android:layout_width="match_parent"
|
android:layout_width="match_parent"
|
||||||
android:layout_height="wrap_content"
|
android:layout_height="wrap_content"
|
||||||
android:layout_marginTop="20dp"
|
android:layout_marginTop="8dp"
|
||||||
android:paddingHorizontal="16dp"
|
android:paddingHorizontal="16dp"
|
||||||
android:paddingVertical="12dp"
|
android:paddingVertical="12dp"
|
||||||
android:background="?android:selectableItemBackground">
|
android:background="?android:selectableItemBackground">
|
||||||
|
|||||||
Reference in New Issue
Block a user