Loading app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +39 −21 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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), Loading Loading @@ -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), Loading Loading @@ -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; Loading Loading @@ -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), Loading Loading @@ -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); Loading app/src/main/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading app/src/main/res/xml/pref_timelines.xml +14 −0 Original line number Diff line number Diff line Loading @@ -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" Loading Loading
app/src/main/java/app/fedilab/android/mastodon/ui/drawer/StatusAdapter.java +39 −21 Original line number Diff line number Diff line Loading @@ -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; Loading Loading @@ -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), Loading Loading @@ -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), Loading Loading @@ -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; Loading Loading @@ -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), Loading Loading @@ -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); Loading
app/src/main/res/values/strings.xml +6 −0 Original line number Diff line number Diff line Loading @@ -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> Loading Loading @@ -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> Loading
app/src/main/res/xml/pref_timelines.xml +14 −0 Original line number Diff line number Diff line Loading @@ -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" Loading