Commit graph

74 commits

Author SHA1 Message Date
Konrad Pozniak
78152f0449
Full support for Android 15, edge-to-edge mode on Android 15 (#4897)
- Update to Api 35
- Update all dependencies that were blocked because they require Api 35
- fix some deprecation warnings
- implement the now required edge-to-edge mode

Edge-to-edge mode means that we now draw under the status bar and the
navigation bar and need to make sure we don't overlap with them.
Previously the system would do that for us, and we would only provide
the color we want the bars in.

For the edge-to-edge mode there are two Apis that are important:
- `fitsSystemWindows` - some Widgets, mostly from the Material library,
automatically handle system insets if you set this attribute on them to
true
- `ViewCompat.setOnApplyWindowInsetsListener` - this allows you to
manually handle the various insets. By returning new insets from the
callback it is possible to tell the system which ones are handled and
which ones should be taken care of by another view.

In most places edge-to-edge was straightforward to implement, except in
`ComposeActivity`, `AccountActivity` and `MainActivity` which required a
more custom approach, and a hacky solution to make landscape mode work
in `BaseActivity`.

There is also the `ViewCompat.setWindowInsetsAnimationCallback` Api
which allows animating with moving insets. I used that in
`LoginActivity` and `ComposeActivity` to animate the Views together with
the keyboard.

On Android Versions below 15 (Api <= 34) Tusky will look almost the same
as before. I think the only exception is the main bottom bar, which is
now slighty larger. We customized it to be smaller than the default, but
in edge-to-edge mode the height needs to be `wrap_content` or it won't
handle insets correctly.

Screenshots: 

<img
src="https://github.com/user-attachments/assets/2a1bf5d9-79fb-48eb-affc-1cbb1164d5f0"
width="280"/>
<img
src="https://github.com/user-attachments/assets/9edccdf2-c0e9-4881-a6df-bd0872934f28"
width="280"/>
<img
src="https://github.com/user-attachments/assets/2916a271-f53e-4d38-a83a-69083eb3053f"
width="280"/>
2025-02-06 11:37:54 +01:00
Konrad Pozniak
3db8e0b5a3
center icon in small send button (#4875)
2 users complained already 😔 

Before:

![before](https://github.com/user-attachments/assets/d3472856-a01e-42c6-b477-88fc376c63de)

After:

![after](https://github.com/user-attachments/assets/6722dac7-59d3-47b7-9718-6caae5eb0bec)
2025-01-17 12:41:45 +01:00
Konrad Pozniak
ec3921d923
show the warning icon again when there is media without description (#4806)
Regression from the Material 3 redesign
2024-12-14 19:33:37 +01:00
Konrad Pozniak
50ca44a5f6
Material Design 3 (#4637)
I tried to find a balance between going fully M3 and keeping some of the
original Tusky feeling.
For example, I removed the "allCaps" setting we had on most buttons,
which is recommended for M3. On the other hand, I made them less rounded
than the M3 default.

<img
src="https://github.com/user-attachments/assets/9d2485e0-7d1d-42ab-8a4e-c30d044aa5dc"
width="320"/>
<img
src="https://github.com/user-attachments/assets/d65d3c91-afe9-424e-92d7-e0f3e401ea4b"
width="320"/>
<img
src="https://github.com/user-attachments/assets/d5634440-c507-4484-a11e-983f47cbeab7"
width="320"/>
2024-09-10 19:50:09 +02:00
Levi Bard
f99cb6d1d5
Fix lint warnings (#4019)
Clears the baseline of issues in our code, and resolves most of the
straightforward warnings from the report
2023-09-13 09:20:53 +02:00
UlrichKu
2accfd0712
2890 show warning on missing description (#2919)
* issue 2890: Show a warning icon if media description is missing

* issue 2890: Remove disturbing additional signs

* issue 2890: Add another icon; use a snackbar; change wording; use orange as color

* issue 2890: Remove now unneeded new resource

* issue 2890: Use a toast (also) to avoid elevation problems

* issue 2890: Use snackbar with elevation again; refactor a bit
2022-12-06 19:28:44 +01:00
Vivianne
c908ebb3f1
Add display of handle when using multiple accounts (#2697)
- Shown on the main toolbar (subtitle)
- Shown just above the "replying to" message (even if not replying)
2022-09-17 19:05:56 +02:00
Levi Bard
0041acf2d4
Add language dropdown to compose view (#2651)
* Add UI for selecting post language

* Apply selected language when sending status

* Save/restore post language with drafts

* Fall back to english if the configured language isn't found in the locale list (no-NB)

* Remove comment about no_NB

* Move language dropdown to top of compose view

* Preserve language when redrafting

* Set default language to target post's language when replying

* Add Tusky license header to new source file

* Tweak language dropdown button width
2022-08-31 18:53:57 +02:00
Konrad Pozniak
62c4cfde89
improve media upload error messages (#2602) 2022-06-30 20:51:05 +02:00
Constantin A
f15b3e61bb
New emoji picker (#2395)
* Update to Emoji2

* Hopefully fix the emoji picker preference

* Switch to released Filemojicompat version

* Filemojicompat version as an own var

* Remove an unused import

* Small cleanup

* Correct onDisplayPreferenceDialog; test TuskyApplication

* Use TextViews instead of EmojiTextViews

* Recreate the Main Activity if the emoji pack is updated

* Enable coreLibraryDesugaring (for Java Streams); update Filemojicompat, downgrade Emoji2

* Update emoji font versions to 14

* Use FilemojiCompat 3.2.0-beta01

* Make ktLint happy again

* Remove coreLibraryDesugaring and a FIXME

* Use EmojiPickerPreference.get()

* Disable emoji pack import

* Update FilemojiCompat to Beta 2

* Update FilemojiCompat to Beta 3

* Update FilemojiCompat to Beta 3.2.0 final

* Update FilemojiCompat to 3.2.1
2022-04-26 18:50:58 +02:00
Konrad Pozniak
d9931e3d2c
Rename Toots to Posts (#2396)
* rename toots -> posts in strings

* extract tusky_compose_post_quicksetting_label string

* rename toot -> status in code
2022-03-20 20:21:42 +01:00
Konrad Pozniak
940d6d395a
Drafts v2 (#2032)
* cleanup warnings, reorganize some code

* move ComposeAutoCompleteAdapter to compose package

* composeOptions doesn't need to be a class member

* add DraftsActivity and DraftsViewModel

* drafts

* remove unnecessary Unit in ComposeViewModel

* add schema/25.json

* fix db migration

* drafts

* cleanup code

* fix compose activity rotation bug

* fix media descriptions getting lost when restoring a draft

* improve deleting drafts

* fix ComposeActivityTest

* improve draft layout for almost empty drafts

* reformat code

* show toast when opening reply to deleted toot

* improve item_draft layout
2021-01-21 18:57:09 +01:00
Konrad Pozniak
9cdf486ceb
remove ThemeUtils.getTintedDrawable (#2015) 2020-12-09 19:08:16 +01:00
kyori19
fef4b8b07f
[needs help] Support announcements (#1977)
* Implement announcements activity

* Update reactions without api access

* Add badge style

* Use emptyList() as default parameter

* Simplify newIntent

* Use List instead of Array

* Remove unneeded ConstraintLayout

* Add lineSpacingMultiplier

* Fix wording

* Apply material design's default chip style

* Dismiss announcements automatically
2020-11-18 21:12:27 +01:00
Vignesh Kumar
3b67f339b1
Change characters left color to red when negative (#1952)
* Change characters left color to red when negative

* Use val for the integers, optimize variable assignment

* Added tusky_red color

* remove extra line typo

* make characters left bold

* change red hue

* fix typo
2020-10-13 18:30:06 +02:00
Konrad Pozniak
b55a10228f
fix cut off texts when device font size is set to largest (#1786) 2020-05-11 16:44:32 +02:00
Konrad Pozniak
adac296e04
simplify ComposeOptionsView (#1734) 2020-03-24 21:07:10 +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
29ef92edd3
fix overlapping icons in ComposeActivity (#1661) 2020-01-30 21:17:37 +01:00
Ivan Kupalov
77fb4df659 Make radio buttons in compose screen sheets full width, fix #1593 (#1645) 2020-01-18 12:13:10 +01:00
Ivan Kupalov
8770fbe986 ComposeActivity refactor (#1541)
* Convert ComposeActivity to Kotlin

* More ComposeActivity cleanups

* Move ComposeActivity to it's own package

* Remove ComposeActivity.IntentBuilder

* Re-do part of the media downsizing/uploading

* Add sending of status to ViewModel, draft media descriptions

* Allow uploading video, update description after uploading

* Enable camera, enable upload cancelling

* Cleanup of ComposeActivity

* Extract CaptionDialog, extract ComposeActivity methods

* Fix handling of redrafted media

* Add initial state and media uploading out of Activity

* Change ComposeOptions.mentionedUsernames to be Set rather than List

We probably don't want repeated usernames when we are writing a post
and Set provides such guarantee for free plus it tells it to the
callers. The only disadvantage is lack of order but it shouldn't be a
problem.

* Add combineOptionalLiveData. Add docs.

It it useful for nullable LiveData's. I think we cannot differentiate
between value not being set and value being null so I just added the
variant without null check.

* Add poll support to Compose.

* cleanup code

* move more classes into compose package

* cleanup code

* fix button behavior

* add error handling for media upload

* add caching for instance data again

* merge develop

* fix scheduled toots

* delete unused string

* cleanup ComposeActivity

* fix restoring media from drafts

* make media upload code a little bit clearer

* cleanup autocomplete search code

* avoid duplicate object creation in SavedTootActivity

* perf: avoid unnecessary work when initializing ComposeActivity

* add license header to new files

* use small toot button on bigger displays

* fix ComposeActivityTest

* fix bad merge

* use Singles.zip instead of Single.zip
2019-12-19 19:09:40 +01:00
kyori19
9e4c19a47e Scheduled toot (#1004)
* Scheduled toot

* Hide scheduled toot button if version < 2.7.0

* Fix timeline reloading after toot

* Add edit icon to ComposeScheduleView

* Add button to reset scheduled toot

* Close bottom sheet and change button color after time a was selected

* Fix edit icon's size

* List of scheduled toots

* Fix instance version check

* Use MaterialDatePicker

* Set date and time consecutively

* Add licenses
2019-10-02 21:28:12 +02:00
Konrad Pozniak
51c6852492
Create polls (#1452)
* add AddPollDialog

* add support for pleroma poll options

* add PollPreviewView

* add Poll support to drafts

* add license header, cleanup

* rename drawable files to correct size

* fix tests

* fix bug with Poll having wrong duration after delete&redraft

* add input validation

* grey out poll button when its disabled

* code cleanup & small improvements
2019-08-22 20:30:08 +02:00
Levi Bard
ffb6c9a7a7 Add @ and # helper buttons to compose activity (#1277)
Addresses #810
2019-06-24 10:33:05 +02:00
Konrad Pozniak
83696b5c7f
Animate gif avatars (#1279)
* animate gif avatars

* add setting to enable avatar animation

* cleanup code
2019-05-26 08:46:08 +02:00
Evgeny Petrov
5163927e43 Added "Warning" icon instead of "CW" text. (#1138)
* Added «Warning» icon instead of «CW» text.
Icon source: https://ionicons.com/

* Updated icon to "sms_failed"
2019-04-01 19:19:37 +02:00
Conny Duck
c7f231419e fix weird resizing of ComposeActivity when emojis are loaded on tablets 2018-12-17 21:58:52 +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
Mélanie Chauvel (ariasuni)
5230bd29a6 Fix a lot of easy-to-fix warnings (#957) 2018-12-12 20:28:05 +01:00
Ivan Kupalov
133808891d Add RoundedImageView for avatars (#739)
* Add RoundedImageView for avatars

* RoundedImageView: Remove unused things, fix touchable area
2018-07-30 15:36:22 +02:00
Konrad Pozniak
d4572a9d0e
some Optimizations for tablets (#647)
* show ComposeActivity as Dialog on tablets

* limit timeline width on large devices

* limit width on large devices for thread view and search

* increase media preview size on large devices
2018-05-16 19:14:53 +02:00
Constantin A
1108652823 EmojiCompat support (#600)
* Add EmojiCompat

* EmojiCompat doesn' replace all emojis anymore

* This app should be now capable of loading a EmojiCompat-font located in a file somewhere inside the device's storage

* Should now replace all emojis

* Add EmojiCompat support to EditTextTyped

* Provide EmojiCompat fonts

* The app won't crash anymore when no emoji font is available.
Emoji font should now be located at [Private external app directory]/files/EmojiCompat.ttf

* Removed BundledEmojiCompat dependency

Since this EmojiCompat-implementation does not rely on BundledEmojiCompat, there's no reason to have it enabled.

* Update EditTextTyped.kt

Since connection isn't assigned to (I tried doing so), it can be declared final/val again.

* Update README.md

* Add some non-working emoji preferences

* Add a short font list for testing

* Finished implementation

* Add Twemoji to font list

* Update documentation, more comments

* Delete AssetEmojiCompat which is obsolete now

* Update the font list

* Update the font list

* Fix font list & add Exception handling for malformed JSON files (hopefully)

* More fixes. It should work now...

* Removed AssetEmojiCompat (again)

* Add most of the changes

* Improved the EmojiCompat dialog's style

* The font list is now based on a static layout without external files

* Re-add the real font URL for Twemoji

* Emoji-font captions are now translatable

* Removed one unused String (loading)

* Removed emoji fonts from this repo

* Applied changes from the PR change requests

* The correct emoji font will be selected after cancelling a change

* Add details on the EmojiCompat fonts available (not shown yet)

* Add licensing information on Twemoji and Blobmoji

* Reworked some strings

* Moved FileEmojiCompat to its own library

* Update FileEmojiCompat to the latest version (1.0.3)

* EmojiCompat bug should be fixed

* Better handling of failed downloads

* Removed one TODO

Signed-off-by: Constantin A <10349490+C1710@users.noreply.github.com>

* Update emoji attribution strings

Signed-off-by: Constantin A <10349490+C1710@users.noreply.github.com>

* Fixed some misspelled strings

Signed-off-by: Constantin A <10349490+C1710@users.noreply.github.com>
2018-05-10 11:16:56 +02:00
Konrad Pozniak
20033f844a fix emoji & toot size limit caching 2018-04-23 09:26:03 +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
Ivan Kupalov
e82c9dcd2a Compose close dialog + focus fix (#539) 2018-03-05 22:43:13 +01:00
Conny Duck
c766a203bf fix bug in rtl layout, remove unneeded xml attributes & dimen resources 2018-02-16 22:14:25 +01:00
Konrad Pozniak
92ae463b38
Multi account feature (#490)
* basic implementation

* improve LoginActivity

* darken drawer background image

* add current avatar in ComposeActivity

* add account name to logout dialog

* multi account support for notifications

* multi account support for notifications

* bugfixes & cleanup

* fix bug where somethings notifications would open with the wrong user

* correctly set active account in SFragment

* small improvements
2018-02-03 22:45:14 +01:00
Conny Duck
03f866f8c2 fix toot button and characters left text size 2017-12-01 22:44:18 +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
Vavassor
239ebaf9b2 Consolidate the two media buttons in the composer. 2017-07-27 22:40:58 -04:00
Vavassor
2cfb92013e Adjusts padding of the composer buttons. 2017-07-27 01:13:33 -04:00
Vavassor
f3b5087c52 Adds save draft button to composer. 2017-07-27 00:56:53 -04:00
Vavassor
6e366a1b84 Give up 2017-07-20 22:29:29 -04:00
Vavassor
51e2b7c949 Fixes a few content descriptions and re-titles the Drafts page. 2017-07-18 22:32:13 -04:00
Vavassor
f37bb694f1 Makes the toolbar shadow visible for pre-Lollipop android versions and fixes a crash when deleting a draft with no media attached. 2017-07-15 03:10:55 -04:00
Vavassor
8559a6d75c Corrects number localization and adjusts the padding of the reblog avatars in right-to-left layout direction. 2017-07-14 18:18:29 -04:00
Vavassor
e4dff388d2 Improves right-to-left layouts in the most basic fashion. 2017-07-12 02:09:07 -04:00
Vavassor
c5c6e8205a Fixes autocomplete list getting cut off in the composer if the user is using an app or launcher that hides the status bar. 2017-06-26 15:38:04 -04:00