manage extra features

This commit is contained in:
Thomas 2023-09-18 16:53:38 +02:00
parent 6dc01975ef
commit 7d7311f971
4 changed files with 79 additions and 29 deletions

View file

@ -128,6 +128,8 @@ public class Status implements Serializable, Cloneable {
public String translationContent;
public boolean translationShown;
public boolean mathsShown = false;
public boolean markdownShown = false;
public boolean extraFeaturesShown = false;
public boolean canLoadMedia = false;
public transient boolean isFocused = false;
public transient boolean setCursorToEnd = false;

View file

@ -745,25 +745,24 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
holder.binding.statusAddCustomEmoji.setVisibility(View.GONE);
holder.binding.statusEmoji.setVisibility(View.GONE);
}
}
if (status.isMaths == null) {
if (status.content != null && Helper.mathsPattern.matcher(status.content).find()) {
holder.binding.actionButtonMaths.setVisibility(View.VISIBLE);
status.isMaths = true;
} else {
holder.binding.actionButtonMaths.setVisibility(View.GONE);
if (statusToDeal.markdownShown) {
if (statusToDeal.contentMarkdownSpan != null) {
holder.binding.statusContent.setText(statusToDeal.contentMarkdownSpan, TextView.BufferType.SPANNABLE);
}
} else {
if (status.isMaths) {
holder.binding.actionButtonMaths.setVisibility(View.VISIBLE);
} else {
holder.binding.actionButtonMaths.setVisibility(View.GONE);
if (statusToDeal.contentSpan != null) {
holder.binding.statusContent.setText(statusToDeal.contentSpan, TextView.BufferType.SPANNABLE);
}
}
if (status.mathsShown) {
if (statusToDeal.extraFeaturesShown) {
holder.binding.extraFeaturesPanel.setVisibility(View.VISIBLE);
holder.binding.extraFeaturesPanel.requestFocus();
} else {
holder.binding.extraFeaturesPanel.setVisibility(View.GONE);
}
if (statusToDeal.mathsShown) {
holder.binding.statusContentMaths.setVisibility(View.VISIBLE);
holder.binding.statusContent.setVisibility(View.GONE);
holder.binding.statusContentMaths.removeAllViews();
@ -799,10 +798,13 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
holder.binding.statusContent.setVisibility(View.VISIBLE);
}
holder.binding.actionButtonMaths.setOnClickListener(v -> {
status.mathsShown = !status.mathsShown;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
});
holder.binding.actionButtonMarkdown.setOnClickListener(v -> {
status.markdownShown = !status.markdownShown;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
});
holder.binding.actionButtonFavorite.setActiveImage(R.drawable.ic_round_star_24);
holder.binding.actionButtonFavorite.setInactiveImage(R.drawable.ic_round_star_border_24);
holder.binding.actionButtonBookmark.setActiveImage(R.drawable.ic_round_bookmark_24);
@ -909,15 +911,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
} else {
holder.binding.actionButtonBookmark.setVisibility(View.GONE);
}
if (displayTranslate) {
if (statusToDeal.language != null && statusToDeal.language.trim().length() > 0 && statusToDeal.language.equalsIgnoreCase(MyTransL.getLocale())) {
holder.binding.actionButtonTranslate.setVisibility(View.GONE);
} else {
holder.binding.actionButtonTranslate.setVisibility(View.VISIBLE);
}
} else {
holder.binding.actionButtonTranslate.setVisibility(View.GONE);
}
//--- ACTIONS ---
holder.binding.actionButtonBookmark.setChecked(statusToDeal.bookmarked);
//---> BOOKMARK/UNBOOKMARK
@ -1042,11 +1035,42 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
holder.binding.actionButtonExtra.setAnimation(null);
holder.binding.actionButtonExtra.setOnClickListener(v -> {
if (displayTranslate) {
if (statusToDeal.language != null && statusToDeal.language.trim().length() > 0 && statusToDeal.language.equalsIgnoreCase(MyTransL.getLocale())) {
holder.binding.actionButtonTranslate.setVisibility(View.GONE);
} else {
holder.binding.actionButtonTranslate.setVisibility(View.VISIBLE);
}
} else {
holder.binding.actionButtonTranslate.setVisibility(View.GONE);
}
if (statusToDeal.isMaths == null) {
if (statusToDeal.content != null && Helper.mathsPattern.matcher(statusToDeal.content).find()) {
holder.binding.actionButtonMaths.setVisibility(View.VISIBLE);
statusToDeal.isMaths = true;
} else {
holder.binding.actionButtonMaths.setVisibility(View.GONE);
}
} else {
if (statusToDeal.isMaths) {
holder.binding.actionButtonMaths.setVisibility(View.VISIBLE);
} else {
holder.binding.actionButtonMaths.setVisibility(View.GONE);
}
}
if (statusToDeal.contentMarkdownSpan != null) {
holder.binding.actionButtonMarkdown.setVisibility(View.VISIBLE);
} else {
holder.binding.actionButtonMarkdown.setVisibility(View.GONE);
}
holder.binding.extraFeaturesPanel.setVisibility(View.VISIBLE);
holder.binding.actionButtonExtra.setChecked(false);
});
holder.binding.buttonCloseExtraFeaturesPanel.setOnClickListener(v -> holder.binding.extraFeaturesPanel.setVisibility(View.GONE));
holder.binding.buttonCloseExtraFeaturesPanel.setOnClickListener(v -> {
statusToDeal.extraFeaturesShown = !statusToDeal.extraFeaturesShown;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
});
holder.binding.actionButtonBoost.setOnClickListener(v -> {
boolean needToWarnForMissingDescription = false;
@ -2066,9 +2090,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
}
}
} else {
Intent intent = new Intent(context, ContextActivity.class);
intent.putExtra(Helper.ARG_STATUS, statusToDeal);
context.startActivity(intent);
if (statusToDeal.extraFeaturesShown) {
statusToDeal.extraFeaturesShown = false;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
} else {
Intent intent = new Intent(context, ContextActivity.class);
intent.putExtra(Helper.ARG_STATUS, statusToDeal);
context.startActivity(intent);
}
}
}
});

View file

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:tint="#FFFFFF"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="@android:color/white"
android:pathData="M9.4,16.6L4.8,12l4.6,-4.6L8,6l-6,6 6,6 1.4,-1.4zM14.6,16.6l4.6,-4.6 -4.6,-4.6L16,6l6,6 -6,6 -1.4,-1.4z" />
</vector>

View file

@ -763,8 +763,10 @@
android:background="@drawable/bg_compose_panels"
android:padding="6dp"
android:visibility="gone"
app:constraint_referenced_ids="button_close_extra_features_panel, action_button_quote, action_button_translate, action_button_maths, status_add_custom_emoji, status_emoji"
app:flow_maxElementsWrap="3"
app:constraint_referenced_ids="button_close_extra_features_panel, action_button_quote, action_button_translate, action_button_maths, status_add_custom_emoji, status_emoji, action_button_markdown"
app:flow_horizontalGap="10dp"
app:flow_horizontalStyle="spread_inside"
app:flow_maxElementsWrap="10"
app:flow_wrapMode="aligned"
app:layout_constraintBottom_toBottomOf="@id/action_buttons"
app:layout_constraintEnd_toEndOf="@id/action_button_extra" />
@ -799,6 +801,13 @@
android:layout_height="wrap_content"
app:icon="@drawable/ic_baseline_functions_24" />
<com.google.android.material.button.MaterialButton
android:id="@+id/action_button_markdown"
style="@style/Widget.Material3.Button.IconButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:icon="@drawable/baseline_code_24" />
<com.google.android.material.button.MaterialButton
android:id="@+id/status_add_custom_emoji"