Commit Graph

42 Commits

Author SHA1 Message Date
Nik Clayton 61720c3472
Meet accessibility guidelines for clickable spans (#3382)
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>
2023-03-18 08:57:39 +01:00
David Edwards 98e5363692
Add trending tags (#3149)
* 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>
2023-02-14 19:52:11 +01:00
Levi Bard d07c1b098e
Highlight your own votes when displaying poll results (#2242)
* Highlight your own votes when displaying poll results

* Unbreak tests

* Add a checkmark to the description of self-voted options
2021-09-17 22:12:17 +02:00
Konrad Pozniak 28e128a4dd
[Tusky10] adjust poll result background, status divider & button outline color (#1685)
* adjust poll result background, status divider & button outline color

* fix navigationBarDividerColor
2020-02-14 19:03:18 +01:00
Konrad Pozniak 8767d2ed3d
Theme refactoring (#1656)
* 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
2020-01-30 21:37:28 +01:00
Konrad Pozniak e5b78f65cf
use material buttons in timeline (#1627)
* use material buttons in timeline

* remove wrong switch option
2020-01-07 19:40:52 +01:00
Mélanie Chauvel (ariasuni) 54b3d1f8cd Add close icon to tabs in Tabs account preferences page (#1588)
* Add close icon to tabs in Tabs account preferences page

* Improve code according to code review
2019-12-19 18:35:55 +01:00
Konrad Pozniak d2ca776b34
Migrate to ViewPager2 (#1544)
* migrate MainActivty to ViewPager2

* migrate AccountActivty to ViewPager2

* migrate ViewMediaActivty to ViewPager2

* migrate SearchActivity to ViewPager2

* checkin missing AccountPagerAdapter file

* remove unused class ImageViewPager

* replace SparseArray with MutableList
2019-11-06 20:17:53 +01:00
Konrad Pozniak bee10bf375
Refactor theming (#1529)
* fix toolbars

* use toolbar in MainActivity

* update AccountActivity appbar

* update material design library

* remove unneeded tabs styling

* fix black theme
2019-10-12 20:00:29 +02:00
Konrad Pozniak b825f42c7a
Improve link preview cards (#1330)
* improve card frame

* add placeholder for empty image

* improve layout, Pleroma compatibility, show author name as description fallback

* reset okhttp logging level

* remove unneeded statement
2019-06-22 08:05:55 +02:00
pandasoft0 c335651b6b Redesign report activity (#1295)
* Report activity core

* Implement navigation

* Implement navigation

* Update strings

* Revert manifest formatting

* Implement Done page

* Add landscape layout

* Implement Note fragment

* Create component

* Implement simple status adapter

* Format code

* Add date/time to report statuses

* Refactor status view holder

* Refactor code

* Refactor ViewPager

* Replace MaterialButton with Button

* Remove unneeded string

* Update Text and Check views style

* Remove old ReportActivity and rename Report2Activity to ReportActivity

* Hide "report to remote instance" checkbox for local accounts

* Add account, hashtag and links click handler

* Add media preview

* Add sensitive content support

* Add status expand/collapse support

* Update adapter to user adapterPosition instead of stored status

* Updated checked change handling

* Add polls support to report screen

* Add copyright

* Set buttonTint at CheckBox

* Exclude reblogs from statuses for reports

* Change final page check mark size

* Update report note screen

* Fix typos

* Remove unused params from api endpoint

* Replace .visibility with show()/hide()

* Replace Date().time with System.currentTime...

* Add line spacing

* Fix close button tint issue

* Updated status adapter
2019-06-09 16:55:34 +02:00
Konrad Pozniak fd7471f2ab
Polls part 1 - displaying in timelines and voting (#1200)
* add entity classes

* change data models and add database migration

* add polls to StatusViewData

* show poll results

* add methods for vote handling

* add voting interface

* enable voting in TimelineFragment

* update polls immediately

* enable custom emojis for poll options

* enable voting from search fragment

* add voting layout to detailed statuses

* fix tests

* enable voting in ViewThreadFragment

* enable voting in ConversationsFragment

* small refactor for StatusBaseViewHolder
2019-04-22 10:11:00 +02:00
autumnontape 10fcee4798 Add autocompletion for custom emoji (#1089)
* 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
2019-03-04 19:28:08 +01:00
Konrad Pozniak 5ee78e68ba
remove unnecessary divider styling (#1057) 2019-02-26 18:28:20 +01:00
Konrad Pozniak a445c12094
Upgrade to AndroidX, move to MaterialComponents theme (#953)
* 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
2018-12-17 15:25:35 +01:00
Konrad Pozniak 3c569c6ac9
add License activity (#689)
* convert AboutActivity to Kotlin, use BottomSheetActivity for account resolving

* improve AboutActivity

* new License activity

* fix filemojicompat url
2018-06-25 13:02:34 +02:00
Ivan Kupalov 23d84dfa66 Show image descriptions in gallery (#630)
* 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
2018-05-10 20:13:25 +02:00
Konrad Pozniak 27eefbf65a
ComposeActivity improvements (#548)
* 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
2018-04-13 22:37:21 +02:00
Levi Bard 043ac58254 improve content warning button
* 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
2018-03-15 19:15:12 +01:00
remi6397 11105f4aac Theming improvements (#502)
* 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
2018-01-20 13:39:01 +01:00
Conny Duck bf4d0bb722 change handling of font size, introduce font size setting 2017-12-01 21:52:10 +01:00
Konrad Pozniak 41233a837b
UI Improvements (#445)
UI Improvements
2017-11-30 20:12:09 +01:00
Ivan Kupalov 62f4837135 Reply improvements (#432)
* 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
2017-11-01 20:59:29 +01:00
Konrad Pozniak 5cbc7217ff Link previews for detail statuses (#424)
* implement link preview cards on detail statuses

* cleanup code
2017-10-27 13:20:17 +02:00
Conny Duck 0fd25ff124 new splashscreen, some cleanup 2017-10-26 22:07:48 +02:00
Vavassor 14d02e72b7 Adds envelope icon indicator to direct messages on timelines, so they can be differentiated from private statuses. 2017-07-08 15:44:08 -04:00
Vavassor b9b5e58b50 Changes the NSFW button to a "hide media" icon in the composer. This is inspired in part by the upstream change tootsuite/mastodon#2696. But also NSFW was never a good description of this function. 2017-06-20 14:16:03 -04:00
Vavassor bd687fb45d Fixes crash on android version Lollipop and earlier due to an unsupported way vector drawable icons were assigned to radio buttons. 2017-05-03 18:33:15 -04:00
Vavassor eed3f2d899 Light icon buttons are colour background with white text again. It just looks nice. 2017-03-30 19:23:43 -04:00
Vavassor 1f798902b7 Spruces up the light theme.
Also, fixes a bug where the show more/less button for content warnings is sometimes already checked.
2017-03-29 00:22:14 -04:00
Vavassor 4b136ce458 Light theme properly separated again, making it ready for palette changes. 2017-03-26 22:59:16 -04:00
Vavassor 81700e7b84 Adds an indicator of visibility to the send button in the composer. Closes #38 2017-03-26 18:26:47 -04:00
Vavassor e46731454d Fixes icons on statuses and notifications not being the right colour on the light theme.
Maybe could be a more elegant solution than drawable duplication but for now fine.
2017-03-07 23:52:17 -05:00
Vavassor 37bb799efc Fixes crash when opening the block list. Also, fixes an issue where the collapsed toolbar appears dark on profiles even when using the light theme. 2017-03-07 02:30:09 -05:00
Vavassor 3ab06eb250 The reporting page now allows reporting multiple statuses. (It's a bit cramped, though.) 2017-02-28 21:38:47 -05:00
Vavassor 4b8573a82f Reporting statuses is now possible! 2017-02-27 00:21:46 -05:00
Vavassor 0439fabd79 Fixed a crash under API level 21 on the main timeline due to trying to tint the status buttons with selectors. 2017-02-17 23:10:46 -05:00
Vavassor af4af94775 Fixed crash on pre-Lollipop devices (API levels 20 and prior) due to trying to load attributes in drawables. 2017-02-16 21:11:05 -05:00
Vavassor 96a5692717 Dark and light themes now exist and can be switched in preferences. 2017-02-16 13:52:55 -05:00
Vavassor f14973a6d4 Replaced the regex gunk in the composer with something more readable and more reliable.
Also, put in a fix for a crash related to failing while loading the vector image for the media picker button.
2017-02-13 21:46:25 -05:00
Vavassor 22a2a31afe Changed visual theme to a dark style. Also, set up things for a future switchable light/dark theme. 2017-02-13 00:18:17 -05:00
Vavassor 887e68700a Made wrapping behaviour of long names and long content warnings better on timelines. 2017-02-01 17:01:34 -05:00