* Use blurhash as image preview and as sensitive media cover, close#1571
* Fix focal point for blurhashes
* Fix video indicator overlapping sensitive media indicator
* Add a preference for blurhash
* Add blurhash to report UI.
* Introduce StatusDisplayOptions
* 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
* remove search v1, convert MastodonApi to Kotlin
* format MastodonApi nicely
* use default params in ConversationRepository
* improve code for LoginActivity
* show poll notifications in the app
* show poll notifications in the app
* allow filtering poll notifications in the poll fragment
* show poll notifications in system notifications
* Implement "Delete and Edit" feature
* Some changes to ComposeActivity
Support for uploaded medias, sensitive option.
Fix typo.
Change names of some extra keys.
* Use Glide instead of Picasso
* Pass ArrayList instead of json
* Change wording for re-draft
* Fix test
* Issue tuskyapp#762 add clear notifications button to the top of the Notifications adapter
* Issue tuskyapp#764 add the notifications filter
* Update notifications top bar buttons
* Replace PopupMenu with PopupWindow. Save notifications filter to the account table
* Disable hide top bar on empty content at the notification screen
* Add app bar behavior to the sw640 notification layout
* Fix issue with click on top notification tab
* Add serialization of the meta-data and focus objects
These objects are added in some attachments. This commit adds data
classes which are able to serialize these (partially) in preparation
for the ability to honour the focal point information in image
previews.
* Implement correctly honouring the focal point meta-data in previews
This commit adds code which ensures that the image previews of media
attachments to toots are correctly cropped to always show the focal
point of the image (if it is specified). It should not in any way
influence how previews of media without a focal point are shown.
To achieve the correct crop on the image a few components were
needed:
First of all we needed a way to influence how the image is cropped
into the ImageView. It turns out that the preferred way to do this is
by setting the ScaleType to MATRIX and adjusting the matrix of the
image as needed. This matrix allows us to scale and transform the
image in the way we need to make sure that the focal point is visible
within the view. For this purpose we have the FocalPointEnforcer which
can calculate and set the appropriate matrix on an ImageView as soon
as the image is loaded.
However a second problem is that we need to make sure that this matrix
is updated whenever the size of the ImageView changes. The size might
change for example because the orientation of the device changed from
portrait to landscape or vice versas, or for a number of other reasons
such as the screen being split vertically or something like that.
To be able to hook onto this event we need to create a new extended
version of the ImageView class, which we call
MediaPreviewImageView. This class behaves exactly the same as a normal
ImageView, however if the focalPointEnforcer of this view is set, then
it will call this enforcer to update the image matrix any time the
size is changed.
So this commit changes all media previews in the item_status.xml and
item_status_detailled.xml layout files to the new
MediaPreviewImageView class. Additionally in the code for loading the
images into the previews a new case is added which tests if there is a
focus attribute in the meta-data. If so it makes sure to create and
set the FocalPointEnforcer.
* Fix typos in documentation comment
"to" -> "too"
* Use static imports to remove clutter in FocalPointEnforcerTest
Instead of duplication Assert. in front of every assertEquals, simply
statically import it.
* Move the MetaData and Focus classes into the Attachment class
Since they are very strongly linked to the attachment class and are
themselves very small.
* Refactor the focal point handling code
- All the code modifying the actual members of the
MediaPreviewImageView is now in this class itself. This class still
uses the FocalPointUtil to calculate the new Matrix, but it now
handles setting this new Matrix itself.
- The FocalPointEnforcer has been renamed to the FocalPointUtil to
reflect that it only calculates the correct matrix, but doesn't set
anything on the MediaPreviewImageView.
- The Matrix used to control the cropping of the
MediaPreviewImageViews is now only allocated a single time per view
instead of each time the view is resized. This is done by caching
the Matrix and passing it to the FocalPointUtil to update on each
resize.
* Only reallocate focalMatrix if it is not yet initialized
This helps prevent unnecessary allocations in the case where
setFocalPoint is called multiple times.
* Change checking of availability of objects to use != null
As pointed out, the 'is' keyword is meant for checking types, not for
checking non-nullness.
* Make updateFocalPointMatrix() return nothing
This makes it clearer that it actually mutates the matrix it is
given.
* Fix bug with transitions crashing the PhotoView
Due to the android transitions for some reason copying the scaletype
from the MediaPreviewImageView to the PhotoView during the transition,
the PhotoView would crash on pictures with a focal point, since
PhotoView doesn't support ScaleType.MATRIX.
This is solved by the workaround of overriding both the getScaleType
and setScaleType methods to ensure that we use the MATRIX type in the
preview and the center_crop type in the PhotoView.
Additionally this commit also makes sure to remove the focal point
when the MediaPreviewImageView is recycled.
* Fix bug in overriden getScaleType
Instead of simply returning the scaleType we need to return the
super.getScaleType() method, to avoid crashing.
* Merge changes from master
Mainly the migration to androidx.
* Refactor-all-the-things version of the fix for issue #573
* Migrate SpanUtils to kotlin because why not
* Minimal fix for issue #573
* Add tests for compose spanning
* Clean up code suggestions
* Make FakeSpannable.getSpans implementation less awkward
* Add secondary validation pass for urls
* Address code review feedback
* Fixup type filtering in FakeSpannable again
* Make all mentions in compose activity use the default link color
* new layout for AccountActivity
* fix the light theme
* convert AccountActivity to Kotlin
* introduce AccountViewModel
* Merge branch 'master' into account-activity-redesign
# Conflicts:
# app/src/main/java/com/keylesspalace/tusky/AccountActivity.java
* add Bot badge to profile
* parse custom emojis in usernames
* add possibility to cancel follow request
* add third tab on profiles
* add account fields to profile
* add support for moved accounts
* set click listener on account moved view
* fix tests
* use 24dp as statusbar size
* add ability to hide reblogs from followed accounts
* add button to edit own account to AccountActivity
* set toolbar top margin programmatically
* fix crash
* add shadow behind statusbar
* introduce ViewExtensions to clean up code
* move code out of offsetChangedListener for perf reasons
* clean up stuff
* add error handling
* improve type safety
* fix ConstraintLayout warning
* remove unneeded ressources
* fix event dispatching
* fix crash in event handling
* set correct emoji on title
* improve some things
* wrap follower/foillowing/status views
* 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