Commit graph

43 commits

Author SHA1 Message Date
Avently
39de879c32 Android TV: ability to select all buttons in the main player, as well as in the main fragment 2020-07-25 04:14:29 +03:00
Avently
5cd7ca5dab AndroidTvUtils -> DeviceUtils 2020-07-21 01:43:49 +03:00
Avently
a6894644d1 Made checkStyle happy 2020-07-14 20:21:32 +03:00
Avently
aef78ace88 Merged the latest changes 2020-07-13 04:17:21 +03:00
Avently
b99b756435 Marked many (too many) variables as final 2020-07-12 03:59:47 +03:00
Avently
60fd42dfa3 Changes for review 2020-06-27 06:25:50 +03:00
wb9688
205c5ff2ca Optimize imports 2020-05-01 20:13:01 +02:00
Alexander--
cfb5c56800 When drawer opens, always place focus at it's start 2020-04-12 09:39:32 +06:59
Alexander--
a5e28105ac Comply with Checkstyle rules 2020-04-11 09:02:22 +06:59
Alexander--
2cac8a739d Merge remote-tracking branch 'newpipe/dev' into rebase 2020-04-11 08:24:05 +06:59
wb9688
9c8349a8ed Move things back to its original place 2020-04-02 15:57:50 +02:00
wb9688
ac264464ef Improve code style to be more consistent 2020-04-02 15:57:50 +02:00
Alexander--
5c86e436a3 Prevent foocus from escaping open navigation drawer
When contents of NewPipe navigation drawer change, NavigationMenuView
(which is actually a RecyclerView) removes and re-adds all its adapter
children, which leads to temporary loss of focus on currently focused drawer
child. This situation was not anticipated by developers of original
support library DrawerLayout: while NavigationMenuView itself is able
to keep focus from escaping via onRequestFocusInDescendants(),
the implementation of that method in DrawerLayout does not pass focus
to previously focused View. In fact it does not pass focus correctly at all
because the AOSP implementation of that method does not call addFocusables()
and simply focuses the first available VISIBLE View, without regard
to state of drawers.
2020-03-15 09:37:29 +06:59
Alexander--
d37706f814 Fix navigating to action bar buttons on API 28
Keyboard focus clusters prevent that from working, so
we simply remove all focus clusters.

While they are generally a good idea, focus clusters were created
with Chrome OS and it's keyboard-driven interface in mind - there is no
documented way to move focus between clusters using only IR remote.
As such, there are no negative consequences to disabling them on Android TV.
2020-03-14 14:47:02 +06:59
Alexander--
06e987dafd Fix focus getting stuck by cycling within the same list item 2020-03-12 05:29:37 +06:59
Alexander--
5559898332 NewPipeRecyclerView should allow scrolling down by default 2020-02-26 06:40:46 +06:59
Avently
c7c4c2172a Mini player, ExpandableSurfaceView with ZOOM support, popup
- mini player's title, image and author information will be updated in many situations but the main idea is that the info will be the same as currently playing stream. If nothing played then you'll see the info about currently opened stream in fragment. When MainPlayer service stops the info updates too
- made ExpandableSurfaceView to replace AspectRatioFrameLayout. The reason for that is to make possible to use aspect ratio mode ZOOM. It's impossible to show a stream inside AspectRatioFrameLayout with ZOOM mode and to fit the video view to a screen space at the same time. Now the new view able to do that and to show vertical videos in a slightly wide space for them
- refactored some methods to make the code more understandable
- made fixes for player view for landscape-to-landscape orientation change
- added Java docs
- adapted swipe tracking inside bottom sheet
- fixed PlayQueue crashes on clearing
- paddings for popup player now as small as possible
2020-02-05 08:59:30 +03:00
Alexander--
909d1bbccc Rename FireTvUtils to AndroidTvUtils and isFireTv() to isTV()
Because those methods are no longer exclusive to Amazon devices
2020-01-29 03:16:33 +06:59
Alexander--
b1a2612958 Merge remote-tracking branch 'newpipe/dev' into rebase 2020-01-29 03:10:16 +06:59
Paweł Matuszewski
5b3481d3d3 improve code consistency in ScrollableTabLayout 2020-01-02 13:02:14 +01:00
Paweł Matuszewski
f6965f7277 fix ScrollableTabLayout content width calculation
fix bug where only minimum width requested by tab was counted even if actual content was wider
2020-01-02 13:02:14 +01:00
Paweł Matuszewski
3111b390d5 simplify ScrollableTabLayout tabs width checking 2020-01-02 13:02:14 +01:00
Paweł Matuszewski
d154e56fa2 hide main page tab selector with single tab 2020-01-02 13:02:14 +01:00
Paweł Matuszewski
fae26b94b8 make main page tabs scrollable 2020-01-02 13:02:14 +01:00
Alexander--
72d23158c3 Release seekbar on any confirmation key, not just DPAD_CENTER 2019-12-01 12:41:11 +06:59
Alexander--
86fc9c0785 Special MovementMethod for video description
Video descriptions can be very long. Some of them are
basically walls of text with couple of lines at top or bottom.
They are also not scrolled within TextView itself, - instead
NewPipe expects user to scroll their containing ViewGroup.
This renders all builtin MovementMethod implementations useless.

This commit adds a new MovementMethod, that uses requestRectangleOnScreen
to intelligently re-position the TextView within it's scrollable container.
2019-12-01 12:41:11 +06:59
Alexander--
ac28cc7364 Remove FixedGridLayoutManager 2019-12-01 12:41:11 +06:59
Alexander--
10e38f7ea4 RecyclerView scroll fixes
* Move all focus-related work arouns to NewPipeRecyclerView
* Try to pass focus within closer parents first
* Do small arrow scroll if there are not more focusables in move direction
2019-12-01 12:41:11 +06:59
Alexander
2f30802d29 More robust focus search in SuperScrollLayoutManager
FocusFinder has glitches when some of target Views have different size.
Fortunately LayoutManager can redefine focus search strategy to override
the default behavior.
2019-12-01 12:41:11 +06:59
Alexander
924fb49eb0 Implement global focus highlight 2019-12-01 12:41:11 +06:59
Alexander
feea320116 Focus drawer when it opens
It is still buggy because of NavigationView (why the hell
is NavigationMenuView marked as focusable?) but at least initial
opening works as intended
2019-12-01 12:41:10 +06:59
Alexander
ddc609e8d8 Support for seeking videos in directional navigation mode 2019-12-01 12:41:10 +06:59
Alexander
9329c2f7f1 Do not allow focus to escape from open DrawerLayout
Upstream DrawerLayout does override addFocusables, but
incorrectly checks for isDrawerOpen instread of isDrawerVisible
2019-12-01 12:41:10 +06:59
Alexander
2b8bd2c890 When child of CoordinatorLayout wants focus, show it!
The same logic is present in RecyclerView, ScrollView etc.
Android really should default to this behavior for all Views
with isScrollContainer = true
2019-12-01 12:41:10 +06:59
Alexander
b1aa3b018b Fix scrolling in main screen grid
GridLayoutManager is buggy - https://issuetracker.google.com/issues/37067220:
it randomly loses or incorrectly assigns focus when being scrolled via
direction-based navigation. This commit reimplements onFocusSearchFailed()
on top of scrollBy() to work around that problem.

Ordinary touch-based navigation should not be affected.
2019-12-01 12:41:10 +06:59
Alexander
0d0b3b888f Fix scrolling comments list
AppBarLayout mostly gets it, but we still need to uphold our own part -
expanding it back after focus returns to it
2019-12-01 12:41:10 +06:59
Robin
edd5ad2d13 Migrate to AndroidX 2019-10-04 14:59:08 +02:00
Vasiliy
23dcbea8ec Animate states changed 2019-04-27 22:27:08 +03:00
Vasiliy
2e36b05a50 Implement playback state management 2019-04-13 13:34:36 +03:00
BO41
55ef791c88 data flow issue + declaration redundancy
make final
unused methods
make final

BUILD SUCCESSFUL in 0s
39 actionable tasks: 39 up-to-date
2018-09-11 19:18:41 +02:00
Mauricio Colli
f1c721e85a Implement UI for subscriptions import/export
- Nice and easy to use import/export options in the subscriptions fragment
- Includes instructions for each service (in the import fragment/screen)
2018-03-08 11:50:46 -03:00
Christian Schabesberger
074963aee0 put progressbar on top of thumbnail and made it red 2015-12-09 22:14:22 +01:00
Christian Schabesberger
37d9be9095 put fab button on top of video thumbnail 2015-12-08 21:29:29 +01:00