Add accessibility action to toggle media sensitivity in timelines

(related #357)
This commit is contained in:
0xd9a 2025-08-18 23:04:20 +05:30
parent 3ad57e4683
commit dbc5bae868
4 changed files with 45 additions and 1 deletions

View file

@ -86,6 +86,7 @@ import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.constraintlayout.widget.ConstraintSet;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.ViewModelProvider;
@ -1879,6 +1880,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
statusToDeal.sensitive = !statusToDeal.sensitive;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
});
ViewCompat.addAccessibilityAction(
layoutMediaBinding.mediaVideo,
context.getString(statusToDeal.sensitive ? R.string.cd_show_media : R.string.cd_hide_media),
(view, arguments) -> {
statusToDeal.sensitive = !statusToDeal.sensitive;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
return true;
});
} else {
loadAndAddAttachment(context, layoutMediaBinding, holder, adapter, mediaPosition, mediaW, mediaH, ratio, statusToDeal, attachment);
}
@ -1961,6 +1970,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
statusToDeal.sensitive = !statusToDeal.sensitive;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
});
ViewCompat.addAccessibilityAction(
layoutMediaBinding.mediaVideo,
context.getString(statusToDeal.sensitive ? R.string.cd_show_media : R.string.cd_hide_media),
(view, arguments) -> {
statusToDeal.sensitive = !statusToDeal.sensitive;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
return true;
});
} else {
loadAndAddAttachment(context, layoutMediaBinding, holder, adapter, mediaPosition, -1.f, -1.f, -1.f, statusToDeal, attachment);
}
@ -3046,6 +3063,14 @@ public class StatusAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder>
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),
(view, arguments) -> {
statusToDeal.sensitive = !statusToDeal.sensitive;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
return true;
});
if ((!statusToDeal.sensitive || expand_media) && (fullAttachement)) {
layoutMediaBinding.getRoot().setPadding(0, 0, 0, 10);

View file

@ -45,6 +45,7 @@ import androidx.appcompat.widget.LinearLayoutCompat;
import androidx.constraintlayout.widget.ConstraintSet;
import androidx.core.app.ActivityOptionsCompat;
import androidx.core.content.ContextCompat;
import androidx.core.view.ViewCompat;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStoreOwner;
@ -208,7 +209,14 @@ public class StatusDirectMessageAdapter extends RecyclerView.Adapter<RecyclerVie
status.sensitive = !status.sensitive;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
});
ViewCompat.addAccessibilityAction(
layoutMediaBinding.media,
context.getString(status.sensitive ? R.string.cd_show_media : R.string.cd_hide_media),
(view, arguments) -> {
status.sensitive = !status.sensitive;
adapter.notifyItemChanged(holder.getBindingAdapterPosition());
return true;
});
}
@NotNull
@ -687,6 +695,14 @@ public class StatusDirectMessageAdapter extends RecyclerView.Adapter<RecyclerVie
status.sensitive = !status.sensitive;
notifyItemChanged(holder.getBindingAdapterPosition());
});
ViewCompat.addAccessibilityAction(
layoutMediaBinding.mediaVideo,
context.getString(status.sensitive ? R.string.cd_show_media : R.string.cd_hide_media),
(view, arguments) -> {
status.sensitive = !status.sensitive;
notifyItemChanged(holder.getBindingAdapterPosition());
return true;
});
} else {
loadAndAddAttachment(context, layoutMediaBinding, holder, this, mediaPosition, -1.f, -1.f, -1.f, status, attachment);
}

View file

@ -68,6 +68,7 @@
android:layout_alignParentTop="true"
android:layout_margin="5dp"
android:contentDescription="@string/visibility"
android:importantForAccessibility="no"
android:src="@drawable/ic_baseline_visibility_24"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@id/media" />

View file

@ -128,6 +128,8 @@
<string name="bookmark_remove">Remove bookmark</string>
<string name="status_bookmarked">Status has been added to bookmarks!</string>
<string name="status_unbookmarked">Status was removed from bookmarks!</string>
<string name="cd_hide_media">Hide media</string>
<string name="cd_show_media">Show media</string>
<!-- Compose -->
<string name="add_content_warning">Add content warning</string>