Commit Graph

1733 Commits

Author SHA1 Message Date
ByteHamster c6e81391b2 Updated translations 2019-05-07 15:56:29 +02:00
ByteHamster 5a99580985 Do not deadlock on seek when using Sonic
Callbacks are called on the thread that created the MediaPlayer.
For Sonic, this is the executor. For ExoPlayer, this is the main thread.
When calling executor.submit, every thread waiting for the runnable to
complete gets blocked.

Because the callback is called in the thread that created the player,
we can simply remove the call to executor.submit and still be sure
that a background thread is used.
2019-05-07 15:32:48 +02:00
ByteHamster c16bbdfc96 Do not block when using Sonic+Sleep timer 2019-05-07 14:58:34 +02:00
ByteHamster cd5224d01b Charging constraint is related to auto download only 2019-05-06 23:08:45 +02:00
ByteHamster dbda4a9aa8 Using WorkManager for feed updates 2019-05-06 23:04:19 +02:00
Anderson Mesquita fb3bfa9f80 Handle iTunes single-number duration format
Apple says this [1] about the `<itunes:duration>` tag:

    If you specify a single number as a value (without colons), Apple
    Podcasts displays the value as seconds.

This commit makes it also handle this single-number format.

Closes: #3024

[1]: https://help.apple.com/itc/podcasts_connect/#/itcb54353390
2019-05-05 00:04:06 -04:00
Anderson Mesquita 9b41139709 Extract DurationParser
This makes it easier to test the logic of parsing duration strings.

References: #3024
2019-05-05 00:04:06 -04:00
Anderson Mesquita a4c852dac0 Extract methods in NSITunes
References: #3024
2019-05-04 13:59:05 -04:00
ByteHamster 01616dd502 Added names for threads
So it is easier to identify problems in bug reports
2019-05-03 12:17:05 +02:00
ByteHamster d67aa6386e Updated string
Closes #3145
2019-05-01 11:02:29 +02:00
Cédric Cabessa cf638a4978 use time converter and pref in MediaPlayer and Widget 2019-04-28 21:03:18 +02:00
Cédric Cabessa 6187945e8f add a time conversion class
convert time depending on current playback speed and preferences
2019-04-28 21:03:18 +02:00
Cédric Cabessa 743ec1927c add preference for "Time respects playback speed" 2019-04-28 21:03:18 +02:00
ByteHamster 5d124c476a Fixed sleep timer ANR (Closes #3139) 2019-04-27 10:50:13 +02:00
ByteHamster 0925078770 Translation updates 2019-04-24 23:19:52 +02:00
H. Lehmann 017a6ab3bc
Merge pull request #2957 from orionlee/bugfix_app_anr_in_auto_feed_update_2956
Prevent app crash during some automatic feed update
2019-04-19 12:02:25 +02:00
Brad Pitcher a349865af3
use multi-line TextView for "No media playing" 2019-04-18 22:08:49 -07:00
Brad Pitcher 73c39fc3d0
no need to spell out android.view.View 2019-04-18 21:48:33 -07:00
Brad Pitcher ee6e5ed5d0
space before ( for better style 2019-04-18 21:45:59 -07:00
Brad Pitcher bf54e0e7c7
avoid "app not responding" errors loading widget image 2019-04-18 21:45:11 -07:00
Brad Pitcher a60b6efc51
use ic_launcher_foreground for widget when nothing is playing 2019-04-18 21:43:35 -07:00
ByteHamster 2fca491f53 Made sure that there is not an ANR when switching media player 2019-04-17 20:52:13 +02:00
ByteHamster 1fe33fb351 Fixed NetworkOnMainThreadException 2019-04-16 22:50:59 +02:00
ByteHamster 0339ce7bca Do not set player status before player object is created 2019-04-14 13:56:04 +02:00
ByteHamster 28f424e3c1 No locks are needed if everything is executed on main thread 2019-04-14 13:42:32 +02:00
Brad Pitcher 25915453ba
hide widget text when displaying < 3 columns 2019-04-12 17:56:53 -07:00
ByteHamster 09f4ebf08a Let PlaybackController handle listening for service start 2019-04-12 11:39:38 +02:00
ByteHamster 7d20baf4f9 Upgraded EventBus to v3
Also made sure that register/unregister are called in onStart/onStop
instead of onResume/onPause (prevents possible MultiWindow problems
where updates are not received because activity is not fucused).
2019-04-12 11:32:31 +02:00
H. Lehmann 3f1e6b5d50
Merge pull request #3106 from ByteHamster/subscriptions-columns
Set number of subscription columns
2019-04-12 10:56:26 +02:00
ByteHamster 11b085c68b Fixed attr redeclaration 2019-04-12 10:41:49 +02:00
H. Lehmann b4f04f6d6d
Merge pull request #3105 from ByteHamster/style-repetition
Reduced repetition in styles.xml
2019-04-12 10:36:06 +02:00
Brad Pitcher 64ddf6ec96
use app_icon_size for layout width on widget components 2019-04-11 22:26:01 -07:00
Brad Pitcher 210afaeb3c
fix widget image glider 2019-04-11 22:25:24 -07:00
ByteHamster cfd0af55c4 Removed nb translation 2019-04-11 21:54:57 +02:00
ByteHamster 777d92d4be Set number of subscription columns 2019-04-11 21:24:51 +02:00
ByteHamster 6595f49f22 Reduced repetition in styles.xml 2019-04-11 21:02:45 +02:00
H. Lehmann 97d08f3b00
Merge pull request #3097 from ByteHamster/exoplayer-main-thread
Executing all ExoPlayer methods on main thread
2019-04-11 20:50:56 +02:00
ByteHamster 5745da75a6 Clarified that it is using caller thread. not main thread 2019-04-11 20:11:40 +02:00
Brad Pitcher f2af5192e6
Merge branch 'develop' into fix-2359 2019-04-10 08:21:55 -07:00
ByteHamster 0e3cabb86d Do not hold state in fragments 2019-04-10 01:05:36 +02:00
ByteHamster 156a20734a Fix Sonic playback 2019-04-07 12:54:12 +02:00
ByteHamster 2c9cb25eda Merge branch 'develop' into exoplayer-main-thread 2019-04-07 11:52:24 +02:00
ByteHamster ebe32e795a Executing all ExoPlayer methods on main thread 2019-04-07 00:19:02 +02:00
orionlee 20f1445c06 fix rebase conflicts - remove the incorrect @NonNull from rxjava 2019-04-06 14:19:16 -07:00
orionlee 1655d234af #2966 RxJava2 null - case the underlying method may return null, but
should never happen in the code path, e.g.,
 return the current FeedItem in ItemFragment UI.
Mark underlying method as @Nullable, and let observer's existing
 onError() to handle null case

Rx observer : underlying sources marked as @Nullable
 ItemFragment.load : .loadInBackground
 MediaplayerActivity.checkFavorite : DBReader.getFeedItem
 ItemDescriptionFragment.onViewCreated : DBReader.getFeedItem
 ItemlistFragment.loadItems : .loadData
2019-04-06 13:43:11 -07:00
orionlee 0472bb9237 #2966 RxJava2 null - explicit mark underlying Rx sources as NonNull
to be on the safe side, for cases that the consuming observers checks null
unnecessarily.

Rx observer : underlying sources marked as NonNull
OnlineFeedViewActivity.startFeedDownload : Downloader.getResult
AllEpisodesFragment.loadItems : AllEpisodesFragment.loadData
PlaybackHistoryFragment.loadItems : DBReader.getPlaybackHistory
QueueFragment.loadItems : DBReader.getQueue
SearchFragment.search : .performSearch
2019-04-06 13:43:11 -07:00
orionlee 670fc124eb #2966 RxJava2 null - explicit mark underlying Rx sources as NonNull
to be on the safe side, for cases that the consuming observers
already assumes the result is not null.

Rx observer : underlying sources marked as NonNull
OnlineFeedViewActivity.listener member : DBReader.getFeedList
StatisticsActivity.loadStatistics : DBReader.getStatistics
CustomMRControllerDialog.updateViews : CustomMRControllerDialog.fetchArt
CompletedDownloadsFragment.loadItems : DBReader.getDownloadedItems
DownloadLogFragment.loadItems : DBReader.getDownloadedItems
ItemDescriptionFragment.onViewCreated : .loadData, Timeline.processShownotes
SubscriptionFragment.loadSubscriptions : DBReader.getNavDrawerData
SubscriptionFragment.onContextItemSelected (x2) : DBWriter.markFeedSeen, DBWriter.markFeedRead
PreferenceController.export : ExportWorker.output member
2019-04-06 13:43:11 -07:00
H. Lehmann 5f86af88b1
Merge pull request #3083 from orionlee/bulk_remove_from_queue_1145
Bulk remove from queue
2019-04-06 21:45:55 +02:00
orionlee cb14fd930f refactor - rename string resource name `remove_episode_lable` , which was ambiguous with typos, to `delete_episode_label`
- non-default string resources to be handled by Transifex
2019-04-06 11:27:20 -07:00
orionlee cc43af110a tweak - bulk edit UI - show a message after an action is applied. 2019-04-06 11:15:14 -07:00
orionlee b3fbf0b4aa refactor - UI - remove the old (and now used) select all / none /intermediate icons 2019-04-04 14:05:51 -07:00
orionlee d186309066 bulk edit - UI - new select all / none icons, based on
standard Material icons.
2019-04-04 13:50:55 -07:00
orionlee dfe2241b4c bulk remove episodes from queue - UI - icon for dark themes. 2019-04-04 13:12:09 -07:00
H. Lehmann 643173de14
Merge pull request #2954 from orionlee/bugfix_phantom_notification_rework_2716
Fix phantom service notification
2019-04-04 11:59:30 +02:00
orionlee b683d33bcb bulk edit - refactor - reorder method parameter for DBWriter.removeQueueItem(Context, FeedItem, boolean) to be consistent with the rest of the API. 2019-04-03 14:21:35 -07:00
orionlee 4322e8646f bulk edit - UI tweak - rename "Remove Episode" to "Delete Episode", to be consistent with other UIs 2019-04-03 13:27:31 -07:00
ByteHamster 46510c808a Respect 'keep updated' for new items counter 2019-04-03 18:11:55 +02:00
H. Lehmann 7a98e3c231
Merge pull request #3082 from ByteHamster/mobile-updates
Mobile updates: Allow images
2019-04-03 17:43:53 +02:00
H. Lehmann b6e50c61d6
Merge pull request #3060 from jatinkumarg/issue-3052
Added empty views to the PlayBack History, Queue,and Downloads
2019-04-03 17:42:09 +02:00
ByteHamster 788e75515a Review changes 2019-04-03 17:29:44 +02:00
orionlee 3768dfb0ff bulk edit - "N selected" UI logic 2019-04-02 17:34:05 -07:00
orionlee 364c9a308d bulk remove from queue - backend - implement the new API 2019-04-02 15:59:27 -07:00
orionlee 70287a740e bulk remove from queue - backend - refactor existing logic to support bulk remove 2019-04-02 14:59:12 -07:00
orionlee 7d78b88a1c bulk remove from queue - frontend logic, with a stub backend. 2019-04-02 14:11:22 -07:00
orionlee 737f7571ab UI Prototype for Batch Edit Episodes rework (from #1145) 2019-04-02 11:47:57 -07:00
ByteHamster 6fe171fac9 Use ApOkHttpUrlLoader for all images
Probably got broken during my Glide update.
When using append or prepend, Glide uses the next one in the chain if ApOkHttpUrlLoader blocks
2019-04-02 17:41:21 +02:00
ByteHamster 0fda36b9b3 Add preference to allow mobile updates of images 2019-04-02 17:41:15 +02:00
Borjan Tchakaloff c589bd2022 Validate that the *new* and *not played* are also exclusive
The FeedItem state is actually a tri-state, complement the test
coverage by checking that the state changes from *new* to
*not played*.
2019-03-31 21:26:53 +02:00
Borjan Tchakaloff 6ebf1defe7 Validate that the item state is only changed when needed
Follow-up to commit 8172d87477 (#3067)
that adds test coverage for the resolved issue.

Also, fix that commit by making the update condition more explicit:
the FeedItem state is only changed when a state switch is necessary.
In other words, an item marked as *new* that gets downloaded should
lose the *new* mark and gain the *unplayed* mark instead.
2019-03-31 16:28:05 +02:00
Borjan Tchakaloff cba4059063 Require the Mockito library for unit testing 2019-03-31 16:26:26 +02:00
Borjan Tchakaloff 3c7fd274de Validate that the *new* and *played* states are exclusive 2019-03-31 16:26:26 +02:00
H. Lehmann c6344f5bc0
Merge pull request #3073 from deandreamatias/fix-button-shadow-3040
Fix #3040 Video playback control button shadow
2019-03-31 00:44:50 +01:00
Matias de Andrea 56456e0001 Delete unused drawable 2019-03-30 21:21:11 +01:00
Martin Fietz f900046c66
Merge pull request #3068 from bibz/develop
Do not reset item "played" flag on media download
2019-03-30 11:12:46 +01:00
Matias de Andrea 7f3f2180cc Fixes #3040
- Delete unused icons
2019-03-29 22:27:26 +01:00
Matias de Andrea 007f92c291 Change the icons in interface #3040 2019-03-29 22:23:52 +01:00
Matias de Andrea 9e21695486 Add new vector icons #3040 2019-03-29 22:21:04 +01:00
Jatin Kumar 209b0b3880 Fixed typos 2019-03-29 14:20:11 -04:00
Matias de Andrea 09087b354d Fix #3040
- Change the size of the button circle background
2019-03-29 12:57:52 +01:00
H. Lehmann 42cbdbd989
Merge pull request #3066 from orionlee/bugfix_statistics_played_duration_inflated_2162
bugfix - statistics - inflated actual played duration
2019-03-27 20:51:13 +01:00
Jatin Kumar bdf7bf6844 Fixes #3052: Added empty views to the Playback History, Queue, Downloads and Episodes 2019-03-27 04:16:06 -04:00
Borjan Tchakaloff 8172d87477 Do not reset item "played" flag on media download
If an item has already been played, downloading its media will not
reset that "played" flag.

Fixes: #3067
2019-03-25 15:41:39 +01:00
orionlee 0a01f6e00b #2162 bugfix - statistics - inflated actual played duration 2019-03-24 13:00:37 -07:00
Jatin Kumar 6662205167 Added empty views to the PlayBack History, Queue,and Downloads 2019-03-21 03:05:01 -04:00
Matthieu De Beule e25659a128 Fix #3054: use UTF-8 to encode password and username for gpodder auth 2019-03-08 17:46:30 +01:00
orionlee 7a905c0570 remove the commented stopService() call (to avoid future confusion) 2019-03-05 15:07:16 -08:00
orionlee 24915785eb remove the stopService() per review (which might unnecessarily
stop the playback when unsupported media buttons are pressed.)
2019-03-05 15:01:48 -08:00
H. Lehmann c1bfb9183c
Merge pull request #3013 from hannesa2/buildImprovements
Build improvements
2019-03-05 23:49:00 +01:00
orionlee e94e95e844 remove dead codes 2019-03-04 13:46:11 -08:00
orionlee 600e0e561e coding style fix per review 2019-03-04 13:44:53 -08:00
H. Lehmann c0f534e825
Merge pull request #3050 from ByteHamster/add-backup-keyword
Add backup keyword to search
2019-03-04 18:57:37 +01:00
ByteHamster 579b263a86 Add backup keyword to search 2019-03-04 14:33:39 +01:00
ByteHamster c50d37fa1b Moved some implementation tests to unit tests 2019-03-03 23:55:52 +01:00
H. Lehmann 1593a06077
Merge pull request #3032 from shortspider/3031-TimecodeRegex
Change Timecode Regex
2019-03-03 23:26:32 +01:00
Nathan Mascitelli 1d0e701525 Another atempt at fixing the regex 2019-03-03 13:36:28 -05:00
Nathan Mascitelli 7e3ccd97da Fix regex 2019-03-02 12:12:26 -05:00
Nathan Mascitelli 6f69b4b140 Adjust regext to ignore X:Y timecodes 2019-03-02 08:47:52 -05:00
orionlee a3389490bb ensure the service continues to run in the event it takes a long time for the service to load the media to play, e.g.,
streaming over a slow network.
2019-02-27 14:59:31 -08:00
orionlee ab78c1d410 bug fix for Android8+: revert context.startService() calls back to
ContextCompat.startForegroundService(), to ensure PlaybackService
can be started.

While PlaybackService itself ensures it will be raised to foreground
when appropriate, Android 8+ forbids creating the (background)
services to begin with (and throw IllegalStateException) in some
situation (e.g., BroadcastReceiver).

https://developer.android.com/about/versions/oreo/android-8.0-changes#atap
2019-02-27 14:52:34 -08:00
orionlee 2c5db08e25 minor cleanup of Log codes and comments. 2019-02-27 14:52:34 -08:00
orionlee 221cd4b480 refactor stop PlaybackService setupNotification() - extract common
code as private helper.
2019-02-27 14:52:34 -08:00
orionlee f0f8623937 refactor stop PlaybackService codes - remove legacy dead codes 2019-02-27 14:52:34 -08:00
orionlee 584865ad18 review stop PlaybackService codes (stopSelf, stopForeground, etc.) 2019-02-27 14:52:34 -08:00
orionlee 3f14fac479 remove static PlaybackService.started, in favor of the start state
managed by inner ServiceManager.
Also add a generic java8-like Optional class for use with RxJava2 where
null was to be returned (RxJava2 requires non-null).
2019-02-27 14:52:34 -08:00
orionlee e26a54bdbc start playbackService code paths reviewed (context.startService() and
ContextCompat.startForegroundService())
2019-02-27 14:52:34 -08:00
orionlee 76fbab8e82 more #2716 - fix VideoPlayback upon hitting home button. 2019-02-27 14:52:34 -08:00
orionlee f3980091a9 #2716 Prototype for the revamped PlaybackService to fix phantom
notification. Many rough edges. Notable TODOs are marked with [2716].
2019-02-27 14:52:34 -08:00
ByteHamster 6dafc8b127 Transifex: removed duplicate Italian translation
Using it_IT for all italian languages because it's 100% finished
2019-02-21 15:17:59 +01:00
Nathan Mascitelli e94e4bc3d0 Use a single format for short timecodes
It is unlikely that multiple formats for short timecodes would be used
in one document. Therefor we will parse all the short timecodes to see
if they are all less then the duration as HH:MM. If they are we will use
that, otherwise we will parse them as MM:SS.
2019-02-13 21:06:19 -05:00
Nathan Mascitelli c49e98b546 Handle more then 23 hours 2019-02-12 20:53:17 -05:00
Nathan Mascitelli 39b9df5064 Timecode parsing logic now handles two short formats
We now handle both HH:MM and MM:SS when paring timecodes. We will move
in reverse order (assuming that the timecodes will increase over the
course of the document) and parse short codes as HH:MM. When we get a
result that does not fit into the duration we will change to parse as
MM:SS and use that for the rest of the document.
2019-02-12 19:43:57 -05:00
Nathan Mascitelli d0f617880c Converter handles HH:MM and MM:SS 2019-02-12 19:43:37 -05:00
Nathan Mascitelli 96b0336b2c Update Timeline regex
Regex now looks for the new types of short and long timestamps.
2019-02-10 18:01:00 -05:00
ByteHamster abe68ec7bd Merge remote-tracking branch 'upstream/develop' into auto_download_12_hour_option_2685 2019-02-01 16:25:20 +01:00
Burt Wiley Snyder 7f100b3fa6 Null handling in OnlineFeedViewActivity (#3004) 2019-02-01 15:57:19 +01:00
Hannes Achleitner 0663e422a6 unify lint options for all modules 2019-01-27 12:54:56 +01:00
Hannes Achleitner e9c10cdaa8 simplify build concerning maven repos 2019-01-27 12:45:32 +01:00
Hannes Achleitner 9ca7888d92 remove buildtools specification 2019-01-27 12:42:02 +01:00
pachecosf a80435a03b switched implementation to ussing attr 2019-01-18 12:09:24 -08:00
pachecosf fd83665970 Changed implementation using themeUtils instead 2019-01-17 16:21:34 -08:00
pachecosf 7da762b8ea Changed implementation using themeUtils instead 2019-01-17 16:18:50 -08:00
pachecosf ecff66eff6 fixed styles 2019-01-17 12:29:23 -08:00
pachecosf 43642a5e6b adding highlighting of drawer item functunality 2019-01-16 20:51:54 -08:00
pachecosf 5d3e3687f9 Adding some highlighting of drawer items 2019-01-16 18:26:42 -08:00
ByteHamster 994a73a06f NonNull annotation 2019-01-15 20:48:15 +01:00
ByteHamster 35f6050194 Only delete from queue if deletion of media succeeds 2019-01-15 11:30:48 +01:00
H. Lehmann cf477de365
Merge pull request #2921 from qkolj/delete-episodes
Add delete option to episode's context menu
2019-01-15 11:23:44 +01:00
ByteHamster 71fdc65c5b Hiding settings that ExoPlayer does not yet support 2019-01-15 11:18:02 +01:00
H. Lehmann 3cad182e41
Merge pull request #2961 from HaBaLeS/AP2253
Remove silence in podcast episodes
2019-01-15 11:08:56 +01:00
H. Lehmann 7265fc55ba
Merge pull request #2969 from ByteHamster/colorDark
Expanding toolbar
2019-01-15 10:44:05 +01:00
H. Lehmann d62aaf1026
Merge pull request #2968 from ByteHamster/translation-update
Translation updates
2019-01-15 10:43:04 +01:00
orionlee 9090d697b0 #2947 - fix app crash in some error case with ExoPlayer.
(It does not address root problems in #2947 though).
2019-01-11 13:33:25 -08:00
ByteHamster 6c9f15e0bc Splash status bar color 2019-01-10 13:12:23 +01:00
ByteHamster 84ede1b22d Expanding toolbar 2019-01-09 22:55:50 +01:00
ByteHamster 0914ac2b4a Updated strings.xml translations 2019-01-09 21:17:47 +01:00
H. Lehmann b2e18b8128
Merge pull request #2944 from abendebury/develop
Fix bug preventing database import on Android 9.
2019-01-06 00:04:08 +01:00
falko 73c8635354 Add skip silence checkbox to audio control
Add new Checkbox to dialog. Enable only if ExoPlayer is selected.

Selection directly changes player behavior
2019-01-05 23:15:02 +01:00
falko 1d8509fd8a Enable ExoPlayer feature to skip silence
SetSpeed was change to SetPlaybackParams which contain speed and a switch to skip silence. For Players that fo not support this the call is ignored or only SetSpeed is used. It is only working if ExoPlayeris used

Default is OFF
2019-01-05 23:14:08 +01:00
falko 33603f8edd Update ExoPlayer Version to 2.9.3
In order to support the feature to skip silence audio ExoPlayer must be
updated. Lateste avaiable Version is 2.9.3
2019-01-05 14:20:26 +01:00
orionlee eff2f154b5 fix code formatting 2019-01-04 10:33:26 -08:00
orionlee d1c73dda5b episode cleanup 12 hour option - use hours internally part 2 (persisted shared preference)
requires data migartion: app versionCode increased to 1070196
2019-01-04 10:33:26 -08:00
orionlee 566a682122 episode cleanup 12 hour option - use hours internally part 1 (actual algorithm, no persistence) 2019-01-04 10:33:25 -08:00
orionlee 4ff5690341 episode cleanup 12 hour option: add unit test to prepare for using hours
rather than days as data structure
2019-01-04 10:32:14 -08:00
orionlee 1bb0694403 Mark method only used in testing. 2019-01-04 10:32:14 -08:00
orionlee df6424be60 #2685: add "12 hours after finishing" option for auto download episodes cleanup 2019-01-04 10:32:14 -08:00
orionlee 33810b203e Mark method only used in testing. 2019-01-04 10:32:14 -08:00
orionlee 5bc497009a #2685: add "12 hours after finishing" option for auto download episodes cleanup 2019-01-04 10:32:14 -08:00
orionlee 949a05c17a fix #2956 - prevent ANR during some automatic feed update 2019-01-04 10:15:09 -08:00
Petar Kukolj dfcb16d77b Include Awaitility in app module and properly fix the added test 2019-01-04 00:13:00 +01:00
Petar Kukolj ebc0200968 Fix a style issue and fix the test 2019-01-03 22:50:30 +01:00