There's no need to have so many classes to handle the hardware volume keys. This PR simplifies it, without duplicating any more code than was already duplicated.
ControlPad now uses AppCompatImageView to support theme colors.
Instead of applying the colors programmatically they are now defined
in the layout file.
- added method to HostConnection that returns a Future object instead of
taking a callback.
- added logic for handling null Handlers in HostConnection methods
- added method to HostManager to run a function that takes a HostConnection
in a background thread where the Future API results above can be
synchronously composed.
- replaced chain of callbacks in RemoteActivity with a sequence of
future gets in OpenSharedUrl.
* It seems tinting is applied on pre-Lollipop devices using
a color filter. HighlightButton used clearColorFilter to remove
the highlight color and revert back to the original color. This
caused an issue on < v21 devices as the View would loose its tint.
Whan the background service is launcher, it is launched on the foreground and a notification is always shown.
The service stays on while something is playing. It stops itself on a connection error, quitting Kodi or 5 seconds after stopping
Make the Pause Phone Calls preference dependent on the Show Notification preference, as we always need to show a notification when the service is running
AdapterView is not supported by the transition framework. This
became an issue with the release of API 27. In Android 8.1 the
shared element view is removed from the exiting fragment. This
causes Android to call the removeView method from AdapterView
which is not implemented and causes the app to crash.
We can reenable shared element transitions for API 27 and up by
refactoring the GridView usage to RecycleView.
Lint is complaining about the new launcher icons in 'res/mipmap-anydpi-v26'
are not in PNG format. These are now defined in XML and lint is probably
not aware of the new XML format for API v26 and higher.
This also fixes usage of "android:layout_marginEnd". Which is only
supported from API v17.
Added running lintFullRelease to travis-CI build.
Due to a previous refactoring, dataHolder was still of type
AbstractInfoFragment.DataHolder which should be just DataHolder
in AbstractFragment. Although AbstractInfoFragment inherits from
AbstractFragment the code works. However, on KitKat (4.4) some
devices reported a missing method which might be caused by this "weird"
inheriting. Hopefully this fixes that.
* Target Sdk Version 26
* Add Adaptive Icon For API 26+
* Update travis to compile against API 26
* Move SVG files to art/launcher/v26/ per CR
* Scale logo to 83%
* Update buildToolsVersion to 26.0.2
* Update travis build-tools to 26.0.2
* Refactored RemoteFragment and created a compound view for the
actual remote. I called it ControlPad to make it more clear what
its main function is.
* Implemented a custom grid layout (SquareGridLayout) that will
always be square. When its width and height are both set to
match_parent, it will take the smallest of the two as the
actual size.
* For devices with a smallest width smaller then 360dp the ControlPad
is sized to the maximum available space. For larger devices we still
use the old fixed sizes.
Refactored code to use styles
* Added two abstract methods setSharedPreferences and
configureHostInfo to allow test classes extending
AbstractTestClass to set preferences or change the host info.
* Implemented a mock event server to test event server commands
* Implemented a handler to handle JSON input events over HTTP
* Implemented simple Kodi markup code applier for the Now Playing fragment
* Moved to UIUtils; added early exit; now handles nesting of the same type
* Added handlers for LOWERCASE, CAPITALIZE, LIGHT and COLOR
- LOWERCASE and CAPITALIZE work, LIGHT and COLOR are just stripped out
- inlined the TextAppearanceSpan new's. Turns out they can't be reused.
* updated javadoc
* fixed crash when capitalizing an empty word
* Fixed issue with selecting tabs
* Fixed issue with switching host on other thread than UI thread
* Fixed concurrent modification exception in JSONConnectionHandlerManager
* Fixed issue with drawer not closing
* Fixes issue with running method only supported on API 21 and higher
* Allow the RemoteActivity and BaseMediaActivity to show a volume controller dialog when hardware volume keys are pressed
** The dialog handles the key events and makes callbacks to the activities to handle showing the dialog itself
* Minor improvements
** Make HighlightButton render in the IDE GUI Editor
** Minor code cleanup
** set currentActivePlayerId = -1; on playerOnStop in BaseMediaActivity to be more consistent
resolvesxbmc/Kore#235
* update README about Run Configuration setting
* update task that needs to depend on assembleFullDebug
** this was needed to run individual local tests
* Removed using the GridLayout from the support library
as this might be causing problems on devices that don't
include the library correctly.
* Replaced using the GridLayout measurement and layout implementations
by our own implementation of a simple grid layout that will evenly distribute
its children among a square sized grid.
* Refactored RemoteFragment and created a compound view for the
actual remote. I called it ControlPad to make it more clear what
its main function is.
* Implemented a custom grid layout (SquareGridLayout) that will
always be square. When its width and height are both set to
match_parent, it will take the smallest of the two as the
actual size.
* For devices with a smallest width smaller then 360dp the ControlPad
is sized to the maximum available space. For larger devices we still
use the old fixed sizes.
* Panel now only closes when collapsed bar is clicked.
This prevents unwanted closing when using the sliders and
buttons.
* Moved collapsed panel size to the compound view so users
of the NowPlayingPanel don't need to look inside the
compound view layout to determine the correct size.
* Added dependency on assembleFullDebug before running unit tests.
Apparently assembleFullDebugUnitTest does not include
the sourceset for fullDebug as defined in app/build.gradle