* 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
* Fixed issue with opening drawer and Espresso not waiting for
when drawer was actually opened.
* Implemented new handlers for MockTcpServer to test
media control functions.
* Decreased delay for sending reponses in MockTcpServer from
1 sec to 100 ms. This was needed to prevent race conditions with
the progress bar that increases automatically once per second.
* The slideup panel is only displayed when something is
playing. It starts collapsed showing the media poster
and title of what is currently playing.
* Media controls implemented are volume, progress, shuffle,
repeat and play/pause for all items. Next and previous are only
available when a music item is playing.
* In collapsed mode the panel will display the mute button only
if Kodi is muted. The mute button in expanded mode is always
visible.
* Panel is enabled by default. Users can disable the panel
in Settings
* Implemented listening to Player.OnPropertyChanged notifications
to update shuffle and repeat button states.
Travis only gets the latest 50 git commits, which might not contain a tag that describes the version name, causing the build to fail. This change always returns a version name.
* Sort file lists by path and show filename/foldername in details
* rewrite diplay of file lists using java.io.File for platform independence. It also makes the code clearer by avoiding string acrobatics
* fix enqueue order of action_play_from_this_item
* remove java.io.File dependency again
instead add method getFilenameFromPath
* move playMediaFile to end of block
* Added JSON datafiles for TV shows and music videos
* Implemented instrumentations tests for MoviesActivity, MusicActivity,
TVShowActivity, and AddonsActivity.
* Moved RestoreSearchQueryViewPagerTest to music package as it uses
the MusicActivity
* Moved RestoreSearchQueryListFragmentTest to movies packages as it
uses the MoviesActivity
* Added scripts to get JSON data for music videos, addons, and TV shows
* Added sequence diagram for BaseMediaActivity to clarify new setup
* Refactored BaseMediaActivity to comply with diagram
* Refactored SyncMusicVideos and SyncTVShows so we can use the same code
for adding test data as we use for adding real data.
* Removed unused StringBuffer and synchronize block in MockTcpServer
* BaseMediaActivity enforces a common layout which allows us to more
easily add new common UI elements
* All activities that allow browsing media should extend BaseMediaActivity
Currently CastActivity is the only exception.
This allows us to test activities and fragments that require JSON RPC calls.
The ApplicationTest for JSON method and notification calls is mainly added
as example and for testing the MockTcpServer and friends.
This introduces the MVC model to details fragments. It moves as much
view and control code out of the concrete fragments into the abstract
classes.
* Added UML class and sequence diagrams under doc/diagrams to clarify
the new setup
* Introduces new abstract classes
* AbstractFragment class to hold the DataHolder
* AbstractInfoFragment class to display media information
* AbstractAddtionalInfoFragment class to allow *InfoFragments
to add additional UI elements and propagate refresh requests.
See for an example TVShowInfoFragment which adds
TVShowProgressFragment to display next episodes and season
progression.
* Introduces new RefreshItem class to encapsulate all refresh
functionality from AbstractDetailsFragment
* Introduces new SharedElementTransition utility class to encapsulate
all shared element transition code
* Introduces new CastFragment class to encapsulate all code for
displaying casts reducing code duplication
* Introduces DataHolder class to replace passing the ViewHolder from
the *ListFragment to the *DetailsFragment or *InfoFragment
* Refactored AbstractDetailsFragment into two classes:
o AbstractDetailsFragment: for fragments requiring a tab bar
o AbstractInfoFragment: for fragments showing media information
We used to use <NAME>DetailsFragments for both fragments that show
generic
info about some media item and fragments that hold all details for
some media item.
For example, artist details showed artist info and used tabs to
show artist albums and songs as well. Now Details fragments are
used to show all details, Info fragments only show media item
information like description, title, rating, etc.
* Moved swiperefreshlayout code from AbstractCursorListFragment to
AbstractListFragment
* Add support for sharing SVTplay urls to "Play on Kodi".
SVTplay is a free streaming service provided by the Swedish national television SVT.
This feature requires the svtplay video plugin on Kodi.
* Fix SVTplay share always playing first episode of series.
* Allow specifying HTTPS Hosts manually
This is not exposed in the UI, but on the manual host configuration screen, if the address starts with a "http://" or "https://" this will be stripped and the `isHttps` flag set appropriately.
Additionally, the port can be configured as part of the address as well.
Any port specified as part of the address takes precedence over the explicit HTTP port box, to allow easy copy-pasting of an entire URL for a host.
This enables using Kore with Kodi instances available though HTTPS (e.g. via a reverse proxy).
* Changed platform AlertDialogs and preference.* to support lib counterparts
- added dependencies: support/preference-v7 for PreferenceFragmentCompat
and Preference subclasses, support/preference-v14 for the
MultiSelectListPreference
- simplified some AlertDialog.Builder calls and added non-null annotations
to DialogFragment#onCreateDialog(Bundle) overrides to shut the IDE up
- UIUtils: changed static member avatarColorsIdx to local var because it's
only used in one place and the value isn't cached
- layout/dialog_send_text: removed view vertical margins as they take
way too much space for nothing.
- strings: shortened english preference titles
- themes: added PrefTheme and changed preference title font size to medium
from large
- preferences: changed CheckBoxPreference to SwitchPreferenceCompat. these
don't have the same issue described in #233 (tested in kitkat).
* Changed platform PreferenceManager in RemoteActivity to support pref
* Fixed M permissions
* Split prefs into 2 groups as per material design guidelines
* Changed prefs theme to v14.material
* Moved container padding to individual prefs; removed pref-v7 dependency
- this makes the item dividers touch the screen edges which i think looks
better
- don't need to require preference-v7 because preference-v14 already
does
* Moved PrefTheme attributes *{Start,End} to v17 override
* Fixed crash caused by rotating twice while a dialog is active
* Changed wording as suggested
- added missing tint attribs in the vertical navigation icons
- parameterized pad buttons container dimensions like in portrait mode
- put art and media info/controls side-by-side like in portrait mode
* Refactored MediaProviderMusicTest splitting it up into separate classes
* Updated integration tests for MediaProvider
* Added tests to check displayartist
* Added tests to check various artists albums
* Fixed issue downloading all songs from an artist
* Added download option for songs in songslistfragment
* Created UIUtils.downloadSongs(...) to reduce code duplication
* Refactored downloading of songs on host/artist/album levels
All levels now use song display artist as artist and album display artist.
This prevents downloading songs multiple times when downloading same song on different levels.
* Updated travis build to include running local tests for each PR
* Removed unused methods from Utils.java
* Moved all resources required by both local and instrumentation tests
to testUtils
* Added proguard rules for the test builds to prevent proguard from discarding
the junit classes
* Song lists for artist, album, and overall now shows the artist name for each individual song
* Added display artist column to songs table. This required a DB upgrade and users should
do a refresh for music items to be able to see the display artist in the song lists.
Currently Kore does only support the playback of youtube and vimeo video
urls when invoked via the "Play with Kodi" share menu.
This commit adds support for plain video urls.
This applies the fix for issue #219 Incomplete libraries for movies and
TV shows.
For music items this was already fixed in PR #236
See commit 7330f85241