Fork of Tusky to match Chinwag design and provide better visual accessibility. https://social.chinwag.org
Find a file
Nik Clayton 1b6108ca94
Add "Refresh" accessibility menu (#3121)
* Add "Refresh" accessibility menu to TimelineFragment

Per https://developer.android.com/reference/androidx/swiperefreshlayout/widget/SwipeRefreshLayout
the layout does not provide accessibility events, and a menu item should be
provided as an alternative method for refreshing the content.

In `TimelineFragment`:
- Implement the `MenuProvider` interface so it can populate the action bar
  menu in activities that host the fragment
- Create a "Refresh" menu item, and refresh the state when it is selected

`MainActivity` has to change how the menu is created, so that fragments
can add items to it.

In `MainActivity`:
- Call `setSupportActionBar` so `mainToolbar` participates in menus
- Implement the `MenuProvider` interface, and move menu creation there
- Set the title via supportActionBar

* Never show the refresh item as a menubar action

Per guidelines in https://developer.android.com/develop/ui/views/touch-and-input/swipe/add-swipe-interface#AddRefreshAction

* Add "Refresh" menu item for AccountMediaFragment

Also, fix the colour of the refresh progress indicator

* Implement "Refresh" for AnnouncementsActivity

* Add "Refresh" menu for ConversationsFragment

* Keep the tabs adapter over the life of the viewpager

Make `tabs` `var` instead of `val` in `MainPagerAdapter` so it can be updated
when tabs change.

Then detach the `tabLayoutMediator`, update the tabs, and call
`notifyItemRangeChanged` in `setupTabs()`.

This fixes a bug (not sure if it's this code, or in ViewPager2) where
assigning a new adapter to the view pager seemed to result in a leak of one
or more fragments. This wasn't user-visible, but it's a leak, and it becomes
user-visible when fragments want to display menus.

This also fixes two other bugs:

1. Be on the left-most tab. Scroll down a bit. Then modify the tabs at
   "Account preferences > tabs", but keep the left-most tab as-is.

   Then go back to MainActivity. Your reading position in the left-most
   tab has been jumped to the top.

2. Be on any non-left-most tab. Then modify the tab list by reordering tabs
   (adding/removing tabs is also OK).

   Then go back to MainActivity. Your tab selection has been overridden,
   and the left-most tab has been selected.

Because the fragments are not destroyed unnecessarily your reading position
is retained. And it remembers the tab you had selected, and as long as that
tab is still present you will be returned to it, even if it's changed
position in the list.

Fixes https://github.com/tuskyapp/Tusky/issues/3251

* Add "Refresh" menu for ScheduledStatusActivity

* Lint

* Add "Refresh" menu for SearchFragment / SearchActivity

* Explicitly set the searchview width

Using "collapseActionView" requires the user to press "Back" twice to exit
the activity, which is not acceptable.

* Move toolbar handling in to ViewThreadActivity

Previous code had the toolbar in the fragment's layout. Refactor to make
consistent with other activities, and move the toolbar in to the activity
layout.

Implement MenuProvider in ViewThreadFragment to adjust the menu in the
activity.

* Add "Refresh" menu to ViewThreadFragment

* Implement "Refresh" for ViewEditsFragment

* Lint

* Add "Refresh" menu to ReportStatusesFragment

* Add "Refresh" menu to NotificationsFragment

* Rename menu resource files

Be consistent with the layout resource files, which have an activity/fragment
prefix, then the lower_snake_case name of the activity or fragment it's for.

* Only enable refresh menu if swiptorefresh is enabled

Some timelines don't have swipetorefresh enabled (e.g., those shown on
AccountActivity). In those cases don't add the refresh menu, rely on the
hosting activity to provide it.

Update AccountActivity to provide the refresh menu item.
2023-03-01 19:58:18 +01:00
.github Create FUNDING.yml 2019-05-23 19:24:51 +02:00
.idea Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
app Add "Refresh" accessibility menu (#3121) 2023-03-01 19:58:18 +01:00
assets update tusky_banner.xcf 2023-02-15 20:05:45 +01:00
fastlane/metadata/android Translated using Weblate (Persian) 2023-02-27 10:25:55 +00:00
gradle chore(deps): update dependency com.android.application to v7.4.2 (#3395) 2023-02-28 22:05:32 +01:00
.editorconfig Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
.gitattributes Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
.gitignore Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
build.gradle Gradle 8.0.1 (#3338) 2023-02-25 20:59:39 +01:00
CONTRIBUTING.md Update Contributing.md (#3303) 2023-02-14 21:09:06 +01:00
gradle.properties Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
gradlew Gradle 8.0.1 (#3338) 2023-02-25 20:59:39 +01:00
gradlew.bat Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00
ISSUE_TEMPLATE.md Create ISSUE_TEMPLATE.md 2018-03-10 16:43:34 +01:00
LICENSE.txt License change back to GPL 3 2017-04-09 20:12:31 -04:00
README.md Update Readme (#3304) 2023-02-14 21:09:16 +01:00
Release.md Create Release.md (#3200) 2023-01-24 20:23:15 +01:00
renovate.json Add renovate.json (#3263) 2023-02-20 19:55:09 +01:00
settings.gradle Modernize a bit (#3171) 2023-02-04 19:58:53 +01:00

Translate - with Weblate OpenCollective Build Status

Tusky

Tusky is a beautiful Android client for Mastodon. Mastodon is an ActivityPub federated social network. That means no single entity controls the whole network, rather, like e-mail, volunteers and organisations operate their own independent servers, users from which can all interact with each other seamlessly.

Get it on F-Droid Get it on Google Play

Features

  • Material Design
  • Most Mastodon APIs implemented
  • Multi-Account support
  • Dark, light and black themes with the possibility to auto-switch based on the time of day
  • Drafts - compose posts and save them for later
  • Choose between different emoji styles
  • Optimized for all screen sizes
  • Completely open-source - no non-free dependencies like Google services

Testing

The nightly build containing the newest development code is available on Google Play.

Support

Check out our FAQs, your question may already be answered. If you have any bug reports, feature requests or questions please open an issue or send us a message at Tusky@mastodon.social!

Contributing

We always welcome new contributors! Please read our contribution guide to get started.

Head of development

This app was developed by Vavassor@mastodon.social. The current maintainer is ConnyDuck@chaos.social.

Development chatroom

https://riot.im/app/#/room/#Tusky:matrix.org