From 62a6ac90780d8d96bb9ae19f4d95108e446e941f Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Wed, 27 May 2020 21:07:09 -0700 Subject: landscape layout --- .../danoeh/antennapod/fragment/CoverFragment.java | 48 +++++++++++++++++--- app/src/main/res/layout/cover_fragment.xml | 52 +++++++++++++--------- 2 files changed, 72 insertions(+), 28 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index 7593188b7..d01299625 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -1,5 +1,6 @@ package de.danoeh.antennapod.fragment; +import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.TextUtils; @@ -8,9 +9,13 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; +import android.widget.LinearLayout; import android.widget.TextView; + import androidx.annotation.NonNull; +import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; + import com.bumptech.glide.Glide; import com.bumptech.glide.load.resource.bitmap.FitCenter; import com.bumptech.glide.load.resource.bitmap.RoundedCorners; @@ -47,6 +52,7 @@ public class CoverFragment extends Fragment { private Disposable disposable; private int displayedChapterIndex = -2; private Playable media; + private int orientation = Configuration.ORIENTATION_UNDEFINED; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -60,6 +66,11 @@ public class CoverFragment extends Fragment { return root; } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + configureForOrientation(getResources().getConfiguration().orientation); + } + private void loadMediaInfo() { if (disposable != null) { disposable.dispose(); @@ -72,12 +83,12 @@ public class CoverFragment extends Fragment { emitter.onComplete(); } }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(media -> { - this.media = media; - displayMediaInfo(media); - }, error -> Log.e(TAG, Log.getStackTraceString(error))); + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(media -> { + this.media = media; + displayMediaInfo(media); + }, error -> Log.e(TAG, Log.getStackTraceString(error))); } private void displayMediaInfo(@NonNull Playable media) { @@ -159,6 +170,31 @@ public class CoverFragment extends Fragment { } } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + + if (orientation != newConfig.orientation) { + orientation = newConfig.orientation; + configureForOrientation(orientation); + } + } + + private void configureForOrientation(int orientation) { + View textContainer = getView().findViewById(R.id.cover_fragment_text_container); + LinearLayout mainContainer = getView().findViewById(R.id.cover_fragment); + LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) textContainer.getLayoutParams(); + if (orientation == Configuration.ORIENTATION_PORTRAIT) { + mainContainer.setOrientation(LinearLayout.VERTICAL); + params.weight = 0; + } else { + mainContainer.setOrientation(LinearLayout.HORIZONTAL); + params.weight = 1; + } + textContainer.setLayoutParams(params); + } + @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/res/layout/cover_fragment.xml b/app/src/main/res/layout/cover_fragment.xml index 28321e760..e3ffcc361 100644 --- a/app/src/main/res/layout/cover_fragment.xml +++ b/app/src/main/res/layout/cover_fragment.xml @@ -1,49 +1,57 @@ - - + android:layout_marginBottom="8dp"> - + + + + -- cgit v1.2.3 From 663b08fc4478bceb1a80581a9c0875bde35f430b Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sun, 12 Jul 2020 09:55:28 +0200 Subject: Install provider in any case --- .../antennapod/activity/OnlineFeedViewActivity.java | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index 0f7bab273..58b2d6db1 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -266,16 +266,15 @@ public class OnlineFeedViewActivity extends AppCompatActivity { true, null, true); download = Observable.fromCallable(() -> { - feeds = DBReader.getFeedList(); - ClientConfig.installSslProvider(this); - downloader = new HttpDownloader(request); - downloader.call(); - return downloader.getResult(); - }) - .subscribeOn(Schedulers.io()) - .observeOn(AndroidSchedulers.mainThread()) - .subscribe(this::checkDownloadResult, - error -> Log.e(TAG, Log.getStackTraceString(error))); + feeds = DBReader.getFeedList(); + downloader = new HttpDownloader(request); + downloader.call(); + return downloader.getResult(); + }) + .subscribeOn(Schedulers.io()) + .observeOn(AndroidSchedulers.mainThread()) + .subscribe(this::checkDownloadResult, + error -> Log.e(TAG, Log.getStackTraceString(error))); } private void checkDownloadResult(@NonNull DownloadStatus status) { -- cgit v1.2.3 From 0cad3bce6840069261b64fe5dc7e474df2b57315 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Tue, 14 Jul 2020 22:52:55 -0700 Subject: sync --- .../java/de/danoeh/antennapod/fragment/CoverFragment.java | 5 +++++ app/src/main/res/layout/cover_fragment.xml | 12 ++++++------ 2 files changed, 11 insertions(+), 6 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index d01299625..708385e31 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -53,6 +53,7 @@ public class CoverFragment extends Fragment { private int displayedChapterIndex = -2; private Playable media; private int orientation = Configuration.ORIENTATION_UNDEFINED; + private int _position = -1; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -142,6 +143,7 @@ public class CoverFragment extends Fragment { } private void displayCoverImage(int position) { + _position = position; int chapter = ChapterUtils.getCurrentChapterIndex(media, position); if (chapter != displayedChapterIndex) { displayedChapterIndex = chapter; @@ -192,6 +194,9 @@ public class CoverFragment extends Fragment { mainContainer.setOrientation(LinearLayout.HORIZONTAL); params.weight = 1; } + if (_position > -1) { + displayCoverImage(_position); + } textContainer.setLayoutParams(params); } diff --git a/app/src/main/res/layout/cover_fragment.xml b/app/src/main/res/layout/cover_fragment.xml index e3ffcc361..738fba027 100644 --- a/app/src/main/res/layout/cover_fragment.xml +++ b/app/src/main/res/layout/cover_fragment.xml @@ -5,23 +5,23 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - android:orientation="vertical" + android:orientation="horizontal" android:id="@+id/cover_fragment" android:padding="8dp" android:gravity="center"> + android:scaleType="fitCenter" + squareImageView:direction="height" + tools:src="@android:drawable/sym_def_app_icon" /> Date: Thu, 16 Jul 2020 00:06:01 -0700 Subject: finally fixed --- .../danoeh/antennapod/fragment/CoverFragment.java | 29 ++++++++++++++++------ app/src/main/res/layout/cover_fragment.xml | 8 +++--- 2 files changed, 25 insertions(+), 12 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index 708385e31..ef0b87d00 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -1,9 +1,11 @@ package de.danoeh.antennapod.fragment; +import android.content.Context; import android.content.res.Configuration; import android.graphics.drawable.Drawable; import android.os.Bundle; import android.text.TextUtils; +import android.util.DisplayMetrics; import android.util.Log; import android.view.LayoutInflater; import android.view.View; @@ -69,7 +71,7 @@ public class CoverFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - configureForOrientation(getResources().getConfiguration().orientation); + configureForOrientation(getResources().getConfiguration().orientation, getResources().getConfiguration()); } private void loadMediaInfo() { @@ -106,6 +108,7 @@ public class CoverFragment extends Fragment { root = null; } + @Override public void onStart() { super.onStart(); @@ -172,34 +175,44 @@ public class CoverFragment extends Fragment { } } - @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); if (orientation != newConfig.orientation) { orientation = newConfig.orientation; - configureForOrientation(orientation); } + configureForOrientation(orientation, newConfig); + } + + public float convertDpToPixel(float dp) { + Context context = this.getActivity().getApplicationContext(); + return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT); } - private void configureForOrientation(int orientation) { + private void configureForOrientation(int orientation, Configuration newConfig) { View textContainer = getView().findViewById(R.id.cover_fragment_text_container); LinearLayout mainContainer = getView().findViewById(R.id.cover_fragment); - LinearLayout.LayoutParams params = (LinearLayout.LayoutParams) textContainer.getLayoutParams(); if (orientation == Configuration.ORIENTATION_PORTRAIT) { mainContainer.setOrientation(LinearLayout.VERTICAL); - params.weight = 0; + if (newConfig.screenWidthDp > 0) { + imgvCover.getLayoutParams().width = (int) (convertDpToPixel(newConfig.screenWidthDp) * .80); + imgvCover.getLayoutParams().height = imgvCover.getLayoutParams().width; + } } else { mainContainer.setOrientation(LinearLayout.HORIZONTAL); - params.weight = 1; + if (newConfig.screenHeightDp > 0) { + imgvCover.getLayoutParams().height = (int) (convertDpToPixel(newConfig.screenHeightDp) * .40); + imgvCover.getLayoutParams().width = imgvCover.getLayoutParams().height; + } } if (_position > -1) { displayCoverImage(_position); } - textContainer.setLayoutParams(params); + imgvCover.requestLayout(); } + @Override public void onDestroyView() { super.onDestroyView(); diff --git a/app/src/main/res/layout/cover_fragment.xml b/app/src/main/res/layout/cover_fragment.xml index 738fba027..03b11fbcb 100644 --- a/app/src/main/res/layout/cover_fragment.xml +++ b/app/src/main/res/layout/cover_fragment.xml @@ -12,10 +12,10 @@ Date: Thu, 16 Jul 2020 00:14:39 -0700 Subject: remove unneeded code --- .../java/de/danoeh/antennapod/fragment/CoverFragment.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index ef0b87d00..a3f46542d 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -55,7 +55,6 @@ public class CoverFragment extends Fragment { private int displayedChapterIndex = -2; private Playable media; private int orientation = Configuration.ORIENTATION_UNDEFINED; - private int _position = -1; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -85,8 +84,7 @@ public class CoverFragment extends Fragment { } else { emitter.onComplete(); } - }) - .subscribeOn(Schedulers.io()) + }).subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(media -> { this.media = media; @@ -108,7 +106,6 @@ public class CoverFragment extends Fragment { root = null; } - @Override public void onStart() { super.onStart(); @@ -146,7 +143,6 @@ public class CoverFragment extends Fragment { } private void displayCoverImage(int position) { - _position = position; int chapter = ChapterUtils.getCurrentChapterIndex(media, position); if (chapter != displayedChapterIndex) { displayedChapterIndex = chapter; @@ -191,7 +187,6 @@ public class CoverFragment extends Fragment { } private void configureForOrientation(int orientation, Configuration newConfig) { - View textContainer = getView().findViewById(R.id.cover_fragment_text_container); LinearLayout mainContainer = getView().findViewById(R.id.cover_fragment); if (orientation == Configuration.ORIENTATION_PORTRAIT) { mainContainer.setOrientation(LinearLayout.VERTICAL); @@ -206,13 +201,8 @@ public class CoverFragment extends Fragment { imgvCover.getLayoutParams().width = imgvCover.getLayoutParams().height; } } - if (_position > -1) { - displayCoverImage(_position); - } - imgvCover.requestLayout(); } - @Override public void onDestroyView() { super.onDestroyView(); -- cgit v1.2.3 From b3112701de533456166355ee73428e7412604367 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Thu, 16 Jul 2020 07:43:18 -0700 Subject: remove global var for orientation --- .../java/de/danoeh/antennapod/fragment/CoverFragment.java | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index a3f46542d..c9fd417cd 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -54,7 +54,6 @@ public class CoverFragment extends Fragment { private Disposable disposable; private int displayedChapterIndex = -2; private Playable media; - private int orientation = Configuration.ORIENTATION_UNDEFINED; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, @@ -70,7 +69,7 @@ public class CoverFragment extends Fragment { @Override public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - configureForOrientation(getResources().getConfiguration().orientation, getResources().getConfiguration()); + configureForOrientation(getResources().getConfiguration()); } private void loadMediaInfo() { @@ -175,10 +174,7 @@ public class CoverFragment extends Fragment { public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); - if (orientation != newConfig.orientation) { - orientation = newConfig.orientation; - } - configureForOrientation(orientation, newConfig); + configureForOrientation(newConfig); } public float convertDpToPixel(float dp) { @@ -186,9 +182,9 @@ public class CoverFragment extends Fragment { return dp * ((float) context.getResources().getDisplayMetrics().densityDpi / DisplayMetrics.DENSITY_DEFAULT); } - private void configureForOrientation(int orientation, Configuration newConfig) { + private void configureForOrientation(Configuration newConfig) { LinearLayout mainContainer = getView().findViewById(R.id.cover_fragment); - if (orientation == Configuration.ORIENTATION_PORTRAIT) { + if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { mainContainer.setOrientation(LinearLayout.VERTICAL); if (newConfig.screenWidthDp > 0) { imgvCover.getLayoutParams().width = (int) (convertDpToPixel(newConfig.screenWidthDp) * .80); -- cgit v1.2.3 From 242614245d9259ede3e368ac520c31105a2fd87f Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Thu, 16 Jul 2020 17:25:20 +0200 Subject: Close player when selecting sidebar entry --- app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'app') 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 0dff8f24b..da5710936 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/NavDrawerFragment.java @@ -19,6 +19,7 @@ import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.Fragment; +import com.google.android.material.bottomsheet.BottomSheetBehavior; import de.danoeh.antennapod.R; import de.danoeh.antennapod.activity.MainActivity; import de.danoeh.antennapod.activity.PreferenceActivity; @@ -371,6 +372,7 @@ public class NavDrawerFragment extends Fragment implements AdapterView.OnItemCli String tag = navAdapter.getTags().get(position); if (getActivity() instanceof MainActivity) { ((MainActivity) getActivity()).loadFragment(tag, null); + ((MainActivity) getActivity()).getBottomSheet().setState(BottomSheetBehavior.STATE_COLLAPSED); } else { showMainActivity(tag); } @@ -379,6 +381,7 @@ public class NavDrawerFragment extends Fragment implements AdapterView.OnItemCli long feedId = navDrawerData.feeds.get(pos).getId(); if (getActivity() instanceof MainActivity) { ((MainActivity) getActivity()).loadFeedFragmentById(feedId, null); + ((MainActivity) getActivity()).getBottomSheet().setState(BottomSheetBehavior.STATE_COLLAPSED); } else { Intent intent = new Intent(getActivity(), MainActivity.class); intent.putExtra(MainActivity.EXTRA_FEED_ID, feedId); -- cgit v1.2.3 From ac8f6f9a3e3ffd27ff82cea82256007c6676c764 Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Thu, 16 Jul 2020 22:45:59 -0700 Subject: layout params --- .../java/de/danoeh/antennapod/fragment/CoverFragment.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index c9fd417cd..0bb657e51 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -184,17 +184,21 @@ public class CoverFragment extends Fragment { private void configureForOrientation(Configuration newConfig) { LinearLayout mainContainer = getView().findViewById(R.id.cover_fragment); + ViewGroup.LayoutParams params = imgvCover.getLayoutParams(); + if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) { mainContainer.setOrientation(LinearLayout.VERTICAL); if (newConfig.screenWidthDp > 0) { - imgvCover.getLayoutParams().width = (int) (convertDpToPixel(newConfig.screenWidthDp) * .80); - imgvCover.getLayoutParams().height = imgvCover.getLayoutParams().width; + params.width = (int) (convertDpToPixel(newConfig.screenWidthDp) * .80); + params.height= params.width; + imgvCover.setLayoutParams(params); } } else { mainContainer.setOrientation(LinearLayout.HORIZONTAL); if (newConfig.screenHeightDp > 0) { - imgvCover.getLayoutParams().height = (int) (convertDpToPixel(newConfig.screenHeightDp) * .40); - imgvCover.getLayoutParams().width = imgvCover.getLayoutParams().height; + params.height = (int) (convertDpToPixel(newConfig.screenHeightDp) * .40); + params.width = params.height; + imgvCover.setLayoutParams(params); } } } -- cgit v1.2.3 From 98edefea08672df15b99a59561e5de939867194f Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Thu, 16 Jul 2020 22:56:19 -0700 Subject: a bit more margin --- app/src/main/res/layout/cover_fragment.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/src/main/res/layout/cover_fragment.xml b/app/src/main/res/layout/cover_fragment.xml index 03b11fbcb..443f19835 100644 --- a/app/src/main/res/layout/cover_fragment.xml +++ b/app/src/main/res/layout/cover_fragment.xml @@ -14,8 +14,9 @@ android:id="@+id/imgvCover" android:layout_width="200dp" android:layout_height="200dp" - android:layout_marginLeft="8dp" - android:layout_marginRight="8dp" + android:layout_gravity="center" + android:layout_marginLeft="64dp" + android:layout_marginRight="64dp" android:layout_weight="0" android:foreground="?attr/selectableItemBackgroundBorderless" android:importantForAccessibility="no" -- cgit v1.2.3 From e53db91ee38173be33fb2273070ec2f76d05763a Mon Sep 17 00:00:00 2001 From: Tony Tam Date: Fri, 17 Jul 2020 17:53:28 -0700 Subject: fix checkstyle --- app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index 0bb657e51..4e8cfbf86 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -190,7 +190,7 @@ public class CoverFragment extends Fragment { mainContainer.setOrientation(LinearLayout.VERTICAL); if (newConfig.screenWidthDp > 0) { params.width = (int) (convertDpToPixel(newConfig.screenWidthDp) * .80); - params.height= params.width; + params.height = params.width; imgvCover.setLayoutParams(params); } } else { -- cgit v1.2.3 From 9d23279f475cacc1da4a9eec183ddb8a68fbd8b6 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 20 Jul 2020 00:12:30 +0200 Subject: Accept more malformed subscribtion URIs --- .../androidTest/java/de/test/antennapod/util/URLCheckerTest.java | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'app') diff --git a/app/src/androidTest/java/de/test/antennapod/util/URLCheckerTest.java b/app/src/androidTest/java/de/test/antennapod/util/URLCheckerTest.java index 4893d7d82..7f26ff612 100644 --- a/app/src/androidTest/java/de/test/antennapod/util/URLCheckerTest.java +++ b/app/src/androidTest/java/de/test/antennapod/util/URLCheckerTest.java @@ -56,6 +56,13 @@ public class URLCheckerTest { assertEquals("http://example.com", out); } + @Test + public void testItpcProtocolWithScheme() { + final String in = "itpc://https://example.com"; + final String out = URLChecker.prepareURL(in); + assertEquals("https://example.com", out); + } + @Test public void testWhiteSpaceUrlShouldNotAppend() { final String in = "\n http://example.com \t"; -- cgit v1.2.3 From 51bbf1a5f9275e1d1bb526c43b0703ae13b349b9 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Tue, 21 Jul 2020 11:55:44 +0200 Subject: Fixed mime type of media:content tags --- .../de/test/antennapod/handler/RssParserTest.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) (limited to 'app') diff --git a/app/src/androidTest/java/de/test/antennapod/handler/RssParserTest.java b/app/src/androidTest/java/de/test/antennapod/handler/RssParserTest.java index d137bb459..c2e319233 100644 --- a/app/src/androidTest/java/de/test/antennapod/handler/RssParserTest.java +++ b/app/src/androidTest/java/de/test/antennapod/handler/RssParserTest.java @@ -2,6 +2,8 @@ package de.test.antennapod.handler; import androidx.test.filters.SmallTest; import de.danoeh.antennapod.core.feed.Feed; +import de.danoeh.antennapod.core.feed.MediaType; +import de.danoeh.antennapod.core.syndication.namespace.NSMedia; import de.test.antennapod.util.syndication.feedgenerator.Rss2Generator; import org.junit.Test; import org.xmlpull.v1.XmlSerializer; @@ -39,4 +41,23 @@ public class RssParserTest extends FeedParserTestBase { }, "UTF-8", 0); assertEquals(image, f2.getImageUrl()); } + + @Test + public void testMediaContentMime() throws Exception { + Feed f1 = createTestFeed(0, false); + f1.setImageUrl(null); + Feed f2 = runFeedTest(f1, new Rss2Generator() { + @Override + protected void writeAdditionalAttributes(XmlSerializer xml) throws IOException { + xml.setPrefix(NSMedia.NSTAG, NSMedia.NSURI); + xml.startTag(null, "item"); + xml.startTag(NSMedia.NSURI, "content"); + xml.attribute(null, "url", "https://www.example.com/file.mp4"); + xml.attribute(null, "medium", "video"); + xml.endTag(NSMedia.NSURI, "content"); + xml.endTag(null, "item"); + } + }, "UTF-8", 0); + assertEquals(MediaType.VIDEO, f2.getItems().get(0).getMedia().getMediaType()); + } } -- cgit v1.2.3 From cc04e08e7432920da712742804bde5f67b3391f7 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 13 Jul 2020 11:02:15 +0200 Subject: Added new icon poll --- .../java/de/test/antennapod/EspressoTestUtils.java | 7 +++++ .../danoeh/antennapod/activity/MainActivity.java | 2 ++ .../danoeh/antennapod/dialog/IconPollDialog.java | 35 ++++++++++++++++++++++ 3 files changed, 44 insertions(+) create mode 100644 app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java (limited to 'app') diff --git a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java index 41c8365fb..7b11e5b55 100644 --- a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java @@ -21,6 +21,7 @@ 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.PodDBAdapter; +import de.danoeh.antennapod.dialog.IconPollDialog; import de.danoeh.antennapod.dialog.RatingDialog; import de.danoeh.antennapod.fragment.NavDrawerFragment; import org.awaitility.Awaitility; @@ -134,6 +135,12 @@ public class EspressoTestUtils { .putString(UserPreferences.PREF_UPDATE_INTERVAL, "0") .commit(); + InstrumentationRegistry.getInstrumentation().getTargetContext() + .getSharedPreferences(IconPollDialog.PREFS_NAME, Context.MODE_PRIVATE) + .edit() + .putBoolean(IconPollDialog.KEY_DIALOG_ALLOWED, false) + .commit(); + RatingDialog.init(InstrumentationRegistry.getTargetContext()); RatingDialog.saveRated(); } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index eaa423708..8c8ce9522 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -32,6 +32,7 @@ import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.util.StorageUtils; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; +import de.danoeh.antennapod.dialog.IconPollDialog; import de.danoeh.antennapod.dialog.RatingDialog; import de.danoeh.antennapod.fragment.AddFeedFragment; import de.danoeh.antennapod.fragment.AudioPlayerFragment; @@ -315,6 +316,7 @@ public class MainActivity extends CastEnabledActivity { super.onStart(); EventBus.getDefault().register(this); RatingDialog.init(this); + IconPollDialog.showIfNeeded(this); if (lastTheme != UserPreferences.getNoTitleTheme()) { finish(); diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java new file mode 100644 index 000000000..70cf6dc78 --- /dev/null +++ b/app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java @@ -0,0 +1,35 @@ +package de.danoeh.antennapod.dialog; + +import android.content.Context; +import android.content.SharedPreferences; +import androidx.appcompat.app.AlertDialog; +import de.danoeh.antennapod.R; +import de.danoeh.antennapod.core.util.IntentUtils; + +public class IconPollDialog { + + private IconPollDialog() { + + } + + public static final String PREFS_NAME = "IconPollDialog"; + public static final String KEY_DIALOG_ALLOWED = "dialog_allowed"; + + public static void showIfNeeded(Context context) { + SharedPreferences preferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); + + if (!preferences.getBoolean(KEY_DIALOG_ALLOWED, true)) { + return; + } + + new AlertDialog.Builder(context) + .setTitle(R.string.icon_poll_title) + .setMessage(R.string.icon_poll_message) + .setCancelable(false) + .setPositiveButton(R.string.icon_poll_vote, (dialog, which) -> + IntentUtils.openInBrowser(context, "https://www.surveymonkey.com/r/96WSBLC")) + .setNegativeButton(R.string.icon_poll_dont_vote, null) + .setOnDismissListener(dialog -> preferences.edit().putBoolean(KEY_DIALOG_ALLOWED, false).apply()) + .show(); + } +} -- cgit v1.2.3 From 4ddee0321465835b2a9edae1e93dafcceb3c5cdc Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Sat, 25 Jul 2020 10:33:18 +0200 Subject: Bumped version to 2.0.0-RC7 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'app') diff --git a/app/build.gradle b/app/build.gradle index 181ad3bfb..1b5d8b713 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -14,8 +14,8 @@ android { // "1.2.3-SNAPSHOT" -> 1020300 // "1.2.3-RC4" -> 1020304 // "1.2.3" -> 1020395 - versionCode 2000006 - versionName "2.0.0-RC6" + versionCode 2000007 + versionName "2.0.0-RC7" multiDexEnabled false vectorDrawables.useSupportLibrary true -- cgit v1.2.3 From d86121746aa845e95ad0dfe16d58bc7ea6fca83e Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 27 Jul 2020 11:33:25 +0200 Subject: Make mobile streaming dialog easier to understand --- .../dialog/StreamingConfirmationDialog.java | 31 ++++++++++------------ 1 file changed, 14 insertions(+), 17 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java index 81e86e217..46095604c 100644 --- a/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java +++ b/app/src/main/java/de/danoeh/antennapod/dialog/StreamingConfirmationDialog.java @@ -1,8 +1,6 @@ package de.danoeh.antennapod.dialog; import android.content.Context; -import android.view.View; -import android.widget.CheckBox; import androidx.appcompat.app.AlertDialog; import de.danoeh.antennapod.R; import de.danoeh.antennapod.core.preferences.UserPreferences; @@ -19,25 +17,24 @@ public class StreamingConfirmationDialog { } public void show() { - View view = View.inflate(context, R.layout.checkbox_do_not_show_again, null); - CheckBox checkDoNotShowAgain = view.findViewById(R.id.checkbox_do_not_show_again); - new AlertDialog.Builder(context) .setTitle(R.string.stream_label) .setMessage(R.string.confirm_mobile_streaming_notification_message) - .setView(view) - .setPositiveButton(R.string.stream_label, (dialog, which) -> { - if (checkDoNotShowAgain.isChecked()) { - UserPreferences.setAllowMobileStreaming(true); - } - new PlaybackServiceStarter(context, playable) - .callEvenIfRunning(true) - .startWhenPrepared(true) - .shouldStream(true) - .shouldStreamThisTime(true) - .start(); + .setPositiveButton(R.string.stream_label, (dialog, which) -> stream()) + .setNegativeButton(R.string.confirm_mobile_streaming_button_always, (dialog, which) -> { + UserPreferences.setAllowMobileStreaming(true); + stream(); }) - .setNegativeButton(R.string.cancel_label, null) + .setNeutralButton(R.string.cancel_label, null) .show(); } + + private void stream() { + new PlaybackServiceStarter(context, playable) + .callEvenIfRunning(true) + .startWhenPrepared(true) + .shouldStream(true) + .shouldStreamThisTime(true) + .start(); + } } -- cgit v1.2.3 From 426be4d2261921576fd2e673e99d39885cfe87a1 Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 27 Jul 2020 13:16:23 +0200 Subject: Dispose loaders before setting controller to null --- .../de/danoeh/antennapod/fragment/ChaptersFragment.java | 9 ++------- .../java/de/danoeh/antennapod/fragment/CoverFragment.java | 13 ++++--------- .../danoeh/antennapod/fragment/ItemDescriptionFragment.java | 7 ++++--- 3 files changed, 10 insertions(+), 19 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java index 6d693f6cb..48c25552f 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ChaptersFragment.java @@ -93,17 +93,12 @@ public class ChaptersFragment extends Fragment { } @Override - public void onDestroyView() { - super.onDestroyView(); + public void onStop() { + super.onStop(); if (disposable != null) { disposable.dispose(); } - } - - @Override - public void onStop() { - super.onStop(); controller.release(); controller = null; EventBus.getDefault().unregister(this); diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java index 4e8cfbf86..79f378249 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/CoverFragment.java @@ -128,6 +128,10 @@ public class CoverFragment extends Fragment { @Override public void onStop() { super.onStop(); + + if (disposable != null) { + disposable.dispose(); + } controller.release(); controller = null; EventBus.getDefault().unregister(this); @@ -203,15 +207,6 @@ public class CoverFragment extends Fragment { } } - @Override - public void onDestroyView() { - super.onDestroyView(); - - if (disposable != null) { - disposable.dispose(); - } - } - void onPlayPause() { if (controller == null) { return; diff --git a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java index ec64fbda1..ed8697adb 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/ItemDescriptionFragment.java @@ -66,9 +66,6 @@ public class ItemDescriptionFragment extends Fragment { public void onDestroy() { super.onDestroy(); Log.d(TAG, "Fragment destroyed"); - if (webViewLoader != null) { - webViewLoader.dispose(); - } if (webvDescription != null) { webvDescription.removeAllViews(); webvDescription.destroy(); @@ -168,6 +165,10 @@ public class ItemDescriptionFragment extends Fragment { @Override public void onStop() { super.onStop(); + + if (webViewLoader != null) { + webViewLoader.dispose(); + } controller.release(); controller = null; } -- cgit v1.2.3 From 7e0dc71265e814b2ec712f615ae0d142614a74bb Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Wed, 29 Jul 2020 00:31:23 +0200 Subject: Revert "Added new icon poll" This reverts commit cc04e08e7432920da712742804bde5f67b3391f7. --- .../java/de/test/antennapod/EspressoTestUtils.java | 7 ----- .../danoeh/antennapod/activity/MainActivity.java | 2 -- .../danoeh/antennapod/dialog/IconPollDialog.java | 35 ---------------------- 3 files changed, 44 deletions(-) delete mode 100644 app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java (limited to 'app') diff --git a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java index 7b11e5b55..41c8365fb 100644 --- a/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java +++ b/app/src/androidTest/java/de/test/antennapod/EspressoTestUtils.java @@ -21,7 +21,6 @@ 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.PodDBAdapter; -import de.danoeh.antennapod.dialog.IconPollDialog; import de.danoeh.antennapod.dialog.RatingDialog; import de.danoeh.antennapod.fragment.NavDrawerFragment; import org.awaitility.Awaitility; @@ -135,12 +134,6 @@ public class EspressoTestUtils { .putString(UserPreferences.PREF_UPDATE_INTERVAL, "0") .commit(); - InstrumentationRegistry.getInstrumentation().getTargetContext() - .getSharedPreferences(IconPollDialog.PREFS_NAME, Context.MODE_PRIVATE) - .edit() - .putBoolean(IconPollDialog.KEY_DIALOG_ALLOWED, false) - .commit(); - RatingDialog.init(InstrumentationRegistry.getTargetContext()); RatingDialog.saveRated(); } diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index 8c8ce9522..eaa423708 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -32,7 +32,6 @@ import de.danoeh.antennapod.core.event.MessageEvent; import de.danoeh.antennapod.core.preferences.UserPreferences; import de.danoeh.antennapod.core.util.StorageUtils; import de.danoeh.antennapod.core.util.download.AutoUpdateManager; -import de.danoeh.antennapod.dialog.IconPollDialog; import de.danoeh.antennapod.dialog.RatingDialog; import de.danoeh.antennapod.fragment.AddFeedFragment; import de.danoeh.antennapod.fragment.AudioPlayerFragment; @@ -316,7 +315,6 @@ public class MainActivity extends CastEnabledActivity { super.onStart(); EventBus.getDefault().register(this); RatingDialog.init(this); - IconPollDialog.showIfNeeded(this); if (lastTheme != UserPreferences.getNoTitleTheme()) { finish(); diff --git a/app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java b/app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java deleted file mode 100644 index 70cf6dc78..000000000 --- a/app/src/main/java/de/danoeh/antennapod/dialog/IconPollDialog.java +++ /dev/null @@ -1,35 +0,0 @@ -package de.danoeh.antennapod.dialog; - -import android.content.Context; -import android.content.SharedPreferences; -import androidx.appcompat.app.AlertDialog; -import de.danoeh.antennapod.R; -import de.danoeh.antennapod.core.util.IntentUtils; - -public class IconPollDialog { - - private IconPollDialog() { - - } - - public static final String PREFS_NAME = "IconPollDialog"; - public static final String KEY_DIALOG_ALLOWED = "dialog_allowed"; - - public static void showIfNeeded(Context context) { - SharedPreferences preferences = context.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE); - - if (!preferences.getBoolean(KEY_DIALOG_ALLOWED, true)) { - return; - } - - new AlertDialog.Builder(context) - .setTitle(R.string.icon_poll_title) - .setMessage(R.string.icon_poll_message) - .setCancelable(false) - .setPositiveButton(R.string.icon_poll_vote, (dialog, which) -> - IntentUtils.openInBrowser(context, "https://www.surveymonkey.com/r/96WSBLC")) - .setNegativeButton(R.string.icon_poll_dont_vote, null) - .setOnDismissListener(dialog -> preferences.edit().putBoolean(KEY_DIALOG_ALLOWED, false).apply()) - .show(); - } -} -- cgit v1.2.3 From dd5b3cac0e9f70d54d5028cced42101c2f6499bd Mon Sep 17 00:00:00 2001 From: ByteHamster Date: Mon, 3 Aug 2020 13:10:08 +0200 Subject: Be more verbose about invalid type errors --- .../de/danoeh/antennapod/activity/OnlineFeedViewActivity.java | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) (limited to 'app') diff --git a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java index 58b2d6db1..beb6e0a9f 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/OnlineFeedViewActivity.java @@ -561,13 +561,11 @@ public class OnlineFeedViewActivity extends AppCompatActivity { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.error_label); if (errorMsg != null) { - builder.setMessage(getString(R.string.error_msg_prefix) + errorMsg); + builder.setMessage(errorMsg); } else { - builder.setMessage(R.string.error_msg_prefix); + builder.setMessage(R.string.download_error_error_unknown); } - builder.setPositiveButton(android.R.string.ok, - (dialog, which) -> dialog.cancel() - ); + builder.setPositiveButton(android.R.string.ok, (dialog, which) -> dialog.cancel()); builder.setOnDismissListener(dialog -> { setResult(RESULT_ERROR); finish(); -- cgit v1.2.3 From 46b886baa3aaa79a78b16fd63c4227eafc212ff3 Mon Sep 17 00:00:00 2001 From: Herbert Reiter <46045854+damoasda@users.noreply.github.com> Date: Sun, 2 Aug 2020 22:43:47 +0200 Subject: Fix NullPointerException in FeedItemlistFragment when deleting a podcast --- .../de/danoeh/antennapod/fragment/FeedItemlistFragment.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'app') 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 b90da7447..67433166c 100644 --- a/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java +++ b/app/src/main/java/de/danoeh/antennapod/fragment/FeedItemlistFragment.java @@ -358,7 +358,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem if (event.hasChangedFeedUpdateStatus(isUpdatingFeed)) { updateSyncProgressBarVisibility(); } - if (adapter != null && update.mediaIds.length > 0) { + if (adapter != null && update.mediaIds.length > 0 && feed != null) { for (long mediaId : update.mediaIds) { int pos = FeedItemUtil.indexOfItemWithMediaId(feed.getItems(), mediaId); if (pos >= 0) { @@ -398,7 +398,7 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem @Subscribe(threadMode = ThreadMode.MAIN) public void onFeedListChanged(FeedListUpdateEvent event) { - if (event.contains(feed)) { + if (feed != null && event.contains(feed)) { updateUi(); } } @@ -425,7 +425,9 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem } recyclerView.setVisibility(View.VISIBLE); progressBar.setVisibility(View.GONE); - adapter.updateItems(feed.getItems()); + if (feed != null) { + adapter.updateItems(feed.getItems()); + } getActivity().supportInvalidateOptionsMenu(); updateSyncProgressBarVisibility(); @@ -553,4 +555,4 @@ public class FeedItemlistFragment extends Fragment implements AdapterView.OnItem holder.coverHolder.setVisibility(View.GONE); } } -} +} \ No newline at end of file -- cgit v1.2.3