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 String translationContent;
public boolean translationShown; public boolean translationShown;
public boolean mathsShown = false; public boolean mathsShown = false;
public boolean markdownShown = false;
public boolean extraFeaturesShown = false;
public boolean canLoadMedia = false; public boolean canLoadMedia = false;
public transient boolean isFocused = false; public transient boolean isFocused = false;
public transient boolean setCursorToEnd = 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.statusAddCustomEmoji.setVisibility(View.GONE);
holder.binding.statusEmoji.setVisibility(View.GONE); holder.binding.statusEmoji.setVisibility(View.GONE);
} }
} }
if (status.isMaths == null) { if (statusToDeal.markdownShown) {
if (status.content != null && Helper.mathsPattern.matcher(status.content).find()) { if (statusToDeal.contentMarkdownSpan != null) {
holder.binding.actionButtonMaths.setVisibility(View.VISIBLE); holder.binding.statusContent.setText(statusToDeal.contentMarkdownSpan, TextView.BufferType.SPANNABLE);
status.isMaths = true;
} else {
holder.binding.actionButtonMaths.setVisibility(View.GONE);
} }
} else { } else {
if (status.isMaths) { if (statusToDeal.contentSpan != null) {
holder.binding.actionButtonMaths.setVisibility(View.VISIBLE); holder.binding.statusContent.setText(statusToDeal.contentSpan, TextView.BufferType.SPANNABLE);
}
}
if (statusToDeal.extraFeaturesShown) {
holder.binding.extraFeaturesPanel.setVisibility(View.VISIBLE);
holder.binding.extraFeaturesPanel.requestFocus();
} else { } else {
holder.binding.actionButtonMaths.setVisibility(View.GONE); holder.binding.extraFeaturesPanel.setVisibility(View.GONE);
} }
} if (statusToDeal.mathsShown) {
if (status.mathsShown) {
holder.binding.statusContentMaths.setVisibility(View.VISIBLE); holder.binding.statusContentMaths.setVisibility(View.VISIBLE);
holder.binding.statusContent.setVisibility(View.GONE); holder.binding.statusContent.setVisibility(View.GONE);
holder.binding.statusContentMaths.removeAllViews(); holder.binding.statusContentMaths.removeAllViews();
@ -799,10 +798,13 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
holder.binding.statusContent.setVisibility(View.VISIBLE); holder.binding.statusContent.setVisibility(View.VISIBLE);
} }
holder.binding.actionButtonMaths.setOnClickListener(v -> { holder.binding.actionButtonMaths.setOnClickListener(v -> {
status.mathsShown = !status.mathsShown; status.mathsShown = !status.mathsShown;
adapter.notifyItemChanged(holder.getBindingAdapterPosition()); 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.setActiveImage(R.drawable.ic_round_star_24);
holder.binding.actionButtonFavorite.setInactiveImage(R.drawable.ic_round_star_border_24); holder.binding.actionButtonFavorite.setInactiveImage(R.drawable.ic_round_star_border_24);
holder.binding.actionButtonBookmark.setActiveImage(R.drawable.ic_round_bookmark_24); holder.binding.actionButtonBookmark.setActiveImage(R.drawable.ic_round_bookmark_24);
@ -909,15 +911,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
} else { } else {
holder.binding.actionButtonBookmark.setVisibility(View.GONE); 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 --- //--- ACTIONS ---
holder.binding.actionButtonBookmark.setChecked(statusToDeal.bookmarked); holder.binding.actionButtonBookmark.setChecked(statusToDeal.bookmarked);
//---> BOOKMARK/UNBOOKMARK //---> BOOKMARK/UNBOOKMARK
@ -1042,11 +1035,42 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
holder.binding.actionButtonExtra.setAnimation(null); holder.binding.actionButtonExtra.setAnimation(null);
holder.binding.actionButtonExtra.setOnClickListener(v -> { 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.extraFeaturesPanel.setVisibility(View.VISIBLE);
holder.binding.actionButtonExtra.setChecked(false); 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 -> { holder.binding.actionButtonBoost.setOnClickListener(v -> {
boolean needToWarnForMissingDescription = false; boolean needToWarnForMissingDescription = false;
@ -2065,12 +2089,17 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
position++; position++;
} }
} }
} else {
if (statusToDeal.extraFeaturesShown) {
statusToDeal.extraFeaturesShown = false;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
} else { } else {
Intent intent = new Intent(context, ContextActivity.class); Intent intent = new Intent(context, ContextActivity.class);
intent.putExtra(Helper.ARG_STATUS, statusToDeal); intent.putExtra(Helper.ARG_STATUS, statusToDeal);
context.startActivity(intent); context.startActivity(intent);
} }
} }
}
}); });
} else if (!canBeFederated) { } else if (!canBeFederated) {
holder.binding.mainContainer.setOnClickListener(v -> Helper.openBrowser(context, status.url)); holder.binding.mainContainer.setOnClickListener(v -> Helper.openBrowser(context, status.url));

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:background="@drawable/bg_compose_panels"
android:padding="6dp" android:padding="6dp"
android:visibility="gone" 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: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_maxElementsWrap="3" app:flow_horizontalGap="10dp"
app:flow_horizontalStyle="spread_inside"
app:flow_maxElementsWrap="10"
app:flow_wrapMode="aligned" app:flow_wrapMode="aligned"
app:layout_constraintBottom_toBottomOf="@id/action_buttons" app:layout_constraintBottom_toBottomOf="@id/action_buttons"
app:layout_constraintEnd_toEndOf="@id/action_button_extra" /> app:layout_constraintEnd_toEndOf="@id/action_button_extra" />
@ -799,6 +801,13 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:icon="@drawable/ic_baseline_functions_24" /> 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 <com.google.android.material.button.MaterialButton
android:id="@+id/status_add_custom_emoji" android:id="@+id/status_add_custom_emoji"