summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java8
-rw-r--r--app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java6
-rw-r--r--app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java16
-rw-r--r--app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java8
-rw-r--r--app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java2
-rw-r--r--app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java20
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java8
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java4
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java4
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java16
-rw-r--r--app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java19
-rw-r--r--app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java4
-rw-r--r--app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java152
-rw-r--r--app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java2
-rw-r--r--app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java2
-rw-r--r--app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java2
-rw-r--r--app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java2
-rw-r--r--app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java91
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java13
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java49
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java22
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java62
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java35
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java97
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java18
-rw-r--r--app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java9
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java8
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java8
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java12
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java1
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java5
-rw-r--r--app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java81
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java6
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java40
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java10
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java12
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java17
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java12
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java2
-rw-r--r--app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java1
-rw-r--r--app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java4
-rw-r--r--app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java5
-rw-r--r--app/src/main/res/layout-v14/authentication_dialog.xml87
-rw-r--r--app/src/main/res/layout-v14/directory_chooser.xml114
-rw-r--r--app/src/main/res/layout-v14/download_authentication_activity.xml98
-rw-r--r--app/src/main/res/layout-v14/opml_selection.xml61
-rw-r--r--app/src/main/res/layout-v14/time_dialog.xml67
-rw-r--r--app/src/main/res/layout/authentication_dialog.xml57
-rw-r--r--app/src/main/res/layout/directory_chooser.xml59
-rw-r--r--app/src/main/res/layout/download_authentication_activity.xml51
-rw-r--r--app/src/main/res/layout/ellipsize_start_listitem.xml1
-rw-r--r--app/src/main/res/layout/feedinfo.xml10
-rw-r--r--app/src/main/res/layout/nav_list.xml4
-rw-r--r--app/src/main/res/layout/opml_import.xml2
-rw-r--r--app/src/main/res/layout/opml_selection.xml50
-rw-r--r--app/src/main/res/layout/time_dialog.xml9
-rw-r--r--app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java7
-rw-r--r--build.gradle4
-rw-r--r--core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java2
-rw-r--r--core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java2
-rw-r--r--core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java2
-rw-r--r--core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java7
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java13
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java3
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java5
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java10
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java20
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java14
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java27
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java86
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java16
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java22
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java26
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java26
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java83
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java44
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java10
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java12
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java61
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java16
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java10
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/Converter.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/IntList.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java99
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java46
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java21
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java8
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java29
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java2
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java4
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java6
-rw-r--r--core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java14
-rw-r--r--core/src/main/res/drawable-hdpi-v11/ic_stat_antenna_default.pngbin541 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-hdpi-v11/ic_stat_authentication.pngbin371 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-hdpi/ic_stat_antenna_default.pngbin473 -> 541 bytes
-rw-r--r--[-rwxr-xr-x]core/src/main/res/drawable-hdpi/ic_stat_authentication.pngbin446 -> 371 bytes
-rw-r--r--core/src/main/res/drawable-ldpi-v11/ic_stat_antenna_default.pngbin259 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-ldpi/ic_stat_antenna_default.pngbin202 -> 259 bytes
-rw-r--r--core/src/main/res/drawable-mdpi-v11/ic_stat_antenna_default.pngbin349 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-mdpi-v11/ic_stat_authentication.pngbin244 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-mdpi/ic_stat_antenna_default.pngbin297 -> 349 bytes
-rw-r--r--[-rwxr-xr-x]core/src/main/res/drawable-mdpi/ic_stat_authentication.pngbin317 -> 244 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi-v11/ic_stat_antenna_default.pngbin783 -> 0 bytes
-rwxr-xr-xcore/src/main/res/drawable-xhdpi-v11/ic_stat_authentication.pngbin418 -> 0 bytes
-rw-r--r--core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.pngbin693 -> 783 bytes
-rw-r--r--[-rwxr-xr-x]core/src/main/res/drawable-xhdpi/ic_stat_authentication.pngbin584 -> 418 bytes
-rw-r--r--core/src/main/res/values-v11/colors.xml5
-rw-r--r--core/src/main/res/values-v14/dimens.xml5
-rw-r--r--core/src/main/res/values-v14/styles.xml9
-rw-r--r--core/src/main/res/values/colors.xml5
-rw-r--r--core/src/main/res/values/dimens.xml2
-rw-r--r--core/src/main/res/values/styles.xml1
206 files changed, 1163 insertions, 1621 deletions
diff --git a/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java b/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java
index 3ca7906cb..a880c330b 100644
--- a/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/gpodnet/GPodnetServiceTest.java
@@ -11,6 +11,8 @@ import de.danoeh.antennapod.core.gpoddernet.GpodnetServiceException;
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetDevice;
import de.danoeh.antennapod.core.gpoddernet.model.GpodnetTag;
+import static java.util.Collections.singletonList;
+
/**
* Test class for GpodnetService
*/
@@ -38,14 +40,14 @@ public class GPodnetServiceTest extends AndroidTestCase {
public void testUploadSubscription() throws GpodnetServiceException {
authenticate();
- ArrayList<String> l = new ArrayList<String>();
+ ArrayList<String> l = new ArrayList<>();
l.add("http://bitsundso.de/feed");
service.uploadSubscriptions(USER, "radio", l);
}
public void testUploadSubscription2() throws GpodnetServiceException {
authenticate();
- ArrayList<String> l = new ArrayList<String>();
+ ArrayList<String> l = new ArrayList<>();
l.add("http://bitsundso.de/feed");
l.add("http://gamesundso.de/feed");
service.uploadSubscriptions(USER, "radio", l);
@@ -55,7 +57,7 @@ public class GPodnetServiceTest extends AndroidTestCase {
authenticate();
String[] URLS = {"http://bitsundso.de/feed", "http://gamesundso.de/feed", "http://cre.fm/feed/mp3/", "http://freakshow.fm/feed/m4a/"};
List<String> subscriptions = Arrays.asList(URLS[0], URLS[1]);
- List<String> removed = Arrays.asList(URLS[0]);
+ List<String> removed = singletonList(URLS[0]);
List<String> added = Arrays.asList(URLS[2], URLS[3]);
service.uploadSubscriptions(USER, "radio", subscriptions);
service.uploadChanges(USER, "radio", added, removed);
diff --git a/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java b/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java
index ee454ce8a..39abe4b7a 100644
--- a/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/handler/FeedHandlerTest.java
@@ -32,8 +32,8 @@ import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
public class FeedHandlerTest extends InstrumentationTestCase {
private static final String FEEDS_DIR = "testfeeds";
- File file = null;
- OutputStream outputStream = null;
+ private File file = null;
+ private OutputStream outputStream = null;
protected void setUp() throws Exception {
super.setUp();
@@ -165,7 +165,7 @@ public class FeedHandlerTest extends InstrumentationTestCase {
Feed feed = new Feed(0, null, "title", "http://example.com", "This is the description",
"http://example.com/payment", "Daniel", "en", null, "http://example.com/feed", image, file.getAbsolutePath(),
"http://example.com/feed", true);
- feed.setItems(new ArrayList<FeedItem>());
+ feed.setItems(new ArrayList<>());
for (int i = 0; i < numItems; i++) {
FeedItem item = new FeedItem(0, "item-" + i, "http://example.com/item-" + i,
diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java b/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java
index 5e5eb1e8b..5cd4e9906 100644
--- a/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java
+++ b/app/src/androidTest/java/de/test/antennapod/storage/DBCleanupTests.java
@@ -27,12 +27,12 @@ import static de.test.antennapod.storage.DBTestUtils.saveFeedlist;
public class DBCleanupTests extends InstrumentationTestCase {
private static final String TAG = "DBTasksTest";
- protected static final int EPISODE_CACHE_SIZE = 5;
+ static final int EPISODE_CACHE_SIZE = 5;
private final int cleanupAlgorithm;
- protected Context context;
+ Context context;
- protected File destFolder;
+ private File destFolder;
public DBCleanupTests() {
this.cleanupAlgorithm = UserPreferences.EPISODE_CLEANUP_DEFAULT;
@@ -104,9 +104,9 @@ public class DBCleanupTests extends InstrumentationTestCase {
}
}
- protected void populateItems(final int numItems, Feed feed, List<FeedItem> items,
- List<File> files, int itemState, boolean addToQueue,
- boolean addToFavorites) throws IOException {
+ void populateItems(final int numItems, Feed feed, List<FeedItem> items,
+ List<File> files, int itemState, boolean addToQueue,
+ boolean addToFavorites) throws IOException {
for (int i = 0; i < numItems; i++) {
Date itemDate = new Date(numItems - i);
Date playbackCompletionDate = null;
@@ -145,9 +145,9 @@ public class DBCleanupTests extends InstrumentationTestCase {
final int NUM_ITEMS = EPISODE_CACHE_SIZE * 2;
Feed feed = new Feed("url", null, "title");
- List<FeedItem> items = new ArrayList<FeedItem>();
+ List<FeedItem> items = new ArrayList<>();
feed.setItems(items);
- List<File> files = new ArrayList<File>();
+ List<File> files = new ArrayList<>();
populateItems(NUM_ITEMS, feed, items, files, FeedItem.UNPLAYED, false, false);
DBTasks.performAutoCleanup(context);
diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java
index 785d32e93..93a9408b7 100644
--- a/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTasksTest.java
@@ -18,6 +18,8 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.PodDBAdapter;
+import static java.util.Collections.singletonList;
+
/**
* Test class for DBTasks
*/
@@ -100,7 +102,7 @@ public class DBTasksTest extends InstrumentationTestCase {
assertTrue(feed.getId() != 0);
final long feedID = feed.getId();
feed.setId(0);
- List<Long> itemIDs = new ArrayList<Long>();
+ List<Long> itemIDs = new ArrayList<>();
for (FeedItem item : feed.getItems()) {
assertTrue(item.getId() != 0);
itemIDs.add(item.getId());
@@ -125,7 +127,7 @@ public class DBTasksTest extends InstrumentationTestCase {
public void testUpdateFeedMediaUrlResetState() {
final Feed feed = new Feed("url", null, "title");
FeedItem item = new FeedItem(0, "item", "id", "link", new Date(), FeedItem.PLAYED, feed);
- feed.setItems(Arrays.asList(item));
+ feed.setItems(singletonList(item));
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
@@ -138,7 +140,7 @@ public class DBTasksTest extends InstrumentationTestCase {
FeedMedia media = new FeedMedia(item, "url", 1024, "mime/type");
item.setMedia(media);
- feed.setItems(Arrays.asList(item));
+ feed.setItems(singletonList(item));
final Feed newFeed = DBTasks.updateFeed(context, feed)[0];
assertTrue(feed != newFeed);
diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java
index d02efa521..c9c715a86 100644
--- a/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java
+++ b/app/src/androidTest/java/de/test/antennapod/storage/DBTestUtils.java
@@ -19,7 +19,7 @@ import de.danoeh.antennapod.core.util.flattr.FlattrStatus;
/**
* Utility methods for DB* tests.
*/
-public class DBTestUtils {
+class DBTestUtils {
/**
* Use this method when tests don't involve chapters.
diff --git a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java
index 40083e507..b1cc807ea 100644
--- a/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/storage/DBWriterTest.java
@@ -138,7 +138,7 @@ public class DBWriterTest extends InstrumentationTestCase {
image.setOwner(feed);
feed.setImage(image);
- List<File> itemFiles = new ArrayList<File>();
+ List<File> itemFiles = new ArrayList<>();
// create items with downloaded media files
for (int i = 0; i < 10; i++) {
FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed, true);
@@ -151,7 +151,7 @@ public class DBWriterTest extends InstrumentationTestCase {
FeedMedia media = new FeedMedia(0, item, 1, 1, 1, "mime_type", enc.getAbsolutePath(), "download_url", true, null, 0, 0);
item.setMedia(media);
- item.setChapters(new ArrayList<Chapter>());
+ item.setChapters(new ArrayList<>());
item.getChapters().add(new SimpleChapter(0, "item " + i, item, "example.com"));
}
@@ -207,7 +207,7 @@ public class DBWriterTest extends InstrumentationTestCase {
feed.setImage(null);
- List<File> itemFiles = new ArrayList<File>();
+ List<File> itemFiles = new ArrayList<>();
// create items with downloaded media files
for (int i = 0; i < 10; i++) {
FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed);
@@ -418,7 +418,7 @@ public class DBWriterTest extends InstrumentationTestCase {
image.setOwner(feed);
feed.setImage(image);
- List<File> itemFiles = new ArrayList<File>();
+ List<File> itemFiles = new ArrayList<>();
// create items with downloaded media files
for (int i = 0; i < 10; i++) {
FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed);
@@ -444,7 +444,7 @@ public class DBWriterTest extends InstrumentationTestCase {
}
- List<FeedItem> queue = new ArrayList<FeedItem>();
+ List<FeedItem> queue = new ArrayList<>();
queue.addAll(feed.getItems());
adapter.open();
adapter.setQueue(queue);
@@ -482,7 +482,7 @@ public class DBWriterTest extends InstrumentationTestCase {
assertNotNull(destFolder);
Feed feed = new Feed("url", null, "title");
- feed.setItems(new ArrayList<FeedItem>());
+ feed.setItems(new ArrayList<>());
// create Feed image
File imgFile = new File(destFolder, "image");
@@ -490,7 +490,7 @@ public class DBWriterTest extends InstrumentationTestCase {
image.setOwner(feed);
feed.setImage(image);
- List<File> itemFiles = new ArrayList<File>();
+ List<File> itemFiles = new ArrayList<>();
// create items with downloaded media files
for (int i = 0; i < 10; i++) {
FeedItem item = new FeedItem(0, "Item " + i, "Item" + i, "url", new Date(), FeedItem.PLAYED, feed);
@@ -539,7 +539,7 @@ public class DBWriterTest extends InstrumentationTestCase {
private FeedMedia playbackHistorySetup(Date playbackCompletionDate) {
final Context context = getInstrumentation().getTargetContext();
Feed feed = new Feed("url", null, "title");
- feed.setItems(new ArrayList<FeedItem>());
+ feed.setItems(new ArrayList<>());
FeedItem item = new FeedItem(0, "title", "id", "link", new Date(), FeedItem.PLAYED, feed);
FeedMedia media = new FeedMedia(0, item, 10, 0, 1, "mime", null, "url", false, playbackCompletionDate, 0, 0);
feed.getItems().add(item);
@@ -598,7 +598,7 @@ public class DBWriterTest extends InstrumentationTestCase {
for (FeedItem item : feed.getItems()) {
assertTrue(item.getId() != 0);
}
- List<Future<?>> futures = new ArrayList<Future<?>>();
+ List<Future<?>> futures = new ArrayList<>();
for (FeedItem item : feed.getItems()) {
futures.add(DBWriter.addQueueItem(context, item));
}
@@ -791,7 +791,7 @@ public class DBWriterTest extends InstrumentationTestCase {
public void testMarkFeedRead() throws InterruptedException, ExecutionException, TimeoutException {
final int NUM_ITEMS = 10;
Feed feed = new Feed("url", null, "title");
- feed.setItems(new ArrayList<FeedItem>());
+ feed.setItems(new ArrayList<>());
for (int i = 0; i < NUM_ITEMS; i++) {
FeedItem item = new FeedItem(0, "title " + i, "id " + i, "link " + i, new Date(), FeedItem.UNPLAYED, feed);
feed.getItems().add(item);
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
index aec0265a6..6156da926 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/MainActivityTest.java
@@ -96,7 +96,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
public void testClickNavDrawer() throws Exception {
uiTestUtils.addLocalFeedData(false);
- UserPreferences.setHiddenDrawerItems(new ArrayList<String>());
+ UserPreferences.setHiddenDrawerItems(new ArrayList<>());
// queue
openNavDrawer();
@@ -159,7 +159,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
}
public void testDrawerPreferencesHideSomeElements() {
- UserPreferences.setHiddenDrawerItems(new ArrayList<String>());
+ UserPreferences.setHiddenDrawerItems(new ArrayList<>());
openNavDrawer();
solo.clickLongOnText(solo.getString(R.string.queue_label));
solo.waitForDialogToOpen();
@@ -190,7 +190,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
}
public void testDrawerPreferencesHideAllElements() {
- UserPreferences.setHiddenDrawerItems(new ArrayList<String>());
+ UserPreferences.setHiddenDrawerItems(new ArrayList<>());
String[] titles = getInstrumentation().getTargetContext().getResources().getStringArray(R.array.nav_drawer_titles);
openNavDrawer();
@@ -209,7 +209,7 @@ public class MainActivityTest extends ActivityInstrumentationTestCase2<MainActiv
}
public void testDrawerPreferencesHideCurrentElement() {
- UserPreferences.setHiddenDrawerItems(new ArrayList<String>());
+ UserPreferences.setHiddenDrawerItems(new ArrayList<>());
openNavDrawer();
String downloads = solo.getString(R.string.downloads_label);
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
index bfbeedd83..293ed2848 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackSonicTest.java
@@ -33,8 +33,8 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter;
public class PlaybackSonicTest extends ActivityInstrumentationTestCase2<MainActivity> {
private static final String TAG = PlaybackTest.class.getSimpleName();
- public static final int EPISODES_DRAWER_LIST_INDEX = 1;
- public static final int QUEUE_DRAWER_LIST_INDEX = 0;
+ private static final int EPISODES_DRAWER_LIST_INDEX = 1;
+ private static final int QUEUE_DRAWER_LIST_INDEX = 0;
private Solo solo;
private UITestUtils uiTestUtils;
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
index 661c2200b..74d59abd7 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PlaybackTest.java
@@ -30,8 +30,8 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter;
public class PlaybackTest extends ActivityInstrumentationTestCase2<MainActivity> {
private static final String TAG = PlaybackTest.class.getSimpleName();
- public static final int EPISODES_DRAWER_LIST_INDEX = 1;
- public static final int QUEUE_DRAWER_LIST_INDEX = 0;
+ private static final int EPISODES_DRAWER_LIST_INDEX = 1;
+ private static final int QUEUE_DRAWER_LIST_INDEX = 0;
private Solo solo;
private UITestUtils uiTestUtils;
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
index e18c9ca16..fb74378c7 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/PreferencesTest.java
@@ -96,10 +96,10 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference
solo.clickOnText(solo.getString(R.string.pref_compact_notification_buttons_title));
solo.waitForDialogToOpen(1000);
// First uncheck every checkbox
- for (int i=0; i<buttons.length; i++) {
- assertTrue(solo.searchText(buttons[i]));
- if (solo.isTextChecked(buttons[i])) {
- solo.clickOnText(buttons[i]);
+ for (String button : buttons) {
+ assertTrue(solo.searchText(button));
+ if (solo.isTextChecked(button)) {
+ solo.clickOnText(button);
}
}
// Now try to check all checkboxes
@@ -110,8 +110,8 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference
assertTrue(!solo.isTextChecked(buttons[2]));
solo.clickOnText(solo.getString(R.string.confirm_label));
solo.waitForDialogToClose(1000);
- assertTrue(solo.waitForCondition(() -> UserPreferences.showRewindOnCompactNotification(), Timeout.getLargeTimeout()));
- assertTrue(solo.waitForCondition(() -> UserPreferences.showFastForwardOnCompactNotification(), Timeout.getLargeTimeout()));
+ assertTrue(solo.waitForCondition(UserPreferences::showRewindOnCompactNotification, Timeout.getLargeTimeout()));
+ assertTrue(solo.waitForCondition(UserPreferences::showFastForwardOnCompactNotification, Timeout.getLargeTimeout()));
assertTrue(solo.waitForCondition(() -> !UserPreferences.showSkipOnCompactNotification(), Timeout.getLargeTimeout()));
}
@@ -134,7 +134,7 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference
public void testHeadPhonesReconnect() {
if(UserPreferences.isPauseOnHeadsetDisconnect() == false) {
solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title));
- assertTrue(solo.waitForCondition(() -> UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout()));
+ assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout()));
}
final boolean unpauseOnHeadsetReconnect = UserPreferences.isUnpauseOnHeadsetReconnect();
solo.clickOnText(solo.getString(R.string.pref_unpauseOnHeadsetReconnect_title));
@@ -146,7 +146,7 @@ public class PreferencesTest extends ActivityInstrumentationTestCase2<Preference
public void testBluetoothReconnect() {
if(UserPreferences.isPauseOnHeadsetDisconnect() == false) {
solo.clickOnText(solo.getString(R.string.pref_pauseOnHeadsetDisconnect_title));
- assertTrue(solo.waitForCondition(() -> UserPreferences.isPauseOnHeadsetDisconnect(), Timeout.getLargeTimeout()));
+ assertTrue(solo.waitForCondition(UserPreferences::isPauseOnHeadsetDisconnect, Timeout.getLargeTimeout()));
}
final boolean unpauseOnBluetoothReconnect = UserPreferences.isUnpauseOnBluetoothReconnect();
solo.clickOnText(solo.getString(R.string.pref_unpauseOnBluetoothReconnect_title));
diff --git a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
index eeb001ea1..3af22af9d 100644
--- a/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
+++ b/app/src/androidTest/java/de/test/antennapod/ui/UITestUtils.java
@@ -1,9 +1,7 @@
package de.test.antennapod.ui;
-import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.Bitmap;
-import android.os.Build;
import android.util.Log;
import junit.framework.Assert;
@@ -20,7 +18,6 @@ import java.util.ArrayList;
import java.util.Date;
import java.util.List;
-import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.core.event.QueueEvent;
import de.danoeh.antennapod.core.feed.EventDistributor;
@@ -39,25 +36,25 @@ import de.test.antennapod.util.syndication.feedgenerator.RSS2Generator;
* Utility methods for UI tests.
* Starts a web server that hosts feeds, episodes and images.
*/
-public class UITestUtils {
+class UITestUtils {
private static final String TAG = UITestUtils.class.getSimpleName();
private static final String DATA_FOLDER = "test/UITestUtils";
- public static final int NUM_FEEDS = 5;
- public static final int NUM_ITEMS_PER_FEED = 10;
+ private static final int NUM_FEEDS = 5;
+ private static final int NUM_ITEMS_PER_FEED = 10;
- public static final String TEST_FILE_NAME = "3sec.mp3";
+ private static final String TEST_FILE_NAME = "3sec.mp3";
- private Context context;
- private HTTPBin server = new HTTPBin();
+ private final Context context;
+ private final HTTPBin server = new HTTPBin();
private File destDir;
private File hostedFeedDir;
private File hostedMediaDir;
- public List<Feed> hostedFeeds = new ArrayList<Feed>();
+ public final List<Feed> hostedFeeds = new ArrayList<>();
public UITestUtils(Context context) {
this.context = context;
@@ -147,7 +144,7 @@ public class UITestUtils {
image.setOwner(feed);
// create items
- List<FeedItem> items = new ArrayList<FeedItem>();
+ List<FeedItem> items = new ArrayList<>();
for (int j = 0; j < NUM_ITEMS_PER_FEED; j++) {
FeedItem item = new FeedItem(j, "Feed " + (i+1) + ": Item " + (j+1), "item" + j,
"http://example.com/feed" + i + "/item/" + j, new Date(), FeedItem.UNPLAYED, feed);
diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java
index 2f2c3fe5b..cde93fd7e 100644
--- a/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java
+++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/HTTPBin.java
@@ -45,11 +45,11 @@ public class HTTPBin extends NanoHTTPD {
private static final String MIME_HTML = "text/html";
private static final String MIME_PLAIN = "text/plain";
- private List<File> servedFiles;
+ private final List<File> servedFiles;
public HTTPBin() {
super(PORT);
- this.servedFiles = new ArrayList<File>();
+ this.servedFiles = new ArrayList<>();
}
/**
diff --git a/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java b/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java
index 28ff6694e..61ff65809 100644
--- a/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java
+++ b/app/src/androidTest/java/de/test/antennapod/util/service/download/NanoHTTPD.java
@@ -88,15 +88,15 @@ public abstract class NanoHTTPD {
* This is required as the Keep-Alive HTTP connections would otherwise
* block the socket reading thread forever (or as long the browser is open).
*/
- public static final int SOCKET_READ_TIMEOUT = 5000;
+ private static final int SOCKET_READ_TIMEOUT = 5000;
/**
* Common mime type for dynamic content: plain text
*/
- public static final String MIME_PLAINTEXT = "text/plain";
+ private static final String MIME_PLAINTEXT = "text/plain";
/**
* Common mime type for dynamic content: html
*/
- public static final String MIME_HTML = "text/html";
+ private static final String MIME_HTML = "text/html";
/**
* Pseudo-Parameter to use to store the actual query string in the parameters map for later re-processing.
*/
@@ -104,7 +104,7 @@ public abstract class NanoHTTPD {
private final String hostname;
private final int myPort;
private ServerSocket myServerSocket;
- private Set<Socket> openConnections = new HashSet<Socket>();
+ private final Set<Socket> openConnections = new HashSet<>();
private Thread myThread;
/**
* Pluggable strategy for asynchronously executing requests.
@@ -118,14 +118,14 @@ public abstract class NanoHTTPD {
/**
* Constructs an HTTP server on given port.
*/
- public NanoHTTPD(int port) {
+ NanoHTTPD(int port) {
this(null, port);
}
/**
* Constructs an HTTP server on given hostname and port.
*/
- public NanoHTTPD(String hostname, int port) {
+ private NanoHTTPD(String hostname, int port) {
this.hostname = hostname;
this.myPort = port;
setTempFileManagerFactory(new DefaultTempFileManagerFactory());
@@ -168,44 +168,38 @@ public abstract class NanoHTTPD {
myServerSocket = new ServerSocket();
myServerSocket.bind((hostname != null) ? new InetSocketAddress(hostname, myPort) : new InetSocketAddress(myPort));
- myThread = new Thread(new Runnable() {
- @Override
- public void run() {
- do {
- try {
- final Socket finalAccept = myServerSocket.accept();
- registerConnection(finalAccept);
- finalAccept.setSoTimeout(SOCKET_READ_TIMEOUT);
- final InputStream inputStream = finalAccept.getInputStream();
- asyncRunner.exec(new Runnable() {
- @Override
- public void run() {
- OutputStream outputStream = null;
- try {
- outputStream = finalAccept.getOutputStream();
- TempFileManager tempFileManager = tempFileManagerFactory.create();
- HTTPSession session = new HTTPSession(tempFileManager, inputStream, outputStream, finalAccept.getInetAddress());
- while (!finalAccept.isClosed()) {
- session.execute();
- }
- } catch (Exception e) {
- // When the socket is closed by the client, we throw our own SocketException
- // to break the "keep alive" loop above.
- if (!(e instanceof SocketException && "NanoHttpd Shutdown".equals(e.getMessage()))) {
- e.printStackTrace();
- }
- } finally {
- safeClose(outputStream);
- safeClose(inputStream);
- safeClose(finalAccept);
- unRegisterConnection(finalAccept);
- }
+ myThread = new Thread(() -> {
+ do {
+ try {
+ final Socket finalAccept = myServerSocket.accept();
+ registerConnection(finalAccept);
+ finalAccept.setSoTimeout(SOCKET_READ_TIMEOUT);
+ final InputStream inputStream = finalAccept.getInputStream();
+ asyncRunner.exec(() -> {
+ OutputStream outputStream = null;
+ try {
+ outputStream = finalAccept.getOutputStream();
+ TempFileManager tempFileManager = tempFileManagerFactory.create();
+ HTTPSession session = new HTTPSession(tempFileManager, inputStream, outputStream, finalAccept.getInetAddress());
+ while (!finalAccept.isClosed()) {
+ session.execute();
}
- });
- } catch (IOException e) {
- }
- } while (!myServerSocket.isClosed());
- }
+ } catch (Exception e) {
+ // When the socket is closed by the client, we throw our own SocketException
+ // to break the "keep alive" loop above.
+ if (!(e instanceof SocketException && "NanoHttpd Shutdown".equals(e.getMessage()))) {
+ e.printStackTrace();
+ }
+ } finally {
+ safeClose(outputStream);
+ safeClose(inputStream);
+ safeClose(finalAccept);
+ unRegisterConnection(finalAccept);
+ }
+ });
+ } catch (IOException e) {
+ }
+ } while (!myServerSocket.isClosed());
});
myThread.setDaemon(true);
myThread.setName("NanoHttpd Main Listener");
@@ -232,7 +226,7 @@ public abstract class NanoHTTPD {
*
* @param socket the {@link Socket} for the connection.
*/
- public synchronized void registerConnection(Socket socket) {
+ private synchronized void registerConnection(Socket socket) {
openConnections.add(socket);
}
@@ -242,14 +236,14 @@ public abstract class NanoHTTPD {
* @param socket
* the {@link Socket} for the connection.
*/
- public synchronized void unRegisterConnection(Socket socket) {
+ private synchronized void unRegisterConnection(Socket socket) {
openConnections.remove(socket);
}
/**
* Forcibly closes all connections that are open.
*/
- public synchronized void closeAllConnections() {
+ private synchronized void closeAllConnections() {
for (Socket socket : openConnections) {
safeClose(socket);
}
@@ -259,7 +253,7 @@ public abstract class NanoHTTPD {
return myServerSocket == null ? -1 : myServerSocket.getLocalPort();
}
- public final boolean wasStarted() {
+ private boolean wasStarted() {
return myServerSocket != null && myThread != null;
}
@@ -294,7 +288,7 @@ public abstract class NanoHTTPD {
* @param session The HTTP session
* @return HTTP response, see class Response for details
*/
- public Response serve(IHTTPSession session) {
+ Response serve(IHTTPSession session) {
Map<String, String> files = new ArrayMap<>();
Method method = session.getMethod();
if (Method.PUT.equals(method) || Method.POST.equals(method)) {
@@ -318,7 +312,7 @@ public abstract class NanoHTTPD {
* @param str the percent encoded <code>String</code>
* @return expanded form of the input, for example "foo%20bar" becomes "foo bar"
*/
- protected String decodePercent(String str) {
+ private String decodePercent(String str) {
String decoded = null;
try {
decoded = URLDecoder.decode(str, "UTF8");
@@ -347,8 +341,8 @@ public abstract class NanoHTTPD {
* @param queryString a query string pulled from the URL.
* @return a map of <code>String</code> (parameter name) to <code>List&lt;String&gt;</code> (a list of the values supplied).
*/
- protected Map<String, List<String>> decodeParameters(String queryString) {
- Map<String, List<String>> parms = new ArrayMap<String, List<String>>();
+ private Map<String, List<String>> decodeParameters(String queryString) {
+ Map<String, List<String>> parms = new ArrayMap<>();
if (queryString != null) {
StringTokenizer st = new StringTokenizer(queryString, "&");
while (st.hasMoreTokens()) {
@@ -356,7 +350,7 @@ public abstract class NanoHTTPD {
int sep = e.indexOf('=');
String propertyName = (sep >= 0) ? decodePercent(e.substring(0, sep)).trim() : decodePercent(e).trim();
if (!parms.containsKey(propertyName)) {
- parms.put(propertyName, new ArrayList<String>());
+ parms.put(propertyName, new ArrayList<>());
}
String propertyValue = (sep >= 0) ? decodePercent(e.substring(sep + 1)) : null;
if (propertyValue != null) {
@@ -378,7 +372,7 @@ public abstract class NanoHTTPD {
*
* @param asyncRunner new strategy for handling threads.
*/
- public void setAsyncRunner(AsyncRunner asyncRunner) {
+ private void setAsyncRunner(AsyncRunner asyncRunner) {
this.asyncRunner = asyncRunner;
}
@@ -393,7 +387,7 @@ public abstract class NanoHTTPD {
*
* @param tempFileManagerFactory new strategy for handling temp files.
*/
- public void setTempFileManagerFactory(TempFileManagerFactory tempFileManagerFactory) {
+ private void setTempFileManagerFactory(TempFileManagerFactory tempFileManagerFactory) {
this.tempFileManagerFactory = tempFileManagerFactory;
}
@@ -448,9 +442,9 @@ public abstract class NanoHTTPD {
* themselves up when no longer needed.</p>
*/
public interface TempFile {
- OutputStream open() throws Exception;
+ OutputStream open();
- void delete() throws Exception;
+ void delete();
String getName();
}
@@ -490,7 +484,7 @@ public abstract class NanoHTTPD {
public DefaultTempFileManager() {
tmpdir = System.getProperty("java.io.tmpdir");
- tempFiles = new ArrayList<TempFile>();
+ tempFiles = new ArrayList<>();
}
@Override
@@ -528,12 +522,12 @@ public abstract class NanoHTTPD {
}
@Override
- public OutputStream open() throws Exception {
+ public OutputStream open() {
return fstream;
}
@Override
- public void delete() throws Exception {
+ public void delete() {
safeClose(fstream);
file.delete();
}
@@ -563,7 +557,7 @@ public abstract class NanoHTTPD {
/**
* Headers for the HTTP response. Use addHeader() to add lines.
*/
- private Map<String, String> header = new ArrayMap<String, String>();
+ private final Map<String, String> header = new ArrayMap<>();
/**
* The request method that spawned this response.
*/
@@ -616,7 +610,7 @@ public abstract class NanoHTTPD {
/**
* Sends given response to the socket.
*/
- protected void send(OutputStream outputStream) {
+ void send(OutputStream outputStream) {
String mime = mimeType;
SimpleDateFormat gmtFrmt = new SimpleDateFormat("E, d MMM yyyy HH:mm:ss 'GMT'", Locale.US);
gmtFrmt.setTimeZone(TimeZone.getTimeZone("GMT"));
@@ -661,13 +655,13 @@ public abstract class NanoHTTPD {
}
}
- protected void sendContentLengthHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header, int size) {
+ void sendContentLengthHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header, int size) {
if (!headerAlreadySent(header, "content-length")) {
pw.print("Content-Length: "+ size +"\r\n");
}
}
- protected void sendConnectionHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header) {
+ void sendConnectionHeaderIfNotAlreadyPresent(PrintWriter pw, Map<String, String> header) {
if (!headerAlreadySent(header, "connection")) {
pw.print("Connection: keep-alive\r\n");
}
@@ -694,7 +688,7 @@ public abstract class NanoHTTPD {
outputStream.write(buff, 0, read);
outputStream.write(CRLF);
}
- outputStream.write(String.format("0\r\n\r\n").getBytes());
+ outputStream.write("0\r\n\r\n".getBytes());
}
private void sendAsFixedLength(OutputStream outputStream, int pending) throws IOException {
@@ -844,7 +838,7 @@ public abstract class NanoHTTPD {
public static final int BUFSIZE = 8192;
private final TempFileManager tempFileManager;
private final OutputStream outputStream;
- private PushbackInputStream inputStream;
+ private final PushbackInputStream inputStream;
private int splitbyte;
private int rlen;
private String uri;
@@ -865,7 +859,7 @@ public abstract class NanoHTTPD {
this.inputStream = new PushbackInputStream(inputStream, BUFSIZE);
this.outputStream = outputStream;
String remoteIp = inetAddress.isLoopbackAddress() || inetAddress.isAnyLocalAddress() ? "127.0.0.1" : inetAddress.getHostAddress().toString();
- headers = new ArrayMap<String, String>();
+ headers = new ArrayMap<>();
headers.put("remote-addr", remoteIp);
headers.put("http-client-ip", remoteIp);
@@ -909,16 +903,16 @@ public abstract class NanoHTTPD {
inputStream.unread(buf, splitbyte, rlen - splitbyte);
}
- parms = new ArrayMap<String, String>();
+ parms = new ArrayMap<>();
if(null == headers) {
- headers = new ArrayMap<String, String>();
+ headers = new ArrayMap<>();
}
// Create a BufferedReader for parsing the header.
BufferedReader hin = new BufferedReader(new InputStreamReader(new ByteArrayInputStream(buf, 0, rlen)));
// Decode the header into parms and header java properties
- Map<String, String> pre = new ArrayMap<String, String>();
+ Map<String, String> pre = new ArrayMap<>();
decodeHeader(hin, pre, parms, headers);
method = Method.lookup(pre.get("method"));
@@ -1116,7 +1110,7 @@ public abstract class NanoHTTPD {
throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but next chunk does not start with boundary. Usage: GET /example/file.html");
}
boundarycount++;
- Map<String, String> item = new ArrayMap<String, String>();
+ Map<String, String> item = new ArrayMap<>();
mpline = in.readLine();
while (mpline != null && mpline.trim().length() > 0) {
int p = mpline.indexOf(':');
@@ -1131,7 +1125,7 @@ public abstract class NanoHTTPD {
throw new ResponseException(Response.Status.BAD_REQUEST, "BAD REQUEST: Content type is multipart/form-data but no content-disposition info found. Usage: GET /example/file.html");
}
StringTokenizer st = new StringTokenizer(contentDisposition, ";");
- Map<String, String> disposition = new ArrayMap<String, String>();
+ Map<String, String> disposition = new ArrayMap<>();
while (st.hasMoreTokens()) {
String token = st.nextToken().trim();
int p = token.indexOf('=');
@@ -1144,17 +1138,19 @@ public abstract class NanoHTTPD {
String value = "";
if (item.get("content-type") == null) {
+ StringBuilder tmp = new StringBuilder();
while (mpline != null && !mpline.contains(boundary)) {
mpline = in.readLine();
if (mpline != null) {
int d = mpline.indexOf(boundary);
if (d == -1) {
- value += mpline;
+ tmp.append(mpline);
} else {
- value += mpline.substring(0, d - 2);
+ tmp.append(mpline.substring(0, d - 2));
}
}
}
+ value = tmp.toString();
} else {
if (boundarycount > bpositions.length) {
throw new ResponseException(Response.Status.INTERNAL_ERROR, "Error processing request");
@@ -1196,7 +1192,7 @@ public abstract class NanoHTTPD {
private int[] getBoundaryPositions(ByteBuffer b, byte[] boundary) {
int matchcount = 0;
int matchbyte = -1;
- List<Integer> matchbytes = new ArrayList<Integer>();
+ List<Integer> matchbytes = new ArrayList<>();
for (int i = 0; i < b.limit(); i++) {
if (b.get(i) == boundary[matchcount]) {
if (matchcount == 0)
@@ -1326,7 +1322,9 @@ public abstract class NanoHTTPD {
}
public static class Cookie {
- private String n, v, e;
+ private final String n;
+ private final String v;
+ private final String e;
public Cookie(String name, String value, String expires) {
n = name;
@@ -1366,8 +1364,8 @@ public abstract class NanoHTTPD {
* @author LordFokas
*/
public class CookieHandler implements Iterable<String> {
- private ArrayMap<String, String> cookies = new ArrayMap<String, String>();
- private ArrayList<Cookie> queue = new ArrayList<Cookie>();
+ private final ArrayMap<String, String> cookies = new ArrayMap<>();
+ private final ArrayList<Cookie> queue = new ArrayList<>();
public CookieHandler(Map<String, String> httpHeaders) {
String raw = httpHeaders.get("cookie");
diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java
index bd3df0f9d..afe15f1b2 100644
--- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java
+++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/AtomGenerator.java
@@ -19,7 +19,7 @@ public class AtomGenerator implements FeedGenerator{
private static final String NS_ATOM = "http://www.w3.org/2005/Atom";
- public static final long FEATURE_USE_RFC3339LOCAL = 1;
+ private static final long FEATURE_USE_RFC3339LOCAL = 1;
@Override
public void writeFeed(Feed feed, OutputStream outputStream, String encoding, long flags) throws IOException {
diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java
index 142e3cb57..b63159384 100644
--- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java
+++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/FeedGenerator.java
@@ -24,5 +24,5 @@ public interface FeedGenerator {
* @param encoding The encoding to use. Must not be null.
* @param flags Optional argument for enabling implementation-dependent features.
*/
- public void writeFeed(Feed feed, OutputStream outputStream, String encoding, long flags) throws IOException;
+ void writeFeed(Feed feed, OutputStream outputStream, String encoding, long flags) throws IOException;
}
diff --git a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java
index e7cbb1b42..7f6f0fb0f 100644
--- a/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java
+++ b/app/src/androidTest/java/de/test/antennapod/util/syndication/feedgenerator/GeneratorUtil.java
@@ -7,7 +7,7 @@ import java.io.IOException;
/**
* Utility methods for FeedGenerator
*/
-public class GeneratorUtil {
+class GeneratorUtil {
public static void addPaymentLink(XmlSerializer xml, String paymentLink, boolean withNamespace) throws IOException {
String ns = (withNamespace) ? "http://www.w3.org/2005/Atom" : null;
diff --git a/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java b/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java
index 5e714f02c..fb23dfa1a 100644
--- a/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java
+++ b/app/src/free/java/de/danoeh/antennapod/config/CastCallbackImpl.java
@@ -2,6 +2,6 @@ package de.danoeh.antennapod.config;
import de.danoeh.antennapod.core.CastCallbacks;
-public class CastCallbackImpl implements CastCallbacks {
+class CastCallbackImpl implements CastCallbacks {
}
diff --git a/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java b/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java
index de604c7c4..4e2c40885 100644
--- a/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java
+++ b/app/src/free/java/de/danoeh/antennapod/preferences/PreferenceControllerFlavorHelper.java
@@ -5,7 +5,7 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
/**
* Implements functions from PreferenceController that are flavor dependent.
*/
-public class PreferenceControllerFlavorHelper {
+class PreferenceControllerFlavorHelper {
static void setupFlavoredUI(PreferenceController.PreferenceUI ui) {
ui.findPreference(UserPreferences.PREF_CAST_ENABLED).setEnabled(false);
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java
index 1b42b274c..041053a25 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/AboutActivity.java
@@ -75,53 +75,50 @@ public class AboutActivity extends AppCompatActivity {
}
private void loadAsset(String filename) {
- subscription = Observable.create(new Observable.OnSubscribe<String>() {
- @Override
- public void call(Subscriber<? super String> subscriber) {
- InputStream input = null;
- try {
- TypedArray res = AboutActivity.this.getTheme().obtainStyledAttributes(
- new int[] { android.R.attr.textColorPrimary });
- int colorResource = res.getColor(0, 0);
- String colorString = String.format("#%06X", 0xFFFFFF & colorResource);
- res.recycle();
- input = getAssets().open(filename);
- String webViewData = IOUtils.toString(input, Charset.defaultCharset());
- if(!webViewData.startsWith("<!DOCTYPE html>")) {
- //webViewData = webViewData.replace("\n\n", "</p><p>");
- webViewData = webViewData.replace("%", "&#37;");
- webViewData =
- "<!DOCTYPE html>" +
- "<html>" +
- "<head>" +
- " <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">" +
- " <style type=\"text/css\">" +
- " @font-face {" +
- " font-family: 'Roboto-Light';" +
- " src: url('file:///android_asset/Roboto-Light.ttf');" +
- " }" +
- " * {" +
- " color: %s;" +
- " font-family: roboto-Light;" +
- " font-size: 8pt;" +
- " }" +
- " </style>" +
- "</head><body><p>" + webViewData + "</p></body></html>";
- webViewData = webViewData.replace("\n", "<br/>");
- depth++;
- } else {
- depth = 0;
- }
- webViewData = String.format(webViewData, colorString);
- subscriber.onNext(webViewData);
- } catch (IOException e) {
- subscriber.onError(e);
- } finally {
- IOUtils.closeQuietly(input);
- }
- subscriber.onCompleted();
- }
- })
+ subscription = Observable.create((Observable.OnSubscribe<String>) subscriber -> {
+ InputStream input = null;
+ try {
+ TypedArray res = AboutActivity.this.getTheme().obtainStyledAttributes(
+ new int[] { android.R.attr.textColorPrimary });
+ int colorResource = res.getColor(0, 0);
+ String colorString = String.format("#%06X", 0xFFFFFF & colorResource);
+ res.recycle();
+ input = getAssets().open(filename);
+ String webViewData = IOUtils.toString(input, Charset.defaultCharset());
+ if(!webViewData.startsWith("<!DOCTYPE html>")) {
+ //webViewData = webViewData.replace("\n\n", "</p><p>");
+ webViewData = webViewData.replace("%", "&#37;");
+ webViewData =
+ "<!DOCTYPE html>" +
+ "<html>" +
+ "<head>" +
+ " <meta http-equiv=\"Content-Type\" content=\"text/html;charset=UTF-8\">" +
+ " <style type=\"text/css\">" +
+ " @font-face {" +
+ " font-family: 'Roboto-Light';" +
+ " src: url('file:///android_asset/Roboto-Light.ttf');" +
+ " }" +
+ " * {" +
+ " color: %s;" +
+ " font-family: roboto-Light;" +
+ " font-size: 8pt;" +
+ " }" +
+ " </style>" +
+ "</head><body><p>" + webViewData + "</p></body></html>";
+ webViewData = webViewData.replace("\n", "<br/>");
+ depth++;
+ } else {
+ depth = 0;
+ }
+ webViewData = String.format(webViewData, colorString);
+ subscriber.onNext(webViewData);
+ } catch (IOException e) {
+ subscriber.onError(e);
+ } finally {
+ IOUtils.closeQuietly(input);
+ }
+ subscriber.onCompleted();
+ })
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
index ca214de9e..123f66661 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/AudioplayerActivity.java
@@ -6,6 +6,7 @@ import android.text.TextUtils;
import android.util.Log;
import android.view.View;
+import java.text.DecimalFormat;
import java.util.concurrent.atomic.AtomicBoolean;
import de.danoeh.antennapod.core.feed.MediaType;
@@ -18,15 +19,18 @@ import de.danoeh.antennapod.dialog.VariableSpeedDialog;
* Activity for playing audio files.
*/
public class AudioplayerActivity extends MediaplayerInfoActivity {
- public static final String TAG = "AudioPlayerActivity";
+ private static final String TAG = "AudioPlayerActivity";
- private AtomicBoolean isSetup = new AtomicBoolean(false);
+ private final AtomicBoolean isSetup = new AtomicBoolean(false);
@Override
protected void onResume() {
super.onResume();
if (TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) {
Intent intent = getIntent();
+ if (intent.getData() == null) {
+ return;
+ }
Log.d(TAG, "Received VIEW intent: " + intent.getData().getPath());
ExternalMedia media = new ExternalMedia(intent.getData().getPath(),
MediaType.AUDIO);
@@ -40,7 +44,8 @@ public class AudioplayerActivity extends MediaplayerInfoActivity {
startService(launchIntent);
} else if (PlaybackService.isCasting()) {
Intent intent = PlaybackService.getPlayerActivityIntent(this);
- if (!intent.getComponent().getClassName().equals(AudioplayerActivity.class.getName())) {
+ if (intent.getComponent() != null &&
+ !intent.getComponent().getClassName().equals(AudioplayerActivity.class.getName())) {
saveCurrentFragment();
finish();
startActivity(intent);
@@ -95,7 +100,7 @@ public class AudioplayerActivity extends MediaplayerInfoActivity {
UserPreferences.setPlaybackSpeed(String.valueOf(speed));
}
}
- String speedStr = String.format("%.2fx", speed);
+ String speedStr = new DecimalFormat("0.00x").format(speed);
butPlaybackSpeed.setText(speedStr);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java
index a7e9b1e70..871e9c279 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/CastplayerActivity.java
@@ -13,9 +13,9 @@ import de.danoeh.antennapod.core.service.playback.PlaybackService;
* Activity for controlling the remote playback on a Cast device.
*/
public class CastplayerActivity extends MediaplayerInfoActivity {
- public static final String TAG = "CastPlayerActivity";
+ private static final String TAG = "CastPlayerActivity";
- private AtomicBoolean isSetup = new AtomicBoolean(false);
+ private final AtomicBoolean isSetup = new AtomicBoolean(false);
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java
index 41b2debdc..e726afaec 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/DownloadAuthenticationActivity.java
@@ -3,15 +3,14 @@ package de.danoeh.antennapod.activity;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
-import android.support.v7.app.ActionBarActivity;
-import android.util.Log;
+import android.support.v7.app.ActionBar;
+import android.support.v7.app.AppCompatActivity;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import org.apache.commons.lang3.Validate;
-import de.danoeh.antennapod.BuildConfig;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadRequest;
@@ -23,8 +22,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
* Other arguments are optional.
* The activity's result will be the same DownloadRequest with the entered username and password.
*/
-public class DownloadAuthenticationActivity extends ActionBarActivity {
- private static final String TAG = "DownloadAuthenticationActivity";
+public class DownloadAuthenticationActivity extends AppCompatActivity {
/**
* The download request object that contains information about the resource that requires a username and a password
@@ -36,47 +34,39 @@ public class DownloadAuthenticationActivity extends ActionBarActivity {
*/
public static final String ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL = "send_to_downloadrequester";
- public static final String RESULT_REQUEST = "request";
+ private static final String RESULT_REQUEST = "request";
private EditText etxtUsername;
private EditText etxtPassword;
- private Button butConfirm;
- private Button butCancel;
- private TextView txtvDescription;
-
- private DownloadRequest request;
- private boolean sendToDownloadRequester;
@Override
protected void onCreate(Bundle savedInstanceState) {
setTheme(UserPreferences.getTheme());
super.onCreate(savedInstanceState);
- getSupportActionBar().hide();
- setContentView(R.layout.download_authentication_activity);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
+ setContentView(R.layout.download_authentication_activity);
+ TextView txtvDescription = (TextView) findViewById(R.id.txtvDescription);
etxtUsername = (EditText) findViewById(R.id.etxtUsername);
etxtPassword = (EditText) findViewById(R.id.etxtPassword);
- butConfirm = (Button) findViewById(R.id.butConfirm);
- butCancel = (Button) findViewById(R.id.butCancel);
- txtvDescription = (TextView) findViewById(R.id.txtvDescription);
+ Button butConfirm = (Button) findViewById(R.id.butConfirm);
+ Button butCancel = (Button) findViewById(R.id.butCancel);
Validate.isTrue(getIntent().hasExtra(ARG_DOWNLOAD_REQUEST), "Download request missing");
+ DownloadRequest request = getIntent().getParcelableExtra(ARG_DOWNLOAD_REQUEST);
+ boolean sendToDownloadRequester = getIntent().getBooleanExtra(ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL, false);
- request = getIntent().getParcelableExtra(ARG_DOWNLOAD_REQUEST);
- sendToDownloadRequester = getIntent().getBooleanExtra(ARG_SEND_TO_DOWNLOAD_REQUESTER_BOOL, false);
+ String newDescription = txtvDescription.getText() + ":\n\n" + request.getTitle();
+ txtvDescription.setText(newDescription);
if (savedInstanceState != null) {
etxtUsername.setText(savedInstanceState.getString("username"));
etxtPassword.setText(savedInstanceState.getString("password"));
}
- txtvDescription.setText(txtvDescription.getText() + ":\n\n" + request.getTitle());
-
- butCancel.setOnClickListener(v -> {
- setResult(Activity.RESULT_CANCELED);
- finish();
- });
-
butConfirm.setOnClickListener(v -> {
String username = etxtUsername.getText().toString();
String password = etxtPassword.getText().toString();
@@ -87,11 +77,16 @@ public class DownloadAuthenticationActivity extends ActionBarActivity {
setResult(Activity.RESULT_OK, result);
if (sendToDownloadRequester) {
- if (BuildConfig.DEBUG) Log.d(TAG, "Sending request to DownloadRequester");
DownloadRequester.getInstance().download(DownloadAuthenticationActivity.this, request);
}
finish();
});
+
+ butCancel.setOnClickListener(v -> {
+ setResult(Activity.RESULT_CANCELED);
+ finish();
+ });
+
}
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java
index cc9db5e6e..8dea41b7c 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/FeedInfoActivity.java
@@ -100,7 +100,7 @@ public class FeedInfoActivity extends AppCompatActivity {
private boolean authInfoChanged = false;
- private TextWatcher authTextWatcher = new TextWatcher() {
+ private final TextWatcher authTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@@ -117,7 +117,7 @@ public class FeedInfoActivity extends AppCompatActivity {
private boolean filterTextChanged = false;
- private TextWatcher filterTextWatcher = new TextWatcher() {
+ private final TextWatcher filterTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
index 9949c01a0..f56dca173 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java
@@ -82,7 +82,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
public static final String PREF_NAME = "MainActivityPrefs";
public static final String PREF_IS_FIRST_LAUNCH = "prefMainActivityIsFirstLaunch";
- public static final String PREF_LAST_FRAGMENT_TAG = "prefMainActivityLastFragmentTag";
+ private static final String PREF_LAST_FRAGMENT_TAG = "prefMainActivityLastFragmentTag";
public static final String EXTRA_NAV_TYPE = "nav_type";
public static final String EXTRA_NAV_INDEX = "nav_index";
@@ -90,8 +90,8 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
public static final String EXTRA_FRAGMENT_ARGS = "fragment_args";
public static final String EXTRA_FEED_ID = "fragment_feed_id";
- public static final String SAVE_BACKSTACK_COUNT = "backstackCount";
- public static final String SAVE_TITLE = "title";
+ private static final String SAVE_BACKSTACK_COUNT = "backstackCount";
+ private static final String SAVE_TITLE = "title";
public static final String[] NAV_DRAWER_TAGS = {
QueueFragment.TAG,
@@ -235,7 +235,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
}
}
- public void showDrawerPreferencesDialog() {
+ private void showDrawerPreferencesDialog() {
final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems();
String[] navLabels = new String[NAV_DRAWER_TAGS.length];
final boolean[] checked = new boolean[NAV_DRAWER_TAGS.length];
@@ -269,7 +269,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
return (navDrawerData != null) ? navDrawerData.feeds : null;
}
- public void loadFragment(int index, Bundle args) {
+ private void loadFragment(int index, Bundle args) {
Log.d(TAG, "loadFragment(index: " + index + ", args: " + args + ")");
if (index < navAdapter.getSubscriptionOffset()) {
String tag = navAdapter.getTags().get(index);
@@ -398,7 +398,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
}
}
- private AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() {
+ private final AdapterView.OnItemClickListener navListClickListener = new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
int viewType = parent.getAdapter().getItemViewType(position);
@@ -409,7 +409,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
}
};
- private AdapterView.OnItemLongClickListener newListLongClickListener = new AdapterView.OnItemLongClickListener() {
+ private final AdapterView.OnItemLongClickListener newListLongClickListener = new AdapterView.OnItemLongClickListener() {
@Override
public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) {
if(position < navAdapter.getTags().size()) {
@@ -630,7 +630,7 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
private DBReader.NavDrawerData navDrawerData;
private int selectedNavListIndex = 0;
- private NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() {
+ private final NavListAdapter.ItemAccess itemAccess = new NavListAdapter.ItemAccess() {
@Override
public int getCount() {
if (navDrawerData != null) {
@@ -743,14 +743,12 @@ public class MainActivity extends CastEnabledActivity implements NavDrawerActivi
View parentLayout = findViewById(R.id.drawer_layout);
Snackbar snackbar = Snackbar.make(parentLayout, event.message, Snackbar.LENGTH_SHORT);
if(event.action != null) {
- snackbar.setAction(getString(R.string.undo), v -> {
- event.action.run();
- });
+ snackbar.setAction(getString(R.string.undo), v -> event.action.run());
}
snackbar.show();
}
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
index b0cbd355b..232ff4311 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerActivity.java
@@ -67,19 +67,19 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
private static final String PREFS = "MediaPlayerActivityPreferences";
private static final String PREF_SHOW_TIME_LEFT = "showTimeLeft";
- protected PlaybackController controller;
+ PlaybackController controller;
- protected TextView txtvPosition;
- protected TextView txtvLength;
- protected SeekBar sbPosition;
- protected ImageButton butRev;
- protected TextView txtvRev;
- protected ImageButton butPlay;
- protected ImageButton butFF;
- protected TextView txtvFF;
- protected ImageButton butSkip;
+ private TextView txtvPosition;
+ private TextView txtvLength;
+ SeekBar sbPosition;
+ private ImageButton butRev;
+ private TextView txtvRev;
+ private ImageButton butPlay;
+ private ImageButton butFF;
+ private TextView txtvFF;
+ private ImageButton butSkip;
- protected boolean showTimeLeft = false;
+ private boolean showTimeLeft = false;
private boolean isFavorite = false;
@@ -184,31 +184,31 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
};
}
- protected static TextView getTxtvFFFromActivity(MediaplayerActivity activity) {
+ private static TextView getTxtvFFFromActivity(MediaplayerActivity activity) {
return activity.txtvFF;
}
- protected static TextView getTxtvRevFromActivity(MediaplayerActivity activity) {
+ private static TextView getTxtvRevFromActivity(MediaplayerActivity activity) {
return activity.txtvRev;
}
- protected void onSetSpeedAbilityChanged() {
+ private void onSetSpeedAbilityChanged() {
Log.d(TAG, "onSetSpeedAbilityChanged()");
updatePlaybackSpeedButton();
}
- protected void onPlaybackSpeedChange() {
+ private void onPlaybackSpeedChange() {
updatePlaybackSpeedButtonText();
}
- protected void onServiceQueried() {
+ private void onServiceQueried() {
supportInvalidateOptionsMenu();
}
- protected void chooseTheme() {
+ void chooseTheme() {
setTheme(UserPreferences.getTheme());
}
- protected void setScreenOn(boolean enable) {
+ void setScreenOn(boolean enable) {
}
@Override
@@ -249,7 +249,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
*/
protected abstract void onBufferEnd();
- protected void onBufferUpdate(float progress) {
+ private void onBufferUpdate(float progress) {
if (sbPosition != null) {
sbPosition.setSecondaryProgress((int) progress * sbPosition.getMax());
}
@@ -258,7 +258,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
/**
* Current screen orientation.
*/
- protected int orientation;
+ private int orientation;
@Override
protected void onStart() {
@@ -619,7 +619,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
protected abstract void clearStatusMsg();
- protected void onPositionObserverUpdate() {
+ void onPositionObserverUpdate() {
if (controller == null || txtvPosition == null || txtvLength == null) {
return;
}
@@ -655,7 +655,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
* to the PlaybackService to ensure that the activity has the right
* FeedMedia object.
*/
- protected boolean loadMediaInfo() {
+ boolean loadMediaInfo() {
Log.d(TAG, "loadMediaInfo()");
if(controller == null || controller.getMedia() == null) {
return false;
@@ -669,18 +669,18 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
return true;
}
- protected void updatePlaybackSpeedButton() {
+ void updatePlaybackSpeedButton() {
// Only meaningful on AudioplayerActivity, where it is overridden.
}
- protected void updatePlaybackSpeedButtonText() {
+ void updatePlaybackSpeedButtonText() {
// Only meaningful on AudioplayerActivity, where it is overridden.
}
/**
* Abstract directions to skip forward or back (rewind) and encapsulates behavior to get or set preference (including update of UI on the skip buttons).
*/
- static public enum SkipDirection {
+ public enum SkipDirection {
SKIP_FORWARD(
UserPreferences::getFastForwardSecs,
MediaplayerActivity::getTxtvFFFromActivity,
@@ -763,7 +763,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
builder.create().show();
}
- protected void setupGUI() {
+ void setupGUI() {
setContentView(getContentViewResourceId());
sbPosition = (SeekBar) findViewById(R.id.sbPosition);
txtvPosition = (TextView) findViewById(R.id.txtvPosition);
@@ -837,7 +837,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
}
}
- protected void onRewind() {
+ void onRewind() {
if (controller == null) {
return;
}
@@ -845,14 +845,14 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
controller.seekTo(curr - UserPreferences.getRewindSecs() * 1000);
}
- protected void onPlayPause() {
+ void onPlayPause() {
if(controller == null) {
return;
}
controller.playPause();
}
- protected void onFastForward() {
+ void onFastForward() {
if (controller == null) {
return;
}
@@ -862,7 +862,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
protected abstract int getContentViewResourceId();
- void handleError(int errorCode) {
+ private void handleError(int errorCode) {
final AlertDialog.Builder errorDialog = new AlertDialog.Builder(this);
errorDialog.setTitle(R.string.error_label);
errorDialog.setMessage(MediaPlayerError.getErrorString(this, errorCode));
@@ -875,7 +875,7 @@ public abstract class MediaplayerActivity extends CastEnabledActivity implements
errorDialog.create().show();
}
- float prog;
+ private float prog;
@Override
public void onProgressChanged (SeekBar seekBar,int progress, boolean fromUser) {
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java
index d85c2fe8f..f3ed1cb62 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/MediaplayerInfoActivity.java
@@ -72,16 +72,17 @@ import rx.schedulers.Schedulers;
*/
public abstract class MediaplayerInfoActivity extends MediaplayerActivity implements NavDrawerActivity {
+ private static final String TAG = "MediaplayerInfoActivity";
+
private static final int POS_COVER = 0;
private static final int POS_DESCR = 1;
private static final int POS_CHAPTERS = 2;
private static final int NUM_CONTENT_FRAGMENTS = 3;
- final static String TAG = "MediaplayerInfoActivity";
private static final String PREFS = "AudioPlayerActivityPreferences";
private static final String PREF_KEY_SELECTED_FRAGMENT_POSITION = "selectedFragmentPosition";
- public static final String[] NAV_DRAWER_TAGS = {
+ private static final String[] NAV_DRAWER_TAGS = {
QueueFragment.TAG,
EpisodesFragment.TAG,
SubscriptionFragment.TAG,
@@ -91,8 +92,8 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
NavListAdapter.SUBSCRIPTION_LIST_TAG
};
- protected Button butPlaybackSpeed;
- protected ImageButton butCastDisconnect;
+ Button butPlaybackSpeed;
+ ImageButton butCastDisconnect;
private DrawerLayout drawerLayout;
private NavListAdapter navAdapter;
private ListView navList;
@@ -151,7 +152,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
setTheme(UserPreferences.getNoTitleTheme());
}
- protected void saveCurrentFragment() {
+ void saveCurrentFragment() {
if(pager == null) {
return;
}
@@ -159,7 +160,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
SharedPreferences prefs = getSharedPreferences(PREFS, MODE_PRIVATE);
prefs.edit()
.putInt(PREF_KEY_SELECTED_FRAGMENT_POSITION, pager.getCurrentItem())
- .commit();
+ .apply();
}
@Override
@@ -241,7 +242,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
drawerToggle = new ActionBarDrawerToggle(this, drawerLayout, R.string.drawer_open, R.string.drawer_close);
drawerToggle.setDrawerIndicatorEnabled(false);
- drawerLayout.setDrawerListener(drawerToggle);
+ drawerLayout.addDrawerListener(drawerToggle);
navAdapter = new NavListAdapter(itemAccess, this);
navList.setAdapter(navAdapter);
@@ -305,7 +306,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
return true;
}
- public void notifyMediaPositionChanged() {
+ private void notifyMediaPositionChanged() {
if(pagerAdapter == null) {
return;
}
@@ -395,12 +396,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
new RenameFeedDialog(this, feed).show();
return true;
case R.id.remove_item:
- final FeedRemover remover = new FeedRemover(this, feed) {
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- }
- };
+ final FeedRemover remover = new FeedRemover(this, feed);
ConfirmationDialog conDialog = new ConfirmationDialog(this,
R.string.remove_feed_label,
getString(R.string.feed_delete_confirmation_msg, feed.getTitle())) {
@@ -412,7 +408,8 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
Playable playable = controller.getMedia();
if (playable != null && playable instanceof FeedMedia) {
FeedMedia media = (FeedMedia) playable;
- if (media.getItem().getFeed().getId() == feed.getId()) {
+ if (media.getItem() != null && media.getItem().getFeed() != null &&
+ media.getItem().getFeed().getId() == feed.getId()) {
Log.d(TAG, "Currently playing episode is about to be deleted, skipping");
remover.skipOnCompletion = true;
if(controller.getStatus() == PlayerStatus.PLAYING) {
@@ -446,7 +443,7 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
}
}
- public void showDrawerPreferencesDialog() {
+ private void showDrawerPreferencesDialog() {
final List<String> hiddenDrawerItems = UserPreferences.getHiddenDrawerItems();
String[] navLabels = new String[NAV_DRAWER_TAGS.length];
final boolean[] checked = new boolean[NAV_DRAWER_TAGS.length];
@@ -491,14 +488,12 @@ public abstract class MediaplayerInfoActivity extends MediaplayerActivity implem
View parentLayout = findViewById(R.id.drawer_layout);
Snackbar snackbar = Snackbar.make(parentLayout, event.message, Snackbar.LENGTH_SHORT);
if (event.action != null) {
- snackbar.setAction(getString(R.string.undo), v -> {
- event.action.run();
- });
+ snackbar.setAction(getString(R.string.undo), v -> event.action.run());
}
snackbar.show();
}
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java
index f6bf11e66..f859f5466 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java
@@ -5,8 +5,9 @@ import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.os.Bundle;
-import android.os.Looper;
+import android.support.annotation.UiThread;
import android.support.v4.app.NavUtils;
+import android.support.v7.app.ActionBar;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.text.TextUtils;
@@ -55,7 +56,6 @@ import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DownloadRequestException;
import de.danoeh.antennapod.core.storage.DownloadRequester;
import de.danoeh.antennapod.core.syndication.handler.FeedHandler;
-import de.danoeh.antennapod.core.syndication.handler.FeedHandlerResult;
import de.danoeh.antennapod.core.syndication.handler.UnsupportedFeedtypeException;
import de.danoeh.antennapod.core.util.DownloadError;
import de.danoeh.antennapod.core.util.FileNameGenerator;
@@ -66,7 +66,6 @@ import de.danoeh.antennapod.core.util.syndication.HtmlToPlainText;
import de.danoeh.antennapod.dialog.AuthenticationDialog;
import de.greenrobot.event.EventBus;
import rx.Observable;
-import rx.Subscriber;
import rx.Subscription;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
@@ -84,7 +83,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
public static final String ARG_FEEDURL = "arg.feedurl";
// Optional argument: specify a title for the actionbar.
public static final String ARG_TITLE = "title";
- public static final int RESULT_ERROR = 2;
+ private static final int RESULT_ERROR = 2;
private static final String TAG = "OnlineFeedViewActivity";
private static final int EVENTS = EventDistributor.FEED_LIST_UPDATE;
private volatile List<Feed> feeds;
@@ -101,7 +100,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
private Subscription download;
private Subscription parser;
private Subscription updater;
- private EventDistributor.EventListener listener = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener listener = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
if ((arg & EventDistributor.FEED_LIST_UPDATE) != 0) {
@@ -112,9 +111,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
feeds -> {
OnlineFeedViewActivity.this.feeds = feeds;
setSubscribeButtonState(feed);
- }, error -> {
- Log.e(TAG, Log.getStackTraceString(error));
- }
+ }, error -> Log.e(TAG, Log.getStackTraceString(error))
);
} else if ((arg & EVENTS) != 0) {
setSubscribeButtonState(feed);
@@ -131,10 +128,13 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
protected void onCreate(Bundle savedInstanceState) {
setTheme(UserPreferences.getTheme());
super.onCreate(savedInstanceState);
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
+ ActionBar actionBar = getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.setDisplayHomeAsUpEnabled(true);
+ }
- if (getIntent() != null && getIntent().hasExtra(ARG_TITLE)) {
- getSupportActionBar().setTitle(getIntent().getStringExtra(ARG_TITLE));
+ if (actionBar != null && getIntent() != null && getIntent().hasExtra(ARG_TITLE)) {
+ actionBar.setTitle(getIntent().getStringExtra(ARG_TITLE));
}
StorageUtils.checkStorageAvailability(this);
@@ -146,7 +146,9 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
|| TextUtils.equals(getIntent().getAction(), Intent.ACTION_VIEW)) {
feedUrl = (TextUtils.equals(getIntent().getAction(), Intent.ACTION_SEND))
? getIntent().getStringExtra(Intent.EXTRA_TEXT) : getIntent().getDataString();
- getSupportActionBar().setTitle(R.string.add_feed_label);
+ if (actionBar != null) {
+ actionBar.setTitle(R.string.add_feed_label);
+ }
} else {
throw new IllegalArgumentException("Activity must be started with feedurl argument!");
}
@@ -265,16 +267,11 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
feed.getDownload_url(), "OnlineFeed", 0, Feed.FEEDFILETYPE_FEED, username, password,
true, null);
- download = Observable.create(new Observable.OnSubscribe<DownloadStatus>() {
- @Override
- public void call(Subscriber<? super DownloadStatus> subscriber) {
- feeds = DBReader.getFeedList();
- downloader = new HttpDownloader(request);
- downloader.call();
- Log.d(TAG, "Download was completed");
- subscriber.onNext(downloader.getResult());
- subscriber.onCompleted();
- }
+ download = Observable.fromCallable(() -> {
+ feeds = DBReader.getFeedList();
+ downloader = new HttpDownloader(request);
+ downloader.call();
+ return downloader.getResult();
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
@@ -286,6 +283,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
if (status == null) {
Log.wtf(TAG, "DownloadStatus returned by Downloader was null");
finish();
+ return;
}
if (status.isCancelled()) {
return;
@@ -300,7 +298,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
}
} else {
String errorMsg = status.getReason().getErrorString(OnlineFeedViewActivity.this);
- if (errorMsg != null && status.getReasonDetailed() != null) {
+ if (status.getReasonDetailed() != null) {
errorMsg += " (" + status.getReasonDetailed() + ")";
}
showErrorDialog(errorMsg);
@@ -313,35 +311,33 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
}
Log.d(TAG, "Parsing feed");
- parser = Observable.create(new Observable.OnSubscribe<FeedHandlerResult>() {
- @Override
- public void call(Subscriber<? super FeedHandlerResult> subscriber) {
- FeedHandler handler = new FeedHandler();
- try {
- FeedHandlerResult result = handler.parseFeed(feed);
- subscriber.onNext(result);
- } catch (UnsupportedFeedtypeException e) {
- Log.d(TAG, "Unsupported feed type detected");
- if (TextUtils.equals("html", e.getRootElement().toLowerCase())) {
- showFeedDiscoveryDialog(new File(feed.getFile_url()), feed.getDownload_url());
- } else {
- subscriber.onError(e);
- }
- } catch (Exception e) {
- Log.e(TAG, Log.getStackTraceString(e));
- subscriber.onError(e);
- } finally {
- boolean rc = new File(feed.getFile_url()).delete();
- Log.d(TAG, "Deleted feed source file. Result: " + rc);
- subscriber.onCompleted();
+ parser = Observable.fromCallable(() -> {
+ FeedHandler handler = new FeedHandler();
+ try {
+ return handler.parseFeed(feed);
+ } catch (UnsupportedFeedtypeException e) {
+ Log.d(TAG, "Unsupported feed type detected");
+ if (TextUtils.equals("html", e.getRootElement().toLowerCase())) {
+ showFeedDiscoveryDialog(new File(feed.getFile_url()), feed.getDownload_url());
+ return null;
+ } else {
+ throw e;
}
+ } catch (Exception e) {
+ Log.e(TAG, Log.getStackTraceString(e));
+ throw e;
+ } finally {
+ boolean rc = new File(feed.getFile_url()).delete();
+ Log.d(TAG, "Deleted feed source file. Result: " + rc);
}
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(result -> {
- beforeShowFeedInformation(result.feed);
- showFeedInformation(result.feed, result.alternateFeedUrls);
+ if(result != null) {
+ beforeShowFeedInformation(result.feed);
+ showFeedInformation(result.feed, result.alternateFeedUrls);
+ }
}, error -> {
String errorMsg = DownloadError.ERROR_PARSER_EXCEPTION.getErrorString(
OnlineFeedViewActivity.this) + " (" + error.getMessage() + ")";
@@ -383,8 +379,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
this.selectedDownloadUrl = feed.getDownload_url();
EventDistributor.getInstance().register(listener);
ListView listView = (ListView) findViewById(R.id.listview);
- LayoutInflater inflater = (LayoutInflater)
- getSystemService(Context.LAYOUT_INFLATER_SERVICE);
+ LayoutInflater inflater = LayoutInflater.from(this);
View header = inflater.inflate(R.layout.onlinefeedview_header, listView, false);
listView.addHeaderView(header);
@@ -414,7 +409,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
description.setText(feed.getDescription());
subscribeButton.setOnClickListener(v -> {
- if(feed != null && feedInFeedlist(feed)) {
+ if(feedInFeedlist(feed)) {
Intent intent = new Intent(OnlineFeedViewActivity.this, MainActivity.class);
// feed.getId() is always 0, we have to retrieve the id from the feed list from
// the database
@@ -508,8 +503,8 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
return 0;
}
+ @UiThread
private void showErrorDialog(String errorMsg) {
- assert(Looper.myLooper() == Looper.getMainLooper()); // run on UI thread
if (!isFinishing() && !isPaused) {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle(R.string.error_label);
@@ -586,7 +581,7 @@ public class OnlineFeedViewActivity extends AppCompatActivity {
private class FeedViewAuthenticationDialog extends AuthenticationDialog {
- private String feedUrl;
+ private final String feedUrl;
FeedViewAuthenticationDialog(Context context, int titleRes, String feedUrl) {
super(context, titleRes, true, false, null, null);
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java
index 355e0f372..cd375a65a 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlFeedChooserActivity.java
@@ -97,7 +97,7 @@ public class OpmlFeedChooserActivity extends AppCompatActivity {
}
private List<String> getTitleList() {
- List<String> result = new ArrayList<String>();
+ List<String> result = new ArrayList<>();
if (OpmlImportHolder.getReadElements() != null) {
for (OpmlElement element : OpmlImportHolder.getReadElements()) {
result.add(element.getText());
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java
index 07b0b3cdb..c04ae051e 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/OpmlImportBaseActivity.java
@@ -68,7 +68,7 @@ public class OpmlImportBaseActivity extends AppCompatActivity {
}
}
- protected void importUri(@Nullable Uri uri) {
+ void importUri(@Nullable Uri uri) {
if(uri == null) {
new MaterialDialog.Builder(this)
.content(R.string.opml_import_error_no_file)
@@ -114,7 +114,7 @@ public class OpmlImportBaseActivity extends AppCompatActivity {
}
/** Starts the import process. */
- protected void startImport() {
+ private void startImport() {
try {
Reader mReader = new InputStreamReader(getContentResolver().openInputStream(uri), LangUtils.UTF_8);
importWorker = new OpmlImportWorker(this, mReader) {
@@ -144,7 +144,7 @@ public class OpmlImportBaseActivity extends AppCompatActivity {
}
}
- protected boolean finishWhenCanceled() {
+ boolean finishWhenCanceled() {
return false;
}
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java
index d104a9e93..a2a49f54e 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/StorageErrorActivity.java
@@ -164,7 +164,7 @@ public class StorageErrorActivity extends AppCompatActivity {
startActivity(new Intent(this, MainActivity.class));
}
- private BroadcastReceiver mediaUpdate = new BroadcastReceiver() {
+ private final BroadcastReceiver mediaUpdate = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
index fb5c4d273..54758acf4 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/VideoplayerActivity.java
@@ -7,6 +7,7 @@ import android.os.Build;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.view.WindowCompat;
+import android.support.v7.app.ActionBar;
import android.util.Log;
import android.util.Pair;
import android.view.MotionEvent;
@@ -45,7 +46,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
private VideoControlsHider videoControlsHider = new VideoControlsHider(this);
- private AtomicBoolean isSetup = new AtomicBoolean(false);
+ private final AtomicBoolean isSetup = new AtomicBoolean(false);
private LinearLayout controls;
private LinearLayout videoOverlay;
@@ -173,7 +174,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
progressIndicator.setVisibility(View.INVISIBLE);
}
- View.OnTouchListener onVideoviewTouched = (v, event) -> {
+ private final View.OnTouchListener onVideoviewTouched = (v, event) -> {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
videoControlsHider.stop();
toggleVideoControlsVisibility();
@@ -187,7 +188,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
};
@SuppressLint("NewApi")
- void setupVideoControlsToggler() {
+ private void setupVideoControlsToggler() {
videoControlsHider.stop();
videoControlsHider.start();
}
@@ -355,18 +356,21 @@ public class VideoplayerActivity extends MediaplayerActivity {
private WeakReference<VideoplayerActivity> activity;
- public VideoControlsHider(VideoplayerActivity activity) {
+ VideoControlsHider(VideoplayerActivity activity) {
this.activity = new WeakReference<>(activity);
}
private final Runnable hideVideoControls = () -> {
- VideoplayerActivity vpa = activity.get();
+ VideoplayerActivity vpa = activity != null ? activity.get() : null;
if(vpa == null) {
return;
}
if (vpa.videoControlsShowing) {
Log.d(TAG, "Hiding video controls");
- vpa.getSupportActionBar().hide();
+ ActionBar actionBar = vpa.getSupportActionBar();
+ if (actionBar != null) {
+ actionBar.hide();
+ }
vpa.hideVideoControls();
vpa.videoControlsShowing = false;
}
@@ -376,7 +380,7 @@ public class VideoplayerActivity extends MediaplayerActivity {
this.postDelayed(hideVideoControls, DELAY);
}
- public void stop() {
+ void stop() {
this.removeCallbacks(hideVideoControls);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java
index 31d0fb1a3..8f447ac90 100644
--- a/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java
+++ b/app/src/main/java/de/danoeh/antennapod/activity/gpoddernet/GpodnetAuthenticationActivity.java
@@ -61,7 +61,7 @@ public class GpodnetAuthenticationActivity extends AppCompatActivity {
private volatile String password;
private volatile GpodnetDevice selectedDevice;
- View[] views;
+ private View[] views;
@Override
protected void onCreate(Bundle savedInstanceState) {
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java
index c18564351..e6b42efcb 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonCallback.java
@@ -3,7 +3,7 @@ package de.danoeh.antennapod.adapter;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.util.LongList;
-public interface ActionButtonCallback {
+interface ActionButtonCallback {
/** Is called when the action button of a list item has been pressed. */
void onActionButtonPressed(FeedItem item, LongList queueIds);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java
index f0210f983..a915692d1 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/ActionButtonUtils.java
@@ -16,7 +16,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
* Utility methods for the action button that is displayed on the right hand side
* of a listitem.
*/
-public class ActionButtonUtils {
+class ActionButtonUtils {
private final int[] labels;
private final TypedArray drawables;
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java
index 6611cd35a..715318db1 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/AllEpisodesRecycleAdapter.java
@@ -100,7 +100,6 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR
holder.txtvDuration = (TextView) view.findViewById(R.id.txtvDuration);
holder.item = null;
holder.mainActivityRef = mainActivityRef;
- holder.position = -1;
// so we can grab this later
view.setTag(holder);
@@ -112,11 +111,10 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR
final FeedItem item = itemAccess.getItem(position);
if (item == null) return;
holder.itemView.setOnLongClickListener(v -> {
- this.position = position;
+ this.position = holder.getAdapterPosition();
return false;
});
holder.item = item;
- holder.position = position;
holder.placeholder.setVisibility(View.VISIBLE);
holder.placeholder.setText(item.getFeed().getTitle());
holder.title.setText(item.getTitle());
@@ -227,7 +225,7 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR
return pos;
}
- private View.OnClickListener secondaryActionListener = new View.OnClickListener() {
+ private final View.OnClickListener secondaryActionListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
FeedItem item = (FeedItem) v.getTag();
@@ -252,7 +250,6 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR
ImageButton butSecondary;
FeedItem item;
WeakReference<MainActivity> mainActivityRef;
- int position;
public Holder(View itemView) {
super(itemView);
@@ -265,7 +262,7 @@ public class AllEpisodesRecycleAdapter extends RecyclerView.Adapter<AllEpisodesR
MainActivity mainActivity = mainActivityRef.get();
if (mainActivity != null) {
long[] ids = itemAccess.getItemsIds().toArray();
- mainActivity.loadChildFragment(ItemFragment.newInstance(ids, position));
+ mainActivity.loadChildFragment(ItemFragment.newInstance(ids, getAdapterPosition()));
}
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
index 679aca989..7c0be47b6 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadLogAdapter.java
@@ -31,9 +31,9 @@ public class DownloadLogAdapter extends BaseAdapter {
private static final String TAG = "DownloadLogAdapter";
- private Context context;
+ private final Context context;
- private ItemAccess itemAccess;
+ private final ItemAccess itemAccess;
public DownloadLogAdapter(Context context, ItemAccess itemAccess) {
super();
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
index 807a32d8a..c62c30c90 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadedEpisodesListAdapter.java
@@ -110,7 +110,7 @@ public class DownloadedEpisodesListAdapter extends BaseAdapter {
return convertView;
}
- private View.OnClickListener secondaryActionListener = new View.OnClickListener() {
+ private final View.OnClickListener secondaryActionListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
FeedItem item = (FeedItem) v.getTag();
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java
index e1efdaa7b..5bc67a95a 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/DownloadlistAdapter.java
@@ -19,11 +19,11 @@ import de.danoeh.antennapod.core.util.ThemeUtils;
public class DownloadlistAdapter extends BaseAdapter {
- public static final int SELECTION_NONE = -1;
+ private static final int SELECTION_NONE = -1;
private int selectedItemIndex;
- private ItemAccess itemAccess;
- private Context context;
+ private final ItemAccess itemAccess;
+ private final Context context;
public DownloadlistAdapter(Context context,
ItemAccess itemAccess) {
@@ -105,7 +105,7 @@ public class DownloadlistAdapter extends BaseAdapter {
return convertView;
}
- private View.OnClickListener butSecondaryListener = new View.OnClickListener() {
+ private final View.OnClickListener butSecondaryListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
Downloader downloader = (Downloader) v.getTag();
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
index 71d162645..e29781be1 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/FeedItemlistAdapter.java
@@ -32,13 +32,13 @@ import de.danoeh.antennapod.core.util.ThemeUtils;
*/
public class FeedItemlistAdapter extends BaseAdapter {
- private ActionButtonCallback callback;
+ private final ActionButtonCallback callback;
private final ItemAccess itemAccess;
private final Context context;
- private boolean showFeedtitle;
- private int selectedItemIndex;
+ private final boolean showFeedtitle;
+ private final int selectedItemIndex;
/** true if played items should be made partially transparent */
- private boolean makePlayedItemsTransparent;
+ private final boolean makePlayedItemsTransparent;
private final ActionButtonUtils actionButtonUtils;
private static final int SELECTION_NONE = -1;
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
index 465497b55..2daa5e70f 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/NavListAdapter.java
@@ -48,10 +48,10 @@ import de.danoeh.antennapod.fragment.SubscriptionFragment;
public class NavListAdapter extends BaseAdapter
implements SharedPreferences.OnSharedPreferenceChangeListener {
- public static final int VIEW_TYPE_COUNT = 3;
+ private static final int VIEW_TYPE_COUNT = 3;
public static final int VIEW_TYPE_NAV = 0;
public static final int VIEW_TYPE_SECTION_DIVIDER = 1;
- public static final int VIEW_TYPE_SUBSCRIPTION = 2;
+ private static final int VIEW_TYPE_SUBSCRIPTION = 2;
/**
* a tag used as a placeholder to indicate if the subscription list should be displayed or not
@@ -62,8 +62,8 @@ public class NavListAdapter extends BaseAdapter
private static List<String> tags;
private static String[] titles;
- private ItemAccess itemAccess;
- private WeakReference<Activity> activity;
+ private final ItemAccess itemAccess;
+ private final WeakReference<Activity> activity;
private boolean showSubscriptionList = true;
public NavListAdapter(ItemAccess itemAccess, Activity context) {
@@ -86,9 +86,7 @@ public class NavListAdapter extends BaseAdapter
private void loadItems() {
List<String> newTags = new ArrayList<>(Arrays.asList(MainActivity.NAV_DRAWER_TAGS));
List<String> hiddenFragments = UserPreferences.getHiddenDrawerItems();
- for(String hidden : hiddenFragments) {
- newTags.remove(hidden);
- }
+ newTags.removeAll(hiddenFragments);
if (newTags.contains(SUBSCRIPTION_LIST_TAG)) {
// we never want SUBSCRIPTION_LIST_TAG to be in 'tags'
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java
index 8eebc919a..01dd4c2de 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/QueueRecyclerAdapter.java
@@ -50,7 +50,7 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap
private static final String TAG = QueueRecyclerAdapter.class.getSimpleName();
- private WeakReference<MainActivity> mainActivity;
+ private final WeakReference<MainActivity> mainActivity;
private final ItemAccess itemAccess;
private final ActionButtonCallback actionButtonCallback;
private final ActionButtonUtils actionButtonUtils;
@@ -304,7 +304,7 @@ public class QueueRecyclerAdapter extends RecyclerView.Adapter<QueueRecyclerAdap
}
- private View.OnClickListener secondaryActionListener = new View.OnClickListener() {
+ private final View.OnClickListener secondaryActionListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
FeedItem item = (FeedItem) v.getTag();
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java
index c060083a6..50255c11f 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/StatisticsListAdapter.java
@@ -23,8 +23,8 @@ import de.danoeh.antennapod.core.util.Converter;
* Adapter for the statistics list
*/
public class StatisticsListAdapter extends BaseAdapter {
- private Context context;
- List<DBReader.StatisticsItem> feedTime = new ArrayList<>();
+ private final Context context;
+ private List<DBReader.StatisticsItem> feedTime = new ArrayList<>();
private boolean countAll = true;
public StatisticsListAdapter(Context context) {
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
index 6d19bfa6c..bb76ab501 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/SubscriptionsAdapter.java
@@ -50,7 +50,6 @@ public class SubscriptionsAdapter extends BaseAdapter implements AdapterView.OnI
}
private int getAdjustedPosition(int origPosition) {
- assert(origPosition != getAddTilePosition());
return origPosition < getAddTilePosition() ? origPosition : origPosition - 1;
}
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
index 64912ba9b..e493a2ecc 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/itunes/ItunesAdapter.java
@@ -124,7 +124,7 @@ public class ItunesAdapter extends ArrayAdapter<ItunesAdapter.Podcast> {
* @param json object holding the podcast information
* @throws JSONException
*/
- public static Podcast fromSearch(JSONObject json) throws JSONException {
+ public static Podcast fromSearch(JSONObject json) {
String title = json.optString("collectionName", "");
String imageUrl = json.optString("artworkUrl100", null);
String feedUrl = json.optString("feedUrl", null);
diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java b/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java
index 192df8ca5..b6cf5cb84 100644
--- a/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java
+++ b/app/src/main/java/de/danoeh/antennapod/asynctask/ExportWorker.java
@@ -23,15 +23,15 @@ public class ExportWorker {
private static final String TAG = "ExportWorker";
private static final String DEFAULT_OUTPUT_NAME = "antennapod-feeds";
- private ExportWriter exportWriter;
- private File output;
+ private final ExportWriter exportWriter;
+ private final File output;
public ExportWorker(ExportWriter exportWriter) {
this(exportWriter, new File(UserPreferences.getDataFolder(EXPORT_DIR),
DEFAULT_OUTPUT_NAME + "." + exportWriter.fileExtension()));
}
- public ExportWorker(ExportWriter exportWriter, @NonNull File output) {
+ private ExportWorker(ExportWriter exportWriter, @NonNull File output) {
this.exportWriter = exportWriter;
this.output = output;
}
diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java
index fcd5cff00..ea5128102 100644
--- a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java
+++ b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlFeedQueuer.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.asynctask;
-import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
@@ -16,9 +15,9 @@ import de.danoeh.antennapod.core.storage.DownloadRequester;
/** Queues items for download in the background. */
public class OpmlFeedQueuer extends AsyncTask<Void, Void, Void> {
- private Context context;
+ private final Context context;
private ProgressDialog progDialog;
- private int[] selection;
+ private final int[] selection;
public OpmlFeedQueuer(Context context, int[] selection) {
super();
diff --git a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java
index 88bd35b7c..13b95907f 100644
--- a/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java
+++ b/app/src/main/java/de/danoeh/antennapod/asynctask/OpmlImportWorker.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.asynctask;
-import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.os.AsyncTask;
@@ -21,12 +20,12 @@ public class OpmlImportWorker extends
AsyncTask<Void, Void, ArrayList<OpmlElement>> {
private static final String TAG = "OpmlImportWorker";
- private Context context;
+ private final Context context;
private Exception exception;
private ProgressDialog progDialog;
- private Reader mReader;
+ private final Reader mReader;
public OpmlImportWorker(Context context, Reader reader) {
super();
diff --git a/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java b/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java
index f26f2ea76..d2498955c 100644
--- a/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java
+++ b/app/src/main/java/de/danoeh/antennapod/config/ClientConfigurator.java
@@ -6,7 +6,7 @@ import de.danoeh.antennapod.core.ClientConfig;
/**
* Configures the ClientConfig class of the core package.
*/
-public class ClientConfigurator {
+class ClientConfigurator {
static {
ClientConfig.USER_AGENT = "AntennaPod/" + BuildConfig.VERSION_NAME;
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
index 3d577553c..10ce12771 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/EpisodesApplyActionFragment.java
@@ -34,12 +34,12 @@ public class EpisodesApplyActionFragment extends Fragment {
public static final String TAG = "EpisodeActionFragment";
- public static final int ACTION_QUEUE = 1;
- public static final int ACTION_MARK_PLAYED = 2;
- public static final int ACTION_MARK_UNPLAYED = 4;
- public static final int ACTION_DOWNLOAD = 8;
+ private static final int ACTION_QUEUE = 1;
+ private static final int ACTION_MARK_PLAYED = 2;
+ private static final int ACTION_MARK_UNPLAYED = 4;
+ private static final int ACTION_DOWNLOAD = 8;
public static final int ACTION_REMOVE = 16;
- public static final int ACTION_ALL = ACTION_QUEUE | ACTION_MARK_PLAYED | ACTION_MARK_UNPLAYED
+ private static final int ACTION_ALL = ACTION_QUEUE | ACTION_MARK_PLAYED | ACTION_MARK_UNPLAYED
| ACTION_DOWNLOAD | ACTION_REMOVE;
private ListView mListView;
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java
index 0bd75b5b0..b9276982a 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/ProxyDialog.java
@@ -43,7 +43,7 @@ public class ProxyDialog {
private static final String TAG = "ProxyDialog";
- private Context context;
+ private final Context context;
private MaterialDialog dialog;
@@ -243,47 +243,44 @@ public class ProxyDialog {
txtvMessage.setTextColor(textColorPrimary);
txtvMessage.setText("{fa-circle-o-notch spin} " + checking);
txtvMessage.setVisibility(View.VISIBLE);
- subscription = Observable.create(new Observable.OnSubscribe<Response>() {
- @Override
- public void call(Subscriber<? super Response> subscriber) {
- String type = (String) spType.getSelectedItem();
- String host = etHost.getText().toString();
- String port = etPort.getText().toString();
- String username = etUsername.getText().toString();
- String password = etPassword.getText().toString();
- int portValue = 8080;
- if(!TextUtils.isEmpty(port)) {
- portValue = Integer.valueOf(port);
- }
- SocketAddress address = InetSocketAddress.createUnresolved(host, portValue);
- Proxy.Type proxyType = Proxy.Type.valueOf(type.toUpperCase());
- Proxy proxy = new Proxy(proxyType, address);
- OkHttpClient.Builder builder = AntennapodHttpClient.newBuilder()
- .connectTimeout(10, TimeUnit.SECONDS)
- .proxy(proxy);
- builder.interceptors().clear();
- OkHttpClient client = builder.build();
- if(!TextUtils.isEmpty(username)) {
- String credentials = Credentials.basic(username, password);
- client.interceptors().add(chain -> {
- Request request = chain.request().newBuilder()
- .header("Proxy-Authorization", credentials).build();
- return chain.proceed(request);
- });
- }
- Request request = new Request.Builder()
- .url("http://www.google.com")
- .head()
- .build();
- try {
- Response response = client.newCall(request).execute();
- subscriber.onNext(response);
- } catch(IOException e) {
- subscriber.onError(e);
- }
- subscriber.onCompleted();
- }
- })
+ subscription = Observable.create((Observable.OnSubscribe<Response>) subscriber -> {
+ String type = (String) spType.getSelectedItem();
+ String host = etHost.getText().toString();
+ String port = etPort.getText().toString();
+ String username = etUsername.getText().toString();
+ String password = etPassword.getText().toString();
+ int portValue = 8080;
+ if(!TextUtils.isEmpty(port)) {
+ portValue = Integer.valueOf(port);
+ }
+ SocketAddress address = InetSocketAddress.createUnresolved(host, portValue);
+ Proxy.Type proxyType = Proxy.Type.valueOf(type.toUpperCase());
+ Proxy proxy = new Proxy(proxyType, address);
+ OkHttpClient.Builder builder = AntennapodHttpClient.newBuilder()
+ .connectTimeout(10, TimeUnit.SECONDS)
+ .proxy(proxy);
+ builder.interceptors().clear();
+ OkHttpClient client = builder.build();
+ if(!TextUtils.isEmpty(username)) {
+ String credentials = Credentials.basic(username, password);
+ client.interceptors().add(chain -> {
+ Request request = chain.request().newBuilder()
+ .header("Proxy-Authorization", credentials).build();
+ return chain.proceed(request);
+ });
+ }
+ Request request = new Request.Builder()
+ .url("http://www.google.com")
+ .head()
+ .build();
+ try {
+ Response response = client.newCall(request).execute();
+ subscriber.onNext(response);
+ } catch(IOException e) {
+ subscriber.onError(e);
+ }
+ subscriber.onCompleted();
+ })
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java
index 64fc1fda4..72000170e 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/RatingDialog.java
@@ -54,7 +54,7 @@ public class RatingDialog {
}
}
- public static void rateNow() {
+ private static void rateNow() {
Context context = mContext.get();
if(context == null) {
return;
@@ -67,11 +67,11 @@ public class RatingDialog {
saveRated();
}
- public static boolean rated() {
+ private static boolean rated() {
return mPreferences.getBoolean(KEY_RATED, false);
}
- public static void saveRated() {
+ private static void saveRated() {
mPreferences
.edit()
.putBoolean(KEY_RATED, true)
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java
index 5bb3f09c3..be7850495 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/SleepTimerDialog.java
@@ -24,7 +24,7 @@ public abstract class SleepTimerDialog {
private static final String TAG = SleepTimerDialog.class.getSimpleName();
- private Context context;
+ private final Context context;
private MaterialDialog dialog;
private EditText etxtTime;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
index f14ebbdaf..c050221e1 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AddFeedFragment.java
@@ -25,7 +25,7 @@ public class AddFeedFragment extends Fragment {
/**
* Preset value for url text field.
*/
- public static final String ARG_FEED_URL = "feedurl";
+ private static final String ARG_FEED_URL = "feedurl";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
index bbfd1688d..f3846c8a4 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
@@ -69,24 +69,24 @@ public class AllEpisodesFragment extends Fragment {
private static final String PREF_SCROLL_POSITION = "scroll_position";
private static final String PREF_SCROLL_OFFSET = "scroll_offset";
- protected RecyclerView recyclerView;
- protected AllEpisodesRecycleAdapter listAdapter;
+ RecyclerView recyclerView;
+ AllEpisodesRecycleAdapter listAdapter;
private ProgressBar progLoading;
- protected List<FeedItem> episodes;
+ List<FeedItem> episodes;
private List<Downloader> downloaderList;
private boolean itemsLoaded = false;
private boolean viewsCreated = false;
private boolean isUpdatingFeeds;
- protected boolean isMenuInvalidationAllowed = false;
+ boolean isMenuInvalidationAllowed = false;
- protected Subscription subscription;
+ Subscription subscription;
private LinearLayoutManager layoutManager;
- protected boolean showOnlyNewEpisodes() { return false; }
- protected String getPrefName() { return DEFAULT_PREF_NAME; }
+ boolean showOnlyNewEpisodes() { return false; }
+ String getPrefName() { return DEFAULT_PREF_NAME; }
@Override
public void onCreate(Bundle savedInstanceState) {
@@ -165,7 +165,7 @@ public class AllEpisodesFragment extends Fragment {
}
}
- protected void resetViewState() {
+ void resetViewState() {
viewsCreated = false;
listAdapter = null;
}
@@ -284,13 +284,7 @@ public class AllEpisodesFragment extends Fragment {
return super.onContextItemSelected(item);
}
- try {
- return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem);
- } catch (DownloadRequestException e) {
- e.printStackTrace();
- Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
- return true;
- }
+ return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem);
}
@Override
@@ -299,10 +293,10 @@ public class AllEpisodesFragment extends Fragment {
R.layout.all_episodes_fragment);
}
- protected View onCreateViewHelper(LayoutInflater inflater,
- ViewGroup container,
- Bundle savedInstanceState,
- int fragmentResource) {
+ View onCreateViewHelper(LayoutInflater inflater,
+ ViewGroup container,
+ Bundle savedInstanceState,
+ int fragmentResource) {
super.onCreateView(inflater, container, savedInstanceState);
View root = inflater.inflate(fragmentResource, container, false);
@@ -346,7 +340,7 @@ public class AllEpisodesFragment extends Fragment {
updateShowOnlyEpisodesListViewState();
}
- protected AllEpisodesRecycleAdapter.ItemAccess itemAccess = new AllEpisodesRecycleAdapter.ItemAccess() {
+ private final AllEpisodesRecycleAdapter.ItemAccess itemAccess = new AllEpisodesRecycleAdapter.ItemAccess() {
@Override
public int getCount() {
@@ -444,7 +438,7 @@ public class AllEpisodesFragment extends Fragment {
}
}
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
if ((arg & EVENTS) != 0) {
@@ -459,7 +453,7 @@ public class AllEpisodesFragment extends Fragment {
private void updateShowOnlyEpisodesListViewState() {
}
- protected void loadItems() {
+ void loadItems() {
if(subscription != null) {
subscription.unsubscribe();
}
@@ -483,7 +477,7 @@ public class AllEpisodesFragment extends Fragment {
}, error -> Log.e(TAG, Log.getStackTraceString(error)));
}
- protected List<FeedItem> loadData() {
+ List<FeedItem> loadData() {
return DBReader.getRecentlyPublishedEpisodes(RECENT_EPISODES_LIMIT);
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
index 1ba7ed557..f37ecd5e7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
@@ -168,7 +168,7 @@ public class CompletedDownloadsFragment extends ListFragment {
}
}
- private DownloadedEpisodesListAdapter.ItemAccess itemAccess = new DownloadedEpisodesListAdapter.ItemAccess() {
+ private final DownloadedEpisodesListAdapter.ItemAccess itemAccess = new DownloadedEpisodesListAdapter.ItemAccess() {
@Override
public int getCount() {
return (items != null) ? items.size() : 0;
@@ -189,7 +189,7 @@ public class CompletedDownloadsFragment extends ListFragment {
}
};
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
if ((arg & EVENTS) != 0) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java
index 0a710196a..9a4c9e030 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java
@@ -82,7 +82,7 @@ public class DownloadLogFragment extends ListFragment {
getActivity().supportInvalidateOptionsMenu();
}
- private DownloadLogAdapter.ItemAccess itemAccess = new DownloadLogAdapter.ItemAccess() {
+ private final DownloadLogAdapter.ItemAccess itemAccess = new DownloadLogAdapter.ItemAccess() {
@Override
public int getCount() {
@@ -99,7 +99,7 @@ public class DownloadLogFragment extends ListFragment {
}
};
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java
index 5d29f4bde..9c4d00e31 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadsFragment.java
@@ -25,7 +25,7 @@ public class DownloadsFragment extends Fragment {
public static final String ARG_SELECTED_TAB = "selected_tab";
public static final int POS_RUNNING = 0;
- public static final int POS_COMPLETED = 1;
+ private static final int POS_COMPLETED = 1;
public static final int POS_LOG = 2;
private static final String PREF_LAST_TAB_POSITION = "tab_position";
@@ -80,7 +80,7 @@ public class DownloadsFragment extends Fragment {
public static class DownloadsPagerAdapter extends FragmentPagerAdapter {
- Resources resources;
+ final Resources resources;
public DownloadsPagerAdapter(FragmentManager fm, Resources resources) {
super(fm);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
index e2fbd91f3..8928d2bf3 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesFragment.java
@@ -21,10 +21,10 @@ public class EpisodesFragment extends Fragment {
public static final String TAG = "EpisodesFragment";
private static final String PREF_LAST_TAB_POSITION = "tab_position";
- public static final int POS_NEW_EPISODES = 0;
- public static final int POS_ALL_EPISODES = 1;
- public static final int POS_FAV_EPISODES = 2;
- public static final int TOTAL_COUNT = 3;
+ private static final int POS_NEW_EPISODES = 0;
+ private static final int POS_ALL_EPISODES = 1;
+ private static final int POS_FAV_EPISODES = 2;
+ private static final int TOTAL_COUNT = 3;
private TabLayout tabLayout;
@@ -79,7 +79,7 @@ public class EpisodesFragment extends Fragment {
public static class EpisodesPagerAdapter extends FragmentPagerAdapter {
private final Resources resources;
- private AllEpisodesFragment[] fragments = {
+ private final AllEpisodesFragment[] fragments = {
new NewEpisodesFragment(),
new AllEpisodesFragment(),
new FavoriteEpisodesFragment()
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java
index 5bb8e0a2d..a9bf39632 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ExternalPlayerFragment.java
@@ -208,7 +208,7 @@ public class ExternalPlayerFragment extends Fragment {
return controller;
}
- public void onPositionObserverUpdate() {
+ private void onPositionObserverUpdate() {
mProgressBar.setProgress((int)
((double) controller.getPosition() / controller.getDuration() * 100));
}
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
index 234c8377d..76d19d61c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FavoriteEpisodesFragment.java
@@ -26,7 +26,7 @@ import de.danoeh.antennapod.core.storage.DBWriter;
public class FavoriteEpisodesFragment extends AllEpisodesFragment {
- public static final String TAG = "FavoriteEpisodesFrag";
+ private static final String TAG = "FavoriteEpisodesFrag";
private static final String PREF_NAME = "PrefFavoriteEpisodesFragment";
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java
index 7c1ec5ec1..6ee9ce467 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FyydSearchFragment.java
@@ -49,7 +49,7 @@ public class FyydSearchFragment extends Fragment {
private Button butRetry;
private TextView txtvEmpty;
- private FyydClient client = new FyydClient(AntennapodHttpClient.getHttpClient());
+ private final FyydClient client = new FyydClient(AntennapodHttpClient.getHttpClient());
/**
* List of podcasts retreived from the search
@@ -169,7 +169,7 @@ public class FyydSearchFragment extends Fragment {
progressBar.setVisibility(View.VISIBLE);
}
- void processSearchResult(FyydResponse response) {
+ private void processSearchResult(FyydResponse response) {
adapter.clear();
if (!response.getData().isEmpty()) {
adapter.clear();
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
index f6bdfddda..935fd7898 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java
@@ -10,7 +10,6 @@ import android.content.SharedPreferences;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.net.Uri;
-import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
@@ -201,7 +200,7 @@ public class ItemDescriptionFragment extends Fragment implements MediaplayerInfo
}
- private View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() {
+ private final View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
index da7fc5299..4ae6b97ee 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemFragment.java
@@ -334,13 +334,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
openPodcast();
return true;
default:
- try {
- return FeedItemMenuHandler.onMenuItemClicked(getActivity(), menuItem.getItemId(), item);
- } catch (DownloadRequestException e) {
- e.printStackTrace();
- Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
- return true;
- }
+ return FeedItemMenuHandler.onMenuItemClicked(getActivity(), menuItem.getItemId(), item);
}
}
@@ -449,7 +443,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
}
}
- private View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() {
+ private final View.OnLongClickListener webViewLongClickListener = new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
@@ -551,7 +545,7 @@ public class ItemFragment extends Fragment implements OnSwipeGesture {
}
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
if ((arg & EVENTS) != 0) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java
index d819e68d2..890f31f57 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemlistFragment.java
@@ -7,7 +7,6 @@ import android.content.Intent;
import android.content.res.TypedArray;
import android.graphics.Color;
import android.graphics.LightingColorFilter;
-import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ListFragment;
import android.support.v4.view.MenuItemCompat;
@@ -22,7 +21,6 @@ import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageButton;
import android.widget.ImageView;
-import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
@@ -89,9 +87,9 @@ public class ItemlistFragment extends ListFragment {
| EventDistributor.PLAYER_STATUS_UPDATE;
public static final String EXTRA_SELECTED_FEEDITEM = "extra.de.danoeh.antennapod.activity.selected_feeditem";
- public static final String ARGUMENT_FEED_ID = "argument.de.danoeh.antennapod.feed_id";
+ private static final String ARGUMENT_FEED_ID = "argument.de.danoeh.antennapod.feed_id";
- protected FeedItemlistAdapter adapter;
+ private FeedItemlistAdapter adapter;
private ContextMenu contextMenu;
private AdapterView.AdapterContextMenuInfo lastMenuInfo = null;
@@ -342,12 +340,7 @@ public class ItemlistFragment extends ListFragment {
return super.onContextItemSelected(item);
}
- try {
- return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem);
- } catch (DownloadRequestException e) {
- // context menu doesn't contain download functionality
- return true;
- }
+ return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem);
}
@Override
@@ -407,7 +400,7 @@ public class ItemlistFragment extends ListFragment {
}
}
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
@@ -573,7 +566,7 @@ public class ItemlistFragment extends ListFragment {
}
}
- private FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() {
+ private final FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() {
@Override
public FeedItem getItem(int position) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java
index 43dedad25..08610c1f3 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItunesSearchFragment.java
@@ -75,7 +75,7 @@ public class ItunesSearchFragment extends Fragment {
* Replace adapter data with provided search results from SearchTask.
* @param result List of Podcast objects containing search results
*/
- void updateData(List<Podcast> result) {
+ private void updateData(List<Podcast> result) {
this.searchResults = result;
adapter.clear();
if (result != null && result.size() > 0) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
index 441f0096c..fb6280021 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
@@ -199,7 +199,7 @@ public class PlaybackHistoryFragment extends ListFragment {
}
}
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
@@ -224,7 +224,7 @@ public class PlaybackHistoryFragment extends ListFragment {
getActivity().supportInvalidateOptionsMenu();
}
- private FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() {
+ private final FeedItemlistAdapter.ItemAccess itemAccess = new FeedItemlistAdapter.ItemAccess() {
@Override
public int getItemDownloadProgressPercent(FeedItem item) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
index fccb86076..bf22e71f5 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -363,13 +363,7 @@ public class QueueFragment extends Fragment {
DBWriter.moveQueueItemToBottom(selectedItem.getId(), true);
return true;
default:
- try {
- return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem);
- } catch (DownloadRequestException e) {
- e.printStackTrace();
- Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_LONG).show();
- return true;
- }
+ return FeedItemMenuHandler.onMenuItemClicked(getActivity(), item.getItemId(), selectedItem);
}
}
@@ -519,7 +513,7 @@ public class QueueFragment extends Fragment {
infoBar.setText(info);
}
- private QueueRecyclerAdapter.ItemAccess itemAccess = new QueueRecyclerAdapter.ItemAccess() {
+ private final QueueRecyclerAdapter.ItemAccess itemAccess = new QueueRecyclerAdapter.ItemAccess() {
@Override
public int getCount() {
return queue != null ? queue.size() : 0;
@@ -579,7 +573,7 @@ public class QueueFragment extends Fragment {
}
};
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
if ((arg & EVENTS) != 0) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java
index ba526edb3..66c59b7f7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/RunningDownloadsFragment.java
@@ -75,7 +75,7 @@ public class RunningDownloadsFragment extends ListFragment {
}
- private DownloadlistAdapter.ItemAccess itemAccess = new DownloadlistAdapter.ItemAccess() {
+ private final DownloadlistAdapter.ItemAccess itemAccess = new DownloadlistAdapter.ItemAccess() {
@Override
public int getCount() {
return (downloaderList != null) ? downloaderList.size() : 0;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
index 9626e6c2e..c834b7ea7 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
@@ -210,7 +210,7 @@ public class SubscriptionFragment extends Fragment {
loadSubscriptions();
}
- private EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
+ private final EventDistributor.EventListener contentUpdate = new EventDistributor.EventListener() {
@Override
public void update(EventDistributor eventDistributor, Integer arg) {
if ((EVENTS & arg) != 0) {
@@ -220,7 +220,7 @@ public class SubscriptionFragment extends Fragment {
}
};
- private SubscriptionsAdapter.ItemAccess itemAccess = new SubscriptionsAdapter.ItemAccess() {
+ private final SubscriptionsAdapter.ItemAccess itemAccess = new SubscriptionsAdapter.ItemAccess() {
@Override
public int getCount() {
if (navDrawerData != null) {
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java
index aff5069c6..b48027668 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/GpodnetMainFragment.java
@@ -20,7 +20,7 @@ import de.danoeh.antennapod.R;
*/
public class GpodnetMainFragment extends Fragment {
- public static final String TAG = "GpodnetMainFragment";
+ private static final String TAG = "GpodnetMainFragment";
private static final String PREF_LAST_TAB_POSITION = "tab_position";
private TabLayout tabLayout;
@@ -71,7 +71,7 @@ public class GpodnetMainFragment extends Fragment {
private static final int POS_TAGS = 1;
private static final int POS_SUGGESTIONS = 2;
- Resources resources;
+ final Resources resources;
public GpodnetPagerAdapter(FragmentManager fm, Resources resources) {
super(fm);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java
index a54c90862..055358c64 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/PodcastListFragment.java
@@ -91,7 +91,7 @@ public abstract class PodcastListFragment extends Fragment {
return root;
}
- protected void onPodcastSelected(GpodnetPodcast selection) {
+ private void onPodcastSelected(GpodnetPodcast selection) {
Log.d(TAG, "Selected podcast: " + selection.toString());
Intent intent = new Intent(getActivity(), OnlineFeedViewActivity.class);
intent.putExtra(OnlineFeedViewActivity.ARG_FEEDURL, selection.getUrl());
@@ -101,7 +101,7 @@ public abstract class PodcastListFragment extends Fragment {
protected abstract List<GpodnetPodcast> loadPodcastData(GpodnetService service) throws GpodnetServiceException;
- protected final void loadData() {
+ final void loadData() {
AsyncTask<Void, Void, List<GpodnetPodcast>> loaderTask = new AsyncTask<Void, Void, List<GpodnetPodcast>>() {
volatile Exception exception = null;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java
index 613e06805..10bd636dd 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/gpodnet/SearchListFragment.java
@@ -73,7 +73,7 @@ public class SearchListFragment extends PodcastListFragment {
return service.searchPodcasts(query, 0);
}
- public void changeQuery(String query) {
+ private void changeQuery(String query) {
Validate.notNull(query);
this.query = query;
diff --git a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
index 57b7c359c..f6f73e017 100644
--- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
+++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java
@@ -17,7 +17,6 @@ import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBTasks;
import de.danoeh.antennapod.core.storage.DBWriter;
-import de.danoeh.antennapod.core.storage.DownloadRequestException;
import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.LongList;
import de.danoeh.antennapod.core.util.ShareUtils;
@@ -155,7 +154,7 @@ public class FeedItemMenuHandler {
}
public static boolean onMenuItemClicked(Context context, int menuItemId,
- FeedItem selectedItem) throws DownloadRequestException {
+ FeedItem selectedItem) {
switch (menuItemId) {
case R.id.skip_episode_item:
context.sendBroadcast(new Intent(PlaybackService.ACTION_SKIP_CURRENT_EPISODE));
diff --git a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
index 5da6f1fb0..b5e0f1e99 100644
--- a/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
+++ b/app/src/main/java/de/danoeh/antennapod/preferences/PreferenceController.java
@@ -46,7 +46,6 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
-import java.util.Comparator;
import java.util.GregorianCalendar;
import java.util.List;
import java.util.concurrent.TimeUnit;
diff --git a/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java b/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java
index a373c5353..c9bd973cb 100644
--- a/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java
+++ b/app/src/main/java/de/danoeh/antennapod/receiver/SPAReceiver.java
@@ -22,8 +22,8 @@ public class SPAReceiver extends BroadcastReceiver{
private static final String TAG = "SPAReceiver";
public static final String ACTION_SP_APPS_QUERY_FEEDS = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS";
- public static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS_RESPONSE";
- public static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE_FEEDS_EXTRA = "feeds";
+ private static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE = "de.danoeh.antennapdsp.intent.SP_APPS_QUERY_FEEDS_RESPONSE";
+ private static final String ACTION_SP_APPS_QUERY_FEEDS_REPSONSE_FEEDS_EXTRA = "feeds";
@Override
public void onReceive(Context context, Intent intent) {
diff --git a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java
index b5bfb1ae4..d5141bd37 100644
--- a/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java
+++ b/app/src/main/java/de/danoeh/antennapod/service/PlayerWidgetService.java
@@ -38,7 +38,7 @@ public class PlayerWidgetService extends Service {
/**
* Controls write access to playbackservice reference
*/
- private Object psLock;
+ private final Object psLock = new Object();
/**
* True while service is updating the widget
@@ -53,7 +53,6 @@ public class PlayerWidgetService extends Service {
super.onCreate();
Log.d(TAG, "Service created");
isUpdating = false;
- psLock = new Object();
}
@Override
@@ -194,7 +193,7 @@ public class PlayerWidgetService extends Service {
}
}
- private ServiceConnection mConnection = new ServiceConnection() {
+ private final ServiceConnection mConnection = new ServiceConnection() {
public void onServiceConnected(ComponentName className, IBinder service) {
Log.d(TAG, "Connection to service established");
synchronized (psLock) {
@@ -224,7 +223,7 @@ public class PlayerWidgetService extends Service {
class ViewUpdater extends Thread {
private static final String THREAD_NAME = "ViewUpdater";
- private PlayerWidgetService service;
+ private final PlayerWidgetService service;
public ViewUpdater(PlayerWidgetService service) {
super();
diff --git a/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java b/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java
index 27b6ee2bc..7ce33e11f 100644
--- a/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java
+++ b/app/src/main/java/de/danoeh/antennapod/view/SquareImageView.java
@@ -1,13 +1,13 @@
package de.danoeh.antennapod.view;
import android.content.Context;
+import android.support.v7.widget.AppCompatImageView;
import android.util.AttributeSet;
-import android.widget.ImageView;
/**
* From http://stackoverflow.com/a/19449488/6839
*/
-public class SquareImageView extends ImageView {
+public class SquareImageView extends AppCompatImageView {
public SquareImageView(Context context) {
super(context);
@@ -26,6 +26,7 @@ public class SquareImageView extends ImageView {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = getMeasuredWidth();
+ //noinspection SuspiciousNameCombination
setMeasuredDimension(width, width);
}
diff --git a/app/src/main/res/layout-v14/authentication_dialog.xml b/app/src/main/res/layout-v14/authentication_dialog.xml
deleted file mode 100644
index 00e74c9e1..000000000
--- a/app/src/main/res/layout-v14/authentication_dialog.xml
+++ /dev/null
@@ -1,87 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical" >
-
- <LinearLayout
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="vertical" >
-
- <EditText
- android:id="@+id/etxtUsername"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:layout_margin="16dp"
- android:hint="@string/username_label"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:cursorVisible="true"/>
-
- <EditText
- android:id="@+id/etxtPassword"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_weight="1"
- android:layout_margin="16dp"
- android:inputType="textPassword"
- android:hint="@string/password_label"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:cursorVisible="true"/>
-
- <CheckBox
- android:id="@+id/chkSaveUsernamePassword"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:text="@string/save_username_password_label"/>
- </LinearLayout>
-
- <RelativeLayout
- android:id="@+id/footer"
- android:layout_width="fill_parent"
- android:layout_height="48dp" >
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_alignParentTop="true"
- android:background="?android:attr/dividerVertical" />
-
- <View
- android:id="@+id/horizontal_divider"
- android:layout_width="1dip"
- android:layout_height="fill_parent"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="4dp"
- android:layout_marginTop="4dp"
- android:background="?android:attr/dividerVertical" />
-
- <Button
- android:id="@+id/butCancel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_toLeftOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/cancel_label" />
-
- <Button
- android:id="@+id/butConfirm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:layout_toRightOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/confirm_label" />
- </RelativeLayout>
-
-</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-v14/directory_chooser.xml b/app/src/main/res/layout-v14/directory_chooser.xml
deleted file mode 100644
index 14e2f6a38..000000000
--- a/app/src/main/res/layout-v14/directory_chooser.xml
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- tools:background="@android:color/darker_gray">
-
- <RelativeLayout
- android:id="@+id/footer"
- android:layout_width="fill_parent"
- android:layout_height="48dp"
- android:layout_alignParentBottom="true" >
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_alignParentTop="true"
- android:background="?android:attr/dividerVertical" />
-
- <View
- android:id="@+id/horizontal_divider"
- android:layout_width="1dip"
- android:layout_height="fill_parent"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="4dp"
- android:layout_marginTop="4dp"
- android:background="?android:attr/dividerVertical" />
-
- <Button
- android:id="@+id/butCancel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_toLeftOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/cancel_label" />
-
- <Button
- android:id="@+id/butConfirm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:layout_toRightOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/confirm_label" />
- </RelativeLayout>
-
- <RelativeLayout
- android:id="@+id/directory_info"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true" >
-
- <ImageButton
- android:id="@+id/butNavUp"
- android:contentDescription="@string/navigate_upwards_label"
- android:layout_width="60dp"
- android:layout_height="60dp"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:background="?attr/selectableItemBackground"
- android:src="?attr/navigation_up"
- tools:src="@drawable/navigation_up"
- tools:background="@android:color/holo_green_dark" />
-
- <TextView
- android:id="@+id/txtvSelectedFolderLabel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentTop="true"
- android:layout_marginLeft="8dp"
- android:layout_marginRight="8dp"
- android:layout_marginTop="8dp"
- android:layout_toRightOf="@id/butNavUp"
- android:text="@string/selected_folder_label"
- android:textStyle="bold"
- tools:background="@android:color/holo_green_dark">
- </TextView>
-
- <TextView
- android:id="@+id/txtvSelectedFolder"
- android:layout_width="0dp"
- android:layout_height="wrap_content"
- android:layout_alignParentRight="true"
- android:layout_below="@id/txtvSelectedFolderLabel"
- android:layout_margin="8dp"
- android:layout_toRightOf="@id/butNavUp"
- android:ellipsize="start"
- android:scrollHorizontally="true"
- android:singleLine="true"
- tools:text="/path/to/selected/folder"
- tools:background="@android:color/holo_green_dark"/>
-
- <View
- android:id="@+id/divider"
- android:layout_width="match_parent"
- android:layout_height="1dp"
- android:layout_below="@id/butNavUp"
- android:background="@color/holo_blue_light" />
- </RelativeLayout>
-
- <ListView
- android:id="@+id/directory_list"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_above="@id/footer"
- android:layout_below="@id/directory_info" />
-
-</RelativeLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-v14/download_authentication_activity.xml b/app/src/main/res/layout-v14/download_authentication_activity.xml
deleted file mode 100644
index f6925dc3a..000000000
--- a/app/src/main/res/layout-v14/download_authentication_activity.xml
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent">
-
- <TextView
- android:id="@+id/txtvTitle"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/authentication_notification_title"
- android:layout_alignParentTop="true"
- android:textSize="@dimen/text_size_large"
- android:layout_margin="16dp"
- android:textColor="@color/holo_blue_light"
- android:textStyle="italic"/>
-
- <TextView
- android:id="@+id/txtvDescription"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:text="@string/authentication_notification_msg"
- android:layout_below="@id/txtvTitle"
- android:textSize="@dimen/text_size_medium"
- android:textColor="?android:attr/textColorSecondary"
- android:layout_margin="16dp"/>
-
- <EditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:id="@+id/etxtUsername"
- android:hint="@string/username_label"
- android:layout_below="@id/txtvDescription"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:cursorVisible="true"/>
-
- <EditText
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_margin="16dp"
- android:id="@+id/etxtPassword"
- android:hint="@string/password_label"
- android:inputType="textPassword"
- android:layout_below="@id/etxtUsername"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:cursorVisible="true"/>
-
- <RelativeLayout
- android:id="@+id/footer"
- android:layout_width="fill_parent"
- android:layout_height="48dp"
- android:focusableInTouchMode="true"
- android:layout_alignParentBottom="true">
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_alignParentTop="true"
- android:background="?android:attr/dividerVertical"/>
-
- <View
- android:id="@+id/horizontal_divider"
- android:layout_width="1dip"
- android:layout_height="fill_parent"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="4dp"
- android:layout_marginTop="4dp"
- android:background="?android:attr/dividerVertical"/>
-
- <Button
- android:id="@+id/butCancel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_toLeftOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/cancel_label"/>
-
- <Button
- android:id="@+id/butConfirm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:layout_toRightOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/confirm_label"/>
- </RelativeLayout>
-
-
-</RelativeLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-v14/opml_selection.xml b/app/src/main/res/layout-v14/opml_selection.xml
deleted file mode 100644
index 3133debd1..000000000
--- a/app/src/main/res/layout-v14/opml_selection.xml
+++ /dev/null
@@ -1,61 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- xmlns:tools="http://schemas.android.com/tools"
- android:layout_width="match_parent"
- android:layout_height="match_parent" >
-
- <RelativeLayout
- android:id="@+id/footer"
- android:layout_width="fill_parent"
- android:layout_height="48dp"
- android:layout_alignParentBottom="true" >
-
- <View
- android:layout_width="match_parent"
- android:layout_height="1dip"
- android:layout_alignParentTop="true"
- android:background="?android:attr/dividerVertical" />
-
- <View
- android:id="@+id/horizontal_divider"
- android:layout_width="1dip"
- android:layout_height="fill_parent"
- android:layout_alignParentTop="true"
- android:layout_centerHorizontal="true"
- android:layout_marginBottom="4dp"
- android:layout_marginTop="4dp"
- android:background="?android:attr/dividerVertical" />
-
- <Button
- android:id="@+id/butCancel"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentLeft="true"
- android:layout_alignParentTop="true"
- android:layout_toLeftOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/cancel_label" />
-
- <Button
- android:id="@+id/butConfirm"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:layout_alignParentRight="true"
- android:layout_alignParentTop="true"
- android:layout_toRightOf="@id/horizontal_divider"
- android:background="?android:attr/selectableItemBackground"
- android:text="@string/confirm_label" />
- </RelativeLayout>
-
- <ListView
- android:id="@+id/feedlist"
- android:layout_width="match_parent"
- android:layout_height="0dp"
- android:layout_above="@id/footer"
- android:layout_alignParentTop="true"
- tools:listitem="@android:layout/simple_list_item_multiple_choice" >
- </ListView>
-
-</RelativeLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout-v14/time_dialog.xml b/app/src/main/res/layout-v14/time_dialog.xml
deleted file mode 100644
index ba4249268..000000000
--- a/app/src/main/res/layout-v14/time_dialog.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical"
- android:gravity="center">
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="horizontal" >
-
- <EditText
- android:id="@+id/etxtTime"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:layout_margin="8dp"
- android:ems="2"
- android:hint="@string/enter_time_here_label"
- android:inputType="number"
- android:maxLength="2" >
-
- <requestFocus />
- </EditText>
-
- <Spinner
- android:id="@+id/spTimeUnit"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginBottom="8dp"
- android:layout_marginTop="8dp" />
- </LinearLayout>
-
- <LinearLayout
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:orientation="vertical">
-
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_marginTop="8dp"
- android:text="@string/timer_about_to_expire_label"
- android:textSize="16sp" />
-
- <CheckBox
- android:id="@+id/cbShakeToReset"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/shake_to_reset_label" />
-
- <CheckBox
- android:id="@+id/cbVibrate"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/timer_vibration_label" />
-
- <CheckBox
- android:id="@+id/chAutoEnable"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:text="@string/auto_enable_label" />
-
- </LinearLayout>
-
-</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/authentication_dialog.xml b/app/src/main/res/layout/authentication_dialog.xml
index e18ab42eb..00e74c9e1 100644
--- a/app/src/main/res/layout/authentication_dialog.xml
+++ b/app/src/main/res/layout/authentication_dialog.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
-
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
- android:orientation="vertical">
+ android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:orientation="vertical">
+ android:orientation="vertical" >
<EditText
android:id="@+id/etxtUsername"
@@ -39,30 +38,50 @@
android:layout_height="wrap_content"
android:layout_margin="16dp"
android:text="@string/save_username_password_label"/>
+ </LinearLayout>
+ <RelativeLayout
+ android:id="@+id/footer"
+ android:layout_width="fill_parent"
+ android:layout_height="48dp" >
- </LinearLayout>
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:layout_alignParentTop="true"
+ android:background="?android:attr/dividerVertical" />
- <LinearLayout
- style="@android:style/ButtonBar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:orientation="horizontal">
+ <View
+ android:id="@+id/horizontal_divider"
+ android:layout_width="1dip"
+ android:layout_height="fill_parent"
+ android:layout_alignParentTop="true"
+ android:layout_centerHorizontal="true"
+ android:layout_marginBottom="4dp"
+ android:layout_marginTop="4dp"
+ android:background="?android:attr/dividerVertical" />
<Button
- android:id="@+id/butConfirm"
- android:layout_width="0dp"
+ android:id="@+id/butCancel"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_marginRight="8dp"
- android:text="@string/confirm_label"
- android:layout_weight="1"/>
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_toLeftOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
+ android:text="@string/cancel_label" />
<Button
- android:id="@+id/butCancel"
- android:text="@string/cancel_label"
- android:layout_width="0dp"
+ android:id="@+id/butConfirm"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_weight="1"/>
- </LinearLayout>
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
+ android:text="@string/confirm_label" />
+ </RelativeLayout>
</LinearLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/directory_chooser.xml b/app/src/main/res/layout/directory_chooser.xml
index 635a73cf4..14e2f6a38 100644
--- a/app/src/main/res/layout/directory_chooser.xml
+++ b/app/src/main/res/layout/directory_chooser.xml
@@ -2,30 +2,53 @@
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent" >
+ android:layout_height="match_parent"
+ tools:background="@android:color/darker_gray">
- <LinearLayout
+ <RelativeLayout
android:id="@+id/footer"
- style="@android:style/ButtonBar"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:orientation="horizontal" >
+ android:layout_width="fill_parent"
+ android:layout_height="48dp"
+ android:layout_alignParentBottom="true" >
- <Button
- android:id="@+id/butConfirm"
- android:layout_width="0px"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/confirm_label" />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:layout_alignParentTop="true"
+ android:background="?android:attr/dividerVertical" />
+
+ <View
+ android:id="@+id/horizontal_divider"
+ android:layout_width="1dip"
+ android:layout_height="fill_parent"
+ android:layout_alignParentTop="true"
+ android:layout_centerHorizontal="true"
+ android:layout_marginBottom="4dp"
+ android:layout_marginTop="4dp"
+ android:background="?android:attr/dividerVertical" />
<Button
android:id="@+id/butCancel"
- android:layout_width="0px"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_weight="1"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_toLeftOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
android:text="@string/cancel_label" />
- </LinearLayout>
+
+ <Button
+ android:id="@+id/butConfirm"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
+ android:text="@string/confirm_label" />
+ </RelativeLayout>
<RelativeLayout
android:id="@+id/directory_info"
@@ -56,7 +79,7 @@
android:layout_toRightOf="@id/butNavUp"
android:text="@string/selected_folder_label"
android:textStyle="bold"
- tools:background="@android:color/holo_blue_bright">
+ tools:background="@android:color/holo_green_dark">
</TextView>
<TextView
@@ -71,7 +94,7 @@
android:scrollHorizontally="true"
android:singleLine="true"
tools:text="/path/to/selected/folder"
- tools:background="@android:color/holo_blue_bright"/>
+ tools:background="@android:color/holo_green_dark"/>
<View
android:id="@+id/divider"
diff --git a/app/src/main/res/layout/download_authentication_activity.xml b/app/src/main/res/layout/download_authentication_activity.xml
index 27604973a..f6925dc3a 100644
--- a/app/src/main/res/layout/download_authentication_activity.xml
+++ b/app/src/main/res/layout/download_authentication_activity.xml
@@ -48,28 +48,51 @@
android:focusableInTouchMode="true"
android:cursorVisible="true"/>
- <LinearLayout
+ <RelativeLayout
android:id="@+id/footer"
- style="@android:style/ButtonBar"
android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:orientation="horizontal">
+ android:layout_height="48dp"
+ android:focusableInTouchMode="true"
+ android:layout_alignParentBottom="true">
- <Button
- android:id="@+id/butConfirm"
- android:layout_width="0px"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/confirm_label"/>
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:layout_alignParentTop="true"
+ android:background="?android:attr/dividerVertical"/>
+
+ <View
+ android:id="@+id/horizontal_divider"
+ android:layout_width="1dip"
+ android:layout_height="fill_parent"
+ android:layout_alignParentTop="true"
+ android:layout_centerHorizontal="true"
+ android:layout_marginBottom="4dp"
+ android:layout_marginTop="4dp"
+ android:background="?android:attr/dividerVertical"/>
<Button
android:id="@+id/butCancel"
- android:layout_width="0px"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_weight="1"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_toLeftOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
android:text="@string/cancel_label"/>
- </LinearLayout>
+
+ <Button
+ android:id="@+id/butConfirm"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
+ android:text="@string/confirm_label"/>
+ </RelativeLayout>
</RelativeLayout> \ No newline at end of file
diff --git a/app/src/main/res/layout/ellipsize_start_listitem.xml b/app/src/main/res/layout/ellipsize_start_listitem.xml
index f737b60d3..4a70ff982 100644
--- a/app/src/main/res/layout/ellipsize_start_listitem.xml
+++ b/app/src/main/res/layout/ellipsize_start_listitem.xml
@@ -13,7 +13,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="@dimen/text_size_small"
- android:lines="1"
android:singleLine="true"
android:layout_margin="16dp"
android:ellipsize="start"
diff --git a/app/src/main/res/layout/feedinfo.xml b/app/src/main/res/layout/feedinfo.xml
index 69b835ee1..549c8ce22 100644
--- a/app/src/main/res/layout/feedinfo.xml
+++ b/app/src/main/res/layout/feedinfo.xml
@@ -249,10 +249,7 @@
app:layout_row="1"
app:layout_column="0"
android:text="@string/password_label"
- android:textColor="?android:attr/textColorPrimary"
- android:focusable="true"
- android:focusableInTouchMode="true"
- android:cursorVisible="true"/>
+ android:textColor="?android:attr/textColorPrimary" />
<EditText
android:id="@+id/etxtPassword"
@@ -261,7 +258,10 @@
app:layout_row="1"
app:layout_column="1"
android:hint="@string/password_label"
- android:inputType="textPassword"/>
+ android:inputType="textPassword"
+ android:focusable="true"
+ android:focusableInTouchMode="true"
+ android:cursorVisible="true"/>
</android.support.v7.widget.GridLayout>
diff --git a/app/src/main/res/layout/nav_list.xml b/app/src/main/res/layout/nav_list.xml
index 7e72bb39b..db4d44675 100644
--- a/app/src/main/res/layout/nav_list.xml
+++ b/app/src/main/res/layout/nav_list.xml
@@ -31,7 +31,7 @@
android:scaleType="centerCrop"
android:src="?attr/ic_settings"
tools:background="@android:color/holo_orange_dark"
- tools:src="@android:drawable/sym_def_app_icon"></ImageView>
+ tools:src="@android:drawable/sym_def_app_icon" />
<TextView
android:layout_width="wrap_content"
@@ -69,5 +69,5 @@
android:paddingTop="@dimen/list_vertical_padding"
android:scrollbarStyle="outsideOverlay"
tools:background="@android:color/holo_purple"
- tools:listitem="@layout/nav_listitem"></ListView>
+ tools:listitem="@layout/nav_listitem" />
</RelativeLayout>
diff --git a/app/src/main/res/layout/opml_import.xml b/app/src/main/res/layout/opml_import.xml
index 2a67e7ee1..ac75cb8b3 100644
--- a/app/src/main/res/layout/opml_import.xml
+++ b/app/src/main/res/layout/opml_import.xml
@@ -6,7 +6,7 @@
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
- android:layout_height="match_parent"
+ android:layout_height="wrap_content"
android:orientation="vertical"
android:paddingTop="8dp"
android:paddingLeft="16dp"
diff --git a/app/src/main/res/layout/opml_selection.xml b/app/src/main/res/layout/opml_selection.xml
index d08ebd0bd..3133debd1 100644
--- a/app/src/main/res/layout/opml_selection.xml
+++ b/app/src/main/res/layout/opml_selection.xml
@@ -4,28 +4,50 @@
android:layout_width="match_parent"
android:layout_height="match_parent" >
- <LinearLayout
+ <RelativeLayout
android:id="@+id/footer"
- style="@android:style/ButtonBar"
android:layout_width="fill_parent"
- android:layout_height="wrap_content"
- android:layout_alignParentBottom="true"
- android:orientation="horizontal" >
+ android:layout_height="48dp"
+ android:layout_alignParentBottom="true" >
- <Button
- android:id="@+id/butConfirm"
- android:layout_width="0px"
- android:layout_height="wrap_content"
- android:layout_weight="1"
- android:text="@string/confirm_label" />
+ <View
+ android:layout_width="match_parent"
+ android:layout_height="1dip"
+ android:layout_alignParentTop="true"
+ android:background="?android:attr/dividerVertical" />
+
+ <View
+ android:id="@+id/horizontal_divider"
+ android:layout_width="1dip"
+ android:layout_height="fill_parent"
+ android:layout_alignParentTop="true"
+ android:layout_centerHorizontal="true"
+ android:layout_marginBottom="4dp"
+ android:layout_marginTop="4dp"
+ android:background="?android:attr/dividerVertical" />
<Button
android:id="@+id/butCancel"
- android:layout_width="0px"
+ android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:layout_weight="1"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentLeft="true"
+ android:layout_alignParentTop="true"
+ android:layout_toLeftOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
android:text="@string/cancel_label" />
- </LinearLayout>
+
+ <Button
+ android:id="@+id/butConfirm"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_alignParentBottom="true"
+ android:layout_alignParentRight="true"
+ android:layout_alignParentTop="true"
+ android:layout_toRightOf="@id/horizontal_divider"
+ android:background="?android:attr/selectableItemBackground"
+ android:text="@string/confirm_label" />
+ </RelativeLayout>
<ListView
android:id="@+id/feedlist"
diff --git a/app/src/main/res/layout/time_dialog.xml b/app/src/main/res/layout/time_dialog.xml
index 0290ce708..ba4249268 100644
--- a/app/src/main/res/layout/time_dialog.xml
+++ b/app/src/main/res/layout/time_dialog.xml
@@ -8,7 +8,7 @@
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
- android:orientation="horizontal">
+ android:orientation="horizontal" >
<EditText
android:id="@+id/etxtTime"
@@ -18,9 +18,11 @@
android:layout_margin="8dp"
android:ems="2"
android:hint="@string/enter_time_here_label"
-
android:inputType="number"
- android:maxLength="2" />
+ android:maxLength="2" >
+
+ <requestFocus />
+ </EditText>
<Spinner
android:id="@+id/spTimeUnit"
@@ -28,7 +30,6 @@
android:layout_height="wrap_content"
android:layout_marginBottom="8dp"
android:layout_marginTop="8dp" />
-
</LinearLayout>
<LinearLayout
diff --git a/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java b/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java
index 7b07d3f84..4cde95d6f 100644
--- a/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java
+++ b/app/src/play/java/de/danoeh/antennapod/dialog/CustomMRControllerDialog.java
@@ -20,6 +20,7 @@ import android.support.v4.view.accessibility.AccessibilityEventCompat;
import android.support.v7.app.MediaRouteControllerDialog;
import android.support.v7.graphics.Palette;
import android.support.v7.media.MediaRouter;
+import android.support.v7.widget.AppCompatImageView;
import android.text.TextUtils;
import android.util.Log;
import android.util.TypedValue;
@@ -68,7 +69,7 @@ public class CustomMRControllerDialog extends MediaRouteControllerDialog {
this(context, 0);
}
- public CustomMRControllerDialog(Context context, int theme) {
+ private CustomMRControllerDialog(Context context, int theme) {
super(context, theme);
mediaRouter = MediaRouter.getInstance(getContext());
token = mediaRouter.getMediaSessionToken();
@@ -203,7 +204,7 @@ public class CustomMRControllerDialog extends MediaRouteControllerDialog {
* http://stackoverflow.com/questions/18077325/scale-image-to-fill-imageview-width-and-keep-aspect-ratio
*/
if (landscape) {
- artView = new ImageView(getContext()) {
+ artView = new AppCompatImageView(getContext()) {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int desiredWidth = widthMeasureSpec;
@@ -234,7 +235,7 @@ public class CustomMRControllerDialog extends MediaRouteControllerDialog {
MarginLayoutParamsCompat.setMarginStart(artParams,
getContext().getResources().getDimensionPixelSize(R.dimen.media_router_controller_playback_control_horizontal_spacing));
} else {
- artView = new ImageView(getContext()) {
+ artView = new AppCompatImageView(getContext()) {
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
int desiredHeight = heightMeasureSpec;
diff --git a/build.gradle b/build.gradle
index 2039de4fa..632c8e7bd 100644
--- a/build.gradle
+++ b/build.gradle
@@ -28,9 +28,9 @@ project.ext.preDexLibs = !project.hasProperty("disablePreDex")
subprojects {
project.plugins.whenPluginAdded { plugin ->
- if ("com.android.build.gradle.AppPlugin".equals(plugin.class.name)) {
+ if ("com.android.build.gradle.AppPlugin" == plugin.class.name) {
project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
- } else if ("com.android.build.gradle.LibraryPlugin".equals(plugin.class.name)) {
+ } else if ("com.android.build.gradle.LibraryPlugin" == plugin.class.name) {
project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs
}
}
diff --git a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java
index f240c870e..0fb4992ba 100644
--- a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java
+++ b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedImageMother.java
@@ -1,6 +1,6 @@
package de.danoeh.antennapod.core.feed;
-public class FeedImageMother {
+class FeedImageMother {
public static FeedImage anyFeedImage() {
return new FeedImage(0, "image", null, "http://example.com/picture", false);
diff --git a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java
index 1cea6b9c9..fecc8e377 100644
--- a/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java
+++ b/core/src/androidTest/java/de/danoeh/antennapod/core/feed/FeedMother.java
@@ -2,7 +2,7 @@ package de.danoeh.antennapod.core.feed;
import static de.danoeh.antennapod.core.feed.FeedImageMother.anyFeedImage;
-public class FeedMother {
+class FeedMother {
public static Feed anyFeed() {
FeedImage image = anyFeedImage();
diff --git a/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java b/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java
index 8818f6b46..9833e2cc9 100644
--- a/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java
+++ b/core/src/free/java/de/danoeh/antennapod/core/feed/FeedMediaFlavorHelper.java
@@ -3,7 +3,7 @@ package de.danoeh.antennapod.core.feed;
/**
* Implements methods for FeedMedia that are flavor dependent.
*/
-public class FeedMediaFlavorHelper {
+class FeedMediaFlavorHelper {
private FeedMediaFlavorHelper(){}
static boolean instanceOfRemoteMedia(Object o) {
return false;
diff --git a/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java b/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java
index 4e6482fda..37109ddca 100644
--- a/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java
+++ b/core/src/free/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceFlavorHelper.java
@@ -8,9 +8,9 @@ import android.support.v4.media.session.PlaybackStateCompat;
/**
* Class intended to work along PlaybackService and provide support for different flavors.
*/
-public class PlaybackServiceFlavorHelper {
+class PlaybackServiceFlavorHelper {
- private PlaybackService.FlavorHelperCallback callback;
+ private final PlaybackService.FlavorHelperCallback callback;
PlaybackServiceFlavorHelper(Context context, PlaybackService.FlavorHelperCallback callback) {
this.callback = callback;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
index 8362c4a4e..96e3a77be 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/UpdateManager.java
@@ -23,9 +23,9 @@ import de.danoeh.antennapod.core.storage.DBWriter;
/*
* This class's job is do perform maintenance tasks whenever the app has been updated
*/
-public class UpdateManager {
+class UpdateManager {
- public static final String TAG = UpdateManager.class.getSimpleName();
+ private static final String TAG = UpdateManager.class.getSimpleName();
private static final String PREF_NAME = "app_version";
private static final String KEY_VERSION_CODE = "version_code";
@@ -55,11 +55,11 @@ public class UpdateManager {
}
}
- public static int getStoredVersionCode() {
+ private static int getStoredVersionCode() {
return prefs.getInt(KEY_VERSION_CODE, -1);
}
- public static void setCurrentVersionCode() {
+ private static void setCurrentVersionCode() {
prefs.edit().putInt(KEY_VERSION_CODE, currentVersionCode).apply();
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java
index 0f402f44a..1b4aafeaa 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/DBTaskLoader.java
@@ -8,7 +8,7 @@ import android.support.v4.content.AsyncTaskLoader;
* This class will provide a useful default implementation that would otherwise always be necessary when interacting
* with the DB*-classes with an AsyncTaskLoader.
*/
-public abstract class DBTaskLoader<D> extends AsyncTaskLoader<D> {
+abstract class DBTaskLoader<D> extends AsyncTaskLoader<D> {
public DBTaskLoader(Context context) {
super(context);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java
index 1a0772f16..1e0c07b01 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FeedRemover.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.core.asynctask;
-import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
@@ -15,9 +14,9 @@ import de.danoeh.antennapod.core.storage.DBWriter;
/** Removes a feed in the background. */
public class FeedRemover extends AsyncTask<Void, Void, Void> {
- Context context;
- ProgressDialog dialog;
- Feed feed;
+ private final Context context;
+ private ProgressDialog dialog;
+ private final Feed feed;
public boolean skipOnCompletion = false;
public FeedRemover(Context context, Feed feed) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
index 19501ea94..5bd65f4e9 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrClickWorker.java
@@ -1,6 +1,5 @@
package de.danoeh.antennapod.core.asynctask;
-import android.annotation.TargetApi;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
@@ -39,7 +38,7 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
* to flattr something, a notification will be displayed.
*/
public class FlattrClickWorker extends AsyncTask<Void, Integer, FlattrClickWorker.ExitCode> {
- protected static final String TAG = "FlattrClickWorker";
+ private static final String TAG = "FlattrClickWorker";
private static final int NOTIFICATION_ID = 4;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
index 4c084eaaf..420a60469 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrStatusFetcher.java
@@ -18,8 +18,8 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
*/
public class FlattrStatusFetcher extends Thread {
- protected static final String TAG = "FlattrStatusFetcher";
- protected Context context;
+ private static final String TAG = "FlattrStatusFetcher";
+ private final Context context;
public FlattrStatusFetcher(Context context) {
super();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java
index 5333b2273..985cabbf8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/asynctask/FlattrTokenFetcher.java
@@ -1,7 +1,6 @@
package de.danoeh.antennapod.core.asynctask;
-import android.annotation.SuppressLint;
import android.app.ProgressDialog;
import android.content.Context;
import android.net.Uri;
@@ -23,12 +22,12 @@ import de.danoeh.antennapod.core.util.flattr.FlattrUtils;
public class FlattrTokenFetcher extends AsyncTask<Void, Void, AccessToken> {
private static final String TAG = "FlattrTokenFetcher";
- Context context;
- AndroidAuthenticator auth;
- AccessToken token;
- Uri uri;
- ProgressDialog dialog;
- FlattrException exception;
+ private final Context context;
+ private final AndroidAuthenticator auth;
+ private AccessToken token;
+ private final Uri uri;
+ private ProgressDialog dialog;
+ private FlattrException exception;
public FlattrTokenFetcher(Context context, AndroidAuthenticator auth, Uri uri) {
super();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java b/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java
index b14803751..c626a8189 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/dialog/ConfirmationDialog.java
@@ -15,9 +15,9 @@ public abstract class ConfirmationDialog {
private static final String TAG = ConfirmationDialog.class.getSimpleName();
- protected Context context;
- private int titleId;
- private String message;
+ private final Context context;
+ private final int titleId;
+ private final String message;
private int positiveText;
private int negativeText;
@@ -32,7 +32,7 @@ public abstract class ConfirmationDialog {
this.message = message;
}
- public void onCancelButtonPressed(DialogInterface dialog) {
+ private void onCancelButtonPressed(DialogInterface dialog) {
Log.d(TAG, "Dialog was cancelled");
dialog.dismiss();
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java
index d09f6802f..578007561 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/event/FavoritesEvent.java
@@ -11,8 +11,8 @@ public class FavoritesEvent {
ADDED, REMOVED
}
- public final Action action;
- public final FeedItem item;
+ private final Action action;
+ private final FeedItem item;
private FavoritesEvent(Action action, FeedItem item) {
this.action = action;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java
index 7ff241456..9db262857 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/event/FeedItemEvent.java
@@ -17,7 +17,8 @@ public class FeedItemEvent {
UPDATE, DELETE_MEDIA
}
- @NonNull public final Action action;
+ @NonNull
+ private final Action action;
@NonNull public final List<FeedItem> items;
private FeedItemEvent(Action action, List<FeedItem> items) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java b/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java
index 864d0a405..4a591c996 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/event/FeedMediaEvent.java
@@ -8,8 +8,8 @@ public class FeedMediaEvent {
UPDATE
}
- public final Action action;
- public final FeedMedia media;
+ private final Action action;
+ private final FeedMedia media;
private FeedMediaEvent(Action action, FeedMedia media) {
this.action = action;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java b/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java
index 40b0e23b8..86091720d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/export/opml/OpmlSymbols.java
@@ -3,7 +3,7 @@ package de.danoeh.antennapod.core.export.opml;
import de.danoeh.antennapod.core.export.CommonSymbols;
/** Contains symbols for reading and writing OPML documents. */
-public final class OpmlSymbols extends CommonSymbols {
+final class OpmlSymbols extends CommonSymbols {
public static final String OPML = "opml";
static final String OUTLINE = "outline";
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java
index f221ed32e..f3dfdfdb6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/Chapter.java
@@ -7,19 +7,19 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter;
public abstract class Chapter extends FeedComponent {
/** Defines starting point in milliseconds. */
- protected long start;
- protected String title;
- protected String link;
+ long start;
+ String title;
+ String link;
- public Chapter() {
+ Chapter() {
}
- public Chapter(long start) {
+ Chapter(long start) {
super();
this.start = start;
}
- public Chapter(long start, String title, FeedItem item, String link) {
+ Chapter(long start, String title, FeedItem item, String link) {
super();
this.start = start;
this.title = title;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java
index 514a79fad..b769eaf55 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/EventDistributor.java
@@ -27,8 +27,8 @@ public class EventDistributor extends Observable {
public static final int DOWNLOAD_HANDLED = 64;
public static final int PLAYER_STATUS_UPDATE = 128;
- private Handler handler;
- private AbstractQueue<Integer> events;
+ private final Handler handler;
+ private final AbstractQueue<Integer> events;
private static EventDistributor instance;
@@ -52,7 +52,7 @@ public class EventDistributor extends Observable {
deleteObserver(el);
}
- public void addEvent(Integer i) {
+ private void addEvent(Integer i) {
events.offer(i);
handler.post(EventDistributor.this::processEventQueue);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java
index 90b5e50b7..a3f91b1c9 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedComponent.java
@@ -7,9 +7,9 @@ package de.danoeh.antennapod.core.feed;
*/
public abstract class FeedComponent {
- protected long id;
+ long id;
- public FeedComponent() {
+ FeedComponent() {
super();
}
@@ -26,7 +26,7 @@ public abstract class FeedComponent {
* FeedComponent. This method should only update attributes which where read from
* the feed.
*/
- public void updateFromOther(FeedComponent other) {
+ void updateFromOther(FeedComponent other) {
}
/**
@@ -36,7 +36,7 @@ public abstract class FeedComponent {
*
* @return true if attribute values are different, false otherwise
*/
- public boolean compareWithOther(FeedComponent other) {
+ boolean compareWithOther(FeedComponent other) {
return false;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java
index d04d236e4..b790faadf 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedEvent.java
@@ -9,7 +9,7 @@ public class FeedEvent {
FILTER_CHANGED
}
- public final Action action;
+ private final Action action;
public final long feedId;
public FeedEvent(Action action, long feedId) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java
index ca9af058b..cc4dd230f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFile.java
@@ -9,9 +9,9 @@ import java.io.File;
*/
public abstract class FeedFile extends FeedComponent {
- protected String file_url;
+ String file_url;
protected String download_url;
- protected boolean downloaded;
+ boolean downloaded;
/**
* Creates a new FeedFile object.
@@ -40,7 +40,7 @@ public abstract class FeedFile extends FeedComponent {
* FeedFile. This method should only update attributes which where read from
* the feed.
*/
- public void updateFromOther(FeedFile other) {
+ void updateFromOther(FeedFile other) {
super.updateFromOther(other);
this.download_url = other.download_url;
}
@@ -52,7 +52,7 @@ public abstract class FeedFile extends FeedComponent {
*
* @return true if attribute values are different, false otherwise
*/
- public boolean compareWithOther(FeedFile other) {
+ boolean compareWithOther(FeedFile other) {
if (super.compareWithOther(other)) {
return true;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java
index 35abb8de6..28161ac9b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedFilter.java
@@ -9,8 +9,8 @@ public class FeedFilter {
private static final String TAG = "FeedFilter";
- private String includeFilter;
- private String excludeFilter;
+ private final String includeFilter;
+ private final String excludeFilter;
public FeedFilter() {
this("", "");
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
index f0c508830..45bd2ad31 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedImage.java
@@ -11,8 +11,8 @@ import de.danoeh.antennapod.core.storage.PodDBAdapter;
public class FeedImage extends FeedFile implements ImageResource {
public static final int FEEDFILETYPE_FEEDIMAGE = 1;
- protected String title;
- protected FeedComponent owner;
+ private String title;
+ private FeedComponent owner;
public FeedImage(FeedComponent owner, String download_url, String title) {
super(null, download_url, false);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
index 66c4b10d0..7b387b1d3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedItem.java
@@ -59,7 +59,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
public static final int PLAYED = 1;
private String paymentLink;
- private FlattrStatus flattrStatus;
+ private final FlattrStatus flattrStatus;
/**
* Is true if the database contains any chapters that belong to this item. This attribute is only
@@ -87,7 +87,7 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
/**
* Any tags assigned to this item
*/
- private Set<String> tags = new HashSet<>();
+ private final Set<String> tags = new HashSet<>();
public FeedItem() {
this.state = UNPLAYED;
@@ -159,7 +159,6 @@ public class FeedItem extends FeedComponent implements ShownotesProvider, Flattr
int indexAutoDownload = cursor.getColumnIndex(PodDBAdapter.KEY_AUTO_DOWNLOAD);
long id = cursor.getInt(indexId);
- assert(id > 0);
String title = cursor.getString(indexTitle);
String link = cursor.getString(indexLink);
Date pubDate = new Date(cursor.getLong(indexPubDate));
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
index 5eea4f3da..2d551e1b2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedMedia.java
@@ -34,7 +34,7 @@ public class FeedMedia extends FeedFile implements Playable {
public static final int PLAYABLE_TYPE_FEEDMEDIA = 1;
public static final String PREF_MEDIA_ID = "FeedMedia.PrefMediaId";
- public static final String PREF_FEED_ID = "FeedMedia.PrefFeedId";
+ private static final String PREF_FEED_ID = "FeedMedia.PrefFeedId";
/**
* Indicates we've checked on the size of the item via the network
@@ -88,10 +88,10 @@ public class FeedMedia extends FeedFile implements Playable {
this.lastPlayedTime = lastPlayedTime;
}
- public FeedMedia(long id, FeedItem item, int duration, int position,
- long size, String mime_type, String file_url, String download_url,
- boolean downloaded, Date playbackCompletionDate, int played_duration,
- Boolean hasEmbeddedPicture, long lastPlayedTime) {
+ private FeedMedia(long id, FeedItem item, int duration, int position,
+ long size, String mime_type, String file_url, String download_url,
+ boolean downloaded, Date playbackCompletionDate, int played_duration,
+ Boolean hasEmbeddedPicture, long lastPlayedTime) {
this(id, item, duration, position, size, mime_type, file_url, download_url, downloaded,
playbackCompletionDate, played_duration, lastPlayedTime);
this.hasEmbeddedPicture = hasEmbeddedPicture;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
index 66fc4024b..3285ad7cb 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/FeedPreferences.java
@@ -33,7 +33,7 @@ public class FeedPreferences {
this(feedID, autoDownload, true, auto_delete_action, username, password, new FeedFilter());
}
- public FeedPreferences(long feedID, boolean autoDownload, boolean keepUpdated, AutoDeleteAction auto_delete_action, String username, String password, @NonNull FeedFilter filter) {
+ private FeedPreferences(long feedID, boolean autoDownload, boolean keepUpdated, AutoDeleteAction auto_delete_action, String username, String password, @NonNull FeedFilter filter) {
this.feedID = feedID;
this.autoDownload = autoDownload;
this.keepUpdated = keepUpdated;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java b/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java
index 9aa8d3170..ea8eb7871 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/feed/SearchResult.java
@@ -1,11 +1,11 @@
package de.danoeh.antennapod.core.feed;
public class SearchResult {
- private FeedComponent component;
+ private final FeedComponent component;
/** Additional information (e.g. where it was found) */
private String subtitle;
/** Higher value means more importance */
- private int value;
+ private final int value;
public SearchResult(FeedComponent component, int value, String subtitle) {
super();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
index 8ca9faa0d..3e4f06a12 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/glide/ApOkHttpUrlLoader.java
@@ -27,7 +27,7 @@ import okhttp3.Response;
/**
* @see com.bumptech.glide.integration.okhttp3.OkHttpUrlLoader
*/
-public class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
+class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
private static final String TAG = ApOkHttpUrlLoader.class.getSimpleName();
@@ -37,7 +37,7 @@ public class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
public static class Factory implements ModelLoaderFactory<String, InputStream> {
private static volatile OkHttpClient internalClient;
- private OkHttpClient client;
+ private final OkHttpClient client;
private static OkHttpClient getInternalClient() {
if (internalClient == null) {
@@ -80,7 +80,7 @@ public class ApOkHttpUrlLoader implements ModelLoader<String, InputStream> {
private final OkHttpClient client;
- public ApOkHttpUrlLoader(OkHttpClient client) {
+ private ApOkHttpUrlLoader(OkHttpClient client) {
this.client = client;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java
index 16f01f0f4..84c085ed2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceBadStatusCodeException.java
@@ -1,7 +1,7 @@
package de.danoeh.antennapod.core.gpoddernet;
-public class GpodnetServiceBadStatusCodeException extends GpodnetServiceException {
- int statusCode;
+class GpodnetServiceBadStatusCodeException extends GpodnetServiceException {
+ private final int statusCode;
public GpodnetServiceBadStatusCodeException(String message, int statusCode) {
super(message);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java
index ce704f7e3..78ddfc945 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/GpodnetServiceException.java
@@ -2,10 +2,10 @@ package de.danoeh.antennapod.core.gpoddernet;
public class GpodnetServiceException extends Exception {
- public GpodnetServiceException() {
+ GpodnetServiceException() {
}
- public GpodnetServiceException(String message) {
+ GpodnetServiceException(String message) {
super(message);
}
@@ -13,7 +13,7 @@ public class GpodnetServiceException extends Exception {
super(cause);
}
- public GpodnetServiceException(String message, Throwable cause) {
+ GpodnetServiceException(String message, Throwable cause) {
super(message, cause);
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java
index 79eb33cb5..faf4264e5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetDevice.java
@@ -4,10 +4,10 @@ import android.support.annotation.NonNull;
public class GpodnetDevice {
- private String id;
- private String caption;
- private DeviceType type;
- private int subscriptions;
+ private final String id;
+ private final String caption;
+ private final DeviceType type;
+ private final int subscriptions;
public GpodnetDevice(@NonNull String id,
String caption,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java
index 9627ecae6..b76988fd8 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeAction.java
@@ -131,7 +131,7 @@ public class GpodnetEpisodeAction {
return this.action;
}
- public String getActionString() {
+ private String getActionString() {
return this.action.name().toLowerCase();
}
@@ -199,16 +199,14 @@ public class GpodnetEpisodeAction {
}
public String writeToString() {
- StringBuilder result = new StringBuilder();
- result.append(this.podcast).append("\t");
- result.append(this.episode).append("\t");
- result.append(this.deviceId).append("\t");
- result.append(this.action).append("\t");
- result.append(this.timestamp.getTime()).append("\t");
- result.append(String.valueOf(this.started)).append("\t");
- result.append(String.valueOf(this.position)).append("\t");
- result.append(String.valueOf(this.total));
- return result.toString();
+ return this.podcast + "\t" +
+ this.episode + "\t" +
+ this.deviceId + "\t" +
+ this.action + "\t" +
+ this.timestamp.getTime() + "\t" +
+ String.valueOf(this.started) + "\t" +
+ String.valueOf(this.position) + "\t" +
+ String.valueOf(this.total);
}
/**
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java
index 03c33c9a1..b6efab016 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetEpisodeActionPostResponse.java
@@ -21,9 +21,9 @@ public class GpodnetEpisodeActionPostResponse {
* URLs that should be updated. The key of the map is the original URL, the value of the map
* is the sanitized URL.
*/
- public final Map<String, String> updatedUrls;
+ private final Map<String, String> updatedUrls;
- public GpodnetEpisodeActionPostResponse(long timestamp, Map<String, String> updatedUrls) {
+ private GpodnetEpisodeActionPostResponse(long timestamp, Map<String, String> updatedUrls) {
this.timestamp = timestamp;
this.updatedUrls = updatedUrls;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java
index 191c0fa39..680dc1042 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetPodcast.java
@@ -3,13 +3,13 @@ package de.danoeh.antennapod.core.gpoddernet.model;
import android.support.annotation.NonNull;
public class GpodnetPodcast {
- private String url;
- private String title;
- private String description;
- private int subscribers;
- private String logoUrl;
- private String website;
- private String mygpoLink;
+ private final String url;
+ private final String title;
+ private final String description;
+ private final int subscribers;
+ private final String logoUrl;
+ private final String website;
+ private final String mygpoLink;
public GpodnetPodcast(@NonNull String url,
@NonNull String title,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java
index 6cc9b79a3..0f1961bef 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetSubscriptionChange.java
@@ -5,9 +5,9 @@ import android.support.annotation.NonNull;
import java.util.List;
public class GpodnetSubscriptionChange {
- private List<String> added;
- private List<String> removed;
- private long timestamp;
+ private final List<String> added;
+ private final List<String> removed;
+ private final long timestamp;
public GpodnetSubscriptionChange(@NonNull List<String> added,
@NonNull List<String> removed,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java
index 42a31afc5..40543592e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetTag.java
@@ -16,7 +16,7 @@ public class GpodnetTag implements Parcelable {
this.usage = usage;
}
- protected GpodnetTag(Parcel in) {
+ private GpodnetTag(Parcel in) {
title = in.readString();
tag = in.readString();
usage = in.readInt();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java
index 9bd1881e4..9f9c3bd74 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/gpoddernet/model/GpodnetUploadChangesResponse.java
@@ -22,9 +22,9 @@ public class GpodnetUploadChangesResponse {
* URLs that should be updated. The key of the map is the original URL, the value of the map
* is the sanitized URL.
*/
- public final Map<String, String> updatedUrls;
+ private final Map<String, String> updatedUrls;
- public GpodnetUploadChangesResponse(long timestamp, Map<String, String> updatedUrls) {
+ private GpodnetUploadChangesResponse(long timestamp, Map<String, String> updatedUrls) {
this.timestamp = timestamp;
this.updatedUrls = updatedUrls;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java
index f14c9e36c..b51b8d996 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/GpodnetPreferences.java
@@ -7,6 +7,7 @@ import android.util.Log;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
@@ -26,26 +27,26 @@ public class GpodnetPreferences {
private static final String TAG = "GpodnetPreferences";
private static final String PREF_NAME = "gpodder.net";
- public static final String PREF_GPODNET_USERNAME = "de.danoeh.antennapod.preferences.gpoddernet.username";
- public static final String PREF_GPODNET_PASSWORD = "de.danoeh.antennapod.preferences.gpoddernet.password";
- public static final String PREF_GPODNET_DEVICEID = "de.danoeh.antennapod.preferences.gpoddernet.deviceID";
- public static final String PREF_GPODNET_HOSTNAME = "prefGpodnetHostname";
+ private static final String PREF_GPODNET_USERNAME = "de.danoeh.antennapod.preferences.gpoddernet.username";
+ private static final String PREF_GPODNET_PASSWORD = "de.danoeh.antennapod.preferences.gpoddernet.password";
+ private static final String PREF_GPODNET_DEVICEID = "de.danoeh.antennapod.preferences.gpoddernet.deviceID";
+ private static final String PREF_GPODNET_HOSTNAME = "prefGpodnetHostname";
- public static final String PREF_LAST_SUBSCRIPTION_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_timestamp";
- public static final String PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_episode_actions_sync_timestamp";
- public static final String PREF_SYNC_ADDED = "de.danoeh.antennapod.preferences.gpoddernet.sync_added";
- public static final String PREF_SYNC_REMOVED = "de.danoeh.antennapod.preferences.gpoddernet.sync_removed";
- public static final String PREF_SYNC_EPISODE_ACTIONS = "de.danoeh.antennapod.preferences.gpoddernet.sync_queued_episode_actions";
+ private static final String PREF_LAST_SUBSCRIPTION_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_timestamp";
+ private static final String PREF_LAST_EPISODE_ACTIONS_SYNC_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_episode_actions_sync_timestamp";
+ private static final String PREF_SYNC_ADDED = "de.danoeh.antennapod.preferences.gpoddernet.sync_added";
+ private static final String PREF_SYNC_REMOVED = "de.danoeh.antennapod.preferences.gpoddernet.sync_removed";
+ private static final String PREF_SYNC_EPISODE_ACTIONS = "de.danoeh.antennapod.preferences.gpoddernet.sync_queued_episode_actions";
public static final String PREF_LAST_SYNC_ATTEMPT_TIMESTAMP = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_timestamp";
- public static final String PREF_LAST_SYNC_ATTEMPT_RESULT = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_result";
+ private static final String PREF_LAST_SYNC_ATTEMPT_RESULT = "de.danoeh.antennapod.preferences.gpoddernet.last_sync_attempt_result";
private static String username;
private static String password;
private static String deviceID;
private static String hostname;
- private static ReentrantLock feedListLock = new ReentrantLock();
+ private static final ReentrantLock feedListLock = new ReentrantLock();
private static Set<String> addedFeeds;
private static Set<String> removedFeeds;
@@ -316,9 +317,7 @@ public class GpodnetPreferences {
private static Set<String> readListFromString(String s) {
Set<String> result = new HashSet<>();
- for (String item : s.split(" ")) {
- result.add(item);
- }
+ Collections.addAll(result, s.split(" "));
return result;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
index 65298ff8d..743ee135d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/preferences/UserPreferences.java
@@ -7,6 +7,7 @@ import android.content.Intent;
import android.content.SharedPreferences;
import android.os.SystemClock;
import android.preference.PreferenceManager;
+import android.support.annotation.IntRange;
import android.support.annotation.NonNull;
import android.support.v4.app.NotificationCompat;
import android.text.TextUtils;
@@ -41,79 +42,79 @@ import de.danoeh.antennapod.core.util.Converter;
*/
public class UserPreferences {
- public static final String IMPORT_DIR = "import/";
+ private static final String IMPORT_DIR = "import/";
private static final String TAG = "UserPreferences";
// User Interface
public static final String PREF_THEME = "prefTheme";
public static final String PREF_HIDDEN_DRAWER_ITEMS = "prefHiddenDrawerItems";
- public static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder";
- public static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator";
- public static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
- public static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify";
+ private static final String PREF_DRAWER_FEED_ORDER = "prefDrawerFeedOrder";
+ private static final String PREF_DRAWER_FEED_COUNTER = "prefDrawerFeedIndicator";
+ private static final String PREF_EXPANDED_NOTIFICATION = "prefExpandNotify";
+ private static final String PREF_PERSISTENT_NOTIFICATION = "prefPersistNotify";
public static final String PREF_COMPACT_NOTIFICATION_BUTTONS = "prefCompactNotificationButtons";
public static final String PREF_LOCKSCREEN_BACKGROUND = "prefLockscreenBackground";
- public static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport";
+ private static final String PREF_SHOW_DOWNLOAD_REPORT = "prefShowDownloadReport";
// Queue
- public static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront";
+ private static final String PREF_QUEUE_ADD_TO_FRONT = "prefQueueAddToFront";
// Playback
public static final String PREF_PAUSE_ON_HEADSET_DISCONNECT = "prefPauseOnHeadsetDisconnect";
public static final String PREF_UNPAUSE_ON_HEADSET_RECONNECT = "prefUnpauseOnHeadsetReconnect";
- public static final String PREF_UNPAUSE_ON_BLUETOOTH_RECONNECT = "prefUnpauseOnBluetoothReconnect";
- public static final String PREF_HARDWARE_FOWARD_BUTTON_SKIPS = "prefHardwareForwardButtonSkips";
- public static final String PREF_HARDWARE_PREVIOUS_BUTTON_RESTARTS = "prefHardwarePreviousButtonRestarts";
+ private static final String PREF_UNPAUSE_ON_BLUETOOTH_RECONNECT = "prefUnpauseOnBluetoothReconnect";
+ private static final String PREF_HARDWARE_FOWARD_BUTTON_SKIPS = "prefHardwareForwardButtonSkips";
+ private static final String PREF_HARDWARE_PREVIOUS_BUTTON_RESTARTS = "prefHardwarePreviousButtonRestarts";
public static final String PREF_FOLLOW_QUEUE = "prefFollowQueue";
- public static final String PREF_SKIP_KEEPS_EPISODE = "prefSkipKeepsEpisode";
- public static final String PREF_FAVORITE_KEEPS_EPISODE = "prefFavoriteKeepsEpisode";
- public static final String PREF_AUTO_DELETE = "prefAutoDelete";
+ private static final String PREF_SKIP_KEEPS_EPISODE = "prefSkipKeepsEpisode";
+ private static final String PREF_FAVORITE_KEEPS_EPISODE = "prefFavoriteKeepsEpisode";
+ private static final String PREF_AUTO_DELETE = "prefAutoDelete";
public static final String PREF_SMART_MARK_AS_PLAYED_SECS = "prefSmartMarkAsPlayedSecs";
- public static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray";
- public static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss";
- public static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall";
+ private static final String PREF_PLAYBACK_SPEED_ARRAY = "prefPlaybackSpeedArray";
+ private static final String PREF_PAUSE_PLAYBACK_FOR_FOCUS_LOSS = "prefPauseForFocusLoss";
+ private static final String PREF_RESUME_AFTER_CALL = "prefResumeAfterCall";
// Network
- public static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded";
+ private static final String PREF_ENQUEUE_DOWNLOADED = "prefEnqueueDownloaded";
public static final String PREF_UPDATE_INTERVAL = "prefAutoUpdateIntervall";
- public static final String PREF_MOBILE_UPDATE = "prefMobileUpdate";
+ private static final String PREF_MOBILE_UPDATE = "prefMobileUpdate";
public static final String PREF_EPISODE_CLEANUP = "prefEpisodeCleanup";
public static final String PREF_PARALLEL_DOWNLOADS = "prefParallelDownloads";
public static final String PREF_EPISODE_CACHE_SIZE = "prefEpisodeCacheSize";
public static final String PREF_ENABLE_AUTODL = "prefEnableAutoDl";
public static final String PREF_ENABLE_AUTODL_ON_BATTERY = "prefEnableAutoDownloadOnBattery";
public static final String PREF_ENABLE_AUTODL_WIFI_FILTER = "prefEnableAutoDownloadWifiFilter";
- public static final String PREF_ENABLE_AUTODL_ON_MOBILE = "prefEnableAutoDownloadOnMobile";
- public static final String PREF_AUTODL_SELECTED_NETWORKS = "prefAutodownloadSelectedNetworks";
- public static final String PREF_PROXY_TYPE = "prefProxyType";
- public static final String PREF_PROXY_HOST = "prefProxyHost";
- public static final String PREF_PROXY_PORT = "prefProxyPort";
- public static final String PREF_PROXY_USER = "prefProxyUser";
- public static final String PREF_PROXY_PASSWORD = "prefProxyPassword";
+ private static final String PREF_ENABLE_AUTODL_ON_MOBILE = "prefEnableAutoDownloadOnMobile";
+ private static final String PREF_AUTODL_SELECTED_NETWORKS = "prefAutodownloadSelectedNetworks";
+ private static final String PREF_PROXY_TYPE = "prefProxyType";
+ private static final String PREF_PROXY_HOST = "prefProxyHost";
+ private static final String PREF_PROXY_PORT = "prefProxyPort";
+ private static final String PREF_PROXY_USER = "prefProxyUser";
+ private static final String PREF_PROXY_PASSWORD = "prefProxyPassword";
// Services
- public static final String PREF_AUTO_FLATTR = "pref_auto_flattr";
- public static final String PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD = "prefAutoFlattrPlayedDurationThreshold";
- public static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications";
+ private static final String PREF_AUTO_FLATTR = "pref_auto_flattr";
+ private static final String PREF_AUTO_FLATTR_PLAYED_DURATION_THRESHOLD = "prefAutoFlattrPlayedDurationThreshold";
+ private static final String PREF_GPODNET_NOTIFICATIONS = "pref_gpodnet_notifications";
// Other
- public static final String PREF_DATA_FOLDER = "prefDataFolder";
+ private static final String PREF_DATA_FOLDER = "prefDataFolder";
public static final String PREF_IMAGE_CACHE_SIZE = "prefImageCacheSize";
// Mediaplayer
- public static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed";
+ private static final String PREF_PLAYBACK_SPEED = "prefPlaybackSpeed";
private static final String PREF_FAST_FORWARD_SECS = "prefFastForwardSecs";
private static final String PREF_REWIND_SECS = "prefRewindSecs";
- public static final String PREF_QUEUE_LOCKED = "prefQueueLocked";
- public static final String IMAGE_CACHE_DEFAULT_VALUE = "100";
- public static final int IMAGE_CACHE_SIZE_MINIMUM = 20;
- public static final String PREF_LEFT_VOLUME = "prefLeftVolume";
- public static final String PREF_RIGHT_VOLUME = "prefRightVolume";
+ private static final String PREF_QUEUE_LOCKED = "prefQueueLocked";
+ private static final String IMAGE_CACHE_DEFAULT_VALUE = "100";
+ private static final int IMAGE_CACHE_SIZE_MINIMUM = 20;
+ private static final String PREF_LEFT_VOLUME = "prefLeftVolume";
+ private static final String PREF_RIGHT_VOLUME = "prefRightVolume";
// Experimental
public static final String PREF_SONIC = "prefSonic";
- public static final String PREF_STEREO_TO_MONO = "PrefStereoToMono";
+ private static final String PREF_STEREO_TO_MONO = "PrefStereoToMono";
public static final String PREF_NORMALIZER = "prefNormalizer";
public static final String PREF_CAST_ENABLED = "prefCast"; //Used for enabling Chromecast support
public static final int EPISODE_CLEANUP_QUEUE = -1;
@@ -182,8 +183,8 @@ public class UserPreferences {
String.valueOf(NOTIFICATION_BUTTON_SKIP)),
",");
List<Integer> notificationButtons = new ArrayList<>();
- for (int i=0; i<buttons.length; i++) {
- notificationButtons.add(Integer.parseInt(buttons[i]));
+ for (String button : buttons) {
+ notificationButtons.add(Integer.parseInt(button));
}
return notificationButtons;
}
@@ -513,9 +514,8 @@ public class UserPreferences {
.apply();
}
- public static void setVolume(int leftVolume, int rightVolume) {
- assert(0 <= leftVolume && leftVolume <= 100);
- assert(0 <= rightVolume && rightVolume <= 100);
+ public static void setVolume(@IntRange(from = 0, to = 100) int leftVolume,
+ @IntRange(from = 0, to = 100) int rightVolume) {
prefs.edit()
.putInt(PREF_LEFT_VOLUME, leftVolume)
.putInt(PREF_RIGHT_VOLUME, rightVolume)
@@ -786,7 +786,7 @@ public class UserPreferences {
/**
* Sets the interval in which the feeds are refreshed automatically
*/
- public static void restartUpdateIntervalAlarm(long triggerAtMillis, long intervalMillis) {
+ private static void restartUpdateIntervalAlarm(long triggerAtMillis, long intervalMillis) {
Log.d(TAG, "Restarting update alarm.");
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent intent = new Intent(context, FeedUpdateReceiver.class);
@@ -805,7 +805,7 @@ public class UserPreferences {
/**
* Sets time of day the feeds are refreshed automatically
*/
- public static void restartUpdateTimeOfDayAlarm(int hoursOfDay, int minute) {
+ private static void restartUpdateTimeOfDayAlarm(int hoursOfDay, int minute) {
Log.d(TAG, "Restarting update alarm.");
AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
PendingIntent updateIntent = PendingIntent.getBroadcast(context, 0,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
index 6b3ece4ab..a723097a2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/GpodnetSyncService.java
@@ -47,11 +47,11 @@ public class GpodnetSyncService extends Service {
private static final long WAIT_INTERVAL = 5000L;
- public static final String ARG_ACTION = "action";
+ private static final String ARG_ACTION = "action";
- public static final String ACTION_SYNC = "de.danoeh.antennapod.intent.action.sync";
- public static final String ACTION_SYNC_SUBSCRIPTIONS = "de.danoeh.antennapod.intent.action.sync_subscriptions";
- public static final String ACTION_SYNC_ACTIONS = "de.danoeh.antennapod.intent.action.sync_ACTIONS";
+ private static final String ACTION_SYNC = "de.danoeh.antennapod.intent.action.sync";
+ private static final String ACTION_SYNC_SUBSCRIPTIONS = "de.danoeh.antennapod.intent.action.sync_subscriptions";
+ private static final String ACTION_SYNC_ACTIONS = "de.danoeh.antennapod.intent.action.sync_ACTIONS";
private GpodnetService service;
@@ -222,14 +222,12 @@ public class GpodnetSyncService extends Service {
} catch (GpodnetServiceException e) {
e.printStackTrace();
updateErrorNotification(e);
- } catch (DownloadRequestException e) {
- e.printStackTrace();
}
}
private synchronized void processEpisodeActions(List<GpodnetEpisodeAction> localActions,
- List<GpodnetEpisodeAction> remoteActions) throws DownloadRequestException {
+ List<GpodnetEpisodeAction> remoteActions) {
if(remoteActions.size() == 0) {
return;
}
@@ -333,7 +331,7 @@ public class GpodnetSyncService extends Service {
nm.notify(id, notification);
}
- private WaiterThread syncWaiterThread = new WaiterThread(WAIT_INTERVAL) {
+ private final WaiterThread syncWaiterThread = new WaiterThread(WAIT_INTERVAL) {
@Override
public void onWaitCompleted() {
sync();
@@ -341,7 +339,7 @@ public class GpodnetSyncService extends Service {
};
private abstract class WaiterThread {
- private long waitInterval;
+ private final long waitInterval;
private Thread thread;
private WaiterThread(long waitInterval) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
index eb28050f0..57d099dfc 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/AntennapodHttpClient.java
@@ -42,10 +42,10 @@ import okhttp3.internal.http.StatusLine;
public class AntennapodHttpClient {
private static final String TAG = "AntennapodHttpClient";
- public static final int CONNECTION_TIMEOUT = 30000;
- public static final int READ_TIMEOUT = 30000;
+ private static final int CONNECTION_TIMEOUT = 30000;
+ private static final int READ_TIMEOUT = 30000;
- public static final int MAX_CONNECTIONS = 8;
+ private static final int MAX_CONNECTIONS = 8;
private static volatile OkHttpClient httpClient = null;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java
index de91916a9..9a64bebf7 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadRequest.java
@@ -17,15 +17,15 @@ public class DownloadRequest implements Parcelable {
private String username;
private String password;
private String lastModified;
- private boolean deleteOnFailure;
+ private final boolean deleteOnFailure;
private final long feedfileId;
private final int feedfileType;
private final Bundle arguments;
- protected int progressPercent;
- protected long soFar;
- protected long size;
- protected int statusMsg;
+ private int progressPercent;
+ private long soFar;
+ private long size;
+ private int statusMsg;
public DownloadRequest(@NonNull String destination,
@NonNull String source,
@@ -53,7 +53,7 @@ public class DownloadRequest implements Parcelable {
this(destination, source, title, feedfileId, feedfileType, null, null, true, null);
}
- public DownloadRequest(Builder builder) {
+ private DownloadRequest(Builder builder) {
this.destination = builder.destination;
this.source = builder.source;
this.title = builder.title;
@@ -254,15 +254,15 @@ public class DownloadRequest implements Parcelable {
}
public static class Builder {
- private String destination;
- private String source;
- private String title;
+ private final String destination;
+ private final String source;
+ private final String title;
private String username;
private String password;
private String lastModified;
private boolean deleteOnFailure = false;
- private long feedfileId;
- private int feedfileType;
+ private final long feedfileId;
+ private final int feedfileType;
private Bundle arguments;
public Builder(@NonNull String destination, @NonNull FeedFile item) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
index 5ee137563..d66af22ef 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadService.java
@@ -152,7 +152,7 @@ public class DownloadService extends Service {
private static final int SCHED_EX_POOL_SIZE = 1;
private ScheduledThreadPoolExecutor schedExecutor;
- private Handler postHandler = new Handler();
+ private final Handler postHandler = new Handler();
private final IBinder mBinder = new LocalBinder();
@@ -162,7 +162,7 @@ public class DownloadService extends Service {
}
}
- private Thread downloadCompletionThread = new Thread() {
+ private final Thread downloadCompletionThread = new Thread() {
private static final String TAG = "downloadCompletionThd";
@Override
@@ -384,7 +384,7 @@ public class DownloadService extends Service {
return null;
}
- private BroadcastReceiver cancelDownloadReceiver = new BroadcastReceiver() {
+ private final BroadcastReceiver cancelDownloadReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
@@ -534,14 +534,14 @@ public class DownloadService extends Service {
* Calls query downloads on the services main thread. This method should be used instead of queryDownloads if it is
* used from a thread other than the main thread.
*/
- void queryDownloadsAsync() {
+ private void queryDownloadsAsync() {
handler.post(DownloadService.this::queryDownloads);
}
/**
* Check if there's something else to download, otherwise stop
*/
- void queryDownloads() {
+ private void queryDownloads() {
Log.d(TAG, numberOfDownloads.get() + " downloads left");
if (numberOfDownloads.get() <= 0 && DownloadRequester.getInstance().hasNoDownloads()) {
@@ -604,9 +604,9 @@ public class DownloadService extends Service {
private class FeedSyncThread extends Thread {
private static final String TAG = "FeedSyncThread";
- private BlockingQueue<DownloadRequest> completedRequests = new LinkedBlockingDeque<>();
- private CompletionService<Pair<DownloadRequest, FeedHandlerResult>> parserService = new ExecutorCompletionService<>(Executors.newSingleThreadExecutor());
- private ExecutorService dbService = Executors.newSingleThreadExecutor();
+ private final BlockingQueue<DownloadRequest> completedRequests = new LinkedBlockingDeque<>();
+ private final CompletionService<Pair<DownloadRequest, FeedHandlerResult>> parserService = new ExecutorCompletionService<>(Executors.newSingleThreadExecutor());
+ private final ExecutorService dbService = Executors.newSingleThreadExecutor();
private Future<?> dbUpdateFuture;
private volatile boolean isActive = true;
private volatile boolean isCollectingRequests = false;
@@ -766,7 +766,7 @@ public class DownloadService extends Service {
private class FeedParserTask implements Callable<Pair<DownloadRequest, FeedHandlerResult>> {
- private DownloadRequest request;
+ private final DownloadRequest request;
private FeedParserTask(DownloadRequest request) {
this.request = request;
@@ -952,8 +952,8 @@ public class DownloadService extends Service {
*/
private static class FailedDownloadHandler implements Runnable {
- private DownloadRequest request;
- private DownloadStatus status;
+ private final DownloadRequest request;
+ private final DownloadStatus status;
FailedDownloadHandler(DownloadStatus status, DownloadRequest request) {
this.request = request;
@@ -975,7 +975,7 @@ public class DownloadService extends Service {
*/
private class MediaHandlerThread implements Runnable {
- private DownloadRequest request;
+ private final DownloadRequest request;
private DownloadStatus status;
MediaHandlerThread(@NonNull DownloadStatus status,
@@ -1091,7 +1091,7 @@ public class DownloadService extends Service {
private long lastPost = 0;
- final Runnable postDownloaderTask = new Runnable() {
+ private final Runnable postDownloaderTask = new Runnable() {
@Override
public void run() {
List<Downloader> list = Collections.unmodifiableList(downloads);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java
index ed2b00dfe..5debc6d05 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/DownloadStatus.java
@@ -19,37 +19,37 @@ public class DownloadStatus {
// ----------------------------------- ATTRIBUTES STORED IN DB
/** Unique id for storing the object in database. */
- protected long id;
+ private long id;
/**
* A human-readable string which is shown to the user so that he can
* identify the download. Should be the title of the item/feed/media or the
* URL if the download has no other title.
*/
- protected String title;
- protected DownloadError reason;
+ private final String title;
+ private DownloadError reason;
/**
* A message which can be presented to the user to give more information.
* Should be null if Download was successful.
*/
- protected String reasonDetailed;
- protected boolean successful;
- protected Date completionDate;
- protected long feedfileId;
+ private String reasonDetailed;
+ private boolean successful;
+ private Date completionDate;
+ private final long feedfileId;
/**
* Is used to determine the type of the feedfile even if the feedfile does
* not exist anymore. The value should be FEEDFILETYPE_FEED,
* FEEDFILETYPE_FEEDIMAGE or FEEDFILETYPE_FEEDMEDIA
*/
- protected int feedfileType;
+ private final int feedfileType;
// ------------------------------------ NOT STORED IN DB
- protected boolean done;
- protected boolean cancelled;
+ private boolean done;
+ private boolean cancelled;
/** Constructor for restoring Download status entries from DB. */
- public DownloadStatus(long id, String title, long feedfileId,
- int feedfileType, boolean successful, DownloadError reason,
- Date completionDate, String reasonDetailed) {
+ private DownloadStatus(long id, String title, long feedfileId,
+ int feedfileType, boolean successful, DownloadError reason,
+ Date completionDate, String reasonDetailed) {
this.id = id;
this.title = title;
this.done = true;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
index d8042d202..445210d3a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/Downloader.java
@@ -14,14 +14,14 @@ import de.danoeh.antennapod.core.R;
public abstract class Downloader implements Callable<Downloader> {
private static final String TAG = "Downloader";
- protected volatile boolean finished;
+ private volatile boolean finished;
- protected volatile boolean cancelled;
+ volatile boolean cancelled;
- protected DownloadRequest request;
- protected DownloadStatus result;
+ final DownloadRequest request;
+ final DownloadStatus result;
- public Downloader(DownloadRequest request) {
+ Downloader(DownloadRequest request) {
super();
this.request = request;
this.request.setStatusMsg(R.string.download_pending);
@@ -33,7 +33,7 @@ public abstract class Downloader implements Callable<Downloader> {
public final Downloader call() {
WifiManager wifiManager = (WifiManager)
- ClientConfig.applicationCallbacks.getApplicationInstance().getSystemService(Context.WIFI_SERVICE);
+ ClientConfig.applicationCallbacks.getApplicationInstance().getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiManager.WifiLock wifiLock = null;
if (wifiManager != null) {
wifiLock = wifiManager.createWifiLock(TAG);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
index 77d664b74..181a6f619 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/download/HttpDownloader.java
@@ -316,7 +316,7 @@ public class HttpDownloader extends Downloader {
private static class BasicAuthorizationInterceptor implements Interceptor {
- private DownloadRequest downloadRequest;
+ private final DownloadRequest downloadRequest;
public BasicAuthorizationInterceptor(DownloadRequest downloadRequest) {
this.downloadRequest = downloadRequest;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
index 11cd21db5..5f205c515 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/LocalPSMP.java
@@ -32,7 +32,7 @@ import de.danoeh.antennapod.core.util.playback.VideoPlayer;
* Manages the MediaPlayer object of the PlaybackService.
*/
public class LocalPSMP extends PlaybackServiceMediaPlayer {
- public static final String TAG = "LclPlaybackSvcMPlayer";
+ private static final String TAG = "LclPlaybackSvcMPlayer";
private final AudioManager audioManager;
@@ -42,7 +42,7 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
private volatile boolean stream;
private volatile MediaType mediaType;
- private volatile AtomicBoolean startWhenPrepared;
+ private final AtomicBoolean startWhenPrepared;
private volatile boolean pausedBecauseOfTransientAudiofocusLoss;
private volatile Pair<Integer, Integer> videoSize;
@@ -710,52 +710,49 @@ public class LocalPSMP extends PlaybackServiceMediaPlayer {
@Override
public void onAudioFocusChange(final int focusChange) {
- executor.submit(new Runnable() {
- @Override
- public void run() {
- playerLock.lock();
-
- // If there is an incoming call, playback should be paused permanently
- TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
- final int callState = (tm != null) ? tm.getCallState() : 0;
- Log.i(TAG, "Call state:" + callState);
-
- if (focusChange == AudioManager.AUDIOFOCUS_LOSS ||
- (!UserPreferences.shouldResumeAfterCall() && callState != TelephonyManager.CALL_STATE_IDLE)) {
- Log.d(TAG, "Lost audio focus");
- pause(true, false);
- callback.shouldStop();
- } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
- Log.d(TAG, "Gained audio focus");
- if (pausedBecauseOfTransientAudiofocusLoss) { // we paused => play now
- resume();
- } else { // we ducked => raise audio level back
- setVolumeSync(UserPreferences.getLeftVolume(),
- UserPreferences.getRightVolume());
- }
- } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
- if (playerStatus == PlayerStatus.PLAYING) {
- if (!UserPreferences.shouldPauseForFocusLoss()) {
- Log.d(TAG, "Lost audio focus temporarily. Ducking...");
- final float DUCK_FACTOR = 0.25f;
- setVolumeSync(DUCK_FACTOR * UserPreferences.getLeftVolume(),
- DUCK_FACTOR * UserPreferences.getRightVolume());
- pausedBecauseOfTransientAudiofocusLoss = false;
- } else {
- Log.d(TAG, "Lost audio focus temporarily. Could duck, but won't, pausing...");
- pause(false, false);
- pausedBecauseOfTransientAudiofocusLoss = true;
- }
- }
- } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
- if (playerStatus == PlayerStatus.PLAYING) {
- Log.d(TAG, "Lost audio focus temporarily. Pausing...");
+ executor.submit(() -> {
+ playerLock.lock();
+
+ // If there is an incoming call, playback should be paused permanently
+ TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
+ final int callState = (tm != null) ? tm.getCallState() : 0;
+ Log.i(TAG, "Call state:" + callState);
+
+ if (focusChange == AudioManager.AUDIOFOCUS_LOSS ||
+ (!UserPreferences.shouldResumeAfterCall() && callState != TelephonyManager.CALL_STATE_IDLE)) {
+ Log.d(TAG, "Lost audio focus");
+ pause(true, false);
+ callback.shouldStop();
+ } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
+ Log.d(TAG, "Gained audio focus");
+ if (pausedBecauseOfTransientAudiofocusLoss) { // we paused => play now
+ resume();
+ } else { // we ducked => raise audio level back
+ setVolumeSync(UserPreferences.getLeftVolume(),
+ UserPreferences.getRightVolume());
+ }
+ } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
+ if (playerStatus == PlayerStatus.PLAYING) {
+ if (!UserPreferences.shouldPauseForFocusLoss()) {
+ Log.d(TAG, "Lost audio focus temporarily. Ducking...");
+ final float DUCK_FACTOR = 0.25f;
+ setVolumeSync(DUCK_FACTOR * UserPreferences.getLeftVolume(),
+ DUCK_FACTOR * UserPreferences.getRightVolume());
+ pausedBecauseOfTransientAudiofocusLoss = false;
+ } else {
+ Log.d(TAG, "Lost audio focus temporarily. Could duck, but won't, pausing...");
pause(false, false);
pausedBecauseOfTransientAudiofocusLoss = true;
}
}
- playerLock.unlock();
+ } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
+ if (playerStatus == PlayerStatus.PLAYING) {
+ Log.d(TAG, "Lost audio focus temporarily. Pausing...");
+ pause(false, false);
+ pausedBecauseOfTransientAudiofocusLoss = true;
+ }
}
+ playerLock.unlock();
});
}
};
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
index c600501c0..417716810 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackService.java
@@ -88,7 +88,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
/**
* True if cast session should disconnect.
*/
- public static final String EXTRA_CAST_DISCONNECT = "extra.de.danoeh.antennapod.core.service.castDisconnect";
+ private static final String EXTRA_CAST_DISCONNECT = "extra.de.danoeh.antennapod.core.service.castDisconnect";
/**
* True if media should be streamed.
*/
@@ -198,7 +198,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
/**
* Is true if the service was running, but paused due to headphone disconnect
*/
- public static boolean transientPause = false;
+ private static boolean transientPause = false;
/**
* Is true if a Cast Device is connected to the service.
*/
@@ -910,7 +910,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
taskManager.setSleepTimer(waitingTime, shakeToReset, vibrate);
sendNotificationBroadcast(NOTIFICATION_TYPE_SLEEPTIMER_UPDATE, 0);
EventBus.getDefault().post(new MessageEvent(getString(R.string.sleep_timer_enabled_label),
- () -> disableSleepTimer()));
+ this::disableSleepTimer));
}
public void disableSleepTimer() {
@@ -1630,7 +1630,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
- public void seekDelta(final int d) {
+ private void seekDelta(final int d) {
mediaPlayer.seekDelta(d);
}
@@ -1784,7 +1784,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
}
};
- private SharedPreferences.OnSharedPreferenceChangeListener prefListener =
+ private final SharedPreferences.OnSharedPreferenceChangeListener prefListener =
(sharedPreferences, key) -> {
if (UserPreferences.PREF_LOCKSCREEN_BACKGROUND.equals(key)) {
updateMediaSessionMetadata(getPlayable());
@@ -1806,7 +1806,7 @@ public class PlaybackService extends MediaBrowserServiceCompat {
void unregisterReceiver(BroadcastReceiver receiver);
}
- private FlavorHelperCallback flavorHelperCallback = new FlavorHelperCallback() {
+ private final FlavorHelperCallback flavorHelperCallback = new FlavorHelperCallback() {
@Override
public PlaybackServiceMediaPlayer.PSMPCallback getMediaPlayerCallback() {
return PlaybackService.this.mediaPlayerCallback;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
index 393019fd1..a2481b801 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceMediaPlayer.java
@@ -24,14 +24,14 @@ import de.danoeh.antennapod.core.util.playback.Playable;
* and remote (cast devices) playback.
*/
public abstract class PlaybackServiceMediaPlayer {
- public static final String TAG = "PlaybackSvcMediaPlayer";
+ private static final String TAG = "PlaybackSvcMediaPlayer";
/**
* Return value of some PSMP methods if the method call failed.
*/
static final int INVALID_TIME = -1;
- volatile PlayerStatus oldPlayerStatus;
+ private volatile PlayerStatus oldPlayerStatus;
volatile PlayerStatus playerStatus;
/**
@@ -39,8 +39,8 @@ public abstract class PlaybackServiceMediaPlayer {
*/
private WifiManager.WifiLock wifiLock;
- protected final PSMPCallback callback;
- protected final Context context;
+ final PSMPCallback callback;
+ final Context context;
PlaybackServiceMediaPlayer(@NonNull Context context,
@NonNull PSMPCallback callback){
@@ -279,7 +279,7 @@ public abstract class PlaybackServiceMediaPlayer {
final synchronized void acquireWifiLockIfNecessary() {
if (shouldLockWifi()) {
if (wifiLock == null) {
- wifiLock = ((WifiManager) context.getSystemService(Context.WIFI_SERVICE))
+ wifiLock = ((WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE))
.createWifiLock(WifiManager.WIFI_MODE_FULL, TAG);
wifiLock.setReferenceCounted(false);
}
@@ -365,7 +365,7 @@ public abstract class PlaybackServiceMediaPlayer {
* Holds information about a PSMP object.
*/
public static class PSMPInfo {
- public PlayerStatus oldPlayerStatus;
+ public final PlayerStatus oldPlayerStatus;
public PlayerStatus playerStatus;
public Playable playable;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
index 0c7d5e718..3d97e862a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/PlaybackServiceTaskManager.java
@@ -295,7 +295,7 @@ public class PlaybackServiceTaskManager {
/**
* Sleeps for a given time and then pauses playback.
*/
- protected class SleepTimer implements Runnable {
+ class SleepTimer implements Runnable {
private static final String TAG = "SleepTimer";
private static final long UPDATE_INTERVAL = 1000L;
private static final long NOTIFICATION_THRESHOLD = 10000;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java
index fcd96826b..c0b1b3bc0 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/service/playback/ShakeListener.java
@@ -7,14 +7,14 @@ import android.hardware.SensorEventListener;
import android.hardware.SensorManager;
import android.util.Log;
-public class ShakeListener implements SensorEventListener
+class ShakeListener implements SensorEventListener
{
private static final String TAG = ShakeListener.class.getSimpleName();
private Sensor mAccelerometer;
private SensorManager mSensorMgr;
- private PlaybackServiceTaskManager.SleepTimer mSleepTimer;
- private Context mContext;
+ private final PlaybackServiceTaskManager.SleepTimer mSleepTimer;
+ private final Context mContext;
public ShakeListener(Context context, PlaybackServiceTaskManager.SleepTimer sleepTimer) {
mContext = context;
@@ -22,7 +22,7 @@ public class ShakeListener implements SensorEventListener
resume();
}
- public void resume() {
+ private void resume() {
// only a precaution, the user should actually not be able to activate shake to reset
// when the accelerometer is not available
mSensorMgr = (SensorManager) mContext.getSystemService(Context.SENSOR_SERVICE);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
index 743accb08..fa87cc216 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBReader.java
@@ -44,7 +44,7 @@ public final class DBReader {
/**
* Maximum size of the list returned by {@link #getDownloadLog()}.
*/
- public static final int DOWNLOAD_LOG_SIZE = 200;
+ private static final int DOWNLOAD_LOG_SIZE = 200;
private DBReader() {
@@ -120,7 +120,7 @@ public final class DBReader {
loadFeedDataOfFeedItemList(items);
}
- public static void loadTagsOfFeedItemList(List<FeedItem> items) {
+ private static void loadTagsOfFeedItemList(List<FeedItem> items) {
LongList favoriteIds = getFavoriteIDList();
LongList queueIds = getQueueIDList();
@@ -141,7 +141,7 @@ public final class DBReader {
*
* @param items The FeedItems whose Feed-objects should be loaded.
*/
- public static void loadFeedDataOfFeedItemList(List<FeedItem> items) {
+ private static void loadFeedDataOfFeedItemList(List<FeedItem> items) {
List<Feed> feeds = getFeedList();
Map<Long, Feed> feedIndex = new ArrayMap<>(feeds.size());
@@ -412,7 +412,7 @@ public final class DBReader {
}
}
- public static LongList getFavoriteIDList() {
+ private static LongList getFavoriteIDList() {
Log.d(TAG, "getFavoriteIDList() called");
PodDBAdapter adapter = PodDBAdapter.getInstance();
@@ -663,7 +663,7 @@ public final class DBReader {
}
}
- static FeedItem getFeedItem(final String podcastUrl, final String episodeUrl, PodDBAdapter adapter) {
+ private static FeedItem getFeedItem(final String podcastUrl, final String episodeUrl, PodDBAdapter adapter) {
Log.d(TAG, "Loading feeditem with podcast url " + podcastUrl + " and episode url " + episodeUrl);
Cursor cursor = null;
try {
@@ -797,7 +797,7 @@ public final class DBReader {
}
}
- static void loadChaptersOfFeedItem(PodDBAdapter adapter, FeedItem item) {
+ private static void loadChaptersOfFeedItem(PodDBAdapter adapter, FeedItem item) {
Cursor cursor = null;
try {
cursor = adapter.getSimpleChaptersOfFeedItemCursor(item);
@@ -1023,14 +1023,14 @@ public final class DBReader {
/**
* Simply sums up time of podcasts that are marked as played
*/
- public long totalTimeCountAll;
+ public final long totalTimeCountAll;
/**
* Respects speed, listening twice, ...
*/
- public long totalTime;
+ public final long totalTime;
- public List<StatisticsItem> feedTime;
+ public final List<StatisticsItem> feedTime;
public StatisticsData(long totalTime, long totalTimeCountAll, List<StatisticsItem> feedTime) {
this.totalTime = totalTime;
@@ -1040,26 +1040,26 @@ public final class DBReader {
}
public static class StatisticsItem {
- public Feed feed;
- public long time;
+ public final Feed feed;
+ public final long time;
/**
* Respects speed, listening twice, ...
*/
- public long timePlayed;
+ public final long timePlayed;
/**
* Simply sums up time of podcasts that are marked as played
*/
- public long timePlayedCountAll;
- public long episodes;
+ public final long timePlayedCountAll;
+ public final long episodes;
/**
* Episodes that are actually played
*/
- public long episodesStarted;
+ public final long episodesStarted;
/**
* All episodes that are marked as played (or have position != 0)
*/
- public long episodesStartedIncludingMarked;
+ public final long episodesStartedIncludingMarked;
public StatisticsItem(Feed feed, long time, long timePlayed, long timePlayedCountAll,
long episodes, long episodesStarted, long episodesStartedIncludingMarked) {
@@ -1195,12 +1195,12 @@ public final class DBReader {
}
public static class NavDrawerData {
- public List<Feed> feeds;
- public int queueSize;
- public int numNewItems;
- public int numDownloadedItems;
- public LongIntMap feedCounters;
- public int reclaimableSpace;
+ public final List<Feed> feeds;
+ public final int queueSize;
+ public final int numNewItems;
+ public final int numDownloadedItems;
+ public final LongIntMap feedCounters;
+ public final int reclaimableSpace;
public NavDrawerData(List<Feed> feeds,
int queueSize,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
index 90ef217ff..573954412 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBTasks.java
@@ -47,13 +47,13 @@ import static android.content.Context.MODE_PRIVATE;
public final class DBTasks {
private static final String TAG = "DBTasks";
- public static final String PREF_NAME = "dbtasks";
+ private static final String PREF_NAME = "dbtasks";
private static final String PREF_LAST_REFRESH = "last_refresh";
/**
* Executor service used by the autodownloadUndownloadedEpisodes method.
*/
- private static ExecutorService autodownloadExec;
+ private static final ExecutorService autodownloadExec;
static {
autodownloadExec = Executors.newSingleThreadExecutor(r -> {
@@ -149,7 +149,7 @@ public final class DBTasks {
}
}
- private static AtomicBoolean isRefreshing = new AtomicBoolean(false);
+ private static final AtomicBoolean isRefreshing = new AtomicBoolean(false);
/**
* Refreshes a given list of Feeds in a separate Thread. This method might ignore subsequent calls if it is still
@@ -292,7 +292,7 @@ public final class DBTasks {
* @param context Used for requesting the download.
* @param feed The Feed object.
*/
- public static void refreshFeed(Context context, Feed feed)
+ private static void refreshFeed(Context context, Feed feed)
throws DownloadRequestException {
Log.d(TAG, "refreshFeed(feed.id: " + feed.getId() +")");
refreshFeed(context, feed, false, false);
@@ -803,7 +803,7 @@ public final class DBTasks {
*/
abstract static class QueryTask<T> implements Callable<T> {
private T result;
- private Context context;
+ private final Context context;
public QueryTask(Context context) {
this.context = context;
@@ -820,7 +820,7 @@ public final class DBTasks {
public abstract void execute(PodDBAdapter adapter);
- protected void setResult(T result) {
+ void setResult(T result) {
this.result = result;
}
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
index 8d507fb9a..75510d2f6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DBWriter.java
@@ -382,8 +382,8 @@ public class DBWriter {
// add item to either front ot back of queue
boolean addToFront = UserPreferences.enqueueAtFront();
if (addToFront) {
- queue.add(0 + i, item);
- events.add(QueueEvent.added(item, 0 + i));
+ queue.add(i, item);
+ events.add(QueueEvent.added(item, i));
} else {
queue.add(item);
events.add(QueueEvent.added(item, queue.size() - 1));
@@ -838,9 +838,9 @@ public class DBWriter {
*
* @param startFlattrClickWorker true if FlattrClickWorker should be started after the FlattrStatus has been saved
*/
- public static Future<?> setFeedItemFlattrStatus(final Context context,
- final FeedItem item,
- final boolean startFlattrClickWorker) {
+ private static Future<?> setFeedItemFlattrStatus(final Context context,
+ final FeedItem item,
+ final boolean startFlattrClickWorker) {
return dbExec.submit(() -> {
PodDBAdapter adapter = PodDBAdapter.getInstance();
adapter.open();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
index 933be07ff..a8fd79fda 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/DownloadRequester.java
@@ -33,8 +33,8 @@ public class DownloadRequester {
private static final String TAG = "DownloadRequester";
public static final String IMAGE_DOWNLOADPATH = "images/";
- public static final String FEED_DOWNLOADPATH = "cache/";
- public static final String MEDIA_DOWNLOADPATH = "media/";
+ private static final String FEED_DOWNLOADPATH = "cache/";
+ private static final String MEDIA_DOWNLOADPATH = "media/";
/**
* Denotes the page of the feed that is contained in the DownloadRequest sent by the DownloadRequester.
@@ -48,7 +48,7 @@ public class DownloadRequester {
private static DownloadRequester downloader;
- private Map<String, DownloadRequest> downloads;
+ private final Map<String, DownloadRequest> downloads;
private DownloadRequester() {
downloads = new ConcurrentHashMap<>();
@@ -305,13 +305,13 @@ public class DownloadRequester {
return downloads.size();
}
- public synchronized String getFeedfilePath(Context context)
+ private synchronized String getFeedfilePath(Context context)
throws DownloadRequestException {
return getExternalFilesDirOrThrowException(context, FEED_DOWNLOADPATH)
.toString() + "/";
}
- public synchronized String getFeedfileName(Feed feed) {
+ private synchronized String getFeedfileName(Feed feed) {
String filename = feed.getDownload_url();
if (feed.getTitle() != null && !feed.getTitle().isEmpty()) {
filename = feed.getTitle();
@@ -319,7 +319,7 @@ public class DownloadRequester {
return "feed-" + FileNameGenerator.generateFileName(filename);
}
- public synchronized String getMediafilePath(Context context, FeedMedia media)
+ private synchronized String getMediafilePath(Context context, FeedMedia media)
throws DownloadRequestException {
File externalStorage = getExternalFilesDirOrThrowException(
context,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java
index 97cbdca33..aae5b352e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/EpisodeCleanupAlgorithm.java
@@ -15,7 +15,7 @@ public abstract class EpisodeCleanupAlgorithm {
* or getPerformCleanupParameter.
* @return The number of episodes that were deleted.
*/
- public abstract int performCleanup(Context context, int numToRemove);
+ protected abstract int performCleanup(Context context, int numToRemove);
public int performCleanup(Context context) {
return performCleanup(context, getDefaultCleanupParameter());
@@ -26,7 +26,7 @@ public abstract class EpisodeCleanupAlgorithm {
* space to free to satisfy the episode cache conditions. If the conditions are already satisfied, this
* method should not have any effects.
*/
- public abstract int getDefaultCleanupParameter();
+ protected abstract int getDefaultCleanupParameter();
/**
* Cleans up just enough episodes to make room for the requested number
@@ -48,7 +48,7 @@ public abstract class EpisodeCleanupAlgorithm {
* @param amountOfRoomNeeded the number of episodes we want to download
* @return the number of episodes to delete in order to make room
*/
- protected int getNumEpisodesToCleanup(final int amountOfRoomNeeded) {
+ int getNumEpisodesToCleanup(final int amountOfRoomNeeded) {
if (amountOfRoomNeeded >= 0
&& UserPreferences.getEpisodeCacheSize() != UserPreferences
.getEpisodeCacheSizeUnlimited()) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java
index 09949b87e..d84279f6e 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/FeedItemStatistics.java
@@ -8,11 +8,11 @@ import java.util.Date;
* Contains information about a feed's items.
*/
public class FeedItemStatistics {
- private long feedID;
- private int numberOfItems;
- private int numberOfNewItems;
- private int numberOfInProgressItems;
- private Date lastUpdate;
+ private final long feedID;
+ private final int numberOfItems;
+ private final int numberOfNewItems;
+ private final int numberOfInProgressItems;
+ private final Date lastUpdate;
private static final Date UNKNOWN_DATE = new Date(0);
@@ -26,7 +26,7 @@ public class FeedItemStatistics {
* @param lastUpdate pubDate of the latest episode. A lastUpdate value of 0 will be interpreted as DATE_UNKOWN if
* numberOfItems is 0.
*/
- public FeedItemStatistics(long feedID, int numberOfItems, int numberOfNewItems, int numberOfInProgressItems, Date lastUpdate) {
+ private FeedItemStatistics(long feedID, int numberOfItems, int numberOfNewItems, int numberOfInProgressItems, Date lastUpdate) {
this.feedID = feedID;
this.numberOfItems = numberOfItems;
this.numberOfNewItems = numberOfNewItems;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
index 31499c33e..7d6ba0e32 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/storage/PodDBAdapter.java
@@ -10,7 +10,6 @@ import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.database.sqlite.SQLiteOpenHelper;
import android.media.MediaMetadataRetriever;
-import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
@@ -74,7 +73,7 @@ public class PodDBAdapter {
public static final String KEY_MIME_TYPE = "mime_type";
public static final String KEY_IMAGE = "image";
public static final String KEY_FEED = "feed";
- public static final String KEY_MEDIA = "media";
+ private static final String KEY_MEDIA = "media";
public static final String KEY_DOWNLOADED = "downloaded";
public static final String KEY_LASTUPDATE = "last_update";
public static final String KEY_FEEDFILE = "feedfile";
@@ -126,7 +125,7 @@ public class PodDBAdapter {
private static final String TABLE_PRIMARY_KEY = KEY_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT ,";
- public static final String CREATE_TABLE_FEEDS = "CREATE TABLE "
+ private static final String CREATE_TABLE_FEEDS = "CREATE TABLE "
+ TABLE_NAME_FEEDS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
+ " TEXT," + KEY_CUSTOM_TITLE + " TEXT," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT,"
+ KEY_DOWNLOADED + " INTEGER," + KEY_LINK + " TEXT,"
@@ -146,7 +145,7 @@ public class PodDBAdapter {
+ KEY_LAST_UPDATE_FAILED + " INTEGER DEFAULT 0,"
+ KEY_AUTO_DELETE_ACTION + " INTEGER DEFAULT 0)";
- public static final String CREATE_TABLE_FEED_ITEMS = "CREATE TABLE "
+ private static final String CREATE_TABLE_FEED_ITEMS = "CREATE TABLE "
+ TABLE_NAME_FEED_ITEMS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
+ " TEXT," + KEY_CONTENT_ENCODED + " TEXT," + KEY_PUBDATE
+ " INTEGER," + KEY_READ + " INTEGER," + KEY_LINK + " TEXT,"
@@ -157,12 +156,12 @@ public class PodDBAdapter {
+ KEY_IMAGE + " INTEGER,"
+ KEY_AUTO_DOWNLOAD + " INTEGER)";
- public static final String CREATE_TABLE_FEED_IMAGES = "CREATE TABLE "
+ private static final String CREATE_TABLE_FEED_IMAGES = "CREATE TABLE "
+ TABLE_NAME_FEED_IMAGES + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
+ " TEXT," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL + " TEXT,"
+ KEY_DOWNLOADED + " INTEGER)";
- public static final String CREATE_TABLE_FEED_MEDIA = "CREATE TABLE "
+ private static final String CREATE_TABLE_FEED_MEDIA = "CREATE TABLE "
+ TABLE_NAME_FEED_MEDIA + " (" + TABLE_PRIMARY_KEY + KEY_DURATION
+ " INTEGER," + KEY_FILE_URL + " TEXT," + KEY_DOWNLOAD_URL
+ " TEXT," + KEY_DOWNLOADED + " INTEGER," + KEY_POSITION
@@ -173,53 +172,53 @@ public class PodDBAdapter {
+ KEY_HAS_EMBEDDED_PICTURE + " INTEGER,"
+ KEY_LAST_PLAYED_TIME + " INTEGER)";
- public static final String CREATE_TABLE_DOWNLOAD_LOG = "CREATE TABLE "
+ private static final String CREATE_TABLE_DOWNLOAD_LOG = "CREATE TABLE "
+ TABLE_NAME_DOWNLOAD_LOG + " (" + TABLE_PRIMARY_KEY + KEY_FEEDFILE
+ " INTEGER," + KEY_FEEDFILETYPE + " INTEGER," + KEY_REASON
+ " INTEGER," + KEY_SUCCESSFUL + " INTEGER," + KEY_COMPLETION_DATE
+ " INTEGER," + KEY_REASON_DETAILED + " TEXT,"
+ KEY_DOWNLOADSTATUS_TITLE + " TEXT)";
- public static final String CREATE_TABLE_QUEUE = "CREATE TABLE "
+ private static final String CREATE_TABLE_QUEUE = "CREATE TABLE "
+ TABLE_NAME_QUEUE + "(" + KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_FEEDITEM + " INTEGER," + KEY_FEED + " INTEGER)";
- public static final String CREATE_TABLE_SIMPLECHAPTERS = "CREATE TABLE "
+ private static final String CREATE_TABLE_SIMPLECHAPTERS = "CREATE TABLE "
+ TABLE_NAME_SIMPLECHAPTERS + " (" + TABLE_PRIMARY_KEY + KEY_TITLE
+ " TEXT," + KEY_START + " INTEGER," + KEY_FEEDITEM + " INTEGER,"
+ KEY_LINK + " TEXT," + KEY_CHAPTER_TYPE + " INTEGER)";
// SQL Statements for creating indexes
- public static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX "
+ private static final String CREATE_INDEX_FEEDITEMS_FEED = "CREATE INDEX "
+ TABLE_NAME_FEED_ITEMS + "_" + KEY_FEED + " ON " + TABLE_NAME_FEED_ITEMS + " ("
+ KEY_FEED + ")";
- public static final String CREATE_INDEX_FEEDITEMS_IMAGE = "CREATE INDEX "
+ private static final String CREATE_INDEX_FEEDITEMS_IMAGE = "CREATE INDEX "
+ TABLE_NAME_FEED_ITEMS + "_" + KEY_IMAGE + " ON " + TABLE_NAME_FEED_ITEMS + " ("
+ KEY_IMAGE + ")";
- public static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS "
+ private static final String CREATE_INDEX_FEEDITEMS_PUBDATE = "CREATE INDEX IF NOT EXISTS "
+ TABLE_NAME_FEED_ITEMS + "_" + KEY_PUBDATE + " ON " + TABLE_NAME_FEED_ITEMS + " ("
+ KEY_PUBDATE + ")";
- public static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS "
+ private static final String CREATE_INDEX_FEEDITEMS_READ = "CREATE INDEX IF NOT EXISTS "
+ TABLE_NAME_FEED_ITEMS + "_" + KEY_READ + " ON " + TABLE_NAME_FEED_ITEMS + " ("
+ KEY_READ + ")";
- public static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX "
+ private static final String CREATE_INDEX_QUEUE_FEEDITEM = "CREATE INDEX "
+ TABLE_NAME_QUEUE + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_QUEUE + " ("
+ KEY_FEEDITEM + ")";
- public static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX "
+ private static final String CREATE_INDEX_FEEDMEDIA_FEEDITEM = "CREATE INDEX "
+ TABLE_NAME_FEED_MEDIA + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_FEED_MEDIA + " ("
+ KEY_FEEDITEM + ")";
- public static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX "
+ private static final String CREATE_INDEX_SIMPLECHAPTERS_FEEDITEM = "CREATE INDEX "
+ TABLE_NAME_SIMPLECHAPTERS + "_" + KEY_FEEDITEM + " ON " + TABLE_NAME_SIMPLECHAPTERS + " ("
+ KEY_FEEDITEM + ")";
- public static final String CREATE_TABLE_FAVORITES = "CREATE TABLE "
+ private static final String CREATE_TABLE_FAVORITES = "CREATE TABLE "
+ TABLE_NAME_FAVORITES + "(" + KEY_ID + " INTEGER PRIMARY KEY,"
+ KEY_FEEDITEM + " INTEGER," + KEY_FEED + " INTEGER)";
@@ -310,8 +309,8 @@ public class PodDBAdapter {
private static PodDBHelper dbHelper;
private static volatile SQLiteDatabase db;
- private static Lock dbLock = new ReentrantLock();
- private static AtomicInteger counter = new AtomicInteger(0);
+ private static final Lock dbLock = new ReentrantLock();
+ private static final AtomicInteger counter = new AtomicInteger(0);
public static void init(Context context) {
PodDBAdapter.context = context.getApplicationContext();
@@ -392,7 +391,7 @@ public class PodDBAdapter {
*
* @return the id of the entry
*/
- public long setFeed(Feed feed) {
+ private long setFeed(Feed feed) {
ContentValues values = new ContentValues();
values.put(KEY_TITLE, feed.getFeedTitle());
values.put(KEY_LINK, feed.getLink());
@@ -839,7 +838,7 @@ public class PodDBAdapter {
}
}
- public void setChapters(FeedItem item) {
+ private void setChapters(FeedItem item) {
ContentValues values = new ContentValues();
for (Chapter chapter : item.getChapters()) {
values.put(KEY_TITLE, chapter.getTitle());
@@ -947,7 +946,7 @@ public class PodDBAdapter {
db.execSQL(deleteClause);
}
- public boolean isItemInFavorites(FeedItem item) {
+ private boolean isItemInFavorites(FeedItem item) {
String query = String.format("SELECT %s from %s WHERE %s=%d",
KEY_ID, TABLE_NAME_FAVORITES, KEY_FEEDITEM, item.getId());
Cursor c = db.rawQuery(query, null);
@@ -991,7 +990,7 @@ public class PodDBAdapter {
db.delete(TABLE_NAME_QUEUE, null, null);
}
- public void removeFeedMedia(FeedMedia media) {
+ private void removeFeedMedia(FeedMedia media) {
// delete download log entries for feed media
db.delete(TABLE_NAME_DOWNLOAD_LOG, KEY_FEEDFILE + "=? AND " + KEY_FEEDFILETYPE + "=?",
new String[]{String.valueOf(media.getId()), String.valueOf(FeedMedia.FEEDFILETYPE_FEEDMEDIA)});
@@ -1000,12 +999,12 @@ public class PodDBAdapter {
new String[]{String.valueOf(media.getId())});
}
- public void removeChaptersOfItem(FeedItem item) {
+ private void removeChaptersOfItem(FeedItem item) {
db.delete(TABLE_NAME_SIMPLECHAPTERS, KEY_FEEDITEM + "=?",
new String[]{String.valueOf(item.getId())});
}
- public void removeFeedImage(FeedImage image) {
+ private void removeFeedImage(FeedImage image) {
db.delete(TABLE_NAME_FEED_IMAGES, KEY_ID + "=?",
new String[]{String.valueOf(image.getId())});
}
@@ -1013,7 +1012,7 @@ public class PodDBAdapter {
/**
* Remove a FeedItem and its FeedMedia entry.
*/
- public void removeFeedItem(FeedItem item) {
+ private void removeFeedItem(FeedItem item) {
if (item.getMedia() != null) {
removeFeedMedia(item.getMedia());
}
@@ -1089,7 +1088,7 @@ public class PodDBAdapter {
return getAllItemsOfFeedCursor(feed.getId());
}
- public final Cursor getAllItemsOfFeedCursor(final long feedId) {
+ private Cursor getAllItemsOfFeedCursor(final long feedId) {
return db.query(TABLE_NAME_FEED_ITEMS, FEEDITEM_SEL_FI_SMALL, KEY_FEED
+ "=?", new String[]{String.valueOf(feedId)}, null, null,
null);
@@ -1332,11 +1331,7 @@ public class PodDBAdapter {
if (size == 1) {
return "(?)";
}
- StringBuilder builder =
- new StringBuilder("(")
- .append(TextUtils.join(",", Collections.nCopies(size, "?")))
- .append(")");
- return builder.toString();
+ return "(" + TextUtils.join(",", Collections.nCopies(size, "?")) + ")";
}
public final Cursor getFeedCursor(final long id) {
@@ -1668,7 +1663,7 @@ public class PodDBAdapter {
private static final int VERSION = 1060200;
- private Context context;
+ private final Context context;
/**
* Constructor.
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java
index f67721a6e..77300d864 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/FeedHandlerResult.java
@@ -9,8 +9,8 @@ import de.danoeh.antennapod.core.feed.Feed;
*/
public class FeedHandlerResult {
- public Feed feed;
- public Map<String, String> alternateFeedUrls;
+ public final Feed feed;
+ public final Map<String, String> alternateFeedUrls;
public FeedHandlerResult(Feed feed, Map<String, String> alternateFeedUrls) {
this.feed = feed;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java
index fe9f335b1..1cd05aa26 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/HandlerState.java
@@ -20,20 +20,20 @@ public class HandlerState {
/**
* Feed that the Handler is currently processing.
*/
- protected Feed feed;
+ Feed feed;
/**
* Contains links to related feeds, e.g. feeds with enclosures in other formats. The key of the map is the
* URL of the feed, the value is the title
*/
- protected Map<String, String> alternateUrls;
- protected ArrayList<FeedItem> items;
- protected FeedItem currentItem;
- protected Stack<SyndElement> tagstack;
+ final Map<String, String> alternateUrls;
+ private final ArrayList<FeedItem> items;
+ private FeedItem currentItem;
+ final Stack<SyndElement> tagstack;
/**
* Namespaces that have been defined so far.
*/
- protected Map<String, Namespace> namespaces;
- protected Stack<Namespace> defaultNamespaces;
+ final Map<String, Namespace> namespaces;
+ final Stack<Namespace> defaultNamespaces;
/**
* Buffer for saving characters.
*/
@@ -42,7 +42,7 @@ public class HandlerState {
/**
* Temporarily saved objects.
*/
- protected Map<String, Object> tempObjects;
+ private final Map<String, Object> tempObjects;
public HandlerState(Feed feed) {
this.feed = feed;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java
index c3db59382..ab66b912b 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/SyndHandler.java
@@ -18,10 +18,10 @@ import de.danoeh.antennapod.core.syndication.namespace.SyndElement;
import de.danoeh.antennapod.core.syndication.namespace.atom.NSAtom;
/** Superclass for all SAX Handlers which process Syndication formats */
-public class SyndHandler extends DefaultHandler {
+class SyndHandler extends DefaultHandler {
private static final String TAG = "SyndHandler";
private static final String DEFAULT_PREFIX = "";
- protected HandlerState state;
+ final HandlerState state;
public SyndHandler(Feed feed, TypeGetter.Type type) {
state = new HandlerState(feed);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java
index 3da9251d9..606f93faf 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/handler/UnsupportedFeedtypeException.java
@@ -4,7 +4,7 @@ import de.danoeh.antennapod.core.syndication.handler.TypeGetter.Type;
public class UnsupportedFeedtypeException extends Exception {
private static final long serialVersionUID = 9105878964928170669L;
- private TypeGetter.Type type;
+ private final TypeGetter.Type type;
private String rootElement;
public UnsupportedFeedtypeException(Type type) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java
index 7d60566b2..670e99fce 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSITunes.java
@@ -21,8 +21,8 @@ public class NSITunes extends Namespace {
private static final String AUTHOR = "author";
public static final String DURATION = "duration";
- public static final String SUBTITLE = "subtitle";
- public static final String SUMMARY = "summary";
+ private static final String SUBTITLE = "subtitle";
+ private static final String SUMMARY = "summary";
@Override
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java
index 703817a35..45266569a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/NSSimpleChapters.java
@@ -17,11 +17,11 @@ public class NSSimpleChapters extends Namespace {
public static final String NSTAG = "psc|sc";
public static final String NSURI = "http://podlove.org/simple-chapters";
- public static final String CHAPTERS = "chapters";
- public static final String CHAPTER = "chapter";
- public static final String START = "start";
- public static final String TITLE = "title";
- public static final String HREF = "href";
+ private static final String CHAPTERS = "chapters";
+ private static final String CHAPTER = "chapter";
+ private static final String START = "start";
+ private static final String TITLE = "title";
+ private static final String HREF = "href";
@Override
public SyndElement handleElementStart(String localName, HandlerState state,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java
index 8adcd2086..ba1b8ba5c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/SyndElement.java
@@ -2,8 +2,8 @@ package de.danoeh.antennapod.core.syndication.namespace;
/** Defines a XML Element that is pushed on the tagstack */
public class SyndElement {
- protected String name;
- protected Namespace namespace;
+ private final String name;
+ private final Namespace namespace;
public SyndElement(String name, Namespace namespace) {
this.name = name;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java
index d4a3edd09..ea1b724d4 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/AtomText.java
@@ -8,10 +8,10 @@ import de.danoeh.antennapod.core.syndication.namespace.SyndElement;
/** Represents Atom Element which contains text (content, title, summary). */
public class AtomText extends SyndElement {
public static final String TYPE_TEXT = "text";
- public static final String TYPE_HTML = "html";
- public static final String TYPE_XHTML = "xhtml";
+ private static final String TYPE_HTML = "html";
+ private static final String TYPE_XHTML = "xhtml";
- private String type;
+ private final String type;
private String content;
public AtomText(String name, Namespace namespace, String type) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
index cfb20d578..1fe388d9d 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/syndication/namespace/atom/NSAtom.java
@@ -64,8 +64,8 @@ public class NSAtom extends Namespace {
private static final String isText = TITLE + "|" + CONTENT + "|"
+ SUBTITLE + "|" + SUMMARY;
- public static final String isFeed = FEED + "|" + NSRSS20.CHANNEL;
- public static final String isFeedItem = ENTRY + "|" + NSRSS20.ITEM;
+ private static final String isFeed = FEED + "|" + NSRSS20.CHANNEL;
+ private static final String isFeedItem = ENTRY + "|" + NSRSS20.ITEM;
@Override
public SyndElement handleElementStart(String localName, HandlerState state,
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
index 70a180913..b513fbe99 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/Converter.java
@@ -71,8 +71,8 @@ public final class Converter {
int m = rest / MINUTES_MIL;
rest -= m * MINUTES_MIL;
int s = rest / SECONDS_MIL;
-
- return String.format("%02d:%02d:%02d", h, m, s);
+
+ return String.format(Locale.getDefault(), "%02d:%02d:%02d", h, m, s);
}
/** Converts milliseconds to a string containing hours and minutes */
@@ -81,7 +81,7 @@ public final class Converter {
int rest = duration - h * HOURS_MIL;
int m = rest / MINUTES_MIL;
- return String.format("%02d:%02d", h, m);
+ return String.format(Locale.getDefault(), "%02d:%02d", h, m);
}
/** Converts long duration string (HH:MM:SS) to milliseconds. */
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java b/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java
index f432424f8..69dc38895 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/DuckType.java
@@ -92,7 +92,7 @@ public class DuckType {
* false otherwise.
*/
@SuppressWarnings("rawtypes")
- public boolean quacksLikeA(Class iface) {
+ private boolean quacksLikeA(Class iface) {
for (Method method : iface.getMethods()) {
if (findMethodBySignature(method) == null) {
return false;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java b/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java
index 89edd7dbe..fb1b0dc8f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/EpisodeFilter.java
@@ -5,7 +5,7 @@ import java.util.List;
import de.danoeh.antennapod.core.feed.FeedItem;
-public class EpisodeFilter {
+class EpisodeFilter {
private EpisodeFilter() {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java b/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java
index cc5b0f18f..29d095cd2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/FeedtitleComparator.java
@@ -5,7 +5,7 @@ import java.util.Comparator;
import de.danoeh.antennapod.core.feed.Feed;
/** Compares the title of two feeds for sorting. */
-public class FeedtitleComparator implements Comparator<Feed> {
+class FeedtitleComparator implements Comparator<Feed> {
@Override
public int compare(Feed lhs, Feed rhs) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java b/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java
index f48b9169b..1da5417c1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/IntList.java
@@ -8,7 +8,7 @@ import java.util.Arrays;
public final class IntList {
private int[] values;
- protected int size;
+ private int size;
/**
* Constructs an empty instance with a default initial capacity.
@@ -22,7 +22,7 @@ public final class IntList {
*
* @param initialCapacity {@code >= 0;} initial capacity of the list
*/
- public IntList(int initialCapacity) {
+ private IntList(int initialCapacity) {
if(initialCapacity < 0) {
throw new IllegalArgumentException("initial capacity must be 0 or higher");
}
@@ -200,7 +200,7 @@ public final class IntList {
* @param value value to find
* @return index of value or -1
*/
- public int indexOf(int value) {
+ private int indexOf(int value) {
for (int i = 0; i < size; i++) {
if (values[i] == value) {
return i;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java
index 287ec4d0c..7ec7f84c4 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/LangUtils.java
@@ -7,7 +7,7 @@ import java.nio.charset.Charset;
public class LangUtils {
public static final Charset UTF_8 = Charset.forName("UTF-8");
- private static ArrayMap<String, String> languages;
+ private static final ArrayMap<String, String> languages;
static {
languages = new ArrayMap<>();
languages.put("af", "Afrikaans");
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java b/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java
index c5ac44bf5..78ed002ac 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/LongIntMap.java
@@ -88,7 +88,7 @@ public class LongIntMap {
/**
* Removes the mapping at the given index.
*/
- public void removeAt(int index) {
+ private void removeAt(int index) {
System.arraycopy(keys, index + 1, keys, index, size - (index + 1));
System.arraycopy(values, index + 1, values, index, size - (index + 1));
size--;
@@ -130,7 +130,7 @@ public class LongIntMap {
* smallest key and <code>keyAt(size()-1)</code> will return the largest
* key.</p>
*/
- public long keyAt(int index) {
+ private long keyAt(int index) {
if (index >= size) {
throw new IndexOutOfBoundsException("n >= size()");
} else if(index < 0) {
@@ -150,7 +150,7 @@ public class LongIntMap {
* smallest key and <code>valueAt(size()-1)</code> will return the value
* associated with the largest key.</p>
*/
- public int valueAt(int index) {
+ private int valueAt(int index) {
if (index >= size) {
throw new IndexOutOfBoundsException("n >= size()");
} else if(index < 0) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
index e6ff3a981..cbda583fa 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/NetworkUtils.java
@@ -54,7 +54,7 @@ public class NetworkUtils {
Log.d(TAG, "Auto-dl filter is disabled");
return true;
} else {
- WifiManager wm = (WifiManager) context
+ WifiManager wm = (WifiManager) context.getApplicationContext()
.getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wm.getConnectionInfo();
List<String> selectedNetworks = Arrays
@@ -93,7 +93,7 @@ public class NetworkUtils {
return UserPreferences.isAllowMobileUpdate() || !NetworkUtils.isNetworkMetered();
}
- public static boolean isNetworkMetered() {
+ private static boolean isNetworkMetered() {
ConnectivityManager connManager = (ConnectivityManager) context
.getSystemService(Context.CONNECTIVITY_SERVICE);
return ConnectivityManagerCompat.isActiveNetworkMetered(connManager);
@@ -103,7 +103,7 @@ public class NetworkUtils {
* Returns the SSID of the wifi connection, or <code>null</code> if there is no wifi.
*/
public static String getWifiSsid() {
- WifiManager wifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
+ WifiManager wifiManager = (WifiManager) context.getApplicationContext().getSystemService(Context.WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
if (wifiInfo != null) {
return wifiInfo.getSSID();
@@ -112,63 +112,60 @@ public class NetworkUtils {
}
public static Observable<Long> getFeedMediaSizeObservable(FeedMedia media) {
- return Observable.create(new Observable.OnSubscribe<Long>() {
- @Override
- public void call(Subscriber<? super Long> subscriber) {
- if (!NetworkUtils.isDownloadAllowed()) {
+ return Observable.create((Observable.OnSubscribe<Long>) subscriber -> {
+ if (!NetworkUtils.isDownloadAllowed()) {
+ subscriber.onNext(0L);
+ subscriber.onCompleted();
+ return;
+ }
+ long size = Integer.MIN_VALUE;
+ if (media.isDownloaded()) {
+ File mediaFile = new File(media.getLocalMediaUrl());
+ if (mediaFile.exists()) {
+ size = mediaFile.length();
+ }
+ } else if (!media.checkedOnSizeButUnknown()) {
+ // only query the network if we haven't already checked
+
+ String url = media.getDownload_url();
+ if(TextUtils.isEmpty(url)) {
subscriber.onNext(0L);
subscriber.onCompleted();
return;
}
- long size = Integer.MIN_VALUE;
- if (media.isDownloaded()) {
- File mediaFile = new File(media.getLocalMediaUrl());
- if (mediaFile.exists()) {
- size = mediaFile.length();
- }
- } else if (!media.checkedOnSizeButUnknown()) {
- // only query the network if we haven't already checked
-
- String url = media.getDownload_url();
- if(TextUtils.isEmpty(url)) {
- subscriber.onNext(0L);
- subscriber.onCompleted();
- return;
- }
- OkHttpClient client = AntennapodHttpClient.getHttpClient();
- Request.Builder httpReq = new Request.Builder()
- .url(url)
- .header("Accept-Encoding", "identity")
- .head();
- try {
- Response response = client.newCall(httpReq.build()).execute();
- if (response.isSuccessful()) {
- String contentLength = response.header("Content-Length");
- try {
- size = Integer.parseInt(contentLength);
- } catch (NumberFormatException e) {
- Log.e(TAG, Log.getStackTraceString(e));
- }
+ OkHttpClient client = AntennapodHttpClient.getHttpClient();
+ Request.Builder httpReq = new Request.Builder()
+ .url(url)
+ .header("Accept-Encoding", "identity")
+ .head();
+ try {
+ Response response = client.newCall(httpReq.build()).execute();
+ if (response.isSuccessful()) {
+ String contentLength = response.header("Content-Length");
+ try {
+ size = Integer.parseInt(contentLength);
+ } catch (NumberFormatException e) {
+ Log.e(TAG, Log.getStackTraceString(e));
}
- } catch (IOException e) {
- subscriber.onNext(0L);
- subscriber.onCompleted();
- Log.e(TAG, Log.getStackTraceString(e));
- return; // better luck next time
}
+ } catch (IOException e) {
+ subscriber.onNext(0L);
+ subscriber.onCompleted();
+ Log.e(TAG, Log.getStackTraceString(e));
+ return; // better luck next time
}
- Log.d(TAG, "new size: " + size);
- if (size <= 0) {
- // they didn't tell us the size, but we don't want to keep querying on it
- media.setCheckedOnSizeButUnknown();
- } else {
- media.setSize(size);
- }
- subscriber.onNext(size);
- subscriber.onCompleted();
- DBWriter.setFeedMedia(media);
}
+ Log.d(TAG, "new size: " + size);
+ if (size <= 0) {
+ // they didn't tell us the size, but we don't want to keep querying on it
+ media.setCheckedOnSizeButUnknown();
+ } else {
+ media.setSize(size);
+ }
+ subscriber.onNext(size);
+ subscriber.onCompleted();
+ DBWriter.setFeedMedia(media);
})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread());
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java
index 287fe1100..ecb641dad 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/exception/MediaFileNotFoundException.java
@@ -5,7 +5,7 @@ import de.danoeh.antennapod.core.feed.FeedMedia;
public class MediaFileNotFoundException extends Exception {
private static final long serialVersionUID = 1L;
- private FeedMedia media;
+ private final FeedMedia media;
public MediaFileNotFoundException(String msg, FeedMedia media) {
super(msg);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java
index c6150b0fd..45cb56988 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrServiceCreator.java
@@ -10,8 +10,8 @@ import de.danoeh.antennapod.core.BuildConfig;
/** Ensures that only one instance of the FlattrService class exists at a time */
-public class FlattrServiceCreator {
- public static final String TAG = "FlattrServiceCreator";
+class FlattrServiceCreator {
+ private static final String TAG = "FlattrServiceCreator";
private static volatile FlattrService flattrService;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java
index d82171d1a..40a9fc7d5 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrStatus.java
@@ -3,9 +3,9 @@ package de.danoeh.antennapod.core.util.flattr;
import java.util.Calendar;
public class FlattrStatus {
- public static final int STATUS_UNFLATTERED = 0;
+ private static final int STATUS_UNFLATTERED = 0;
public static final int STATUS_QUEUE = 1;
- public static final int STATUS_FLATTRED = 2;
+ private static final int STATUS_FLATTRED = 2;
private int status = STATUS_UNFLATTERED;
private Calendar lastFlattred;
@@ -38,7 +38,7 @@ public class FlattrStatus {
status = STATUS_QUEUE;
}
- public void fromLong(long status) {
+ private void fromLong(long status) {
if (status == STATUS_UNFLATTERED || status == STATUS_QUEUE)
this.status = (int) status;
else {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java
index 515028ab6..d5bb88771 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrThing.java
@@ -1,7 +1,7 @@
package de.danoeh.antennapod.core.util.flattr;
public interface FlattrThing {
- public String getTitle();
- public String getPaymentLink();
- public FlattrStatus getFlattrStatus();
+ String getTitle();
+ String getPaymentLink();
+ FlattrStatus getFlattrStatus();
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java
index 6ddfb0366..313d1c2f2 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/FlattrUtils.java
@@ -99,7 +99,7 @@ public class FlattrUtils {
cachedToken = token;
}
- public static void deleteToken() {
+ private static void deleteToken() {
Log.d(TAG, "Deleting flattr token");
storeToken(null);
}
@@ -116,7 +116,7 @@ public class FlattrUtils {
public static List<Flattr> retrieveFlattredThings()
throws FlattrException {
- ArrayList<Flattr> myFlattrs = new ArrayList<Flattr>();
+ ArrayList<Flattr> myFlattrs = new ArrayList<>();
if (hasToken()) {
FlattrService fs = FlattrServiceCreator.getService(retrieveToken());
@@ -172,17 +172,11 @@ public class FlattrUtils {
// ------------------------------------------------ DIALOGS
- public static void showRevokeDialog(final Context context) {
+ private static void showRevokeDialog(final Context context) {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.access_revoked_title);
builder.setMessage(R.string.access_revoked_info);
- builder.setNeutralButton(android.R.string.ok, new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.cancel();
- }
- });
+ builder.setNeutralButton(android.R.string.ok, (dialog, which) -> dialog.cancel());
builder.create().show();
}
@@ -197,27 +191,15 @@ public class FlattrUtils {
builder.setTitle(R.string.no_flattr_token_title);
builder.setMessage(R.string.no_flattr_token_msg);
builder.setPositiveButton(R.string.authenticate_now_label,
- new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- context.startActivity(
- ClientConfig.flattrCallbacks.getFlattrAuthenticationActivityIntent(context));
- }
-
- }
+ (dialog, which) -> context.startActivity(
+ ClientConfig.flattrCallbacks.getFlattrAuthenticationActivityIntent(context))
);
builder.setNegativeButton(R.string.visit_website_label,
- new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- Uri uri = Uri.parse(url);
- context.startActivity(new Intent(Intent.ACTION_VIEW,
- uri));
- }
-
+ (dialog, which) -> {
+ Uri uri = Uri.parse(url);
+ context.startActivity(new Intent(Intent.ACTION_VIEW,
+ uri));
}
);
builder.create().show();
@@ -231,13 +213,7 @@ public class FlattrUtils {
AlertDialog.Builder builder = new AlertDialog.Builder(context);
builder.setTitle(R.string.error_label);
builder.setMessage(msg);
- builder.setNeutralButton(android.R.string.ok, new OnClickListener() {
-
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.cancel();
- }
- });
+ builder.setNeutralButton(android.R.string.ok, (dialog, which) -> dialog.cancel());
builder.create().show();
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java
index 2c178496e..43cd5f170 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/flattr/SimpleFlattrThing.java
@@ -24,7 +24,7 @@ public class SimpleFlattrThing implements FlattrThing {
return this.status;
}
- private String title;
- private String url;
- private FlattrStatus status;
+ private final String title;
+ private final String url;
+ private final FlattrStatus status;
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java
index 5a2b6f37f..7290b9d98 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/ID3Reader.java
@@ -19,10 +19,10 @@ public class ID3Reader {
private static final int ID3_LENGTH = 3;
private static final int FRAME_ID_LENGTH = 4;
- protected static final int ACTION_SKIP = 1;
- protected static final int ACTION_DONT_SKIP = 2;
+ private static final int ACTION_SKIP = 1;
+ static final int ACTION_DONT_SKIP = 2;
- protected int readerPosition;
+ private int readerPosition;
private static final byte ENCODING_UTF16_WITH_BOM = 1;
private static final byte ENCODING_UTF16_WITHOUT_BOM = 2;
@@ -30,7 +30,7 @@ public class ID3Reader {
private TagHeader tagHeader;
- public ID3Reader() {
+ ID3Reader() {
}
public final void readInputStream(InputStream input) throws IOException,
@@ -92,7 +92,7 @@ public class ID3Reader {
* Read a certain number of bytes from the given input stream. This method
* changes the readerPosition-attribute.
*/
- protected char[] readBytes(InputStream input, int number)
+ char[] readBytes(InputStream input, int number)
throws IOException, ID3ReaderException {
char[] header = new char[number];
for (int i = 0; i < number; i++) {
@@ -111,7 +111,7 @@ public class ID3Reader {
* Skip a certain number of bytes on the given input stream. This method
* changes the readerPosition-attribute.
*/
- protected void skipBytes(InputStream input, int number) throws IOException {
+ void skipBytes(InputStream input, int number) throws IOException {
if (number <= 0) {
number = 1;
}
@@ -193,7 +193,6 @@ public class ID3Reader {
protected int readISOString(StringBuilder buffer, InputStream input, int max)
throws IOException, ID3ReaderException {
-
int bytesRead = 0;
char c;
while (++bytesRead <= max && (c = (char) input.read()) > 0) {
@@ -231,20 +230,20 @@ public class ID3Reader {
return i;
}
- public int onStartTagHeader(TagHeader header) {
+ int onStartTagHeader(TagHeader header) {
return ACTION_SKIP;
}
- public int onStartFrameHeader(FrameHeader header, InputStream input)
+ int onStartFrameHeader(FrameHeader header, InputStream input)
throws IOException, ID3ReaderException {
return ACTION_SKIP;
}
- public void onEndTag() {
+ void onEndTag() {
}
- public void onNoTagHeaderFound() {
+ void onNoTagHeaderFound() {
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java
index 89eab1398..2f3f378ab 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/FrameHeader.java
@@ -2,7 +2,7 @@ package de.danoeh.antennapod.core.util.id3reader.model;
public class FrameHeader extends Header {
- protected char flags;
+ private final char flags;
public FrameHeader(String id, int size, char flags) {
super(id, size);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java
index 346e2893f..29185748f 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/Header.java
@@ -2,10 +2,10 @@ package de.danoeh.antennapod.core.util.id3reader.model;
public abstract class Header {
- protected String id;
- protected int size;
+ final String id;
+ final int size;
- public Header(String id, int size) {
+ Header(String id, int size) {
super();
this.id = id;
this.size = size;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java
index 0a6b8357f..b652a139c 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/id3reader/model/TagHeader.java
@@ -2,8 +2,8 @@ package de.danoeh.antennapod.core.util.id3reader.model;
public class TagHeader extends Header {
- protected char version;
- protected byte flags;
+ private final char version;
+ private final byte flags;
public TagHeader(String id, int size, char version, byte flags) {
super(id, size);
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
index c4acdb65e..645bae5f3 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/ExternalMedia.java
@@ -23,7 +23,7 @@ public class ExternalMedia implements Playable {
public static final String PREF_MEDIA_TYPE = "ExternalMedia.PrefMediaType";
public static final String PREF_LAST_PLAYED_TIME = "ExternalMedia.PrefLastPlayedTime";
- private String source;
+ private final String source;
private String episodeTitle;
private String feedTitle;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java
index d67153a4e..aba395ec1 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/IPlayer.java
@@ -45,7 +45,7 @@ public interface IPlayer {
void setScreenOnWhilePlaying(boolean screenOn);
void setDataSource(String path) throws IllegalStateException, IOException,
- IllegalArgumentException, SecurityException;
+ IllegalArgumentException, SecurityException;
void setDisplay(SurfaceHolder sh);
@@ -67,7 +67,7 @@ public interface IPlayer {
void stop();
- public void setVideoScalingMode(int mode);
+ void setVideoScalingMode(int mode);
- public void setWakeMode(Context context, int mode);
+ void setWakeMode(Context context, int mode);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
index 9d3854f41..a160b4f0a 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/PlaybackController.java
@@ -87,13 +87,7 @@ public abstract class PlaybackController {
Thread t = new Thread(r);
t.setPriority(Thread.MIN_PRIORITY);
return t;
- }, new RejectedExecutionHandler() {
- @Override
- public void rejectedExecution(Runnable r,
- ThreadPoolExecutor executor) {
- Log.w(TAG, "Rejected execution of runnable in schedExecutor");
- }
- }
+ }, (r, executor) -> Log.w(TAG, "Rejected execution of runnable in schedExecutor")
);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
index efdf46a97..34cfe6d05 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/playback/Timeline.java
@@ -14,6 +14,7 @@ import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
+import java.util.Locale;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -42,22 +43,22 @@ public class Timeline {
private final int pageMargin;
public Timeline(Context context, ShownotesProvider shownotesProvider) {
- if (shownotesProvider == null) throw new IllegalArgumentException("shownotesProvider = null");
+ if (shownotesProvider == null) {
+ throw new IllegalArgumentException("shownotesProvider = null");
+ }
this.shownotesProvider = shownotesProvider;
noShownotesLabel = context.getString(R.string.no_shownotes_label);
- TypedArray res = context.getTheme().obtainStyledAttributes(
- new int[]{ android.R.attr.textColorPrimary});
+ TypedArray res = context.getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorPrimary});
@ColorInt int col = res.getColor(0, 0);
colorPrimaryString = "rgba(" + Color.red(col) + "," + Color.green(col) + "," +
- Color.blue(col) + "," + (Color.alpha(col)/256.0) + ")";
+ Color.blue(col) + "," + (Color.alpha(col) / 255.0) + ")";
res.recycle();
- res = context.getTheme().obtainStyledAttributes(
- new int[]{android.R.attr.textColorSecondary});
+ res = context.getTheme().obtainStyledAttributes(new int[]{android.R.attr.textColorSecondary});
col = res.getColor(0, 0);
colorSecondaryString = "rgba(" + Color.red(col) + "," + Color.green(col) + "," +
- Color.blue(col) + "," + (Color.alpha(col)/256.0) + ")";
+ Color.blue(col) + "," + (Color.alpha(col) / 255.0) + ")";
res.recycle();
pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 8,
@@ -93,9 +94,9 @@ public class Timeline {
return null;
}
- if(TextUtils.isEmpty(shownotes)) {
+ if (TextUtils.isEmpty(shownotes)) {
Log.d(TAG, "shownotesProvider contained no shownotes. Returning 'no shownotes' message");
- shownotes ="<html>" +
+ shownotes = "<html>" +
"<head>" +
"<style type='text/css'>" +
"html, body { margin: 0; padding: 0; width: 100%; height: 100%; } " +
@@ -113,15 +114,15 @@ public class Timeline {
}
// replace ASCII line breaks with HTML ones if shownotes don't contain HTML line breaks already
- if(!LINE_BREAK_REGEX.matcher(shownotes).find() && !shownotes.contains("<p>")) {
+ if (!LINE_BREAK_REGEX.matcher(shownotes).find() && !shownotes.contains("<p>")) {
shownotes = shownotes.replace("\n", "<br />");
}
Document document = Jsoup.parse(shownotes);
// apply style
- String styleStr = String.format(WEBVIEW_STYLE, colorPrimaryString, "100%", pageMargin,
- pageMargin, pageMargin, pageMargin);
+ String styleStr = String.format(Locale.getDefault(), WEBVIEW_STYLE, colorPrimaryString, "100%",
+ pageMargin, pageMargin, pageMargin, pageMargin);
document.head().appendElement("style").attr("type", "text/css").text(styleStr);
// apply timecode links
@@ -139,7 +140,7 @@ public class Timeline {
String rep;
if (playable == null || playable.getDuration() > time) {
- rep = String.format(TIMECODE_LINK, time, group);
+ rep = String.format(Locale.getDefault(), TIMECODE_LINK, time, group);
} else {
rep = group;
}
@@ -150,7 +151,7 @@ public class Timeline {
element.html(buffer.toString());
}
}
-
+
return document.toString();
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java
index 13cb9f002..c5ad9cfd6 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/FeedDiscoverer.java
@@ -41,7 +41,7 @@ public class FeedDiscoverer {
* @return A map which contains the feed URLs as keys and titles as values (the feed URL is also used as a title if
* a title cannot be found).
*/
- public Map<String, String> findLinks(String in, String baseUrl) throws IOException {
+ public Map<String, String> findLinks(String in, String baseUrl) {
return findLinks(Jsoup.parse(in), baseUrl);
}
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java
index c497bfb4f..cc6a8ec90 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/syndication/HtmlToPlainText.java
@@ -42,7 +42,7 @@ public class HtmlToPlainText {
// the formatting rules, implemented in a breadth-first DOM traverse
private static class FormattingVisitor implements NodeVisitor {
- private StringBuilder accum = new StringBuilder(); // holds the accumulated text
+ private final StringBuilder accum = new StringBuilder(); // holds the accumulated text
// hit when the node is first seen
public void head(Node node, int depth) {
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java
index 4799d3881..cdf171299 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/OggInputStream.java
@@ -6,8 +6,8 @@ import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
-public class OggInputStream extends InputStream {
- private InputStream input;
+class OggInputStream extends InputStream {
+ private final InputStream input;
/** True if OggInputStream is currently inside an Ogg page. */
private boolean isInPage;
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java
index 5f9dd0faf..ff7508390 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentHeader.java
@@ -1,7 +1,7 @@
package de.danoeh.antennapod.core.util.vorbiscommentreader;
-public class VorbisCommentHeader {
- private String vendorString;
- private long userCommentLength;
+class VorbisCommentHeader {
+ private final String vendorString;
+ private final long userCommentLength;
public VorbisCommentHeader(String vendorString, long userCommentLength) {
super();
diff --git a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java
index 49ea18721..55498afcb 100644
--- a/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java
+++ b/core/src/main/java/de/danoeh/antennapod/core/util/vorbiscommentreader/VorbisCommentReader.java
@@ -19,29 +19,29 @@ public abstract class VorbisCommentReader {
private static final int PACKET_TYPE_COMMENT = 3;
/** Called when Reader finds identification header. */
- public abstract void onVorbisCommentFound();
+ protected abstract void onVorbisCommentFound();
- public abstract void onVorbisCommentHeaderFound(VorbisCommentHeader header);
+ protected abstract void onVorbisCommentHeaderFound(VorbisCommentHeader header);
/**
* Is called every time the Reader finds a content vector. The handler
* should return true if it wants to handle the content vector.
*/
- public abstract boolean onContentVectorKey(String content);
+ protected abstract boolean onContentVectorKey(String content);
/**
* Is called if onContentVectorKey returned true for the key.
*
* @throws VorbisCommentReaderException
*/
- public abstract void onContentVectorValue(String key, String value)
+ protected abstract void onContentVectorValue(String key, String value)
throws VorbisCommentReaderException;
- public abstract void onNoVorbisCommentFound();
+ protected abstract void onNoVorbisCommentFound();
- public abstract void onEndOfComment();
+ protected abstract void onEndOfComment();
- public abstract void onError(VorbisCommentReaderException exception);
+ protected abstract void onError(VorbisCommentReaderException exception);
public void readInputStream(InputStream input)
throws VorbisCommentReaderException {
diff --git a/core/src/main/res/drawable-hdpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-hdpi-v11/ic_stat_antenna_default.png
deleted file mode 100644
index af99f4b3b..000000000
--- a/core/src/main/res/drawable-hdpi-v11/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi-v11/ic_stat_authentication.png b/core/src/main/res/drawable-hdpi-v11/ic_stat_authentication.png
deleted file mode 100755
index 398dffa4b..000000000
--- a/core/src/main/res/drawable-hdpi-v11/ic_stat_authentication.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png
index fb15f7ee1..af99f4b3b 100644
--- a/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png
+++ b/core/src/main/res/drawable-hdpi/ic_stat_antenna_default.png
Binary files differ
diff --git a/core/src/main/res/drawable-hdpi/ic_stat_authentication.png b/core/src/main/res/drawable-hdpi/ic_stat_authentication.png
index f40820ef7..398dffa4b 100755..100644
--- a/core/src/main/res/drawable-hdpi/ic_stat_authentication.png
+++ b/core/src/main/res/drawable-hdpi/ic_stat_authentication.png
Binary files differ
diff --git a/core/src/main/res/drawable-ldpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-ldpi-v11/ic_stat_antenna_default.png
deleted file mode 100644
index ddf545c0b..000000000
--- a/core/src/main/res/drawable-ldpi-v11/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png
index 501dfa848..ddf545c0b 100644
--- a/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png
+++ b/core/src/main/res/drawable-ldpi/ic_stat_antenna_default.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-mdpi-v11/ic_stat_antenna_default.png
deleted file mode 100644
index 41fd20655..000000000
--- a/core/src/main/res/drawable-mdpi-v11/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi-v11/ic_stat_authentication.png b/core/src/main/res/drawable-mdpi-v11/ic_stat_authentication.png
deleted file mode 100755
index 550b56b33..000000000
--- a/core/src/main/res/drawable-mdpi-v11/ic_stat_authentication.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png
index 152239888..41fd20655 100644
--- a/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png
+++ b/core/src/main/res/drawable-mdpi/ic_stat_antenna_default.png
Binary files differ
diff --git a/core/src/main/res/drawable-mdpi/ic_stat_authentication.png b/core/src/main/res/drawable-mdpi/ic_stat_authentication.png
index 7fab11a83..550b56b33 100755..100644
--- a/core/src/main/res/drawable-mdpi/ic_stat_authentication.png
+++ b/core/src/main/res/drawable-mdpi/ic_stat_authentication.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi-v11/ic_stat_antenna_default.png b/core/src/main/res/drawable-xhdpi-v11/ic_stat_antenna_default.png
deleted file mode 100644
index 30431ed6a..000000000
--- a/core/src/main/res/drawable-xhdpi-v11/ic_stat_antenna_default.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi-v11/ic_stat_authentication.png b/core/src/main/res/drawable-xhdpi-v11/ic_stat_authentication.png
deleted file mode 100755
index e83cbc333..000000000
--- a/core/src/main/res/drawable-xhdpi-v11/ic_stat_authentication.png
+++ /dev/null
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png b/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png
index 3d8a046a8..30431ed6a 100644
--- a/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png
+++ b/core/src/main/res/drawable-xhdpi/ic_stat_antenna_default.png
Binary files differ
diff --git a/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png b/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png
index 200b60c96..e83cbc333 100755..100644
--- a/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png
+++ b/core/src/main/res/drawable-xhdpi/ic_stat_authentication.png
Binary files differ
diff --git a/core/src/main/res/values-v11/colors.xml b/core/src/main/res/values-v11/colors.xml
deleted file mode 100644
index 520efaa06..000000000
--- a/core/src/main/res/values-v11/colors.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <color name="selection_background_color_dark">#286E8A</color>
- <color name="selection_background_color_light">#81CFEA</color>
-</resources> \ No newline at end of file
diff --git a/core/src/main/res/values-v14/dimens.xml b/core/src/main/res/values-v14/dimens.xml
deleted file mode 100644
index 090a476a8..000000000
--- a/core/src/main/res/values-v14/dimens.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <dimen name="widget_margin">0dp</dimen>
-
-</resources> \ No newline at end of file
diff --git a/core/src/main/res/values-v14/styles.xml b/core/src/main/res/values-v14/styles.xml
deleted file mode 100644
index 6a39d6175..000000000
--- a/core/src/main/res/values-v14/styles.xml
+++ /dev/null
@@ -1,9 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
- <style name="AntennaPod.TextView.UnreadIndicator" parent="@android:style/TextAppearance.Small">
- <item name="android:textSize">@dimen/text_size_micro</item>
- <item name="android:textColor">@color/new_indicator_green</item>
- <item name="android:text">@string/new_label</item>
- <item name="android:textAllCaps">true</item>
- </style>
-</resources> \ No newline at end of file
diff --git a/core/src/main/res/values/colors.xml b/core/src/main/res/values/colors.xml
index a570a3fcb..981d16d03 100644
--- a/core/src/main/res/values/colors.xml
+++ b/core/src/main/res/values/colors.xml
@@ -21,9 +21,8 @@
<color name="new_indicator_green">#669900</color>
<color name="image_readability_tint">#80000000</color>
- <!-- Use Gingerbread-orange -->
- <color name="selection_background_color_dark">#FEBB20</color>
- <color name="selection_background_color_light">#FEBB20</color>
+ <color name="selection_background_color_dark">#286E8A</color>
+ <color name="selection_background_color_light">#81CFEA</color>
<!-- Theme colors -->
<color name="primary_light">#FFFFFF</color>
diff --git a/core/src/main/res/values/dimens.xml b/core/src/main/res/values/dimens.xml
index a9a3aa8d9..46da1d68e 100644
--- a/core/src/main/res/values/dimens.xml
+++ b/core/src/main/res/values/dimens.xml
@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
- <dimen name="widget_margin">8dp</dimen>
+ <dimen name="widget_margin">0dp</dimen>
<dimen name="thumbnail_length">70dp</dimen>
<dimen name="external_player_height">56dp</dimen>
<dimen name="enc_icons_size">20dp</dimen>
diff --git a/core/src/main/res/values/styles.xml b/core/src/main/res/values/styles.xml
index a88d8c3a8..b9a9fb293 100644
--- a/core/src/main/res/values/styles.xml
+++ b/core/src/main/res/values/styles.xml
@@ -299,6 +299,7 @@
<item name="android:textSize">@dimen/text_size_micro</item>
<item name="android:textColor">@color/new_indicator_green</item>
<item name="android:text">@string/new_label</item>
+ <item name="android:textAllCaps">true</item>
</style>
<style name="Widget.AntennaPod.Button" parent="Widget.AppCompat.Button">