Commit 7fdb7b3e authored by 0xd9a's avatar 0xd9a
Browse files

Add options to hide 'sensitive content' and 'media description' indicators

(close #925)
parent 79f8a074
Loading
Loading
Loading
Loading
+39 −21
Original line number Diff line number Diff line
@@ -260,6 +260,8 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
    private static boolean autoplaygif;
    private static int video_cache;
    private static int timeout;
    private static boolean sensitiveIndicator;
    private static boolean mediaDescriptionIndicator;

    private static int iconSize;
    private static int dp6;
@@ -1974,10 +1976,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                                    context.startActivity(mediaIntent, options.toBundle());
                                });
                            });
                            if (sensitiveIndicator) {
                                layoutMediaBinding.viewHide.setOnClickListener(v -> {
                                    statusToDeal.sensitive = !statusToDeal.sensitive;
                                    adapter.notifyItemChanged(holder.getBindingAdapterPosition());
                                });
                            } else {
                                layoutMediaBinding.viewHide.setVisibility(View.GONE);
                            }
                            ViewCompat.addAccessibilityAction(
                                    layoutMediaBinding.mediaVideo,
                                    context.getString(statusToDeal.sensitive ? R.string.cd_show_media : R.string.cd_hide_media),
@@ -2062,10 +2068,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                                    context.startActivity(mediaIntent, options.toBundle());
                                });
                            });
                            if (sensitiveIndicator) {
                                layoutMediaBinding.viewHide.setOnClickListener(v -> {
                                    statusToDeal.sensitive = !statusToDeal.sensitive;
                                    adapter.notifyItemChanged(holder.getBindingAdapterPosition());
                                });
                            } else {
                                layoutMediaBinding.viewHide.setVisibility(View.GONE);
                            }
                            ViewCompat.addAccessibilityAction(
                                    layoutMediaBinding.mediaVideo,
                                    context.getString(statusToDeal.sensitive ? R.string.cd_show_media : R.string.cd_hide_media),
@@ -3135,25 +3145,35 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        } else {
            layoutMediaBinding.playMusic.setVisibility(View.GONE);
        }
        if (attachment.description != null && !attachment.description.isEmpty()) {
        if (mediaDescriptionIndicator && (attachment.description != null && !attachment.description.isEmpty())) {
            layoutMediaBinding.viewDescription.setVisibility(View.VISIBLE);
        } else {
            layoutMediaBinding.viewDescription.setVisibility(View.GONE);
        }

        RequestBuilder<Drawable> requestBuilder = prepareRequestBuilder(context, attachment, mediaW * ratio, mediaH * ratio, focusX, focusY, statusToDeal.sensitive, false);
        if (sensitiveIndicator) {
            if (!statusToDeal.sensitive || expand_media) {
                layoutMediaBinding.viewHide.setIconResource(R.drawable.ic_baseline_visibility_24);
            } else {
                layoutMediaBinding.viewHide.setIconResource(R.drawable.ic_baseline_visibility_off_24);
            }
        requestBuilder.load(attachment.preview_url).into(layoutMediaBinding.media);

            if (statusToDeal.sensitive) {
                Helper.changeDrawableColor(context, layoutMediaBinding.viewHide, ThemeHelper.getAttColor(context, R.attr.colorError));
            } else {
                Helper.changeDrawableColor(context, layoutMediaBinding.viewHide, R.color.white);
            }

            layoutMediaBinding.viewHide.setOnClickListener(v -> {
                statusToDeal.sensitive = !statusToDeal.sensitive;
                adapter.notifyItemChanged(holder.getBindingAdapterPosition());
            });
        } else {
            layoutMediaBinding.viewHide.setVisibility(View.GONE);
        }
        requestBuilder.load(attachment.preview_url).into(layoutMediaBinding.media);

        layoutMediaBinding.media.setOnClickListener(v -> {
            if (statusToDeal.sensitive && !expand_media) {
                statusToDeal.sensitive = false;
@@ -3186,10 +3206,6 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
                context.startActivity(mediaIntent, options.toBundle());
            });
        });
        layoutMediaBinding.viewHide.setOnClickListener(v -> {
            statusToDeal.sensitive = !statusToDeal.sensitive;
            adapter.notifyItemChanged(holder.getBindingAdapterPosition());
        });
        ViewCompat.addAccessibilityAction(
                layoutMediaBinding.media,
                context.getString(statusToDeal.sensitive ? R.string.cd_show_media : R.string.cd_hide_media),
@@ -3452,6 +3468,8 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
        video_cache = sharedpreferences.getInt(context.getString(R.string.SET_VIDEO_CACHE), Helper.DEFAULT_VIDEO_CACHE_MB);
        timeout = sharedpreferences.getInt(context.getString(R.string.SET_NSFW_TIMEOUT), 5);
        video_cache = sharedpreferences.getInt(context.getString(R.string.SET_VIDEO_CACHE), Helper.DEFAULT_VIDEO_CACHE_MB);
        sensitiveIndicator = sharedpreferences.getBoolean(context.getString(R.string.SET_SENSITIVE_INDICATOR), true);
        mediaDescriptionIndicator = sharedpreferences.getBoolean(context.getString(R.string.SET_MEDIA_DESCRIPTION_INDICATOR), true);

        iconSize = (int) (Helper.convertDpToPixel(28, context) * scaleIcon);
        dp6 = (int) Helper.convertDpToPixel(6, context);
+6 −0
Original line number Diff line number Diff line
@@ -1327,6 +1327,8 @@
    <string name="SET_DISPLAY_TRANSLATE" translatable="false">SET_DISPLAY_TRANSLATE</string>
    <string name="SET_TRANSLATE_BUTTON" translatable="false">SET_TRANSLATE_BUTTON</string>
    <string name="SET_QUOTE_BUTTON" translatable="false">SET_QUOTE_BUTTON</string>
    <string name="SET_SENSITIVE_INDICATOR" translatable="false">SET_SENSITIVE_INDICATOR</string>
    <string name="SET_MEDIA_DESCRIPTION_INDICATOR" translatable="false">SET_MEDIA_DESCRIPTION_INDICATOR</string>
    <string name="SET_POST_FORMAT" translatable="false">SET_POST_FORMAT</string>
    <string name="SET_COMPOSE_LOCAL_ONLY" translatable="false">SET_COMPOSE_LOCAL_ONLY</string>

@@ -2134,6 +2136,10 @@
    <string name="icons_extra_features">Icons for extra features</string>
    <string name="icons_extra_features_visibility_summary">If your instance does not accept some extra features, you can hide these icons</string>
    <string name="set_display_quote_indication">Quote button</string>
    <string name="set_sensitive_indicator">Sensitive indicator</string>
    <string name="set_sensitive_indicator_summary">Display an indicator for sensitive media</string>
    <string name="set_media_description_indicator">Media description indicator</string>
    <string name="set_media_description_indicator_summary">Display an indicator for media with a description</string>
    <string name="set_display_reaction_indication">Display \"Reactions\" buttons</string>
    <string name="bubble">Bubble</string>
    <string name="exclude_visibility">Exclude visibility</string>
+14 −0
Original line number Diff line number Diff line
@@ -156,6 +156,20 @@
        app:icon="@drawable/ic_baseline_format_quote_24"
        app:key="@string/SET_QUOTE_BUTTON"
        app:useSimpleSummaryProvider="true" />
    <SwitchPreferenceCompat
        app:defaultValue="true"
        app:icon="@drawable/ic_compose_sensitive"
        app:key="@string/SET_SENSITIVE_INDICATOR"
        app:singleLineTitle="false"
        app:summary="@string/set_sensitive_indicator_summary"
        app:title="@string/set_sensitive_indicator" />
    <SwitchPreferenceCompat
        app:defaultValue="true"
        app:icon="@drawable/ic_outline_note_alt_24"
        app:key="@string/SET_MEDIA_DESCRIPTION_INDICATOR"
        app:singleLineTitle="false"
        app:summary="@string/set_media_description_indicator_summary"
        app:title="@string/set_media_description_indicator" />
    <ListPreference
        app:defaultValue="FEDILAB"
        app:dialogTitle="@string/translator"