From 92ab575b150ab49ca85e0ac994558142e49c9e68 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Fri, 5 Apr 2024 19:20:27 +0200 Subject: Delete core module (#7060) --- app/build.gradle | 2 +- app/src/main/AndroidManifest.xml | 7 +- app/src/main/assets/shownotes-style.css | 30 +++ .../actionbutton/VisitWebsiteActionButton.java | 2 +- .../antennapod/ui/cleaner/ShownotesCleaner.java | 2 +- .../ui/episodeslist/EpisodeItemListAdapter.java | 6 +- .../ui/episodeslist/EpisodesListFragment.java | 7 +- .../ui/episodeslist/FeedItemMenuHandler.java | 9 +- .../ui/episodeslist/HorizontalItemListAdapter.java | 6 +- .../ui/episodeslist/MoreContentListFooterUtil.java | 3 +- .../ui/screen/PlaybackHistoryFragment.java | 2 +- .../antennapod/ui/screen/SearchFragment.java | 5 +- .../ui/screen/chapter/ChaptersFragment.java | 4 +- .../ui/screen/chapter/ChaptersListAdapter.java | 2 +- .../download/CompletedDownloadsFragment.java | 7 +- .../ui/screen/download/DownloadErrorLabel.java | 4 +- .../ui/screen/drawer/NavDrawerFragment.java | 2 +- .../ui/screen/episode/ItemPagerFragment.java | 18 +- .../ui/screen/feed/FeedInfoFragment.java | 2 +- .../ui/screen/feed/FeedItemFilterGroup.java | 2 +- .../ui/screen/feed/FeedItemlistFragment.java | 10 +- .../ui/screen/feed/RemoveFeedDialog.java | 2 +- .../ui/screen/feed/RenameFeedDialog.java | 4 +- .../home/sections/EpisodesSurpriseSection.java | 5 +- .../ui/screen/home/sections/InboxSection.java | 3 +- .../ui/screen/home/sections/QueueSection.java | 5 +- .../onlinefeedview/OnlineFeedViewActivity.java | 2 +- .../screen/playback/audio/AudioPlayerFragment.java | 6 +- .../ui/screen/playback/audio/CoverFragment.java | 6 +- .../screen/playback/video/VideoplayerActivity.java | 5 +- .../ui/screen/preferences/BugReportActivity.java | 2 +- .../preferences/MainPreferencesFragment.java | 2 +- .../antennapod/ui/screen/queue/QueueFragment.java | 11 +- .../ui/screen/rating/RatingDialogFragment.java | 2 +- .../ui/screen/rating/RatingDialogManager.java | 2 +- .../ui/screen/subscriptions/FeedMenuHandler.java | 2 +- .../subscriptions/SubscriptionsFilterGroup.java | 2 +- .../de/danoeh/antennapod/ui/share/ShareUtils.java | 7 +- .../antennapod/ui/view/ShownotesWebView.java | 2 +- .../res/drawable-anydpi-v26/ic_shortcut_feed.xml | 9 + .../drawable-anydpi-v26/ic_shortcut_playlist.xml | 9 + .../drawable-anydpi-v26/ic_shortcut_refresh.xml | 9 + .../ic_shortcut_subscriptions.xml | 9 + app/src/main/res/drawable/ic_shortcut_feed.xml | 7 + app/src/main/res/drawable/ic_shortcut_playlist.xml | 7 + app/src/main/res/drawable/ic_shortcut_refresh.xml | 7 + .../res/drawable/ic_shortcut_subscriptions.xml | 7 + .../main/res/layout/more_content_list_footer.xml | 36 +++ app/src/main/res/layout/popup_bubble_view.xml | 41 +++ app/src/main/res/values/ids.xml | 17 ++ core/.gitignore | 1 - core/build.gradle | 65 ----- core/lint.xml | 7 - core/src/main/AndroidManifest.xml | 15 -- core/src/main/assets/shownotes-style.css | 30 --- .../danoeh/antennapod/core/util/ChapterMerger.java | 70 ------ .../danoeh/antennapod/core/util/ChapterUtils.java | 241 ------------------ .../antennapod/core/util/ConfirmationDialog.java | 56 ----- .../danoeh/antennapod/core/util/FeedItemUtil.java | 69 ----- .../de/danoeh/antennapod/core/util/FeedUtil.java | 13 - .../danoeh/antennapod/core/util/IntentUtils.java | 69 ----- .../core/util/ReleaseScheduleGuesser.java | 219 ---------------- .../danoeh/antennapod/core/util/StorageUtils.java | 42 ---- .../res/drawable-anydpi-v26/ic_shortcut_feed.xml | 9 - .../drawable-anydpi-v26/ic_shortcut_playlist.xml | 9 - .../drawable-anydpi-v26/ic_shortcut_refresh.xml | 9 - .../ic_shortcut_subscriptions.xml | 9 - core/src/main/res/drawable/bg_blue_gradient.xml | 10 - core/src/main/res/drawable/bg_circle.xml | 6 - core/src/main/res/drawable/bg_drawer_item.xml | 20 -- core/src/main/res/drawable/bg_gradient.xml | 10 - core/src/main/res/drawable/bg_pill.xml | 7 - core/src/main/res/drawable/bg_rounded_corners.xml | 6 - core/src/main/res/drawable/ic_shortcut_feed.xml | 7 - .../src/main/res/drawable/ic_shortcut_playlist.xml | 7 - core/src/main/res/drawable/ic_shortcut_refresh.xml | 7 - .../res/drawable/ic_shortcut_subscriptions.xml | 7 - .../main/res/layout/more_content_list_footer.xml | 36 --- core/src/main/res/layout/popup_bubble_view.xml | 41 --- core/src/main/res/values/arrays.xml | 277 --------------------- core/src/main/res/values/ids.xml | 17 -- core/src/main/res/values/keycodes.xml | 9 - core/src/test/java/android/util/Log.java | 246 ------------------ .../antennapod/core/util/FeedItemUtilTest.java | 105 -------- .../util/ReleaseScheduleGuesserRealWorldTest.java | 125 ---------- .../core/util/ReleaseScheduleGuesserTest.java | 172 ------------- core/src/test/resources/release_dates.csv | 150 ----------- core/src/test/resources/release_dates.sh | 10 - .../antennapod/event/EpisodeDownloadEvent.java | 12 + .../de/danoeh/antennapod/event/FeedItemEvent.java | 10 + .../de/danoeh/antennapod/model/feed/Chapter.java | 14 ++ .../de/danoeh/antennapod/model/feed/FeedItem.java | 14 ++ .../model/feed/FeedItemFallbackLinkTest.java | 59 +++++ net/download/service/build.gradle | 2 +- net/download/service/src/main/AndroidManifest.xml | 1 - .../service/episode/MediaDownloadedHandler.java | 2 +- .../service/feed/FeedUpdateManagerImpl.java | 2 +- .../service/feed/remote/HttpDownloader.java | 17 +- .../service/episode/autodownload/DbWriterTest.java | 8 +- .../antennapod/parser/feed/util/DateUtils.java | 9 +- playback/service/build.gradle | 2 +- .../playback/service/PlaybackService.java | 12 +- .../internal/PlaybackServiceTaskManager.java | 2 +- scripts/makeRelease.sh | 2 +- settings.gradle | 2 +- storage/database/build.gradle | 1 + .../storage/database/ReleaseScheduleGuesser.java | 219 ++++++++++++++++ .../ReleaseScheduleGuesserRealWorldTest.java | 128 ++++++++++ .../database/ReleaseScheduleGuesserTest.java | 172 +++++++++++++ .../database/src/test/resources/release_dates.csv | 150 +++++++++++ .../database/src/test/resources/release_dates.sh | 10 + ui/chapters/README.md | 3 + ui/chapters/build.gradle | 21 ++ .../antennapod/ui/chapters/ChapterMerger.java | 70 ++++++ .../antennapod/ui/chapters/ChapterUtils.java | 228 +++++++++++++++++ ui/common/build.gradle | 2 + .../antennapod/ui/common/ConfirmationDialog.java | 54 ++++ .../danoeh/antennapod/ui/common/IntentUtils.java | 67 +++++ .../src/main/res/drawable/bg_blue_gradient.xml | 10 + ui/common/src/main/res/drawable/bg_circle.xml | 6 + ui/common/src/main/res/drawable/bg_drawer_item.xml | 20 ++ ui/common/src/main/res/drawable/bg_gradient.xml | 10 + ui/common/src/main/res/drawable/bg_pill.xml | 7 + .../src/main/res/drawable/bg_rounded_corners.xml | 6 + ui/common/website-languages.txt | 7 + ui/preferences/build.gradle | 1 - .../src/main/assets/website-languages.txt | 7 - .../ui/preferences/screen/about/AboutFragment.java | 2 +- .../preferences/screen/about/LicensesFragment.java | 2 +- .../screen/downloads/DataFolderAdapter.java | 12 +- ui/preferences/src/main/res/values/arrays.xml | 277 +++++++++++++++++++++ ui/preferences/src/main/res/values/keycodes.xml | 9 + ui/statistics/build.gradle | 1 - .../ui/statistics/StatisticsFragment.java | 2 +- .../ui/statistics/feed/FeedStatisticsFragment.java | 2 +- 135 files changed, 1899 insertions(+), 2345 deletions(-) create mode 100644 app/src/main/assets/shownotes-style.css create mode 100644 app/src/main/res/drawable-anydpi-v26/ic_shortcut_feed.xml create mode 100644 app/src/main/res/drawable-anydpi-v26/ic_shortcut_playlist.xml create mode 100644 app/src/main/res/drawable-anydpi-v26/ic_shortcut_refresh.xml create mode 100644 app/src/main/res/drawable-anydpi-v26/ic_shortcut_subscriptions.xml create mode 100644 app/src/main/res/drawable/ic_shortcut_feed.xml create mode 100644 app/src/main/res/drawable/ic_shortcut_playlist.xml create mode 100644 app/src/main/res/drawable/ic_shortcut_refresh.xml create mode 100644 app/src/main/res/drawable/ic_shortcut_subscriptions.xml create mode 100644 app/src/main/res/layout/more_content_list_footer.xml create mode 100644 app/src/main/res/layout/popup_bubble_view.xml create mode 100644 app/src/main/res/values/ids.xml delete mode 100644 core/.gitignore delete mode 100644 core/build.gradle delete mode 100644 core/lint.xml delete mode 100644 core/src/main/AndroidManifest.xml delete mode 100644 core/src/main/assets/shownotes-style.css delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/ChapterMerger.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/ChapterUtils.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/ConfirmationDialog.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/FeedItemUtil.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/FeedUtil.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/IntentUtils.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/ReleaseScheduleGuesser.java delete mode 100644 core/src/main/java/de/danoeh/antennapod/core/util/StorageUtils.java delete mode 100644 core/src/main/res/drawable-anydpi-v26/ic_shortcut_feed.xml delete mode 100644 core/src/main/res/drawable-anydpi-v26/ic_shortcut_playlist.xml delete mode 100644 core/src/main/res/drawable-anydpi-v26/ic_shortcut_refresh.xml delete mode 100644 core/src/main/res/drawable-anydpi-v26/ic_shortcut_subscriptions.xml delete mode 100644 core/src/main/res/drawable/bg_blue_gradient.xml delete mode 100644 core/src/main/res/drawable/bg_circle.xml delete mode 100644 core/src/main/res/drawable/bg_drawer_item.xml delete mode 100644 core/src/main/res/drawable/bg_gradient.xml delete mode 100644 core/src/main/res/drawable/bg_pill.xml delete mode 100644 core/src/main/res/drawable/bg_rounded_corners.xml delete mode 100644 core/src/main/res/drawable/ic_shortcut_feed.xml delete mode 100644 core/src/main/res/drawable/ic_shortcut_playlist.xml delete mode 100644 core/src/main/res/drawable/ic_shortcut_refresh.xml delete mode 100644 core/src/main/res/drawable/ic_shortcut_subscriptions.xml delete mode 100644 core/src/main/res/layout/more_content_list_footer.xml delete mode 100644 core/src/main/res/layout/popup_bubble_view.xml delete mode 100644 core/src/main/res/values/arrays.xml delete mode 100644 core/src/main/res/values/ids.xml delete mode 100644 core/src/main/res/values/keycodes.xml delete mode 100644 core/src/test/java/android/util/Log.java delete mode 100644 core/src/test/java/de/danoeh/antennapod/core/util/FeedItemUtilTest.java delete mode 100644 core/src/test/java/de/danoeh/antennapod/core/util/ReleaseScheduleGuesserRealWorldTest.java delete mode 100644 core/src/test/java/de/danoeh/antennapod/core/util/ReleaseScheduleGuesserTest.java delete mode 100644 core/src/test/resources/release_dates.csv delete mode 100755 core/src/test/resources/release_dates.sh create mode 100644 model/src/test/java/de/danoeh/antennapod/model/feed/FeedItemFallbackLinkTest.java create mode 100644 storage/database/src/main/java/de/danoeh/antennapod/storage/database/ReleaseScheduleGuesser.java create mode 100644 storage/database/src/test/java/de/danoeh/antennapod/storage/database/ReleaseScheduleGuesserRealWorldTest.java create mode 100644 storage/database/src/test/java/de/danoeh/antennapod/storage/database/ReleaseScheduleGuesserTest.java create mode 100644 storage/database/src/test/resources/release_dates.csv create mode 100644 storage/database/src/test/resources/release_dates.sh create mode 100644 ui/chapters/README.md create mode 100644 ui/chapters/build.gradle create mode 100644 ui/chapters/src/main/java/de/danoeh/antennapod/ui/chapters/ChapterMerger.java create mode 100644 ui/chapters/src/main/java/de/danoeh/antennapod/ui/chapters/ChapterUtils.java create mode 100644 ui/common/src/main/java/de/danoeh/antennapod/ui/common/ConfirmationDialog.java create mode 100644 ui/common/src/main/java/de/danoeh/antennapod/ui/common/IntentUtils.java create mode 100644 ui/common/src/main/res/drawable/bg_blue_gradient.xml create mode 100644 ui/common/src/main/res/drawable/bg_circle.xml create mode 100644 ui/common/src/main/res/drawable/bg_drawer_item.xml create mode 100644 ui/common/src/main/res/drawable/bg_gradient.xml create mode 100644 ui/common/src/main/res/drawable/bg_pill.xml create mode 100644 ui/common/src/main/res/drawable/bg_rounded_corners.xml create mode 100644 ui/common/website-languages.txt delete mode 100644 ui/preferences/src/main/assets/website-languages.txt create mode 100644 ui/preferences/src/main/res/values/arrays.xml create mode 100644 ui/preferences/src/main/res/values/keycodes.xml diff --git a/app/build.gradle b/app/build.gradle index 449488f58..b96b96677 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -62,7 +62,6 @@ android { } dependencies { - implementation project(":core") implementation project(":event") implementation project(':model') implementation project(':net:common') @@ -91,6 +90,7 @@ dependencies { implementation project(':ui:statistics') implementation project(':net:sync:service-interface') implementation project(':playback:service') + implementation project(':ui:chapters') annotationProcessor "androidx.annotation:annotation:$annotationVersion" implementation "androidx.appcompat:appcompat:$appcompatVersion" diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3d608133f..81b809c89 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,12 +4,15 @@ android:installLocation="auto"> - + + + + + { MainActivity activity = mainActivityRef.get(); if (activity != null && !inActionMode()) { - long[] ids = FeedItemUtil.getIds(episodes); - int position = ArrayUtils.indexOf(ids, item.getId()); - activity.loadChildFragment(ItemPagerFragment.newInstance(ids, position)); + activity.loadChildFragment(ItemPagerFragment.newInstance(episodes, item)); } else { toggleSelection(holder.getBindingAdapterPosition()); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/EpisodesListFragment.java index 054183f7c..90f7cf1e5 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/EpisodesListFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/EpisodesListFragment.java @@ -36,9 +36,8 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.util.ConfirmationDialog; +import de.danoeh.antennapod.ui.common.ConfirmationDialog; import de.danoeh.antennapod.ui.MenuItemUtils; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.event.EpisodeDownloadEvent; import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.event.FeedListUpdateEvent; @@ -334,7 +333,7 @@ public abstract class EpisodesListFragment extends Fragment public void onEventMainThread(FeedItemEvent event) { Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); for (FeedItem item : event.items) { - int pos = FeedItemUtil.indexOfItemWithId(episodes, item.getId()); + int pos = FeedItemEvent.indexOfItemWithId(episodes, item.getId()); if (pos >= 0) { episodes.remove(pos); if (getFilter().matches(item)) { @@ -378,7 +377,7 @@ public abstract class EpisodesListFragment extends Fragment @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(EpisodeDownloadEvent event) { for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(episodes, downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(episodes, downloadUrl); if (pos >= 0) { listAdapter.notifyItemChangedCompat(pos); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/FeedItemMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/FeedItemMenuHandler.java index 12b455d1f..55f865ef6 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/FeedItemMenuHandler.java @@ -18,12 +18,10 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.net.sync.serviceinterface.SynchronizationQueueSink; import de.danoeh.antennapod.storage.preferences.PlaybackPreferences; -import de.danoeh.antennapod.core.util.FeedUtil; import de.danoeh.antennapod.playback.service.PlaybackServiceInterface; import de.danoeh.antennapod.storage.database.DBWriter; import de.danoeh.antennapod.storage.preferences.SynchronizationSettings; -import de.danoeh.antennapod.core.util.FeedItemUtil; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.playback.service.PlaybackStatus; import de.danoeh.antennapod.ui.share.ShareUtils; import de.danoeh.antennapod.ui.share.ShareDialog; @@ -198,7 +196,7 @@ public class FeedItemMenuHandler { } DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, true); } else if (menuItemId == R.id.visit_website_item) { - IntentUtils.openInBrowser(context, FeedItemUtil.getLinkWithFallback(selectedItem)); + IntentUtils.openInBrowser(context, selectedItem.getLinkWithFallback()); } else if (menuItemId == R.id.share_item) { ShareDialog shareDialog = ShareDialog.newInstance(selectedItem); shareDialog.show((fragment.getActivity().getSupportFragmentManager()), "ShareEpisodeDialog"); @@ -234,7 +232,8 @@ public class FeedItemMenuHandler { if (media == null) { return; } - boolean shouldAutoDelete = FeedUtil.shouldAutoDeleteItemsOnThatFeed(item.getFeed()); + boolean shouldAutoDelete = UserPreferences.isAutoDelete() + && (!item.getFeed().isLocalFeed() || UserPreferences.isAutoDeleteLocal()); int smartMarkAsPlayedSecs = UserPreferences.getSmartMarkAsPlayedSecs(); boolean almostEnded = media.getDuration() > 0 && media.getPosition() >= media.getDuration() - smartMarkAsPlayedSecs * 1000; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/HorizontalItemListAdapter.java b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/HorizontalItemListAdapter.java index f40851ec2..d4407bf86 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/HorizontalItemListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/HorizontalItemListAdapter.java @@ -9,10 +9,8 @@ import androidx.annotation.Nullable; import androidx.recyclerview.widget.RecyclerView; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.ui.screen.episode.ItemPagerFragment; import de.danoeh.antennapod.model.feed.FeedItem; -import org.apache.commons.lang3.ArrayUtils; import java.lang.ref.WeakReference; import java.util.ArrayList; @@ -68,9 +66,7 @@ public class HorizontalItemListAdapter extends RecyclerView.Adapter { MainActivity activity = mainActivityRef.get(); if (activity != null) { - long[] ids = FeedItemUtil.getIds(data); - int clickPosition = ArrayUtils.indexOf(ids, item.getId()); - activity.loadChildFragment(ItemPagerFragment.newInstance(ids, clickPosition)); + activity.loadChildFragment(ItemPagerFragment.newInstance(data, item)); } }); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/MoreContentListFooterUtil.java b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/MoreContentListFooterUtil.java index fe9ce71f0..d120e5943 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/MoreContentListFooterUtil.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/episodeslist/MoreContentListFooterUtil.java @@ -3,8 +3,7 @@ package de.danoeh.antennapod.ui.episodeslist; import android.view.View; import android.widget.ImageView; import android.widget.ProgressBar; - -import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.R; /** * Utility methods for the more_content_list_footer layout. diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/PlaybackHistoryFragment.java index 4efdf38a3..a02f86bd2 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/PlaybackHistoryFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/PlaybackHistoryFragment.java @@ -8,7 +8,7 @@ import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.util.ConfirmationDialog; +import de.danoeh.antennapod.ui.common.ConfirmationDialog; import de.danoeh.antennapod.storage.database.DBReader; import de.danoeh.antennapod.storage.database.DBWriter; import de.danoeh.antennapod.event.playback.PlaybackHistoryEvent; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/SearchFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/SearchFragment.java index 8e21117b3..85d837a51 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/SearchFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/SearchFragment.java @@ -40,7 +40,6 @@ import de.danoeh.antennapod.event.UnreadItemsUpdateEvent; import de.danoeh.antennapod.ui.episodeslist.EpisodeMultiSelectActionHandler; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedItem; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.ui.episodeslist.FeedItemMenuHandler; import de.danoeh.antennapod.net.discovery.CombinedSearcher; import de.danoeh.antennapod.storage.database.DBReader; @@ -327,7 +326,7 @@ public class SearchFragment extends Fragment implements EpisodeItemListAdapter.O } for (int i = 0, size = event.items.size(); i < size; i++) { FeedItem item = event.items.get(i); - int pos = FeedItemUtil.indexOfItemWithId(results, item.getId()); + int pos = FeedItemEvent.indexOfItemWithId(results, item.getId()); if (pos >= 0) { results.remove(pos); results.add(pos, item); @@ -342,7 +341,7 @@ public class SearchFragment extends Fragment implements EpisodeItemListAdapter.O return; } for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(results, downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(results, downloadUrl); if (pos >= 0) { adapter.notifyItemChangedCompat(pos); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersFragment.java index f1dcbf415..8fea6e209 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersFragment.java @@ -19,13 +19,13 @@ import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.util.ChapterUtils; import de.danoeh.antennapod.event.playback.PlaybackPositionEvent; import de.danoeh.antennapod.model.feed.Chapter; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.model.playback.Playable; import de.danoeh.antennapod.playback.base.PlayerStatus; import de.danoeh.antennapod.playback.service.PlaybackController; +import de.danoeh.antennapod.ui.chapters.ChapterUtils; import io.reactivex.Maybe; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; @@ -130,7 +130,7 @@ public class ChaptersFragment extends AppCompatDialogFragment { if (controller == null) { return -1; } - return ChapterUtils.getCurrentChapterIndex(media, controller.getPosition()); + return Chapter.getAfterPosition(media.getChapters(), controller.getPosition()); } private void loadMediaInfo(boolean forceRefresh) { diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersListAdapter.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersListAdapter.java index 33e55a7e2..bf84b7bd7 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersListAdapter.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/chapter/ChaptersListAdapter.java @@ -19,7 +19,7 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.model.feed.Chapter; import de.danoeh.antennapod.ui.common.Converter; import de.danoeh.antennapod.model.feed.EmbeddedChapterImage; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.model.playback.Playable; import de.danoeh.antennapod.ui.common.CircularProgressBar; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/download/CompletedDownloadsFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/download/CompletedDownloadsFragment.java index 15be1e230..260f3e6a0 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/download/CompletedDownloadsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/download/CompletedDownloadsFragment.java @@ -23,7 +23,6 @@ import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.ui.screen.SearchFragment; import de.danoeh.antennapod.net.download.serviceinterface.FeedUpdateManager; import de.danoeh.antennapod.storage.database.DBReader; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.ui.screen.feed.ItemSortDialog; import de.danoeh.antennapod.event.EpisodeDownloadEvent; import de.danoeh.antennapod.event.FeedItemEvent; @@ -209,7 +208,7 @@ public class CompletedDownloadsFragment extends Fragment return; // Refreshed anyway } for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(items, downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(items, downloadUrl); if (pos >= 0) { adapter.notifyItemChangedCompat(pos); } @@ -249,7 +248,7 @@ public class CompletedDownloadsFragment extends Fragment } for (int i = 0, size = event.items.size(); i < size; i++) { FeedItem item = event.items.get(i); - int pos = FeedItemUtil.indexOfItemWithId(items, item.getId()); + int pos = FeedItemEvent.indexOfItemWithId(items, item.getId()); if (pos >= 0) { items.remove(pos); if (item.getMedia().isDownloaded()) { @@ -305,7 +304,7 @@ public class CompletedDownloadsFragment extends Fragment return downloadedItems; } for (String url : runningDownloads) { - if (FeedItemUtil.indexOfItemWithDownloadUrl(downloadedItems, url) != -1) { + if (EpisodeDownloadEvent.indexOfItemWithDownloadUrl(downloadedItems, url) != -1) { continue; // Already in list } mediaUrls.add(url); diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/download/DownloadErrorLabel.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/download/DownloadErrorLabel.java index e5eedd54b..7940146db 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/download/DownloadErrorLabel.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/download/DownloadErrorLabel.java @@ -1,8 +1,8 @@ package de.danoeh.antennapod.ui.screen.download; import androidx.annotation.StringRes; -import de.danoeh.antennapod.core.BuildConfig; -import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.BuildConfig; +import de.danoeh.antennapod.R; import de.danoeh.antennapod.model.download.DownloadError; /** diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/drawer/NavDrawerFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/drawer/NavDrawerFragment.java index 98690e0cf..b6580575a 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/drawer/NavDrawerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/drawer/NavDrawerFragment.java @@ -55,7 +55,7 @@ import java.util.Set; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.ui.screen.preferences.PreferenceActivity; -import de.danoeh.antennapod.core.util.ConfirmationDialog; +import de.danoeh.antennapod.ui.common.ConfirmationDialog; import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.storage.database.DBReader; import de.danoeh.antennapod.storage.database.DBWriter; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/episode/ItemPagerFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/episode/ItemPagerFragment.java index 524066587..e7f345617 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/episode/ItemPagerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/episode/ItemPagerFragment.java @@ -29,6 +29,8 @@ import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.schedulers.Schedulers; +import java.util.List; + /** * Displays information about a list of FeedItems. */ @@ -41,15 +43,21 @@ public class ItemPagerFragment extends Fragment implements MaterialToolbar.OnMen /** * Creates a new instance of an ItemPagerFragment. * - * @param feeditems The IDs of the FeedItems that belong to the same list - * @param feedItemPos The position of the FeedItem that is currently shown * @return The ItemFragment instance */ - public static ItemPagerFragment newInstance(long[] feeditems, int feedItemPos) { + public static ItemPagerFragment newInstance(List allItems, FeedItem currentItem) { + int position = 0; + long[] ids = new long[allItems.size()]; + for (int i = 0; i < allItems.size(); i++) { + ids[i] = allItems.get(i).getId(); + if (ids[i] == currentItem.getId()) { + position = i; + } + } ItemPagerFragment fragment = new ItemPagerFragment(); Bundle args = new Bundle(); - args.putLongArray(ARG_FEEDITEMS, feeditems); - args.putInt(ARG_FEEDITEM_POS, Math.max(0, feedItemPos)); + args.putLongArray(ARG_FEEDITEMS, ids); + args.putInt(ARG_FEEDITEM_POS, position); fragment.setArguments(args); return fragment; } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedInfoFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedInfoFragment.java index 3e7fd3cdc..929a68fff 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedInfoFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedInfoFragment.java @@ -37,7 +37,7 @@ import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.ui.TransitionEffect; import de.danoeh.antennapod.storage.database.DBReader; import de.danoeh.antennapod.storage.database.FeedDatabaseWriter; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.ui.share.ShareUtils; import de.danoeh.antennapod.ui.cleaner.HtmlToPlainText; import de.danoeh.antennapod.model.feed.Feed; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemFilterGroup.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemFilterGroup.java index 5cb0f36fd..b19d680da 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemFilterGroup.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemFilterGroup.java @@ -1,6 +1,6 @@ package de.danoeh.antennapod.ui.screen.feed; -import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.R; import de.danoeh.antennapod.model.feed.FeedItemFilter; public enum FeedItemFilterGroup { diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java index 7743f1cd9..b4a2556d1 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/FeedItemlistFragment.java @@ -50,8 +50,7 @@ import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.storage.database.DBReader; import de.danoeh.antennapod.storage.database.DBWriter; import de.danoeh.antennapod.storage.database.FeedItemPermutors; -import de.danoeh.antennapod.core.util.FeedItemUtil; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.ui.share.ShareUtils; import de.danoeh.antennapod.ui.episodeslist.MoreContentListFooterUtil; import de.danoeh.antennapod.databinding.FeedItemListFragmentBinding; @@ -321,8 +320,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem @Override public void onItemClick(AdapterView parent, View view, int position, long id) { MainActivity activity = (MainActivity) getActivity(); - long[] ids = FeedItemUtil.getIds(feed.getItems()); - activity.loadChildFragment(ItemPagerFragment.newInstance(ids, position)); + activity.loadChildFragment(ItemPagerFragment.newInstance(feed.getItems(), feed.getItems().get(position))); } @Subscribe(threadMode = ThreadMode.MAIN) @@ -341,7 +339,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem } for (int i = 0, size = event.items.size(); i < size; i++) { FeedItem item = event.items.get(i); - int pos = FeedItemUtil.indexOfItemWithId(feed.getItems(), item.getId()); + int pos = FeedItemEvent.indexOfItemWithId(feed.getItems(), item.getId()); if (pos >= 0) { feed.getItems().remove(pos); feed.getItems().add(pos, item); @@ -356,7 +354,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem return; } for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(feed.getItems(), downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(feed.getItems(), downloadUrl); if (pos >= 0) { adapter.notifyItemChangedCompat(pos); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RemoveFeedDialog.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RemoveFeedDialog.java index 415948a81..52bb36867 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RemoveFeedDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RemoveFeedDialog.java @@ -11,7 +11,7 @@ import java.util.Collections; import java.util.List; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.util.ConfirmationDialog; +import de.danoeh.antennapod.ui.common.ConfirmationDialog; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.storage.database.DBWriter; import io.reactivex.Completable; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RenameFeedDialog.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RenameFeedDialog.java index 4bc63f732..a2c2caaaf 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RenameFeedDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/feed/RenameFeedDialog.java @@ -54,8 +54,8 @@ public class RenameFeedDialog { renameTag(newTitle); } }) - .setNeutralButton(de.danoeh.antennapod.core.R.string.reset, null) - .setNegativeButton(de.danoeh.antennapod.core.R.string.cancel_label, null) + .setNeutralButton(R.string.reset, null) + .setNegativeButton(R.string.cancel_label, null) .show(); // To prevent cancelling the dialog on button click diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java index 451a0aedc..09f060f81 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/EpisodesSurpriseSection.java @@ -15,7 +15,6 @@ import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.ui.episodeslist.HorizontalItemListAdapter; import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.storage.database.DBReader; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.event.EpisodeDownloadEvent; import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.event.PlayerStatusEvent; @@ -105,7 +104,7 @@ public class EpisodesSurpriseSection extends HomeSection { Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]"); for (int i = 0, size = event.items.size(); i < size; i++) { FeedItem item = event.items.get(i); - int pos = FeedItemUtil.indexOfItemWithId(episodes, item.getId()); + int pos = FeedItemEvent.indexOfItemWithId(episodes, item.getId()); if (pos >= 0) { episodes.remove(pos); episodes.add(pos, item); @@ -117,7 +116,7 @@ public class EpisodesSurpriseSection extends HomeSection { @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(EpisodeDownloadEvent event) { for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(episodes, downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(episodes, downloadUrl); if (pos >= 0) { listAdapter.notifyItemChangedCompat(pos); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java index de6f6bef4..d30fa85bc 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/InboxSection.java @@ -16,7 +16,6 @@ import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter; import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.storage.database.DBReader; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.event.EpisodeDownloadEvent; import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.event.FeedListUpdateEvent; @@ -99,7 +98,7 @@ public class InboxSection extends HomeSection { @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(EpisodeDownloadEvent event) { for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(items, downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(items, downloadUrl); if (pos >= 0) { adapter.notifyItemChangedCompat(pos); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java index 57d896ae9..790992420 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/home/sections/QueueSection.java @@ -15,7 +15,6 @@ import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.ui.episodeslist.HorizontalItemListAdapter; import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.storage.database.DBReader; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.event.EpisodeDownloadEvent; import de.danoeh.antennapod.event.FeedItemEvent; import de.danoeh.antennapod.event.PlayerStatusEvent; @@ -92,7 +91,7 @@ public class QueueSection extends HomeSection { } for (int i = 0, size = event.items.size(); i < size; i++) { FeedItem item = event.items.get(i); - int pos = FeedItemUtil.indexOfItemWithId(queue, item.getId()); + int pos = FeedItemEvent.indexOfItemWithId(queue, item.getId()); if (pos >= 0) { queue.remove(pos); queue.add(pos, item); @@ -104,7 +103,7 @@ public class QueueSection extends HomeSection { @Subscribe(sticky = true, threadMode = ThreadMode.MAIN) public void onEventMainThread(EpisodeDownloadEvent event) { for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(queue, downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(queue, downloadUrl); if (pos >= 0) { listAdapter.notifyItemChangedCompat(pos); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java index 42050e718..799366ecb 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/onlinefeedview/OnlineFeedViewActivity.java @@ -54,7 +54,7 @@ import de.danoeh.antennapod.net.discovery.PodcastSearcherRegistry; import de.danoeh.antennapod.parser.feed.FeedHandler; import de.danoeh.antennapod.parser.feed.FeedHandlerResult; import de.danoeh.antennapod.model.download.DownloadError; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.net.common.UrlChecker; import de.danoeh.antennapod.ui.cleaner.HtmlToPlainText; import de.danoeh.antennapod.databinding.OnlinefeedviewActivityBinding; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/AudioPlayerFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/AudioPlayerFragment.java index 5e1f5c818..e66ed6d3e 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/AudioPlayerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/AudioPlayerFragment.java @@ -27,6 +27,7 @@ import com.google.android.material.elevation.SurfaceColors; import de.danoeh.antennapod.playback.service.PlaybackController; import de.danoeh.antennapod.ui.appstartintent.MediaButtonStarter; +import de.danoeh.antennapod.ui.chapters.ChapterUtils; import de.danoeh.antennapod.ui.episodes.PlaybackSpeedUtils; import de.danoeh.antennapod.ui.episodes.TimeSpeedConverter; import de.danoeh.antennapod.ui.screen.playback.MediaPlayerErrorDialog; @@ -43,7 +44,6 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.util.ChapterUtils; import de.danoeh.antennapod.ui.common.Converter; import de.danoeh.antennapod.ui.screen.feed.preferences.SkipPreferenceDialog; import de.danoeh.antennapod.event.FavoritesEvent; @@ -360,7 +360,7 @@ public class AudioPlayerFragment extends Fragment implements int currentPosition = converter.convert(event.getPosition()); int duration = converter.convert(event.getDuration()); int remainingTime = converter.convert(Math.max(event.getDuration() - event.getPosition(), 0)); - currentChapterIndex = ChapterUtils.getCurrentChapterIndex(controller.getMedia(), currentPosition); + currentChapterIndex = Chapter.getAfterPosition(controller.getMedia().getChapters(), currentPosition); Log.d(TAG, "currentPosition " + Converter.getDurationStringLong(currentPosition)); if (currentPosition == Playable.INVALID_TIME || duration == Playable.INVALID_TIME) { Log.w(TAG, "Could not react to position observer update because of invalid time"); @@ -406,7 +406,7 @@ public class AudioPlayerFragment extends Fragment implements float prog = progress / ((float) seekBar.getMax()); TimeSpeedConverter converter = new TimeSpeedConverter(controller.getCurrentPlaybackSpeedMultiplier()); int position = converter.convert((int) (prog * controller.getDuration())); - int newChapterIndex = ChapterUtils.getCurrentChapterIndex(controller.getMedia(), position); + int newChapterIndex = Chapter.getAfterPosition(controller.getMedia().getChapters(), position); if (newChapterIndex > -1) { if (!sbPosition.isPressed() && currentChapterIndex != newChapterIndex) { currentChapterIndex = newChapterIndex; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/CoverFragment.java index 05e6f3d6c..57794b410 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/audio/CoverFragment.java @@ -32,7 +32,7 @@ import com.bumptech.glide.request.RequestOptions; import com.google.android.material.snackbar.Snackbar; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; -import de.danoeh.antennapod.core.util.ChapterUtils; +import de.danoeh.antennapod.ui.chapters.ChapterUtils; import de.danoeh.antennapod.ui.screen.chapter.ChaptersFragment; import de.danoeh.antennapod.playback.service.PlaybackController; import de.danoeh.antennapod.ui.common.DateFormatter; @@ -160,7 +160,7 @@ public class CoverFragment extends Fragment { }); displayedChapterIndex = -1; - refreshChapterData(ChapterUtils.getCurrentChapterIndex(media, media.getPosition())); //calls displayCoverImage + refreshChapterData(Chapter.getAfterPosition(media.getChapters(), media.getPosition())); updateChapterControlVisibility(); } @@ -261,7 +261,7 @@ public class CoverFragment extends Fragment { @Subscribe(threadMode = ThreadMode.MAIN) public void onEventMainThread(PlaybackPositionEvent event) { - int newChapterIndex = ChapterUtils.getCurrentChapterIndex(media, event.getPosition()); + int newChapterIndex = Chapter.getAfterPosition(media.getChapters(), event.getPosition()); if (newChapterIndex > -1 && newChapterIndex != displayedChapterIndex) { refreshChapterData(newChapterIndex); } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/video/VideoplayerActivity.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/video/VideoplayerActivity.java index 2a0746f54..d5289d8d2 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/video/VideoplayerActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/playback/video/VideoplayerActivity.java @@ -48,8 +48,7 @@ import de.danoeh.antennapod.storage.preferences.UserPreferences; import de.danoeh.antennapod.storage.database.DBReader; import de.danoeh.antennapod.storage.database.DBWriter; import de.danoeh.antennapod.ui.common.Converter; -import de.danoeh.antennapod.core.util.FeedItemUtil; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.ui.share.ShareUtils; import de.danoeh.antennapod.databinding.VideoplayerActivityBinding; import de.danoeh.antennapod.ui.share.ShareDialog; @@ -636,7 +635,7 @@ public class VideoplayerActivity extends CastEnabledActivity implements SeekBar. } else if (StringUtils.isNotBlank(media.getWebsiteLink())) { return media.getWebsiteLink(); } else if (media instanceof FeedMedia) { - return FeedItemUtil.getLinkWithFallback(((FeedMedia) media).getItem()); + return (((FeedMedia) media).getItem()).getLinkWithFallback(); } return null; } diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/BugReportActivity.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/BugReportActivity.java index b4a5218ee..5e9de4703 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/BugReportActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/BugReportActivity.java @@ -25,7 +25,7 @@ import de.danoeh.antennapod.ui.common.ThemeSwitcher; import de.danoeh.antennapod.CrashReportWriter; import de.danoeh.antennapod.R; import de.danoeh.antennapod.storage.preferences.UserPreferences; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import org.apache.commons.io.IOUtils; import java.io.File; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/MainPreferencesFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/MainPreferencesFragment.java index 40a9dd605..7c036974b 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/MainPreferencesFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/preferences/MainPreferencesFragment.java @@ -13,7 +13,7 @@ import com.bytehamster.lib.preferencesearch.SearchConfiguration; import com.bytehamster.lib.preferencesearch.SearchPreference; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.ui.preferences.screen.about.AboutFragment; public class MainPreferencesFragment extends PreferenceFragmentCompat { diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/queue/QueueFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/queue/QueueFragment.java index 31fedda1d..471d4f17d 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/queue/QueueFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/queue/QueueFragment.java @@ -40,12 +40,11 @@ import java.util.List; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.ui.episodeslist.EpisodeItemListAdapter; -import de.danoeh.antennapod.core.util.ConfirmationDialog; +import de.danoeh.antennapod.ui.common.ConfirmationDialog; import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.storage.database.DBReader; import de.danoeh.antennapod.storage.database.DBWriter; import de.danoeh.antennapod.ui.common.Converter; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.ui.screen.feed.ItemSortDialog; import de.danoeh.antennapod.event.EpisodeDownloadEvent; import de.danoeh.antennapod.event.FeedItemEvent; @@ -150,7 +149,7 @@ public class QueueFragment extends Fragment implements MaterialToolbar.OnMenuIte break; case REMOVED: case IRREVERSIBLE_REMOVED: - int position = FeedItemUtil.indexOfItemWithId(queue, event.item.getId()); + int position = FeedItemEvent.indexOfItemWithId(queue, event.item.getId()); queue.remove(position); recyclerAdapter.notifyItemRemoved(position); break; @@ -178,7 +177,7 @@ public class QueueFragment extends Fragment implements MaterialToolbar.OnMenuIte } for (int i = 0, size = event.items.size(); i < size; i++) { FeedItem item = event.items.get(i); - int pos = FeedItemUtil.indexOfItemWithId(queue, item.getId()); + int pos = FeedItemEvent.indexOfItemWithId(queue, item.getId()); if (pos >= 0) { queue.remove(pos); queue.add(pos, item); @@ -194,7 +193,7 @@ public class QueueFragment extends Fragment implements MaterialToolbar.OnMenuIte return; } for (String downloadUrl : event.getUrls()) { - int pos = FeedItemUtil.indexOfItemWithDownloadUrl(queue, downloadUrl); + int pos = EpisodeDownloadEvent.indexOfItemWithDownloadUrl(queue, downloadUrl); if (pos >= 0) { recyclerAdapter.notifyItemChangedCompat(pos); } @@ -357,7 +356,7 @@ public class QueueFragment extends Fragment implements MaterialToolbar.OnMenuIte return super.onContextItemSelected(item); } - int position = FeedItemUtil.indexOfItemWithId(queue, selectedItem.getId()); + int position = FeedItemEvent.indexOfItemWithId(queue, selectedItem.getId()); if (position < 0) { Log.i(TAG, "Selected item no longer exist, ignoring selection"); return super.onContextItemSelected(item); diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogFragment.java index 9adf885b1..f0dedb13e 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogFragment.java @@ -12,7 +12,7 @@ import androidx.core.text.HtmlCompat; import androidx.fragment.app.DialogFragment; import com.google.android.material.dialog.MaterialAlertDialogBuilder; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.databinding.RatingDialogBinding; import de.danoeh.antennapod.ui.common.DateFormatter; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogManager.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogManager.java index edba0ec83..89a984e42 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogManager.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/rating/RatingDialogManager.java @@ -7,7 +7,7 @@ import java.util.concurrent.TimeUnit; import android.util.Log; import androidx.fragment.app.FragmentActivity; -import de.danoeh.antennapod.core.BuildConfig; +import de.danoeh.antennapod.BuildConfig; import de.danoeh.antennapod.storage.database.DBReader; import de.danoeh.antennapod.storage.database.StatisticsItem; import io.reactivex.Observable; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/FeedMenuHandler.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/FeedMenuHandler.java index e1e9f2287..f5761020c 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/FeedMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/FeedMenuHandler.java @@ -7,7 +7,7 @@ import android.util.Log; import androidx.annotation.NonNull; import androidx.fragment.app.Fragment; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.util.ConfirmationDialog; +import de.danoeh.antennapod.ui.common.ConfirmationDialog; import de.danoeh.antennapod.storage.database.DBWriter; import de.danoeh.antennapod.ui.screen.feed.RemoveFeedDialog; import de.danoeh.antennapod.ui.screen.feed.RenameFeedDialog; diff --git a/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionsFilterGroup.java b/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionsFilterGroup.java index 41dce16f0..d952d610f 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionsFilterGroup.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/screen/subscriptions/SubscriptionsFilterGroup.java @@ -1,6 +1,6 @@ package de.danoeh.antennapod.ui.screen.subscriptions; -import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.R; public enum SubscriptionsFilterGroup { COUNTER_GREATER_ZERO(new ItemProperties(R.string.subscriptions_counter_greater_zero, "counter_greater_zero")), diff --git a/app/src/main/java/de/danoeh/antennapod/ui/share/ShareUtils.java b/app/src/main/java/de/danoeh/antennapod/ui/share/ShareUtils.java index 77d5f4305..7b685f8bc 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/share/ShareUtils.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/share/ShareUtils.java @@ -9,12 +9,11 @@ import androidx.annotation.NonNull; import androidx.core.app.ShareCompat; import androidx.core.content.FileProvider; -import de.danoeh.antennapod.core.util.FeedItemUtil; import de.danoeh.antennapod.ui.common.Converter; import java.io.File; import java.net.URLEncoder; -import de.danoeh.antennapod.core.R; +import de.danoeh.antennapod.R; import de.danoeh.antennapod.model.feed.Feed; import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; @@ -46,7 +45,7 @@ public class ShareUtils { } public static boolean hasLinkToShare(FeedItem item) { - return FeedItemUtil.getLinkWithFallback(item) != null; + return item.getLinkWithFallback() != null; } public static void shareMediaDownloadLink(Context context, FeedMedia media) { @@ -64,7 +63,7 @@ public class ShareUtils { if (hasLinkToShare(item)) { text += "\n\n" + context.getResources().getString(R.string.share_dialog_episode_website_label) + ": "; - text += FeedItemUtil.getLinkWithFallback(item); + text += item.getLinkWithFallback(); } if (item.getMedia() != null && item.getMedia().getDownloadUrl() != null) { diff --git a/app/src/main/java/de/danoeh/antennapod/ui/view/ShownotesWebView.java b/app/src/main/java/de/danoeh/antennapod/ui/view/ShownotesWebView.java index 67a659418..ae8654e83 100644 --- a/app/src/main/java/de/danoeh/antennapod/ui/view/ShownotesWebView.java +++ b/app/src/main/java/de/danoeh/antennapod/ui/view/ShownotesWebView.java @@ -26,7 +26,7 @@ import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.ui.MenuItemUtils; import de.danoeh.antennapod.ui.common.Converter; -import de.danoeh.antennapod.core.util.IntentUtils; +import de.danoeh.antennapod.ui.common.IntentUtils; import de.danoeh.antennapod.net.common.NetworkUtils; import de.danoeh.antennapod.ui.share.ShareUtils; import de.danoeh.antennapod.ui.cleaner.ShownotesCleaner; diff --git a/app/src/main/res/drawable-anydpi-v26/ic_shortcut_feed.xml b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_feed.xml new file mode 100644 index 000000000..ae080d335 --- /dev/null +++ b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_feed.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-anydpi-v26/ic_shortcut_playlist.xml b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_playlist.xml new file mode 100644 index 000000000..5d3ce4954 --- /dev/null +++ b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_playlist.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-anydpi-v26/ic_shortcut_refresh.xml b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_refresh.xml new file mode 100644 index 000000000..1a7752443 --- /dev/null +++ b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_refresh.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable-anydpi-v26/ic_shortcut_subscriptions.xml b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_subscriptions.xml new file mode 100644 index 000000000..10f437917 --- /dev/null +++ b/app/src/main/res/drawable-anydpi-v26/ic_shortcut_subscriptions.xml @@ -0,0 +1,9 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_shortcut_feed.xml b/app/src/main/res/drawable/ic_shortcut_feed.xml new file mode 100644 index 000000000..fa5a0267c --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_feed.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_shortcut_playlist.xml b/app/src/main/res/drawable/ic_shortcut_playlist.xml new file mode 100644 index 000000000..8d01f24a3 --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_playlist.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_shortcut_refresh.xml b/app/src/main/res/drawable/ic_shortcut_refresh.xml new file mode 100644 index 000000000..2f1b37337 --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_refresh.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_shortcut_subscriptions.xml b/app/src/main/res/drawable/ic_shortcut_subscriptions.xml new file mode 100644 index 000000000..b932aebaf --- /dev/null +++ b/app/src/main/res/drawable/ic_shortcut_subscriptions.xml @@ -0,0 +1,7 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/more_content_list_footer.xml b/app/src/main/res/layout/more_content_list_footer.xml new file mode 100644 index 000000000..a3fcd5489 --- /dev/null +++ b/app/src/main/res/layout/more_content_list_footer.xml @@ -0,0 +1,36 @@ + + + + + + + + + + diff --git a/app/src/main/res/layout/popup_bubble_view.xml b/app/src/main/res/layout/popup_bubble_view.xml new file mode 100644 index 000000000..7dee08eb5 --- /dev/null +++ b/app/src/main/res/layout/popup_bubble_view.xml @@ -0,0 +1,41 @@ + + + + + + + +