Handle clicks on posts
This commit is contained in:
@@ -230,6 +230,29 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
((UsableRecyclerView)list).setSelectorBoundsProvider(new UsableRecyclerView.SelectorBoundsProvider(){
|
||||||
|
@Override
|
||||||
|
public void getSelectorBounds(View view, Rect outRect){
|
||||||
|
outRect.set(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
|
||||||
|
RecyclerView.ViewHolder holder=list.getChildViewHolder(view);
|
||||||
|
if(holder instanceof StatusDisplayItem.Holder){
|
||||||
|
String id=((StatusDisplayItem.Holder<?>) holder).getItemID();
|
||||||
|
for(int i=0;i<list.getChildCount();i++){
|
||||||
|
View child=list.getChildAt(i);
|
||||||
|
holder=list.getChildViewHolder(child);
|
||||||
|
if(holder instanceof StatusDisplayItem.Holder){
|
||||||
|
String otherID=((StatusDisplayItem.Holder<?>) holder).getItemID();
|
||||||
|
if(otherID.equals(id)){
|
||||||
|
outRect.left=Math.min(outRect.left, child.getLeft());
|
||||||
|
outRect.top=Math.min(outRect.top, child.getTop());
|
||||||
|
outRect.right=Math.max(outRect.right, child.getRight());
|
||||||
|
outRect.bottom=Math.max(outRect.bottom, child.getBottom());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -259,6 +282,10 @@ public abstract class BaseStatusListFragment<T extends DisplayItemsParent> exten
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void onItemClick(String id){
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
protected class DisplayItemsAdapter extends UsableRecyclerView.Adapter<BindableViewHolder<StatusDisplayItem>> implements ImageLoaderRecyclerAdapter{
|
protected class DisplayItemsAdapter extends UsableRecyclerView.Adapter<BindableViewHolder<StatusDisplayItem>> implements ImageLoaderRecyclerAdapter{
|
||||||
|
|
||||||
public DisplayItemsAdapter(){
|
public DisplayItemsAdapter(){
|
||||||
|
|||||||
@@ -119,6 +119,7 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis
|
|||||||
private CustomEmojiPopupKeyboard emojiKeyboard;
|
private CustomEmojiPopupKeyboard emojiKeyboard;
|
||||||
private Status replyTo;
|
private Status replyTo;
|
||||||
private String initialReplyMentions;
|
private String initialReplyMentions;
|
||||||
|
private String uuid;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onAttach(Activity activity){
|
public void onAttach(Activity activity){
|
||||||
@@ -283,6 +284,7 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void updatePublishButtonState(){
|
private void updatePublishButtonState(){
|
||||||
|
uuid=null;
|
||||||
publishButton.setEnabled((trimmedCharCount>0 || !attachments.isEmpty()) && charCount<=charLimit && uploadingAttachment==null && failedAttachments.isEmpty() && queuedAttachments.isEmpty());
|
publishButton.setEnabled((trimmedCharCount>0 || !attachments.isEmpty()) && charCount<=charLimit && uploadingAttachment==null && failedAttachments.isEmpty() && queuedAttachments.isEmpty());
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -308,7 +310,8 @@ public class ComposeFragment extends ToolbarFragment implements OnBackPressedLis
|
|||||||
if(replyTo!=null){
|
if(replyTo!=null){
|
||||||
req.inReplyToId=replyTo.id;
|
req.inReplyToId=replyTo.id;
|
||||||
}
|
}
|
||||||
String uuid=UUID.randomUUID().toString();
|
if(uuid==null)
|
||||||
|
uuid=UUID.randomUUID().toString();
|
||||||
ProgressDialog progress=new ProgressDialog(getActivity());
|
ProgressDialog progress=new ProgressDialog(getActivity());
|
||||||
progress.setMessage(getString(R.string.publishing));
|
progress.setMessage(getString(R.string.publishing));
|
||||||
progress.setCancelable(false);
|
progress.setCancelable(false);
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ public class FooterStatusDisplayItem extends StatusDisplayItem{
|
|||||||
return Type.FOOTER;
|
return Type.FOOTER;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Holder extends BindableViewHolder<FooterStatusDisplayItem>{
|
public static class Holder extends StatusDisplayItem.Holder<FooterStatusDisplayItem>{
|
||||||
private final TextView reply, boost, favorite;
|
private final TextView reply, boost, favorite;
|
||||||
private final ImageView share;
|
private final ImageView share;
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ public class HeaderStatusDisplayItem extends StatusDisplayItem{
|
|||||||
return avaRequest;
|
return avaRequest;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Holder extends BindableViewHolder<HeaderStatusDisplayItem> implements ImageLoaderViewHolder{
|
public static class Holder extends StatusDisplayItem.Holder<HeaderStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||||
private final TextView name, username, timestamp;
|
private final TextView name, username, timestamp;
|
||||||
private final ImageView avatar, more;
|
private final ImageView avatar, more;
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ public class PhotoStatusDisplayItem extends StatusDisplayItem{
|
|||||||
return request;
|
return request;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Holder extends BindableViewHolder<PhotoStatusDisplayItem> implements ImageLoaderViewHolder{
|
public static class Holder extends StatusDisplayItem.Holder<PhotoStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||||
public final ImageView photo;
|
public final ImageView photo;
|
||||||
public Holder(Activity activity, ViewGroup parent){
|
public Holder(Activity activity, ViewGroup parent){
|
||||||
super(activity, R.layout.display_item_photo, parent);
|
super(activity, R.layout.display_item_photo, parent);
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ public class ReblogOrReplyLineStatusDisplayItem extends StatusDisplayItem{
|
|||||||
return Type.REBLOG_OR_REPLY_LINE;
|
return Type.REBLOG_OR_REPLY_LINE;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Holder extends BindableViewHolder<ReblogOrReplyLineStatusDisplayItem>{
|
public static class Holder extends StatusDisplayItem.Holder<ReblogOrReplyLineStatusDisplayItem>{
|
||||||
private final TextView text;
|
private final TextView text;
|
||||||
public Holder(Activity activity, ViewGroup parent){
|
public Holder(Activity activity, ViewGroup parent){
|
||||||
super(activity, R.layout.display_item_reblog_or_reply_line, parent);
|
super(activity, R.layout.display_item_reblog_or_reply_line, parent);
|
||||||
|
|||||||
@@ -2,7 +2,9 @@ package org.joinmastodon.android.ui.displayitems;
|
|||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.app.Fragment;
|
import android.app.Fragment;
|
||||||
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
|
import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
|
|
||||||
import org.joinmastodon.android.R;
|
import org.joinmastodon.android.R;
|
||||||
@@ -16,6 +18,7 @@ import java.util.ArrayList;
|
|||||||
|
|
||||||
import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
|
import me.grishka.appkit.imageloader.requests.ImageLoaderRequest;
|
||||||
import me.grishka.appkit.utils.BindableViewHolder;
|
import me.grishka.appkit.utils.BindableViewHolder;
|
||||||
|
import me.grishka.appkit.views.UsableRecyclerView;
|
||||||
|
|
||||||
public abstract class StatusDisplayItem{
|
public abstract class StatusDisplayItem{
|
||||||
public final String parentID;
|
public final String parentID;
|
||||||
@@ -88,4 +91,23 @@ public abstract class StatusDisplayItem{
|
|||||||
CARD,
|
CARD,
|
||||||
FOOTER,
|
FOOTER,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static abstract class Holder<T extends StatusDisplayItem> extends BindableViewHolder<T> implements UsableRecyclerView.Clickable{
|
||||||
|
public Holder(View itemView){
|
||||||
|
super(itemView);
|
||||||
|
}
|
||||||
|
|
||||||
|
public Holder(Context context, int layout, ViewGroup parent){
|
||||||
|
super(context, layout, parent);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getItemID(){
|
||||||
|
return item.parentID;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onClick(){
|
||||||
|
item.parentFragment.onItemClick(item.parentID);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ public class TextStatusDisplayItem extends StatusDisplayItem implements LinkSpan
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static class Holder extends BindableViewHolder<TextStatusDisplayItem> implements ImageLoaderViewHolder{
|
public static class Holder extends StatusDisplayItem.Holder<TextStatusDisplayItem> implements ImageLoaderViewHolder{
|
||||||
private final LinkedTextView text;
|
private final LinkedTextView text;
|
||||||
private CustomEmojiSpan[] emojiSpans;
|
private CustomEmojiSpan[] emojiSpans;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user