Clickable spans in textviews do not normally meet the Android accessibility
guidelines of a minimum 48dp square touch target.
This can't be fixed with a `TouchDelegate`, as the span is not a separate
view to which the delegate can be attached.
Add `ClickableSpanTextView`. If used instead of a `TextView`, any spans
from `ClickableSpan` will have their touchable area extended to meet the
48dp minimum.
The touchable area is still bounded by the size of the view.
If two spans are closer together than 48dp then the closest span to the
touch wins.
Co-authored-by: Konrad Pozniak <connyduck@users.noreply.github.com>
* Add initial feature for viewing trending graphs. Currently only views hash tag trends.
Contains API additions, tab additions and a set of trending components.
* Add clickable system through a LinkListener. Duplicates a little code from SFragment.
* Add accessibility description.
* The background for the graph should match the background for black theme too.
* Add error handling through a state flow system using existing code as an example.
* Graphing: Use a primary and a secondary line. Remove under line fill. Apply line thickness. Dotted end of line.
* Trending changes: New layout for trending: Cell. Use ViewBinding. Add padding to RecyclerView to stop the FAB from hiding content. Multiple bugs in GraphView resolved. Wide (landscape, for example) will show 4 columns, portrait will show 2. Remove unused base holder class. ViewModel invalidate scoping changed. Some renaming to variables made. For uses and accounts, use longs. These could be big numbers eventually. TagViewHolder renamed to TrendingTagViewHolder.
* Trending changes: Remove old layout. Update cell textsizes and use proper string. Remove bad comment.
* Trending changes: Refresh the main drawer when the tabs are edited. This will allow the trending item to toggle.
* Trending changes: Add a trending activity to be able to view the trending data from the main drawer.
* Trending changes: The title text should be changed to Trending Hashtags.
* Trending changes: Add meta color to draw axis etc. Draw the date boundaries on the graph. Remove dates from each cell and place them in the list as a header. Graphs should be proportional to the highest historical value. Add a new interface to control whether the FAB should be visible (important when switching tabs, the state is lost). Add header to the adapter and viewdata structures. Add QOL extensions for getting the dates from history.
* Trending changes: Refresh FAB through the main activity and FabFragment interface. Trending has no FAB.
* Trending changes: Make graph proportional to the highest usage value. Fixes to the graph ratio calculations.
* Trending changes: KtLintFix
* Trending changes: Remove accidental build gradle change. Remove trending cases. Remove unused progress. Set drawer button addition explicitly to false, leaving the code there for future issue #3010. Remove unnecessary arguments for intent. Remove media preview preferences, there is nothing to preview. No padding between hashtag symbol and text. Do not ellipsize hashtags.
* Trending changes: Use bottomsheet slide in animation helper for opening the hashtag intent. Remove explicit layout height from the XML and apply it to the view holder itself. The height was not being respected in XML.
* Use some platform standards for styling
- Align on an 8dp grid
- Use android:attr for paddingStart and paddingEnd
- Use textAppearanceListItem variants
- Adjust constraints to handle different size containers
* Correct lineWidth calculations
Previous code didn't convert the value to pixels, so it was always displaying
as a hairline stroke, irrespective of the value in the layout file.
While I'm here, rename from lineThickness to lineWidth, to be consistent
with parameters like strokeWidth.
* Does not need to inherit from FabFragment
* Rename to TrendingAdapter
"Paging" in the adapter name is a misnomer here
* Clean up comments, use full class name as tag
* Simplify TrendingViewModel
- Remove unncessary properties
- Fetch tags and map in invalidate()
- emptyList() instead of listOf() for clarity
* Remove line dividers, use X-axis to separate content
Experiment with UI -- instead of dividers between each item, draw an explicit
x-axis for each chart, and add a little more vertical padding, to see if that
provides a cleaner separation between the content
* Adjust date format
- Show day and year
- Use platform attributes for size
* Locale-aware format of numbers
Format numbers < 100,000 by inserting locale-aware separators. Numbers larger
are scaled and have K, M, G, ... etc suffix appended.
* Prevent a crash if viewData is empty
Don't access viewData without first checking if it's empty. This can be the
case if the server returned an empty list for some reason, or the data has
been filtered.
* Filter out tags the user has filtered from their home timeline
Invalidate the list if the user's preferences change, as that may indicate
they've changed their filters.
* Experiment with alternative layout
* Set chart height to 160dp to align to an 8dp grid
* Draw ticks that are 5% the height of the x-axis
* Legend adjustments
- Use tuskyblue for the ticks
- Wrap legend components in a layout so they can have a dedicated background
- Use a 60% transparent background for the legend to retain legibility
if lines go under it
* Bezier curves, shorter cell height
* More tweaks
- List tags in order of popularity, most popular first
- Make it clear that uses/accounts in the legend are totals, not current
- Show current values at end of the chart
* Hide FAB
* Fix crash, it's not always hosted in an ActionButtonActivity
* Arrange totals vertically in landscape layout
* Always add the Trending drawer menu if it's not a tab
* Revert unrelated whitespace changes
* One more whitespace revert
---------
Co-authored-by: Nik Clayton <nik@ngo.org.uk>
* Theme refactoring
* disable the automatic tinting of surfaces with elevation in dark mode
* make the media warning visible again with the dark theme
* fix nav bar on api 27+
* use correct color for all media warnings
* Remove unnecessary //noinspection ConstantConditions
* Add autocompletion for custom emoji
* Update MentionTagTokenizer tests for emoji autocomplete support
* Move 1) emoji list retrieval notifying and 2) setting of emojiList field into setEmojiList() method of ComposeActivity
* Convert RelativeLayout in item_autocomplete_emoji.xml to LinearLayout
* Rename MentionTag* to Compose*
* Improve emoji autocomplete matching
* Make hashtag autocomplete results bold
* Use Context.getString()'s built-in formatting
* Add a divider between emoji autocomplete results that *start with* the token and those that *contain* it
* upgrade to AndroidX, upgrade libraries
* move to MaterialComponents theme
* make sure the compose button looks good everywhere
* fix tollbar title/button alignment on tablet
* move to new material color theming, consolidate colors and themes
* fix build, fix imports
* set error on TextInputLayout instead of EditText
* fix imports, TootButton when
* improve snackbar style
* fix task description color
* Add circleci
* Commit to maybe fix ci
* Suppress false positives in lint
* Disable linting for tests in ci
* Add image descriptions to gallery
* Fix test
* [CI] Attempt to fix OOM error
* [CI] Attempt to fix OOM error, 2
* Add option to open status from media
* fix theme issue
* increase linespacing on media description
* do not add media urls to status text
* add scrolling to content
* add arrow icon and animation to replying-to toggle
* remove unnecessary compose_button_colors.xml
* improve toot button
* improve bottom bar, add bottom sheet for compose options, dedicated cw button
* fix crash on Android < API 21
* move media picking from dialog to bottom sheet
* add small style tootbutton
* fix colors/button background for light theme
* add icons to media chose bottom sheet
* improve hide media button, delete unused styles
* fix crash on dev build when taking photo
* consolidate drawables
* consolidate strings and ids, add tooltips to buttons
* allow media only toots
* change error message to show max size of upload correctly
* fix button color
* add emoji
* code cleanup
* Merge branch 'master' into compose_activity_refactoring
# Conflicts:
# app/src/main/java/com/keylesspalace/tusky/ComposeActivity.java
* fix hidden snackbar
* improve hint text color
* add SendTootService
* fix timeline refreshing
* toot saving and error handling for sendtootservice
* restructure some code
* convert EditTextTyped to Kotlin
* fixed pick media button disabled color
* force sensitive media when content warning is shown
* add db cache for emojis & fix tests
* reorder buttons to match mastodon web
* add possibility to cancel sending of toot
* correctly delete sent toots
* refresh SavedTootActivity after toot was sent
* remove unused resources
* correct params for toot saving in SendTootService
* consolidate strings
* bugfix
* remove unused resources
* fix notifications on old android for SendTootService
* fix crash
* Use the entire content warning text + button as the hitbox for the "Show more/less" toggle
* Move the content warning toggle button to its own line and give it a little more space
* Move content warning elements into parent layout, remove now-superfluous FlowLayout
* Use marginTop/Bottom instead of Vertical, which is only in sdk 26+
* Update minimum width for content warning toggle button
* Split theme definitions into day and night
* Add support for Night Mode in code
* Add theme chooser in preferences
* Fix translations
* Adjust IDs
* Adjust preferences for custom themes
* UI tweaks for custom theme support
* Added code for custom theme support 🍅
* Fixed resource display in Kotlin 🍅
* Restored styles
* Updated strings
* Fixed getIdentifier() to fit into setTheme()
* Removed redundant resources
* Reset default theme to "Dusky"
* Fixed night mode handler to maintain compatibility
* Refactor functions to use helper methods
* Added license block
* Added preview to theme selector
* Added color identifier getter helper method
* Fixed reference in AccountMediaFragment
* Cleanup
* Fixed navbar foreground not changing color
* Fix fallback theme switch(){}
* Enable location-based daylight trigger
* Cleanup
* Modified theming strategy to reduce clutter in preferences
* Updated translations for latest version
* Removed "Default" theme flavor from settings
* Updated Polish translations 🇵🇱
* Modified TwilightManager handling code to support Android M's UiModeManager features and moved it to its own function
* Updated Polish translations 🇵🇱
* Cleanup; Fixed hardcoded string
* Added missing escape in string
* Removed permission request dialog.
As we now use native UiModeManager APIs that don't need special permission for Android 6.0 and above, we no longer need to bother user with Android M+ specific location permission request dialog.
* Increased readability of ThemeUtil class
* Refactored ThemeUtils.setAppNightMode method
* Cleanup
* Refactor ComposeActivity intent. Fix bug with URLs
When user saved toot link was removed from the text field itself,
not only from the text to be saved.
* Show what you reply to
Closes#119