Change behavior when hidden or shown

This commit is contained in:
tom79 2019-06-26 14:18:18 +02:00
parent 1a0a017782
commit 3775db50da
2 changed files with 67 additions and 5 deletions

View File

@ -138,6 +138,7 @@ public class Status implements Parcelable{
private boolean cached = false;
private boolean autoHiddenCW = false;
private boolean customFeaturesDisplayed = false;
private boolean shortReply = false;
@Override
public void writeToParcel(Parcel dest, int flags) {
@ -199,6 +200,7 @@ public class Status implements Parcelable{
dest.writeByte(this.cached ? (byte) 1 : (byte) 0);
dest.writeByte(this.autoHiddenCW ? (byte) 1 : (byte) 0);
dest.writeByte(this.customFeaturesDisplayed ? (byte) 1 : (byte) 0);
dest.writeByte(this.shortReply ? (byte) 1 : (byte) 0);
}
protected Status(Parcel in) {
@ -262,6 +264,7 @@ public class Status implements Parcelable{
this.cached = in.readByte() != 0;
this.autoHiddenCW = in.readByte() != 0;
this.customFeaturesDisplayed = in.readByte() != 0;
this.shortReply = in.readByte() != 0;
}
public static final Creator<Status> CREATOR = new Creator<Status>() {
@ -334,6 +337,13 @@ public class Status implements Parcelable{
this.content = Helper.remove_tracking_param(content);
}
public boolean isShortReply() {
return shortReply;
}
public void setShortReply(boolean shortReply) {
this.shortReply = shortReply;
}
public Status getReblog() {
return reblog;
}

View File

@ -56,6 +56,7 @@ import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.webkit.URLUtil;
import android.webkit.WebView;
import android.webkit.WebViewClient;
@ -88,6 +89,8 @@ import com.github.stom79.mytransl.client.Results;
import com.github.stom79.mytransl.translate.Translate;
import com.varunest.sparkbutton.SparkButton;
import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
@ -115,6 +118,7 @@ import app.fedilab.android.client.Entities.TagTimeline;
import app.fedilab.android.helper.CrossActions;
import app.fedilab.android.helper.CustomTextView;
import app.fedilab.android.helper.Helper;
import app.fedilab.android.helper.MastalabAutoCompleteTextView;
import app.fedilab.android.jobs.ScheduledBoostsSyncJob;
import app.fedilab.android.sqlite.AccountDAO;
import app.fedilab.android.sqlite.Sqlite;
@ -181,6 +185,7 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
private Status toot;
private TagTimeline tagTimeline;
public static boolean fetch_all_more = false;
private RecyclerView mRecyclerView;
public StatusListAdapter(Context context, RetrieveFeedsAsyncTask.Type type, String targetedId, boolean isOnWifi, List<Status> statuses){
super();
@ -384,6 +389,13 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
TextView number_votes, remaining_time;
Button submit_vote, refresh_poll;
MastalabAutoCompleteTextView quick_reply_text;
ImageView quick_reply_switch_to_full;
TextView toot_space_left;
ImageView quick_reply_emoji;
Button quick_reply_button;
public View getView(){
return itemView;
}
@ -495,6 +507,13 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
status_account_bot = itemView.findViewById(R.id.status_account_bot);
quick_reply_text = itemView.findViewById(R.id.quick_reply_text);
quick_reply_switch_to_full = itemView.findViewById(R.id.quick_reply_switch_to_full);
toot_space_left = itemView.findViewById(R.id.toot_space_left);
quick_reply_emoji = itemView.findViewById(R.id.quick_reply_emoji);
quick_reply_button = itemView.findViewById(R.id.quick_reply_button);
}
}
@ -2121,14 +2140,30 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
holder.status_cardview_video.setVisibility(View.GONE);
}
if( status.isShortReply()){
holder.quick_reply_container.setVisibility(View.VISIBLE);
}else{
holder.quick_reply_container.setVisibility(View.GONE);
}
holder.status_reply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (holder.quick_reply_container.getVisibility() == View.GONE)
holder.quick_reply_container.setVisibility(View.VISIBLE);
else
holder.quick_reply_container.setVisibility(View.GONE);
//CrossActions.doCrossReply(context, status, type, true);
status.setShortReply(!status.isShortReply());
if( status.isShortReply()){
holder.quick_reply_text.requestFocus();
InputMethodManager inputMethodManager =
(InputMethodManager)context.getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInputFromWindow(
holder.quick_reply_text.getApplicationWindowToken(),
InputMethodManager.SHOW_FORCED, 0);
tryMoveSelection(i);
}else{
InputMethodManager imm = (InputMethodManager) context.getSystemService(Activity.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(holder.quick_reply_text.getWindowToken(), 0);
}
notifyStatusChanged(status);
}
});
@ -3609,4 +3644,21 @@ public class StatusListAdapter extends RecyclerView.Adapter implements OnPostAct
public void setConversationPosition(int position){
this.conversationPosition = position;
}
@Override
public void onAttachedToRecyclerView(@NotNull final RecyclerView recyclerView) {
super.onAttachedToRecyclerView(recyclerView);
mRecyclerView = recyclerView;
}
private void tryMoveSelection(int mSelectedItem) {
if (mSelectedItem >= 0 && mSelectedItem+1 < getItemCount()) {
mRecyclerView.smoothScrollBy(mSelectedItem, (int) Helper.convertDpToPixel(250, context));
}
}
}