summaryrefslogtreecommitdiff
path: root/app/src
diff options
context:
space:
mode:
Diffstat (limited to 'app/src')
-rw-r--r--app/src/main/assets/developers.csv41
-rw-r--r--app/src/main/assets/translators.csv34
-rw-r--r--app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java3
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java14
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/RemoveFeedDialog.java52
-rw-r--r--app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java11
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java27
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java46
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java7
-rw-r--r--app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java40
-rw-r--r--app/src/main/play/listings/ca/full-description.txt31
-rw-r--r--app/src/main/play/listings/ca/short-description.txt1
-rw-r--r--app/src/main/play/listings/ca/title.txt1
-rw-r--r--app/src/main/play/listings/cs-CZ/full-description.txt31
-rw-r--r--app/src/main/play/listings/cs-CZ/short-description.txt1
-rw-r--r--app/src/main/play/listings/cs-CZ/title.txt1
-rw-r--r--app/src/main/play/listings/de-DE/graphics/large-tablet-screenshots/tablet.pngbin0 -> 604491 bytes
-rw-r--r--app/src/main/play/listings/en-US/graphics/large-tablet-screenshots/tablet.pngbin0 -> 605931 bytes
-rw-r--r--app/src/main/play/listings/es-ES/full-description.txt4
-rw-r--r--app/src/main/play/release-notes/en-US/default.txt2
-rw-r--r--app/src/main/res/layout/filter_dialog.xml24
-rw-r--r--app/src/main/res/layout/filter_dialog_row.xml6
22 files changed, 222 insertions, 155 deletions
diff --git a/app/src/main/assets/developers.csv b/app/src/main/assets/developers.csv
index cff15ee38..a2c54723d 100644
--- a/app/src/main/assets/developers.csv
+++ b/app/src/main/assets/developers.csv
@@ -1,35 +1,36 @@
ByteHamster;5811634;Maintainer
danieloeh;968613;Original creator of AntennaPod (retired)
-mfietz;6860662;Maintainer
+mfietz;6860662;Maintainer (retired)
TomHennen;5216560;Maintainer (retired)
orionlee;250644;Contributor
domingos86;9538859;Contributor
+tonytamsf;149837;Contributor
andersonvom;69922;Contributor
+damoasda;46045854;Contributor
TacoTheDank;32376686;Contributor
shortspider;5712543;Contributor
ebraminio;833473;Contributor
+asdoi;36813904;Contributor
spacecowboy;223655;Contributor
patheticpat;16046;Contributor
-tonytamsf;149837;Contributor
brad;1614;Contributor
Cj-Malone;10121513;Contributor
maxbechtold;9162198;Contributor
-asdoi;36813904;Contributor
gaul;848247;Contributor
qkolj;6667105;Contributor
+keunes;11229646;Maintainer
pachecosf;46357909;Contributor
gerardolgvr;20119298;Contributor
bws9000;262625;Contributor
ahangarha;11241315;Contributor
-damoasda;46045854;Contributor
hannesa2;3314607;Contributor
-keunes;11229646;Contributor
rharriso;570910;Contributor
xgouchet;818706;Contributor
sevenmaster;12869538;Contributor
TheRealFalcon;153674;Contributor
-jas14;569991;Contributor
+Slinger;75751;Contributor
johnjohndoe;144518;Contributor
+jas14;569991;Contributor
udif;809640;Contributor
malockin;12814657;Contributor
dirkmueller;1029152;Contributor
@@ -49,6 +50,7 @@ deandreamatias;21011641;Contributor
MeirAtIMDDE;4421079;Contributor
egsavage;126165;Contributor
ligi;111600;Contributor
+Xeitor;8825715;Contributor
dreiss;4121;Contributor
liesen;26872;Contributor
nereocystis;2257107;Contributor
@@ -70,30 +72,43 @@ SosoTughushi;19908097;Contributor
fabolhak;20029691;Contributor
archibishop;36948493;Contributor
alifeflow;24603829;Contributor
+avirajrsingh;69088913;Contributor
toggles;14695;Contributor
matdb;48329535;Contributor
+damlayildiz;56313500;Contributor
kingargyle;177042;Contributor
dsmith47;14109426;Contributor
hannesaa2;18496079;Contributor
jhunnius;9149031;Contributor
ShadowIce;59123;Contributor
+Niffler;8172446;Contributor
raghulj;57007;Contributor
raghulrm;5362986;Contributor
mamehacker;16738348;Contributor
skitt;2128935;Contributor
wseemann;2296196;Contributor
+markamaze;17114678;Contributor
+mohitshah3111999;42018918;Contributor
+moralesg;14352147;Contributor
mr-intj;6268767;Contributor
tuxayo;2678215;Contributor
schlch;56929215;Contributor
alimemonzx;44647595;Contributor
+dev-darrell;52300159;Contributor
+jmdouglas;10855634;Contributor
olivoto;15932680;Contributor
+PtilopsisLeucotis;54054883;Contributor
+abhinavg1997;60095795;Contributor
alanorth;191754;Contributor
alexte;7724992;Contributor
andrey-krutov;1488973;Contributor
arantius;84729;Contributor
+BoJacobs;25435640;Contributor
+chetan882777;36985543;Contributor
chrissicool;232590;Contributor
cszucko;1810383;Contributor
CWftw;1498303;Contributor
+connectety;26038710;Contributor
danielm5;66779;Contributor
ariedov;958646;Contributor
brettle;118192;Contributor
@@ -107,17 +122,21 @@ Kaligule;3586246;Contributor
kvithayathil;1056073;Contributor
luiscruz;1080714;Contributor
mlasson;5814258;Contributor
+schwedenmut;9077622;Contributor
M-arcel;56698158;Contributor
msoose;30473690;Contributor
mo;7117;Contributor
mdeveloper20;2319126;Contributor
-Slinger;75751;Contributor
mschuetz;108637;Contributor
+max-wittig;6639323;Contributor
MolarAmbiguity;10541979;Contributor
mounirlamouri;573590;Contributor
+nikhil097;35090769;Contributor
+panoreak;25068506;Contributor
+patrickjkennedy;8617261;Contributor
ortylp;470439;Contributor
-PtilopsisLeucotis;54054883;Contributor
ramzan;55637406;Contributor
+iamrichR;44210678;Contributor
SamWhited;512573;Contributor
selivan;1208989;Contributor
sonnayasomnambula;7716779;Contributor
@@ -126,13 +145,17 @@ shantanahardy;26757164;Contributor
danners;116551;Contributor
corecode;177979;Contributor
vimsick;20211590;Contributor
+lyallemma;25173082;Contributor
edent;837136;Contributor
atrus6;357881;Contributor
+heyyviv;56256802;Contributor
waylife;3348620;Contributor
amhokies;3124968;Contributor
andrewc1;19559401;Contributor
axq;5077221;Contributor
+binarytoto;75904760;Contributor
+chrk2205;44704035;Contributor
fossterer;4236021;Contributor
-jmdouglas;10855634;Contributor
lightonflux;1377943;Contributor
minusf;3632883;Contributor
+zawad2221;32180355;Contributor
diff --git a/app/src/main/assets/translators.csv b/app/src/main/assets/translators.csv
index a7d289963..fddad789b 100644
--- a/app/src/main/assets/translators.csv
+++ b/app/src/main/assets/translators.csv
@@ -1,45 +1,45 @@
-Arabic;abuzar3.khalid, keunes, nabilMaghura, rex07
+Arabic;abuzar3.khalid, badarotti, keunes, nabilMaghura, rex07, shubbar
Asturian (ast_ES);enolp
Basque;gaztainalde, keunes, Osoitz, pospolos
Breton;Belvar, keunes
Bulgarian;keunes, solusitor
-Catalan;carles.llacer, dvd1985, exort12, javiercoll, keunes, Kintu, lambdani, marcmetallextrem, xc70
-Chinese (zh_CN);brnme, cyril3, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, jhxie, jxj2zzz79pfp9bpo, keunes, kyleehee, molisiye, owen8877, RainSlide, Sak94664, spice2wolf, tupunco, wongsyrone, yangyang, yiqiok
+Catalan;carles.llacer, dvd1985, exort12, IvanAmarante, javiercoll, keunes, Kintu, lambdani, marcmetallextrem, xc70
+Chinese (zh_CN);brnme, cyril3, Felix2yu, gaohongyuan, Guaidaodl, Huck0, iconteral, jhxie, jxj2zzz79pfp9bpo, 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, elich, Hanzmeister, svetlemodry, Thomaash
-Danish;jhertel, keunes, SebastianKiwiDk, twikedk
+Danish;JFreak, jhertel, keunes, SebastianKiwiDk, twikedk
Dutch;e2jk, keunes, rwv, Vistaus
Estonian;Eraser, keunes, mahfiaz
Finnish;Ban3, keunes, Sahtor
French;ChaoticMind, clombion, Cornegidouille, e2jk, keunes, lacouture, LouFex, Matth78, Poussinou, sterylmreep
Galician;antiparvos, pikamoku, Raichely
-German;ByteHamster, ceving, dadosch, DerSilly, elkangaroo, enz, f_grubm, finsterwalder, HolgerJeromin, kalei, keunes, mfietz, Quiss42, repat, ypid
+German;_Er, ByteHamster, ceving, dadosch, DerSilly, elkangaroo, enz, f_grubm, finsterwalder, hbilke, HolgerJeromin, JoeMcFly, kalei, keunes, mfietz, pudeeh, Quiss42, repat, tomte, tweimer, Willhelm, ypid
Modern Greek (1453-);AnimaRain, antonist, keunes, pavlosv
Hebrew (he_IL);amir.dafnyman, E1i9, mongoose4004, pinkasey, rellieberman, Yaron
-Hindi (hi_IN);keunes, purple.coder, siddhusengar
-Hungarian;hurrikan, keunes, lna91, marthynw, meskobalazs, naren93
+Hindi (hi_IN);keunes, purple.coder, siddhusengar, thelazyoxymoron
+Hu;hurrikan, keunes, lna91, marthynw, meskobalazs, naren93
Icelandic;keunes, marthjod
Indonesian;dbrw, keunes, levirs565
-Italian (it_IT);aalex70, allin, Bonnee, dontknowcris, giuseppep, Guybrush88, ilmanzo, keunes, m.chinni, marco_pag, neonsoftware, niccord, theloca95
+Italian (it_IT);aalex70, allin, alvami, Bonnee, dontknowcris, giuseppep, Guybrush88, ilmanzo, keunes, m.chinni, marco_pag, neonsoftware, niccord, salorock, theloca95
Japanese;keunes, KotaKato, Naofumi, sh3llc4t, TranslatorG
Kannada (kn_IN);chiraag.nataraj, keunes, thejeshgn
-Korean;changwoo, keunes, libliboom
+Ko;changwoo, keunes, libliboom
Lithuanian;keunes, naglis
Macedonian;krisfremen
Malayalam;joice, keunes, rashivkp
-Norwegian Bokmål (nb_NO);abstrakct, bablecopherye, corkie, heraldo, jakobkg, keunes, kongk, sevenmaster, timbast
-Persian;ahangarha, danialbehzadi, ebraminio, F7D, hamidrezabayat76, keunes, sinamoghaddas
-Polish (pl_PL);hiro2020, Iwangelion, keunes, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
+Norwegian Bokmål (nb_NO);abstrakct, ahysing, bablecopherye, corkie, forteller, heraldo, jakobkg, keunes, kongk, sevenmaster, timbast
+Persian;ahangarha, danialbehzadi, ebadi, ebraminio, F7D, hamidrezabayat76, keunes, sinamoghaddas
+Polish (pl_PL);befeleme, hiro2020, Iwangelion, keunes, lomapur, mandlus, maniexx, Mephistofeles, shark103, tyle
Portuguese;emansije, keunes, smarquespt
Portuguese (pt_BR);alexupits, alysonborges, andersonvom, arua, caioau, carlo_valente, castrors, edman, keunes, lipefire, mbaltar, olivoto, rogervezaro, RubeensVinicius, SamWilliam
Romanian (ro_RO);corneliu.e, fuzzmz, keunes, ralienpp
-Russian (ru_RU);btimofeev, Duke_Raven, gammja, homocomputeris, IgorPolyakov, keunes, mercutiy, null, overmind88, Platun0v, PtilopsisLeucotis, s.chebotar, un_logic, Vladryyu, whereisthetea
-Slovak;ati3, keunes, tiborepcek
+Russian (ru_RU);ashed, btimofeev, Duke_Raven, gammja, homocomputeris, IgorPolyakov, keunes, mercutiy, null, overmind88, Platun0v, PtilopsisLeucotis, s.chebotar, un_logic, Vladryyu, whereisthetea
+Slovak;ati3, keunes, marulinko, tiborepcek
Slovenian (sl_SI);keunes, panter23
-Spanish;AleksSyntek, andersonvom, andrespelaezp, deandreamatias, dvd1985, Fitoschido, frandavid100, hard_ware, javiercoll, keunes, LatinSuD, leogrignafini, tres.14159, vfmatzkin, wakutiteo
+Spanish;AleksSyntek, andersonvom, andrespelaezp, deandreamatias, dvd1985, elojodepajaro, Fitoschido, frandavid100, hard_ware, javiercoll, keunes, LatinSuD, leogrignafini, rafael.osuna, tres.14159, vfmatzkin, wakutiteo
Swahili (macrolanguage);keunes, kmtra
Swedish (sv_SE);bpnilsson, keunes, nilso, TwoD
Telugu;keunes, veeven
-Turkish;brsata, Erdy, keunes, overbite, Slsdem
-Ukrainian (uk_UA);IndibidAbulya, keunes, older, paul_sm, sergiyr, zhenya97
+Turkish;AhmedDuran, brsata, Erdy, keunes, overbite, Slsdem
+Ukrainian (uk_UA);keunes, older, paul_sm, sergiyr, zhenya97
Vietnamese;abnvolk, keunes, ppanhh
diff --git a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
index b2d635df3..4fa8acc43 100644
--- a/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
+++ b/app/src/main/java/de/danoeh/antennapod/adapter/ChaptersListAdapter.java
@@ -66,7 +66,7 @@ public class ChaptersListAdapter extends RecyclerView.Adapter<ChaptersListAdapte
holder.duration.setText(context.getString(R.string.chapter_duration,
Converter.getDurationStringLocalized(context, (int) duration)));
- if (sc.getLink() == null) {
+ if (TextUtils.isEmpty(sc.getLink())) {
holder.link.setVisibility(View.GONE);
} else {
holder.link.setVisibility(View.VISIBLE);
@@ -74,6 +74,7 @@ public class ChaptersListAdapter extends RecyclerView.Adapter<ChaptersListAdapte
holder.link.setOnClickListener(v -> IntentUtils.openInBrowser(context, sc.getLink()));
}
holder.secondaryActionIcon.setImageResource(ThemeUtils.getDrawableFromAttr(context, R.attr.av_play));
+ holder.secondaryActionButton.setContentDescription(context.getString(R.string.play_chapter));
holder.secondaryActionButton.setOnClickListener(v -> {
if (callback != null) {
callback.onPlayChapterButtonClicked(position);
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
index 82010637f..80df87891 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/FilterDialog.java
@@ -3,6 +3,7 @@ package de.danoeh.antennapod.dialog;
import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
+import android.view.View;
import android.widget.LinearLayout;
import android.widget.RadioButton;
@@ -34,18 +35,19 @@ public abstract class FilterDialog {
builder.setTitle(R.string.filter);
LayoutInflater inflater = LayoutInflater.from(this.context);
- LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.filter_dialog, null, false);
+ View layout = inflater.inflate(R.layout.filter_dialog, null, false);
+ LinearLayout rows = layout.findViewById(R.id.filter_rows);
builder.setView(layout);
for (FeedItemFilterGroup item : FeedItemFilterGroup.values()) {
- RecursiveRadioGroup row = (RecursiveRadioGroup) inflater.inflate(R.layout.filter_dialog_row, null);
+ RecursiveRadioGroup row = (RecursiveRadioGroup) inflater.inflate(R.layout.filter_dialog_row, null, false);
RadioButton filter1 = row.findViewById(R.id.filter_dialog_radioButton1);
RadioButton filter2 = row.findViewById(R.id.filter_dialog_radioButton2);
filter1.setText(item.values[0].displayName);
filter1.setTag(item.values[0].filterId);
filter2.setText(item.values[1].displayName);
filter2.setTag(item.values[1].filterId);
- layout.addView(row);
+ rows.addView(row);
}
for (String filterId : filterValues) {
@@ -56,11 +58,11 @@ public abstract class FilterDialog {
builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
filterValues.clear();
- for (int i = 0; i < layout.getChildCount(); i++) {
- if (!(layout.getChildAt(i) instanceof RecursiveRadioGroup)) {
+ for (int i = 0; i < rows.getChildCount(); i++) {
+ if (!(rows.getChildAt(i) instanceof RecursiveRadioGroup)) {
continue;
}
- RecursiveRadioGroup group = (RecursiveRadioGroup) layout.getChildAt(i);
+ RecursiveRadioGroup group = (RecursiveRadioGroup) rows.getChildAt(i);
if (group.getCheckedButton() != null) {
String tag = (String) group.getCheckedButton().getTag();
if (tag != null) { // Clear buttons use no tag
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/RemoveFeedDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/RemoveFeedDialog.java
new file mode 100644
index 000000000..156c1dba8
--- /dev/null
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/RemoveFeedDialog.java
@@ -0,0 +1,52 @@
+package de.danoeh.antennapod.dialog;
+
+import android.app.ProgressDialog;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.util.Log;
+import de.danoeh.antennapod.R;
+import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
+import de.danoeh.antennapod.core.feed.Feed;
+import de.danoeh.antennapod.core.storage.DBWriter;
+import io.reactivex.Completable;
+import io.reactivex.android.schedulers.AndroidSchedulers;
+import io.reactivex.schedulers.Schedulers;
+
+public class RemoveFeedDialog {
+ private static final String TAG = "RemoveFeedDialog";
+
+ public static void show(Context context, Feed feed, Runnable onSuccess) {
+ int messageId = feed.isLocalFeed() ? R.string.feed_delete_confirmation_local_msg
+ : R.string.feed_delete_confirmation_msg;
+ String message = context.getString(messageId, feed.getTitle());
+
+ ConfirmationDialog dialog = new ConfirmationDialog(context, R.string.remove_feed_label, message) {
+ @Override
+ public void onConfirmButtonPressed(DialogInterface clickedDialog) {
+ clickedDialog.dismiss();
+
+ ProgressDialog progressDialog = new ProgressDialog(context);
+ progressDialog.setMessage(context.getString(R.string.feed_remover_msg));
+ progressDialog.setIndeterminate(true);
+ progressDialog.setCancelable(false);
+ progressDialog.show();
+
+ Completable.fromCallable(() -> DBWriter.deleteFeed(context, feed.getId()).get())
+ .subscribeOn(Schedulers.io())
+ .observeOn(AndroidSchedulers.mainThread())
+ .subscribe(
+ () -> {
+ Log.d(TAG, "Feed was deleted");
+ if (onSuccess != null) {
+ onSuccess.run();
+ }
+ progressDialog.dismiss();
+ }, error -> {
+ Log.e(TAG, Log.getStackTraceString(error));
+ progressDialog.dismiss();
+ });
+ }
+ };
+ dialog.createNewDialog().show();
+ }
+}
diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java
index a8915480c..8a87fef25 100644
--- a/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java
+++ b/app/src/main/java/de/danoeh/antennapod/dialog/SubscriptionsFilterDialog.java
@@ -30,7 +30,8 @@ public class SubscriptionsFilterDialog {
builder.setTitle(context.getString(R.string.pref_filter_feed_title));
LayoutInflater inflater = LayoutInflater.from(context);
- LinearLayout layout = (LinearLayout) inflater.inflate(R.layout.filter_dialog, null, false);
+ View layout = inflater.inflate(R.layout.filter_dialog, null, false);
+ LinearLayout rows = layout.findViewById(R.id.filter_rows);
builder.setView(layout);
for (SubscriptionsFilterGroup item : SubscriptionsFilterGroup.values()) {
@@ -45,7 +46,7 @@ public class SubscriptionsFilterDialog {
} else {
filter2.setVisibility(View.GONE);
}
- layout.addView(row);
+ rows.addView(row);
}
for (String filterId : filterValues) {
@@ -56,11 +57,11 @@ public class SubscriptionsFilterDialog {
builder.setPositiveButton(R.string.confirm_label, (dialog, which) -> {
filterValues.clear();
- for (int i = 0; i < layout.getChildCount(); i++) {
- if (!(layout.getChildAt(i) instanceof RecursiveRadioGroup)) {
+ for (int i = 0; i < rows.getChildCount(); i++) {
+ if (!(rows.getChildAt(i) instanceof RecursiveRadioGroup)) {
continue;
}
- RecursiveRadioGroup group = (RecursiveRadioGroup) layout.getChildAt(i);
+ RecursiveRadioGroup group = (RecursiveRadioGroup) rows.getChildAt(i);
if (group.getCheckedButton() != null) {
String tag = (String) group.getCheckedButton().getTag();
if (tag != null) { // Clear buttons use no tag
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 681d3a88e..550e4761e 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java
@@ -36,8 +36,6 @@ import com.joanzapata.iconify.widget.IconTextView;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.adapter.EpisodeItemListAdapter;
-import de.danoeh.antennapod.core.asynctask.FeedRemover;
-import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
import de.danoeh.antennapod.core.dialog.DownloadRequestErrorDialogCreator;
import de.danoeh.antennapod.core.event.DownloadEvent;
import de.danoeh.antennapod.core.event.DownloaderUpdate;
@@ -65,6 +63,7 @@ import de.danoeh.antennapod.core.util.ThemeUtils;
import de.danoeh.antennapod.core.util.gui.MoreContentListFooterUtil;
import de.danoeh.antennapod.dialog.EpisodesApplyActionFragment;
import de.danoeh.antennapod.dialog.FilterDialog;
+import de.danoeh.antennapod.dialog.RemoveFeedDialog;
import de.danoeh.antennapod.dialog.RenameFeedDialog;
import de.danoeh.antennapod.menuhandler.FeedItemMenuHandler;
import de.danoeh.antennapod.menuhandler.FeedMenuHandler;
@@ -298,28 +297,8 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem
new RenameFeedDialog(getActivity(), feed).show();
return true;
case R.id.remove_item:
- final FeedRemover remover = new FeedRemover(
- getActivity(), feed) {
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- ((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null);
- }
- };
- int messageId = feed.isLocalFeed() ? R.string.feed_delete_confirmation_local_msg
- : R.string.feed_delete_confirmation_msg;
- ConfirmationDialog conDialog = new ConfirmationDialog(getActivity(),
- R.string.remove_feed_label,
- getString(messageId, feed.getTitle())) {
-
- @Override
- public void onConfirmButtonPressed(
- DialogInterface dialog) {
- dialog.dismiss();
- remover.executeAsync();
- }
- };
- conDialog.createNewDialog().show();
+ RemoveFeedDialog.show(getContext(), feed, () ->
+ ((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null));
return true;
default:
return false;
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
index 4f99e8130..c69d46265 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java
@@ -26,19 +26,15 @@ import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.activity.PreferenceActivity;
import de.danoeh.antennapod.adapter.NavListAdapter;
-import de.danoeh.antennapod.core.asynctask.FeedRemover;
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
import de.danoeh.antennapod.core.event.QueueEvent;
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
-import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
-import de.danoeh.antennapod.core.util.FeedItemUtil;
-import de.danoeh.antennapod.core.util.IntentUtils;
+import de.danoeh.antennapod.dialog.RemoveFeedDialog;
import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
import de.danoeh.antennapod.dialog.RenameFeedDialog;
import io.reactivex.Observable;
@@ -192,41 +188,15 @@ public class NavDrawerFragment extends Fragment implements AdapterView.OnItemCli
new RenameFeedDialog(getActivity(), feed).show();
return true;
case R.id.remove_item:
- final FeedRemover remover = new FeedRemover(getContext(), feed) {
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- if (selectedNavListIndex == position) {
- if (getActivity() instanceof MainActivity) {
- ((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null);
- } else {
- showMainActivity(EpisodesFragment.TAG);
- }
- }
- }
- };
- int messageId = feed.isLocalFeed() ? R.string.feed_delete_confirmation_local_msg
- : R.string.feed_delete_confirmation_msg;
- ConfirmationDialog conDialog = new ConfirmationDialog(getContext(),
- R.string.remove_feed_label,
- getString(messageId, feed.getTitle())) {
- @Override
- public void onConfirmButtonPressed(DialogInterface dialog) {
- dialog.dismiss();
- long mediaId = PlaybackPreferences.getCurrentlyPlayingFeedMediaId();
- if (mediaId > 0 && FeedItemUtil.indexOfItemWithMediaId(feed.getItems(), mediaId) >= 0) {
- Log.d(TAG, "Currently playing episode is about to be deleted, skipping");
- remover.skipOnCompletion = true;
- int playerStatus = PlaybackPreferences.getCurrentPlayerStatus();
- if (playerStatus == PlaybackPreferences.PLAYER_STATUS_PLAYING) {
- IntentUtils.sendLocalBroadcast(getContext(),
- PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE);
- }
+ RemoveFeedDialog.show(getContext(), feed, () -> {
+ if (selectedNavListIndex == position) {
+ if (getActivity() instanceof MainActivity) {
+ ((MainActivity) getActivity()).loadFragment(EpisodesFragment.TAG, null);
+ } else {
+ showMainActivity(EpisodesFragment.TAG);
}
- remover.executeAsync();
}
- };
- conDialog.createNewDialog().show();
+ });
return true;
default:
return super.onContextItemSelected(item);
diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
index 4549e2a09..973fcb978 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/PlaybackHistoryFragment.java
@@ -20,6 +20,7 @@ import de.danoeh.antennapod.core.event.FeedItemEvent;
import de.danoeh.antennapod.core.event.PlaybackHistoryEvent;
import de.danoeh.antennapod.core.event.PlaybackPositionEvent;
import de.danoeh.antennapod.core.event.PlayerStatusEvent;
+import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.feed.FeedItem;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
@@ -180,6 +181,12 @@ public class PlaybackHistoryFragment extends Fragment implements Toolbar.OnMenuI
refreshToolbarState();
}
+ @Subscribe(threadMode = ThreadMode.MAIN)
+ public void onUnreadItemsChanged(UnreadItemsUpdateEvent event) {
+ loadItems();
+ refreshToolbarState();
+ }
+
private void onFragmentLoaded() {
adapter.notifyDataSetChanged();
refreshToolbarState();
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 3b4246e3a..4735cab42 100644
--- a/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
+++ b/app/src/main/java/de/danoeh/antennapod/fragment/SubscriptionFragment.java
@@ -33,22 +33,18 @@ import java.util.concurrent.Callable;
import de.danoeh.antennapod.R;
import de.danoeh.antennapod.activity.MainActivity;
import de.danoeh.antennapod.adapter.SubscriptionsAdapter;
-import de.danoeh.antennapod.core.asynctask.FeedRemover;
import de.danoeh.antennapod.core.dialog.ConfirmationDialog;
import de.danoeh.antennapod.core.event.DownloadEvent;
import de.danoeh.antennapod.core.event.FeedListUpdateEvent;
import de.danoeh.antennapod.core.event.UnreadItemsUpdateEvent;
import de.danoeh.antennapod.core.feed.Feed;
-import de.danoeh.antennapod.core.preferences.PlaybackPreferences;
import de.danoeh.antennapod.core.preferences.UserPreferences;
import de.danoeh.antennapod.core.service.download.DownloadService;
-import de.danoeh.antennapod.core.service.playback.PlaybackService;
import de.danoeh.antennapod.core.storage.DBReader;
import de.danoeh.antennapod.core.storage.DBWriter;
import de.danoeh.antennapod.core.storage.DownloadRequester;
-import de.danoeh.antennapod.core.util.FeedItemUtil;
-import de.danoeh.antennapod.core.util.IntentUtils;
import de.danoeh.antennapod.core.util.download.AutoUpdateManager;
+import de.danoeh.antennapod.dialog.RemoveFeedDialog;
import de.danoeh.antennapod.dialog.SubscriptionsFilterDialog;
import de.danoeh.antennapod.dialog.FeedSortDialog;
import de.danoeh.antennapod.dialog.RenameFeedDialog;
@@ -299,45 +295,13 @@ public class SubscriptionFragment extends Fragment implements Toolbar.OnMenuItem
new RenameFeedDialog(getActivity(), feed).show();
return true;
case R.id.remove_item:
- displayRemoveFeedDialog(feed);
+ RemoveFeedDialog.show(getContext(), feed, null);
return true;
default:
return super.onContextItemSelected(item);
}
}
- private void displayRemoveFeedDialog(Feed feed) {
- final FeedRemover remover = new FeedRemover(getContext(), feed) {
- @Override
- protected void onPostExecute(Void result) {
- super.onPostExecute(result);
- loadSubscriptions();
- }
- };
-
- int messageId = feed.isLocalFeed() ? R.string.feed_delete_confirmation_local_msg
- : R.string.feed_delete_confirmation_msg;
- String message = getString(messageId, feed.getTitle());
- ConfirmationDialog dialog = new ConfirmationDialog(getContext(), R.string.remove_feed_label, message) {
- @Override
- public void onConfirmButtonPressed(DialogInterface clickedDialog) {
- clickedDialog.dismiss();
- long mediaId = PlaybackPreferences.getCurrentlyPlayingFeedMediaId();
- if (mediaId > 0 && FeedItemUtil.indexOfItemWithMediaId(feed.getItems(), mediaId) >= 0) {
- Log.d(TAG, "Currently playing episode is about to be deleted, skipping");
- remover.skipOnCompletion = true;
- int playerStatus = PlaybackPreferences.getCurrentPlayerStatus();
- if(playerStatus == PlaybackPreferences.PLAYER_STATUS_PLAYING) {
- IntentUtils.sendLocalBroadcast(getContext(), PlaybackService.ACTION_PAUSE_PLAY_CURRENT_EPISODE);
-
- }
- }
- remover.executeAsync();
- }
- };
- dialog.createNewDialog().show();
- }
-
private <T> void displayConfirmationDialog(@StringRes int title, @StringRes int message, Callable<? extends T> task) {
ConfirmationDialog dialog = new ConfirmationDialog(getActivity(), title, message) {
@Override
diff --git a/app/src/main/play/listings/ca/full-description.txt b/app/src/main/play/listings/ca/full-description.txt
new file mode 100644
index 000000000..90227a4c0
--- /dev/null
+++ b/app/src/main/play/listings/ca/full-description.txt
@@ -0,0 +1,31 @@
+AntennaPod és un reproductor i organitzador de podcasts que et dona accés instantani a milions de podcasts tant de pagament com gratuïts, des de podcasters independents fins a grans publicacions com la BBC, NPR i CNN. Afegeix, importa i exporta els seus feeds sense problemes usant la base de dates de podcasts de iTunes, arxius OPML o simples URLs RSS.
+Descarrega, transmet o posa en cola episodis i disfruta'ls com tu vulgues amb velocitats de reproducció ajustables, suport per a capítols i un temporitzador per a dormir.
+Estalvia esforç, bateria i us de dades mòbils amb controls d'automatització per a descarregar (hores específiques, intervals i xarxes Wi-Fi) i esborrar episodis (basant-se en els teus favorits i els ajustos de retard).
+
+Fet per entusiastes dels podcasts, AntennaPod es lliure en tots els sentits de la paraula: codi obert, sense cost, sense anuncis.
+
+<b>Importa, organitza i reprodueix</b>
+• Organitza la reproducció desde qualsevol lloc: widget a la pantalla principal, notificacions de sistema i controls d'auricular amb fil o bluetooth.
+• Afegeix i importa feeds via iTunes, gPodder.net, fitxers OPML o enllaços RSS o Atom.
+• Disfruta escoltant a la teua manera amb velocitat de reproducció ajustable, suport per a capitols, memòria de posició de reproducció i un avançat temporitzador per a dormir (que pots resetetjar agitant el mòbil)
+• Accedix a feeds i episodis protegits amb contrasenya
+
+<b>Organitza, comparteix i aprecia</b>
+• Recorda als millors dels millors marcant episodis com a favorits.
+• Troba un episodi usant el historial de reproducció o buscant títols i notes.
+• Comparteix episodis i feeds a través d'opcions avançades de medis socials i email, els serveis de gPodder.net i via l'exportació OPML.
+
+<b>Controla el sistema</b>
+• Pren control de les descarregues automàtiques: tria feeds, exclou xarxes mòbils, selecciona xarxes WiFi específiques, requereix que el telèfon estiga carregant i selecciona hores o intervals.
+• Gestioneu l'emmagatzematge ajustant la quantitat d'episodis en emmagatzematge temporal, l'esborrat intel·ligent i triant la vostra ubicació preferida.
+• Adapteu-vos al vostre entorn fent servir el tema clar o el fosc.
+• Feu còpies de seguretat de les vostres subscripcions amb la integració amb gPodder.net i l'exportació a OPML.
+
+<b>Uniu-vos a la comunitat d'AntennaPod!</b>
+L'AntennaPod el desenvolupen voluntaris. Podeu col·laborar, amb codi o comentaris.
+
+Els amigables membres del nostre fòrum estaran contents d'ajudar-vos amb qualsevol pregunta. Esteu convidats a parlar de les features i de podcasting en general, a més.
+https://forum.antennapod.org/
+
+Transifex és el lloc on podeu ajudar amb les traduccions.
+https://www.transifex.com/antennapod/antennapod \ No newline at end of file
diff --git a/app/src/main/play/listings/ca/short-description.txt b/app/src/main/play/listings/ca/short-description.txt
new file mode 100644
index 000000000..25b884d1b
--- /dev/null
+++ b/app/src/main/play/listings/ca/short-description.txt
@@ -0,0 +1 @@
+Reproductor i organitzador de podcasts, fàcil d'usar, flexible i de codi obert. \ No newline at end of file
diff --git a/app/src/main/play/listings/ca/title.txt b/app/src/main/play/listings/ca/title.txt
new file mode 100644
index 000000000..31552f353
--- /dev/null
+++ b/app/src/main/play/listings/ca/title.txt
@@ -0,0 +1 @@
+AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/listings/cs-CZ/full-description.txt b/app/src/main/play/listings/cs-CZ/full-description.txt
new file mode 100644
index 000000000..8411a2e7f
--- /dev/null
+++ b/app/src/main/play/listings/cs-CZ/full-description.txt
@@ -0,0 +1,31 @@
+AntennaPod je správce a přehrávač podcastů, co vám umožňuje okamžitý přístup k milionům podcastů (placené i zdarma) od nezávislých autorů, přes velké zahraniční korporace jako BBC, NPR a CNN, až po české DVTV nebo Český rozhlas. Své podcasty můžete jednoduše přidávat, importovat i exportovat pomocí iTunes, OPML souborů nebo RSS.
+Stahujte, streamujte nebo si vytvořte frontu epizod a užijte si poslech tak, jak ho máte rádi s nastavitelnou rychlostí přehrávání, podporou kapitol a s časovačem vypnutí.
+Ušetři si námahu, baterku i mobilní data s pomocí robustní automatické kontroly nad stahováním epizod (urči časy, intervaly a WIFI sítě) a mazáním epizod (na základě oblíbenosti a nastavení zpoždění).
+
+Vytvořeno nadšenci do podcastů, AntennaPod je otevřený software (OSS), zdarma a bez reklam.
+
+<b>Importujte, zorganizujte a přehrávejte</b>
+• Ovládejte přehrávání odkudkoli: z widgetu na domovské obrazovce, z oznámení nebo pomocí tlačítek na sluchátkách včetně Bluetooth
+• Přidejte a importujte podcasty přes iTunes anebo gPodder.net, OPML soubory a RSS anebo Atom odkazy
+• Užijte si poslech s nastavitelnou rychlostí přehrávání, podporou kapitol, zapamatování poslední pozice přehrávání a pokročilým časovačem vypnutí (restart zatřesením, snížení hlasitosti)
+• Přistupujte k zaheslovaným podcastům a epizodám
+
+<b>Udržovat přehled, sdílet & ocenit</b>
+• Udržujte si seznam toho nejlepšího z nejlepšího přidáním epizod do oblíbených
+• Vyhledej tu správnou epizodu ve své historii přehrávání nebo prohledáním jmen a popisů epizod
+• Sdílej epizody a kanály pomocí pokročilých nastavení pro sociální média a email, gPodder.net službu nebo OPML export
+
+<b>Ovládat systém</b>
+• Převezmi kontrolu nad automatickým stahováním: vybírej kanály, vyluč mobilní sítě, vyber specifické WIFI sítě, vyžaduj stav nabíjení telefonu a nastav časy nebo intervaly
+• Spravujte využití úložiště nastavením množství uložených epizod, chytrého mazání a výběrem místa uložení
+• Přizpůsobte si aplikaci svému prostředí pomocí světlého nebo tmavého motivu
+• Zálohujte své sbírky pomocí služby gPodder.net nebo exportem OPML souborů
+
+<b>Přidejte se do komunity AntennaPodu!</b>
+AntennaPod je aktivně vyvíjen dobrovolníky. Můžete přispět také svým kódem nebo komentáři!
+
+Naše přátelská členská základna vám ráda zodpoví jakékoli dotazy. Zveme vás k diskuzi o AntennaPodu nebo i podcastech obecně.
+https://forum.antennapod.org/
+
+Na Transifexu můžete pomoct s překladem:
+https://www.transifex.com/antennapod/antennapod \ No newline at end of file
diff --git a/app/src/main/play/listings/cs-CZ/short-description.txt b/app/src/main/play/listings/cs-CZ/short-description.txt
new file mode 100644
index 000000000..e0df116ee
--- /dev/null
+++ b/app/src/main/play/listings/cs-CZ/short-description.txt
@@ -0,0 +1 @@
+Jednoduchý a flexibilní open-source program pro správu a poslech podcastů \ No newline at end of file
diff --git a/app/src/main/play/listings/cs-CZ/title.txt b/app/src/main/play/listings/cs-CZ/title.txt
new file mode 100644
index 000000000..31552f353
--- /dev/null
+++ b/app/src/main/play/listings/cs-CZ/title.txt
@@ -0,0 +1 @@
+AntennaPod \ No newline at end of file
diff --git a/app/src/main/play/listings/de-DE/graphics/large-tablet-screenshots/tablet.png b/app/src/main/play/listings/de-DE/graphics/large-tablet-screenshots/tablet.png
new file mode 100644
index 000000000..5ff81f1e0
--- /dev/null
+++ b/app/src/main/play/listings/de-DE/graphics/large-tablet-screenshots/tablet.png
Binary files differ
diff --git a/app/src/main/play/listings/en-US/graphics/large-tablet-screenshots/tablet.png b/app/src/main/play/listings/en-US/graphics/large-tablet-screenshots/tablet.png
new file mode 100644
index 000000000..2defb5ce9
--- /dev/null
+++ b/app/src/main/play/listings/en-US/graphics/large-tablet-screenshots/tablet.png
Binary files differ
diff --git a/app/src/main/play/listings/es-ES/full-description.txt b/app/src/main/play/listings/es-ES/full-description.txt
index b15dd1762..52897ce9c 100644
--- a/app/src/main/play/listings/es-ES/full-description.txt
+++ b/app/src/main/play/listings/es-ES/full-description.txt
@@ -24,8 +24,8 @@ Creado por entusiastas del pódcast, AntennaPod es libre en todos los sentidos:
<b>¡Únete a la comunidad AntennaPod!</b>
AntennaPod es desarrollado por voluntarios. ¡Tú también puedes contribuir, con tu código o con tus comentarios!
-Visita GitHub para solicitar características nuevas, reportar fallos y contribuir con código:
-https://www.github.com/AntennaPod/AntennaPod
+Nuestros amables miembros del foro te ayudarán con cualquier duda que tengas. Estás invitado a discutir sobre las características y el podcasting en general.
+https://forum.antennapod.org/
Ayuda con las traducciones en Transifex:
https://www.transifex.com/antennapod/antennapod \ No newline at end of file
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 6baa07d5a..c911a4f1f 100644
--- a/app/src/main/play/release-notes/en-US/default.txt
+++ b/app/src/main/play/release-notes/en-US/default.txt
@@ -1,5 +1,3 @@
-This is a beta release for AntennaPod 2.1.0
-
- A long-standing wish of many: playing local files! In the 'Add podcast' screen simply tap 'Add local folder' and select a location on your phone! (@ByteHamster, @igoralmeida & @damoasda)
- Pick a country for the 'Discover' screen (@tonytamsf)
- Keyboard shortcuts (@asdoi)
diff --git a/app/src/main/res/layout/filter_dialog.xml b/app/src/main/res/layout/filter_dialog.xml
index 39e9258d9..d700f0365 100644
--- a/app/src/main/res/layout/filter_dialog.xml
+++ b/app/src/main/res/layout/filter_dialog.xml
@@ -1,11 +1,15 @@
<?xml version="1.0" encoding="utf-8"?>
-<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:paddingLeft="24dp"
- android:paddingTop="24dp"
- android:paddingRight="24dp"
- android:paddingBottom="8dp">
-
-</LinearLayout> \ No newline at end of file
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent">
+ <LinearLayout
+ android:id="@+id/filter_rows"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:orientation="vertical"
+ android:paddingLeft="24dp"
+ android:paddingTop="24dp"
+ android:paddingRight="24dp"
+ android:paddingBottom="8dp">
+ </LinearLayout>
+</ScrollView>
diff --git a/app/src/main/res/layout/filter_dialog_row.xml b/app/src/main/res/layout/filter_dialog_row.xml
index 0863997b3..5011812d9 100644
--- a/app/src/main/res/layout/filter_dialog_row.xml
+++ b/app/src/main/res/layout/filter_dialog_row.xml
@@ -28,7 +28,7 @@
android:layout_marginRight="2dp"
android:layout_weight="1"
android:background="?attr/filter_dialog_button_background"
- android:button="@android:color/transparent"
+ style="@style/NoButtonRadio"
android:foreground="?android:attr/selectableItemBackground"
android:checked="false"
android:gravity="center"
@@ -40,7 +40,7 @@
android:layout_height="match_parent"
android:layout_weight="1"
android:background="?attr/filter_dialog_button_background"
- android:button="@android:color/transparent"
+ style="@style/NoButtonRadio"
android:foreground="?android:attr/selectableItemBackground"
android:checked="false"
android:gravity="center"
@@ -53,7 +53,7 @@
android:layout_width="48dp"
android:layout_height="48dp"
android:background="@drawable/ic_filter_close"
- android:button="@android:color/transparent"
+ style="@style/NoButtonRadio"
android:foreground="?android:attr/selectableItemBackground"
android:layout_gravity="center_vertical"
android:checked="true" />