summaryrefslogtreecommitdiff
path: root/app
diff options
context:
space:
mode:
Diffstat (limited to 'app')
-rw-r--r--app/build.gradle4
-rw-r--r--app/src/main/assets/developers.csv4
-rw-r--r--app/src/main/assets/translators.csv36
-rw-r--r--app/src/main/assets/website-languages.txt1
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java19
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java24
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java34
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java23
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java24
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java21
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java12
-rw-r--r--app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java13
-rw-r--r--app/src/main/play/release-notes/en-US/default.txt12
-rw-r--r--app/src/main/res/layout/episodes_list_fragment.xml1
14 files changed, 90 insertions, 138 deletions
diff --git a/app/build.gradle b/app/build.gradle
index b4526aaf8..9d73b77e8 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -10,8 +10,8 @@ android {
// Version code schema:
// "1.2.3-beta4" -> 1020304
// "1.2.3" -> 1020395
- versionCode 2060295
- versionName "2.6.2"
+ versionCode 2070095
+ versionName "2.7.0"
def commit = ""
try {
diff --git a/app/src/main/assets/developers.csv b/app/src/main/assets/developers.csv
index 675f3cf93..e059d7e68 100644
--- a/app/src/main/assets/developers.csv
+++ b/app/src/main/assets/developers.csv
@@ -113,6 +113,7 @@ jmdouglas;10855634;Contributor
olivoto;15932680;Contributor
PtilopsisLeucotis;54054883;Contributor
abhinavg1997;60095795;Contributor
+adrns;13379985;Contributor
alanorth;191754;Contributor
alexte;7724992;Contributor
andrey-krutov;1488973;Contributor
@@ -127,6 +128,7 @@ danielm5;66779;Contributor
ariedov;958646;Contributor
brettle;118192;Contributor
cdhiraj40;75211982;Contributor
+dhruvpatidar359;103873587;Contributor
edwinhere;19705425;Contributor
eirikv;4076243;Contributor
eerden;277513;Contributor
@@ -160,6 +162,7 @@ nproth;48482306;Contributor
oliver;2344;Contributor
panoreak;25068506;Contributor
patrickjkennedy;8617261;Contributor
+pganssle;1377457;Contributor
ortylp;470439;Contributor
RafaelBod;77226971;Contributor
ramzan;55637406;Contributor
@@ -178,6 +181,7 @@ vimsick;20211590;Contributor
lyallemma;25173082;Contributor
edent;837136;Contributor
atrus6;357881;Contributor
+Toover;8531603;Contributor
heyyviv;56256802;Contributor
waylife;3348620;Contributor
yarons;406826;Contributor
diff --git a/app/src/main/assets/translators.csv b/app/src/main/assets/translators.csv
index e60f85313..391e2201f 100644
--- a/app/src/main/assets/translators.csv
+++ b/app/src/main/assets/translators.csv
@@ -1,49 +1,49 @@
-Arabic;abuzar3.khalid, AhmedHll, badarotti, HeshamTB, keunes, Mehyar, mhamade, moftasa, mohmans, MustafaAlgurabi, nabilMaghura, rex07, shubbar
+Arabic;abuzar3.khalid, AhmedHll, badarotti, HeshamTB, keunes, Mehyar, mh.abdelhay, mhamade, moftasa, mohmans, MustafaAlgurabi, nabilMaghura, rex07, shubbar
Asturian (ast_ES);enolp, keunes
-Azerbaijani;5NOER227O
+Azerbaijani;5NOER227O, xxmn77
Basque;bipoza, gaztainalde, IngrownMink4, keunes, Osoitz, pospolos
Bengali;laggybird
Breton;Belvar, Eorn, Iriep, keunes, technozuzici
Bulgarian;keunes, ma4ko, ppk89, solusitor, x7ype
Catalan;arseru, badlop, bluegeekgh, carles.llacer, dvd1985, exort12, IvanAmarante, javiercoll, keunes, Kintu, lambdani, marcmetallextrem, xc70
-Chinese (zh_CN);Biacke, brnme, claybiockiller, cyril3, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, jhxie, jxj2zzz79pfp9bpo, JY3, keunes, kyleehee, molisiye, owen8877, RainSlide, RangerNJU, Sak94664, spice2wolf, tupunco, wongsyrone, yangyang, yiqiok
+Chinese (zh_CN);135e2, Biacke, brnme, claybiockiller, clong289734997, cyril3, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, jhxie, jxj2zzz79pfp9bpo, JY3, keunes, kyleehee, molisiye, owen8877, RainSlide, RangerNJU, Sak94664, spice2wolf, tupunco, wongsyrone, yangyang, yiqiok
Chinese (zh_TW);bobchao, ijliao, keunes, mapobi, pggdt, ymhuang0808
-Czech (cs_CZ);anotheranonymoususer, befeleme, elich, Hanzmeister, jjh, McLenin666, md.share, svetlemodry, Thomaash, viotalJiplk
+Czech (cs_CZ);anotheranonymoususer, befeleme, elich, Hanzmeister, jjh, McLenin666, md.share, ShimonH, svetlemodry, Thomaash, viotalJiplk
Danish;deusdenton, ERYpTION, JFreak, jhertel, keunes, mikini, petterbejo, SebastianKiwiDk
Dutch;e2jk, keunes, mijnheer, oldblue, rwv, Vistaus
Estonian;beez276, Eraser, keunes, mahfiaz
Finnish;Ban3, keunes, ktstmu, Kuutar, noppa, Sahtor, scop, teemue
-French;5NOER227O, ayiniho, ChaoticMind, clombion, Cornegidouille, Daremo, e2jk, keunes, klintom, Kuscoo, lacouture, LouFex, Matth78, petterbejo, Poussinou, RomainTT, sterylmreep, teamon
+French;5NOER227O, ayiniho, ChaoticMind, clombion, Cornegidouille, Daremo, e2jk, keunes, klintom, Kuscoo, lacouture, LouFex, Matth78, petterbejo, PierreLaville, Poussinou, RomainTT, sterylmreep, teamon
Galician;antiparvos, pikamoku, Raichely
-German;5NOER227O, _Er, axre, ByteHamster, Ceekay, ceving, dadosch, datesastick, DerSilly, elkangaroo, enz, Erc187, f_grubm, finsterwalder, forght, hbilke, HolgerJeromin, JMAN, JoeMcFly, jokap, JoniArida, JonOfUs, kalei, keunes, Macusercom, max.wittig, mfietz, Michael_Strecke, mkida, petterbejo, pudeeh, Quiss42, repat, sadfgdf, Sargon_Isa, teamon, thetrash23, timo.rohwedder, toaskoas, Tobiasff3200, tomte, Tonne11, tweimer, VfBFan, Willhelm, ypid
+German;5NOER227O, _Er, axre, ByteHamster, Ceekay, ceving, dadosch, datesastick, DerSilly, elkangaroo, enz, Erc187, f_grubm, finsterwalder, forght, hbilke, HolgerJeromin, JMAN, JoeMcFly, jokap, JoniArida, JonOfUs, kalei, keunes, Kostas_F, Macusercom, max.wittig, mfietz, Michael_Strecke, mkida, petterbejo, pudeeh, Quiss42, repat, sadfgdf, Sargon_Isa, teamon, thetrash23, timo.rohwedder, toaskoas, Tobiasff3200, tomte, Tonne11, tweimer, VfBFan, Willhelm, ypid
Hebrew (he_IL);amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron
-Hindi (hi_IN);keunes, purple.coder, siddhusengar, thelazyoxymoron
+Hindi (hi_IN);keunes, purple.coder, rajs1942, siddhusengar, singhrishi245021, thelazyoxymoron
Hu;hurrikan, keunes, lna91, lomapur, marthynw, meskobalazs, naren93
Icelandic;keunes, marthjod
Indonesian;dbrw, justch, keunes, levirs565, liimee
-Italian (it_IT);aalex70, allin, alvami, Bonnee, datesastick, dontknowcris, giuseppep, Guybrush88, ilmanzo, juanjom, keunes, lu.por, m.chinni, marco_pag, mat650, mircocau, neonsoftware, niccord, salorock, theloca95
+Italian (it_IT);aalex70, allin, alvami, atilluF, Bonnee, datesastick, dontknowcris, giuseppep, Guybrush88, ilmanzo, juanjom, keunes, lu.por, m.chinni, marco_pag, mat650, mircocau, neonsoftware, niccord, salorock, theloca95
Japanese;ayiniho, keunes, KotaKato, Naofumi, sh3llc4t, tko_cactus, TranslatorG
-Kannada (kn_IN);chiraag.nataraj, keunes, thejeshgn
+Kannada (kn_IN);chiraag.nataraj, deepu2, keunes, thejeshgn
Ko;changwoo, eshc123, keunes, libliboom
Latin;nivaca
Lithuanian;keunes, naglis, Sharper
Macedonian;krisfremen
Malayalam;joice, keunes, KiranS, rashivkp
-Modern Greek (1453-);AnimaRain, antonist, keunes, pavlosv
-Norwegian Bokmål (nb_NO);abstrakct, ahysing, bablecopherye, corkie, forteller, heraldo, jakobkg, keunes, kongk, sevenmaster, tc5, timbast, ttick
-Persian;ahangarha, danialbehzadi, ebadi, ebraminio, F7D, hamidrezabayat76, keunes, sinamoghaddas
-Polish (pl_PL);befeleme, ewm, hiro2020, Iwangelion, kamila.miodek1991, keunes, lomapur, mandlus, maniexx, Mephistofeles, millup, Rakowy_Manaska, shark103, tyle
+Modern Greek (1453-);AnimaRain, antonist, keunes, Kostas_F, pavlosv, pcguy23
+Norwegian Bokmål (nb_NO);abstrakct, ahysing, bablecopherye, corkie, forteller, heraldo, jakobkg, Jamiera, keunes, kongk, sevenmaster, tc5, timbast, TrymSan, ttick
+Persian;ahangarha, danialbehzadi, ebadi, ebraminio, F7D, hamidrezabayat76, K2latmanesh, keunes, sinamoghaddas
+Polish (pl_PL);befeleme, ewm, Gadzinisko, hiro2020, Iwangelion, kamila.miodek1991, keunes, lomapur, mandlus, maniexx, Mephistofeles, millup, Rakowy_Manaska, shark103, tyle
Portuguese;emansije, jmelo461, keunes, lecalam, smarquespt, WalkerPt
-Portuguese (pt_BR);alexupits, alysonborges, amalvarenga, andersonvom, aracnus, arua, bandreghetti, caioau, carlo_valente, castrors, jmelo461, keunes, lipefire, mbaltar, olivoto, rogervezaro, RubeensVinicius, SamWilliam, tepadilha, tschertel, ziul123
-Romanian (ro_RO);AdrianMirica, corneliu.e, fuzzmz, keunes, mozartro, ralienpp
+Portuguese (pt_BR);alexupits, alysonborges, amalvarenga, andersonvom, aracnus, arua, bandreghetti, caioau, carlo_valente, castrors, jmelo461, keunes, lipefire, mbaltar, olivoto, philosp, rogervezaro, RubeensVinicius, SamWilliam, tepadilha, tschertel, ziul123
+Romanian (ro_RO);AdrianMirica, fuzzmz, keunes, mozartro, ralienpp
Russian (ru_RU);ashed, btimofeev, Duke_Raven, flexagoon, gammja, homocomputeris, IgorPolyakov, keunes, mercutiy, nachoman, null, overmind88, Platun0v, PtilopsisLeucotis, s.chebotar, tepxd, un_logic, Vladryyu, whereisthetea, yako
Slovak;ati3, jose1711, keunes, marulinko, McLenin666, real_name, tiborepcek
Slovenian (sl_SI);anzepintar, asovic, keunes, panter23, TheFireFighter, trus2
-Spanish;AleksSyntek, andersonvom, andrespelaezp, arseru, Atreyu94, badlop, CaeM0R, carlos.levy, cartojo, deandreamatias, devarops, dvd1985, elojodepajaro, Fitoschido, frandavid100, hard_ware, javiercoll, keunes, kiekie, LatinSuD, leogrignafini, meanderingDot, nivaca, rafael.osuna, technozuzici, tres.14159, vfmatzkin, wakutiteo, ziul123
+Spanish;5NOER227O, AleksSyntek, andersonvom, andrespelaezp, arseru, Atreyu94, badlop, CaeM0R, carlos.levy, cartojo, deandreamatias, delthia, devarops, dvd1985, elojodepajaro, Fitoschido, frandavid100, hard_ware, javiercoll, keunes, kiekie, LatinSuD, leogrignafini, meanderingDot, nivaca, rafael.osuna, technozuzici, tres.14159, vfmatzkin, victorzequeida96, wakutiteo, ziul123
Swahili (macrolanguage);1silvester, keunes, kmtra
Swedish (sv_SE);aiix, bittin, bpnilsson, keunes, LinAGKar, nilso, TwoD, victorhggqvst
Tatar;seber
Telugu;keunes, veeven
-Turkish;AhmedDuran, alianilkocak, AliGaygisiz, androtuna, brsata, Erdy, keunes, overbite, Slsdem
-Ukrainian (uk_UA);anmizyk, hishak, keunes, older, paul_sm, sergiyr, voinovich_vyacheslav, zhenya97
+Turkish;AhmedDuran, alianilkocak, AliGaygisiz, androtuna, archixe, brsata, Erdy, keunes, overbite, Slsdem
+Ukrainian (uk_UA);hishak, keunes, older, paul_sm, sergiyr, voinovich_vyacheslav, zhenya97
Vietnamese;abnvolk, bruhwut, keunes, ppanhh
diff --git a/app/src/main/assets/website-languages.txt b/app/src/main/assets/website-languages.txt
index b52b558f9..fbbe50993 100644
--- a/app/src/main/assets/website-languages.txt
+++ b/app/src/main/assets/website-languages.txt
@@ -2,3 +2,4 @@ en
fr
nl
it
+da
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 36e02929a..475a6a109 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/AllEpisodesFragment.java
@@ -15,7 +15,8 @@ import de.danoeh.antennapod.model.feed.FeedItemFilter;
import org.apache.commons.lang3.StringUtils;
import org.greenrobot.eventbus.Subscribe;
-import java.util.Collections;
+import java.util.ArrayList;
+import java.util.HashSet;
/**
* Shows all episodes (possibly filtered by user).
@@ -33,9 +34,8 @@ public class AllEpisodesFragment extends EpisodesListFragment {
toolbar.setTitle(R.string.episodes_label);
updateToolbar();
updateFilterUi();
- speedDialView.removeActionItemById(R.id.mark_unread_batch);
- speedDialView.removeActionItemById(R.id.remove_from_queue_batch);
- speedDialView.removeActionItemById(R.id.delete_batch);
+ txtvInformation.setOnClickListener(
+ v -> AllEpisodesFilterDialog.newInstance(getFilter()).show(getChildFragmentManager(), null));
return root;
}
@@ -64,8 +64,13 @@ public class AllEpisodesFragment extends EpisodesListFragment {
AllEpisodesFilterDialog.newInstance(getFilter()).show(getChildFragmentManager(), null);
return true;
} else if (item.getItemId() == R.id.action_favorites) {
- onFilterChanged(new AllEpisodesFilterDialog.AllEpisodesFilterChangedEvent(getFilter().showIsFavorite
- ? Collections.emptySet() : Collections.singleton(FeedItemFilter.IS_FAVORITE)));
+ ArrayList<String> filter = new ArrayList<>(getFilter().getValuesList());
+ if (filter.contains(FeedItemFilter.IS_FAVORITE)) {
+ filter.remove(FeedItemFilter.IS_FAVORITE);
+ } else {
+ filter.add(FeedItemFilter.IS_FAVORITE);
+ }
+ onFilterChanged(new AllEpisodesFilterDialog.AllEpisodesFilterChangedEvent(new HashSet<>(filter)));
return true;
}
return false;
@@ -91,5 +96,7 @@ public class AllEpisodesFragment extends EpisodesListFragment {
txtvInformation.setVisibility(View.GONE);
emptyView.setMessage(R.string.no_all_episodes_label);
}
+ toolbar.getMenu().findItem(R.id.action_favorites).setIcon(
+ getFilter().showIsFavorite ? R.drawable.ic_star : R.drawable.ic_star_border);
}
}
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 f1befcd94..b4e4bebb9 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/CompletedDownloadsFragment.java
@@ -4,7 +4,6 @@ import android.os.Bundle;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
-import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -22,7 +21,6 @@ import de.danoeh.antennapod.adapter.actionbutton.DeleteActionButton;
import de.danoeh.antennapod.core.event.DownloadEvent;
import de.danoeh.antennapod.core.event.DownloadLogEvent;
import de.danoeh.antennapod.core.menuhandler.MenuItemUtils;
-import de.danoeh.antennapod.core.service.download.DownloadService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.util.FeedItemUtil;
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
@@ -67,16 +65,14 @@ public class CompletedDownloadsFragment extends Fragment
private Disposable disposable;
private EmptyViewHandler emptyView;
private boolean displayUpArrow;
- private boolean isUpdatingFeeds = false;
private SpeedDialView speedDialView;
- private Toolbar toolbar;
private SwipeActions swipeActions;
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container,
@Nullable Bundle savedInstanceState) {
View root = inflater.inflate(R.layout.simple_list_fragment, container, false);
- toolbar = root.findViewById(R.id.toolbar);
+ Toolbar toolbar = root.findViewById(R.id.toolbar);
toolbar.setTitle(R.string.downloads_label);
toolbar.inflateMenu(R.menu.downloads_completed);
toolbar.setOnMenuItemClickListener(this);
@@ -85,7 +81,6 @@ public class CompletedDownloadsFragment extends Fragment
recyclerView.post(() -> recyclerView.smoothScrollToPosition(0));
return false;
});
- refreshToolbarState();
displayUpArrow = getParentFragmentManager().getBackStackEntryCount() != 0;
if (savedInstanceState != null) {
displayUpArrow = savedInstanceState.getBoolean(KEY_UP_ARROW);
@@ -167,12 +162,6 @@ public class CompletedDownloadsFragment extends Fragment
}
@Override
- public void onPrepareOptionsMenu(@NonNull Menu menu) {
- menu.findItem(R.id.clear_logs_item).setVisible(false);
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker);
- }
-
- @Override
public boolean onMenuItemClick(MenuItem item) {
if (item.getItemId() == R.id.refresh_item) {
AutoUpdateManager.runImmediate(requireContext());
@@ -190,9 +179,6 @@ public class CompletedDownloadsFragment extends Fragment
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEventMainThread(DownloadEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
- if (event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
- refreshToolbarState();
- }
if (!Arrays.equals(event.update.mediaIds, runningDownloads)) {
runningDownloads = event.update.mediaIds;
loadItems();
@@ -208,9 +194,6 @@ public class CompletedDownloadsFragment extends Fragment
}
}
- private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker =
- () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds();
-
@Override
public boolean onContextItemSelected(@NonNull MenuItem item) {
FeedItem selectedItem = adapter.getLongPressedItem();
@@ -270,11 +253,6 @@ public class CompletedDownloadsFragment extends Fragment
}
}
- private void refreshToolbarState() {
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(),
- R.id.refresh_item, updateRefreshMenuItemChecker);
- }
-
@Subscribe(threadMode = ThreadMode.MAIN)
public void onPlayerStatusChanged(PlayerStatusEvent event) {
loadItems();
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
index f581a16f5..03764f61c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/EpisodesListFragment.java
@@ -8,7 +8,6 @@ import android.util.Log;
import android.view.ContextMenu;
import android.view.KeyEvent;
import android.view.LayoutInflater;
-import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
@@ -84,11 +83,9 @@ public abstract class EpisodesListFragment extends Fragment
@NonNull
List<FeedItem> episodes = new ArrayList<>();
- private volatile boolean isUpdatingFeeds;
protected Disposable disposable;
protected TextView txtvInformation;
-
@Override
public void onStart() {
super.onStart();
@@ -118,14 +115,6 @@ public abstract class EpisodesListFragment extends Fragment
}
}
- private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker =
- () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds();
-
- @Override
- public void onPrepareOptionsMenu(@NonNull Menu menu) {
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(menu, R.id.refresh_item, updateRefreshMenuItemChecker);
- }
-
@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
if (super.onOptionsItemSelected(item)) {
@@ -423,9 +412,7 @@ public abstract class EpisodesListFragment extends Fragment
public void onEventMainThread(DownloadEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
DownloaderUpdate update = event.update;
- if (event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
- updateToolbar();
- }
+ updateToolbar();
if (update.mediaIds.length > 0) {
for (long mediaId : update.mediaIds) {
int pos = FeedItemUtil.indexOfItemWithMediaId(episodes, mediaId);
@@ -436,26 +423,19 @@ public abstract class EpisodesListFragment extends Fragment
}
}
- private void updateUi() {
- loadItems();
- if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) {
- updateToolbar();
- }
- }
-
@Subscribe(threadMode = ThreadMode.MAIN)
public void onPlayerStatusChanged(PlayerStatusEvent event) {
- updateUi();
+ loadItems();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) {
- updateUi();
+ loadItems();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onFeedListChanged(FeedListUpdateEvent event) {
- updateUi();
+ loadItems();
}
void loadItems() {
@@ -498,8 +478,10 @@ public abstract class EpisodesListFragment extends Fragment
protected abstract String getPrefName();
protected void updateToolbar() {
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(),
- R.id.refresh_item, updateRefreshMenuItemChecker);
+ if (toolbar.getMenu().findItem(R.id.refresh_item) != null) {
+ MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(), R.id.refresh_item,
+ DownloadService.isRunning && DownloadService.isDownloadingFeeds());
+ }
}
@Override
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
index bca0f8640..909d082af 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedInfoFragment.java
@@ -57,7 +57,7 @@ import io.reactivex.schedulers.Schedulers;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
-import java.util.HashSet;
+import java.util.Iterator;
/**
* Displays information about a feed.
@@ -236,13 +236,24 @@ public class FeedInfoFragment extends Fragment implements Toolbar.OnMenuItemClic
} else {
lblSupport.setVisibility(View.VISIBLE);
ArrayList<FeedFunding> fundingList = feed.getPaymentLinks();
+
+ // Filter for duplicates, but keep items in the order that they have in the feed.
+ Iterator<FeedFunding> i = fundingList.iterator();
+ while (i.hasNext()) {
+ FeedFunding funding = i.next();
+ for (FeedFunding other : fundingList) {
+ if (TextUtils.equals(other.url, funding.url)) {
+ if (other.content != null && funding.content != null
+ && other.content.length() > funding.content.length()) {
+ i.remove();
+ break;
+ }
+ }
+ }
+ }
+
StringBuilder str = new StringBuilder();
- HashSet<String> seen = new HashSet<String>();
for (FeedFunding funding : fundingList) {
- if (seen.contains(funding.url)) {
- continue;
- }
- seen.add(funding.url);
str.append(funding.content.isEmpty()
? getContext().getResources().getString(R.string.support_podcast)
: funding.content).append(" ").append(funding.url);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
index d5dd51e93..dfae22491 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
@@ -92,7 +92,6 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
private long feedID;
private Feed feed;
private boolean headerCreated = false;
- private boolean isUpdatingFeed;
private Disposable disposable;
private FeedItemListFragmentBinding viewBinding;
private MultiSelectSpeedDialBinding speedDialBinding;
@@ -140,7 +139,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
displayUpArrow = savedInstanceState.getBoolean(KEY_UP_ARROW);
}
((MainActivity) getActivity()).setupToolbarToggle(viewBinding.toolbar, displayUpArrow);
- refreshToolbarState();
+ updateToolbar();
viewBinding.recyclerView.setRecycledViewPool(((MainActivity) getActivity()).getRecycledViewPool());
viewBinding.progLoading.setVisibility(View.VISIBLE);
@@ -234,17 +233,14 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
super.onSaveInstanceState(outState);
}
- private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker =
- () -> DownloadService.isRunning && DownloadService.isDownloadingFile(feed.getDownload_url());
-
- private void refreshToolbarState() {
+ private void updateToolbar() {
if (feed == null) {
return;
}
viewBinding.toolbar.getMenu().findItem(R.id.visit_website_item).setVisible(feed.getLink() != null);
- isUpdatingFeed = MenuItemUtils.updateRefreshMenuItem(viewBinding.toolbar.getMenu(),
- R.id.refresh_item, updateRefreshMenuItemChecker);
+ MenuItemUtils.updateRefreshMenuItem(viewBinding.toolbar.getMenu(), R.id.refresh_item,
+ DownloadService.isRunning && DownloadService.isDownloadingFile(feed.getDownload_url()));
FeedMenuHandler.onPrepareOptionsMenu(viewBinding.toolbar.getMenu(), feed);
}
@@ -338,9 +334,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
public void onEventMainThread(DownloadEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
DownloaderUpdate update = event.update;
- if (event.hasChangedFeedUpdateStatus(isUpdatingFeed)) {
- updateSyncProgressBarVisibility();
- }
+ updateToolbar();
if (adapter != null && update.mediaIds.length > 0 && feed != null) {
for (long mediaId : update.mediaIds) {
int pos = FeedItemUtil.indexOfItemWithMediaId(feed.getItems(), mediaId);
@@ -383,7 +377,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
speedDialBinding.fabSD.removeActionItemById(R.id.delete_batch);
}
speedDialBinding.fabSD.setVisibility(View.VISIBLE);
- refreshToolbarState();
+ updateToolbar();
}
@Override
@@ -416,9 +410,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
}
private void updateSyncProgressBarVisibility() {
- if (isUpdatingFeed != updateRefreshMenuItemChecker.isRefreshing()) {
- refreshToolbarState();
- }
+ updateToolbar();
if (!DownloadService.isDownloadingFeeds()) {
nextPageLoader.getRoot().setVisibility(View.GONE);
}
@@ -443,7 +435,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
swipeActions.setFilter(feed.getItemFilter());
}
- refreshToolbarState();
+ updateToolbar();
updateSyncProgressBarVisibility();
}
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 370deee76..467299e4c 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/QueueFragment.java
@@ -87,8 +87,6 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
private List<FeedItem> queue;
- private boolean isUpdatingFeeds = false;
-
private static final String PREFS = "QueueFragment";
private static final String PREF_SHOW_LOCK_WARNING = "show_lock_warning";
@@ -191,9 +189,7 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
public void onEventMainThread(DownloadEvent event) {
Log.d(TAG, "onEventMainThread() called with DownloadEvent");
DownloaderUpdate update = event.update;
- if (event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
- refreshToolbarState();
- }
+ refreshToolbarState();
if (recyclerAdapter != null && update.mediaIds.length > 0) {
for (long mediaId : update.mediaIds) {
int pos = FeedItemUtil.indexOfItemWithMediaId(queue, mediaId);
@@ -221,18 +217,14 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
@Subscribe(threadMode = ThreadMode.MAIN)
public void onPlayerStatusChanged(PlayerStatusEvent event) {
loadItems(false);
- if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) {
- refreshToolbarState();
- }
+ refreshToolbarState();
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) {
// Sent when playback position is reset
loadItems(false);
- if (isUpdatingFeeds != updateRefreshMenuItemChecker.isRefreshing()) {
- refreshToolbarState();
- }
+ refreshToolbarState();
}
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -261,17 +253,14 @@ public class QueueFragment extends Fragment implements Toolbar.OnMenuItemClickLi
recyclerAdapter = null;
}
- private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker =
- () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds();
-
private void refreshToolbarState() {
boolean keepSorted = UserPreferences.isQueueKeepSorted();
toolbar.getMenu().findItem(R.id.queue_lock).setChecked(UserPreferences.isQueueLocked());
toolbar.getMenu().findItem(R.id.queue_lock).setVisible(!keepSorted);
toolbar.getMenu().findItem(R.id.queue_sort_random).setVisible(!keepSorted);
toolbar.getMenu().findItem(R.id.queue_keep_sorted).setChecked(keepSorted);
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(),
- R.id.refresh_item, updateRefreshMenuItemChecker);
+ MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(),
+ R.id.refresh_item, DownloadService.isRunning && DownloadService.isDownloadingFeeds());
}
@Override
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 6256faddb..bb7d9ff30 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
@@ -93,7 +93,6 @@ public class SubscriptionFragment extends Fragment
private TextView feedsFilteredMsg;
private Toolbar toolbar;
private String displayedFolder = null;
- private boolean isUpdatingFeeds = false;
private boolean displayUpArrow;
private Disposable disposable;
@@ -200,8 +199,8 @@ public class SubscriptionFragment extends Fragment
int columns = prefs.getInt(PREF_NUM_COLUMNS, getDefaultNumOfColumns());
toolbar.getMenu().findItem(COLUMN_CHECKBOX_IDS[columns - MIN_NUM_COLUMNS]).setChecked(true);
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(),
- R.id.refresh_item, updateRefreshMenuItemChecker);
+ MenuItemUtils.updateRefreshMenuItem(toolbar.getMenu(), R.id.refresh_item,
+ DownloadService.isRunning && DownloadService.isDownloadingFeeds());
}
@Override
@@ -407,14 +406,9 @@ public class SubscriptionFragment extends Fragment
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEventMainThread(DownloadEvent event) {
Log.d(TAG, "onEventMainThread() called with: " + "event = [" + event + "]");
- if (event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
- refreshToolbarState();
- }
+ refreshToolbarState();
}
- private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker =
- () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds();
-
@Override
public void onEndSelectMode() {
speedDialView.close();
diff --git a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java
index 27419c8a2..a08907917 100644
--- a/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/ui/home/HomeFragment.java
@@ -52,7 +52,6 @@ public class HomeFragment extends Fragment implements Toolbar.OnMenuItemClickLis
private static final String KEY_UP_ARROW = "up_arrow";
private boolean displayUpArrow;
private HomeFragmentBinding viewBinding;
- private boolean isUpdatingFeeds = false;
private Disposable disposable;
@NonNull
@@ -115,20 +114,14 @@ public class HomeFragment extends Fragment implements Toolbar.OnMenuItemClickLis
return new ArrayList<>(Arrays.asList(TextUtils.split(hiddenSectionsString, ",")));
}
- private final MenuItemUtils.UpdateRefreshMenuItemChecker updateRefreshMenuItemChecker =
- () -> DownloadService.isRunning && DownloadService.isDownloadingFeeds();
-
private void refreshToolbarState() {
- isUpdatingFeeds = MenuItemUtils.updateRefreshMenuItem(viewBinding.toolbar.getMenu(),
- R.id.refresh_item, updateRefreshMenuItemChecker);
+ MenuItemUtils.updateRefreshMenuItem(viewBinding.toolbar.getMenu(),
+ R.id.refresh_item, DownloadService.isRunning && DownloadService.isDownloadingFeeds());
}
@Subscribe(sticky = true, threadMode = ThreadMode.MAIN)
public void onEventMainThread(DownloadEvent event) {
- Log.d(TAG, "onEventMainThread() called with DownloadEvent");
- if (event.hasChangedFeedUpdateStatus(isUpdatingFeeds)) {
- refreshToolbarState();
- }
+ refreshToolbarState();
}
@Override
diff --git a/app/src/main/play/release-notes/en-US/default.txt b/app/src/main/play/release-notes/en-US/default.txt
index f74f32c72..1232dd6ad 100644
--- a/app/src/main/play/release-notes/en-US/default.txt
+++ b/app/src/main/play/release-notes/en-US/default.txt
@@ -1,6 +1,6 @@
-∙ Support for podcasting 2.0 chapters (@tonytamsf)
-∙ Statistics: filter based on month/year (@ByteHamster), access via button on Subscriptions toolbar instead of Settings (@IordanisKokk)
-∙ Local feed bug fixes & improvements (@ByteHamster)
-∙ Design improvements (design: George, code: @ByteHamster)
-∙ Update feeds to https if possible, better handle captive portal redirects (@ByteHamster)
-∙ As always, even though we never list it: new & updated translations (thanks to all our lovely translators)
+∙ View "New Episodes" list now in a dedicated screen called Inbox, with swipe actions (@ByteHamster)
+∙ Use swipe actions and quickly toggle Favourites on the Episodes screen (@ByteHamster)
+∙ View a list of (unplayed) episodes in Android Auto (@tonytamsf)
+∙ Scroll to the top of lists by long-pressing the toolbar (@ByteHamster)
+∙ Bug fixes around authentication for podcasts & Nextcloud sync (@ByteHamster)
+∙ Directly open localised documentation if available (for now: da, fr, it, nl) (@ByteHamster)
diff --git a/app/src/main/res/layout/episodes_list_fragment.xml b/app/src/main/res/layout/episodes_list_fragment.xml
index 2391a73ae..629b7ab0e 100644
--- a/app/src/main/res/layout/episodes_list_fragment.xml
+++ b/app/src/main/res/layout/episodes_list_fragment.xml
@@ -20,6 +20,7 @@
android:id="@+id/txtvInformation"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:background="?attr/selectableItemBackground"
android:gravity="center"
android:layout_below="@id/toolbar"
android:paddingTop="2dp"