From 55f7adb10609ad89627b56aafce7f8278dc884eb Mon Sep 17 00:00:00 2001 From: Thom Merrilin Date: Sun, 3 Jan 2021 16:53:20 +0000 Subject: [PATCH 1/2] Check Auto Download preference on the feed before auto downloading AutoDownlaoding previously assumed that the filters had been initialised, which is not necessarily the case now that users can disable "Include in Auto Downloads" before subscribing to a new feed. --- .../antennapod/core/storage/AutomaticDownloadAlgorithm.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java b/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java index 2456a3917..799c92bce 100644 --- a/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java +++ b/core/src/main/java/de/danoeh/antennapod/core/storage/AutomaticDownloadAlgorithm.java @@ -55,8 +55,9 @@ public class AutomaticDownloadAlgorithm { candidates.addAll(queue); for (FeedItem newItem : newItems) { FeedPreferences feedPrefs = newItem.getFeed().getPreferences(); - FeedFilter feedFilter = feedPrefs.getFilter(); - if (!candidates.contains(newItem) && feedFilter.shouldAutoDownload(newItem)) { + if (feedPrefs.getAutoDownload() + && !candidates.contains(newItem) + && feedPrefs.getFilter().shouldAutoDownload(newItem)) { candidates.add(newItem); } } From 4f5449a0d3c8540b32a8d54c3c770d5fe91e554e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 11 Jul 2021 18:34:53 +0200 Subject: [PATCH 2/2] No longer show item-specific auto-download property to users --- .../CancelDownloadActionButton.java | 5 ++- .../fragment/DownloadLogFragment.java | 13 +++---- .../fragment/FeedSettingsFragment.java | 22 ------------ .../menuhandler/FeedItemMenuHandler.java | 16 --------- app/src/main/res/menu/feeditem_options.xml | 12 ------- .../main/res/menu/feeditemlist_context.xml | 10 ------ .../storage/AutomaticDownloadAlgorithm.java | 1 - .../antennapod/core/storage/DBTasks.java | 1 - .../antennapod/core/storage/DBWriter.java | 36 ------------------- .../antennapod/core/storage/PodDBAdapter.java | 7 ---- core/src/main/res/values/strings.xml | 5 --- 11 files changed, 7 insertions(+), 121 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java index afa86c9d7..dedf8e5e6 100644 --- a/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java +++ b/app/src/main/java/de/danoeh/antennapod/adapter/actionbutton/CancelDownloadActionButton.java @@ -3,7 +3,6 @@ package de.danoeh.antennapod.adapter.actionbutton; import android.content.Context; import androidx.annotation.DrawableRes; import androidx.annotation.StringRes; -import android.widget.Toast; import de.danoeh.antennapod.R; import de.danoeh.antennapod.model.feed.FeedItem; @@ -35,8 +34,8 @@ public class CancelDownloadActionButton extends ItemActionButton { FeedMedia media = item.getMedia(); DownloadRequester.getInstance().cancelDownload(context, media); if (UserPreferences.isEnableAutodownload()) { - DBWriter.setFeedItemAutoDownload(media.getItem(), false); - Toast.makeText(context, R.string.download_canceled_autodownload_enabled_msg, Toast.LENGTH_LONG).show(); + item.setAutoDownload(false); + DBWriter.setFeedItem(item); } } } 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 80ab2b719..85bc3facf 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/DownloadLogFragment.java @@ -11,7 +11,6 @@ import android.view.MenuItem; import android.view.View; import android.widget.ListView; import android.widget.TextView; -import android.widget.Toast; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; @@ -23,7 +22,6 @@ import de.danoeh.antennapod.adapter.DownloadLogAdapter; import de.danoeh.antennapod.core.event.DownloadEvent; import de.danoeh.antennapod.core.event.DownloadLogEvent; import de.danoeh.antennapod.core.event.DownloaderUpdate; -import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.service.download.DownloadRequest; import de.danoeh.antennapod.core.service.download.DownloadService; import de.danoeh.antennapod.core.service.download.DownloadStatus; @@ -34,6 +32,7 @@ import de.danoeh.antennapod.core.storage.DownloadRequester; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; import de.danoeh.antennapod.menuhandler.MenuItemUtils; import de.danoeh.antennapod.model.feed.Feed; +import de.danoeh.antennapod.model.feed.FeedItem; import de.danoeh.antennapod.model.feed.FeedMedia; import de.danoeh.antennapod.view.EmptyViewHandler; import io.reactivex.Observable; @@ -111,13 +110,11 @@ public class DownloadLogFragment extends ListFragment { DownloadRequest downloadRequest = ((Downloader) item).getDownloadRequest(); DownloadRequester.getInstance().cancelDownload(getActivity(), downloadRequest.getSource()); - if (downloadRequest.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA - && UserPreferences.isEnableAutodownload()) { + if (downloadRequest.getFeedfileType() == FeedMedia.FEEDFILETYPE_FEEDMEDIA) { FeedMedia media = DBReader.getFeedMedia(downloadRequest.getFeedfileId()); - DBWriter.setFeedItemAutoDownload(media.getItem(), false); - - ((MainActivity) getActivity()).showSnackbarAbovePlayer( - R.string.download_canceled_autodownload_enabled_msg, Toast.LENGTH_SHORT); + FeedItem feedItem = media.getItem(); + feedItem.setAutoDownload(false); + DBWriter.setFeedItem(feedItem); } } else if (item instanceof DownloadStatus) { DownloadStatus status = (DownloadStatus) item; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java index 9e57497bf..dbc7f2ae3 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedSettingsFragment.java @@ -1,7 +1,5 @@ package de.danoeh.antennapod.fragment; -import android.content.Context; -import android.content.DialogInterface; import android.os.Bundle; import android.util.Log; import android.view.LayoutInflater; @@ -16,7 +14,6 @@ import androidx.preference.PreferenceFragmentCompat; import androidx.preference.SwitchPreferenceCompat; import androidx.recyclerview.widget.RecyclerView; import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.dialog.ConfirmationDialog; import de.danoeh.antennapod.core.event.settings.SkipIntroEndingChangedEvent; import de.danoeh.antennapod.core.event.settings.SpeedPresetChangedEvent; import de.danoeh.antennapod.core.event.settings.VolumeAdaptionChangedEvent; @@ -384,8 +381,6 @@ public class FeedSettingsFragment extends Fragment { feedPreferences.setAutoDownload(checked); DBWriter.setFeedPreferences(feedPreferences); updateAutoDownloadEnabled(); - ApplyToEpisodesDialog dialog = new ApplyToEpisodesDialog(getActivity(), checked); - dialog.createNewDialog().show(); pref.setChecked(checked); return false; }); @@ -417,22 +412,5 @@ public class FeedSettingsFragment extends Fragment { return false; }); } - - private class ApplyToEpisodesDialog extends ConfirmationDialog { - private final boolean autoDownload; - - ApplyToEpisodesDialog(Context context, boolean autoDownload) { - super(context, R.string.auto_download_apply_to_items_title, - R.string.auto_download_apply_to_items_message); - this.autoDownload = autoDownload; - setPositiveText(R.string.yes); - setNegativeText(R.string.no); - } - - @Override - public void onConfirmButtonPressed(DialogInterface dialog) { - DBWriter.setFeedsItemsAutoDownload(feed, autoDownload); - } - } } } 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 d478c581d..a9747e987 100644 --- a/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java +++ b/app/src/main/java/de/danoeh/antennapod/menuhandler/FeedItemMenuHandler.java @@ -65,14 +65,6 @@ public class FeedItemMenuHandler { setItemVisibility(menu, R.id.mark_unread_item, selectedItem.isPlayed()); setItemVisibility(menu, R.id.reset_position, hasMedia && selectedItem.getMedia().getPosition() != 0); - if (!UserPreferences.isEnableAutodownload() || fileDownloaded || selectedItem.getFeed().isLocalFeed()) { - setItemVisibility(menu, R.id.activate_auto_download, false); - setItemVisibility(menu, R.id.deactivate_auto_download, false); - } else { - setItemVisibility(menu, R.id.activate_auto_download, !selectedItem.getAutoDownload()); - setItemVisibility(menu, R.id.deactivate_auto_download, selectedItem.getAutoDownload()); - } - // Display proper strings when item has no media if (hasMedia) { setItemTitle(menu, R.id.mark_read_item, R.string.mark_read_label); @@ -206,14 +198,6 @@ public class FeedItemMenuHandler { } DBWriter.markItemPlayed(selectedItem, FeedItem.UNPLAYED, true); break; - case R.id.activate_auto_download: - selectedItem.setAutoDownload(true); - DBWriter.setFeedItemAutoDownload(selectedItem, true); - break; - case R.id.deactivate_auto_download: - selectedItem.setAutoDownload(false); - DBWriter.setFeedItemAutoDownload(selectedItem, false); - break; case R.id.visit_website_item: IntentUtils.openInBrowser(context, FeedItemUtil.getLinkWithFallback(selectedItem)); break; diff --git a/app/src/main/res/menu/feeditem_options.xml b/app/src/main/res/menu/feeditem_options.xml index 5b33539e1..70400fe55 100644 --- a/app/src/main/res/menu/feeditem_options.xml +++ b/app/src/main/res/menu/feeditem_options.xml @@ -50,18 +50,6 @@ custom:showAsAction="collapseActionView" android:title="@string/reset_position"> - - - - - - - - - - = savedFeed.getItems().size()) { savedFeed.getItems().add(item); 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 3231c3779..8517b73a2 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 @@ -945,23 +945,6 @@ public class DBWriter { }); } - /** - * Sets the 'auto_download'-attribute of specific FeedItem. - * - * @param feedItem FeedItem. - * @param autoDownload true enables auto download, false disables it - */ - public static Future setFeedItemAutoDownload(final FeedItem feedItem, - final boolean autoDownload) { - return dbExec.submit(() -> { - final PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.setFeedItemAutoDownload(feedItem, autoDownload ? 1 : 0); - adapter.close(); - EventBus.getDefault().post(new UnreadItemsUpdateEvent()); - }); - } - public static Future saveFeedItemAutoDownloadFailed(final FeedItem feedItem) { return dbExec.submit(() -> { int failedAttempts = feedItem.getFailedAutoDownloadAttempts() + 1; @@ -981,25 +964,6 @@ public class DBWriter { }); } - /** - * Sets the 'auto_download'-attribute of specific FeedItem. - * - * @param feed This feed's episodes will be processed. - * @param autoDownload If true, auto download will be enabled for the feed's episodes. Else, - */ - public static Future setFeedsItemsAutoDownload(final Feed feed, - final boolean autoDownload) { - Log.d(TAG, (autoDownload ? "Enabling" : "Disabling") + " auto download for items of feed " + feed.getId()); - return dbExec.submit(() -> { - final PodDBAdapter adapter = PodDBAdapter.getInstance(); - adapter.open(); - adapter.setFeedsItemsAutoDownload(feed, autoDownload); - adapter.close(); - EventBus.getDefault().post(new UnreadItemsUpdateEvent()); - }); - } - - /** * Set filter of the feed * 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 18810aff9..21ca1043f 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 @@ -768,13 +768,6 @@ public class PodDBAdapter { new String[]{String.valueOf(feedItem.getId())}); } - public void setFeedsItemsAutoDownload(Feed feed, boolean autoDownload) { - final String sql = "UPDATE " + TABLE_NAME_FEED_ITEMS - + " SET " + KEY_AUTO_DOWNLOAD + "=" + (autoDownload ? "1" : "0") - + " WHERE " + KEY_FEED + "=" + feed.getId(); - db.execSQL(sql); - } - public void setFavorites(List favorites) { ContentValues values = new ContentValues(); try { diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml index c08fb98bc..442f95832 100644 --- a/core/src/main/res/values/strings.xml +++ b/core/src/main/res/values/strings.xml @@ -101,8 +101,6 @@ Close Retry Include in auto downloads - Apply to Previous Episodes - The new Auto Download setting will automatically be applied to new episodes.\nDo you also want to apply it to previously published episodes? Auto Delete Episode Volume Reduction Turn down volume for episodes of this feed: %1$s @@ -224,8 +222,6 @@ Remove from Favorites Visit Website Skip episode - Activate Auto Download - Deactivate Auto Download Reset Playback Position Item removed No items selected @@ -254,7 +250,6 @@ The server connection was lost before completing the download The download was blocked by another app on your device. Unable to establish a secure connection. This can mean that another app on your device blocked the download, or that something is wrong with the server certificates. - Download canceled\nDisabled Auto Download for this item Downloads completed with error(s) Auto-downloads completed IO Error