From 1ae54f6f8c62a487bfd72c03c6edf431b4a221cc Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sun, 23 Dec 2018 22:07:27 +0100 Subject: [PATCH 1/7] further compatiblity fix for meadic.ccc --- app/build.gradle | 2 +- .../fragments/detail/VideoDetailFragment.java | 21 +++++++++++++------ .../list/channel/ChannelFragment.java | 4 ++-- .../resolver/VideoPlaybackResolver.java | 18 +++++++++------- .../schabi/newpipe/util/ExtractorHelper.java | 13 ++++++++---- .../newpipe/util/StreamItemAdapter.java | 14 +++++++++---- app/src/main/res/values/colors_services.xml | 11 ++++++++++ 7 files changed, 58 insertions(+), 25 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 782634a0b..59cf01e89 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ dependencies { exclude module: 'support-annotations' }) - implementation 'com.github.TeamNewPipe:NewPipeExtractor:f7c7b9df1a' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:73232a7ba' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:2.23.0' diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index edca200d7..6738083c3 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -55,6 +55,7 @@ import org.schabi.newpipe.ReCaptchaActivity; import org.schabi.newpipe.download.DownloadDialog; import org.schabi.newpipe.extractor.InfoItem; import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.ServiceList; import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException; import org.schabi.newpipe.extractor.exceptions.ParsingException; import org.schabi.newpipe.extractor.services.youtube.extractors.YoutubeStreamExtractor; @@ -699,13 +700,13 @@ public class VideoDetailFragment switch (id) { case R.id.menu_item_share: { if (currentInfo != null) { - shareUrl(currentInfo.getName(), currentInfo.getUrl()); + shareUrl(currentInfo.getName(), currentInfo.getOriginalUrl()); } return true; } case R.id.menu_item_openInBrowser: { if (currentInfo != null) { - openUrlInBrowser(currentInfo.getUrl()); + openUrlInBrowser(currentInfo.getOriginalUrl()); } return true; } @@ -1269,10 +1270,18 @@ public class VideoDetailFragment downloadDialog.show(activity.getSupportFragmentManager(), "downloadDialog"); } catch (Exception e) { - Toast.makeText(activity, - R.string.could_not_setup_download_menu, - Toast.LENGTH_LONG).show(); - e.printStackTrace(); + ErrorActivity.ErrorInfo info = ErrorActivity.ErrorInfo.make(UserAction.UI_ERROR, + ServiceList.all() + .get(currentInfo + .getServiceId()) + .getServiceInfo() + .getName(), "", + R.string.could_not_setup_download_menu); + + ErrorActivity.reportError(getActivity(), + e, + getActivity().getClass(), + getActivity().findViewById(android.R.id.content), info); } } diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java index 6a3b3eb50..b9489ffa7 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/channel/ChannelFragment.java @@ -233,10 +233,10 @@ public class ChannelFragment extends BaseListInfoFragment { openRssFeed(); break; case R.id.menu_item_openInBrowser: - openUrlInBrowser(url); + openUrlInBrowser(currentInfo.getOriginalUrl()); break; case R.id.menu_item_share: - shareUrl(name, url); + shareUrl(name, currentInfo.getOriginalUrl()); break; default: return super.onOptionsItemSelected(item); diff --git a/app/src/main/java/org/schabi/newpipe/player/resolver/VideoPlaybackResolver.java b/app/src/main/java/org/schabi/newpipe/player/resolver/VideoPlaybackResolver.java index ad2b79523..c62dc1088 100644 --- a/app/src/main/java/org/schabi/newpipe/player/resolver/VideoPlaybackResolver.java +++ b/app/src/main/java/org/schabi/newpipe/player/resolver/VideoPlaybackResolver.java @@ -93,15 +93,17 @@ public class VideoPlaybackResolver implements PlaybackResolver { // Below are auxiliary media sources // Create subtitle sources - for (final SubtitlesStream subtitle : info.getSubtitles()) { - final String mimeType = PlayerHelper.subtitleMimeTypesOf(subtitle.getFormat()); - if (mimeType == null) continue; + if(info.getSubtitles() != null) { + for (final SubtitlesStream subtitle : info.getSubtitles()) { + final String mimeType = PlayerHelper.subtitleMimeTypesOf(subtitle.getFormat()); + if (mimeType == null) continue; - final Format textFormat = Format.createTextSampleFormat(null, mimeType, - SELECTION_FLAG_AUTOSELECT, PlayerHelper.captionLanguageOf(context, subtitle)); - final MediaSource textSource = dataSource.getSampleMediaSourceFactory() - .createMediaSource(Uri.parse(subtitle.getURL()), textFormat, TIME_UNSET); - mediaSources.add(textSource); + final Format textFormat = Format.createTextSampleFormat(null, mimeType, + SELECTION_FLAG_AUTOSELECT, PlayerHelper.captionLanguageOf(context, subtitle)); + final MediaSource textSource = dataSource.getSampleMediaSourceFactory() + .createMediaSource(Uri.parse(subtitle.getURL()), textFormat, TIME_UNSET); + mediaSources.add(textSource); + } } if (mediaSources.size() == 1) { diff --git a/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java b/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java index e04c1e8d0..041f4933f 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java @@ -31,6 +31,7 @@ import org.schabi.newpipe.ReCaptchaActivity; import org.schabi.newpipe.extractor.Info; import org.schabi.newpipe.extractor.ListExtractor.InfoItemsPage; import org.schabi.newpipe.extractor.NewPipe; +import org.schabi.newpipe.extractor.SuggestionExtractor; import org.schabi.newpipe.extractor.channel.ChannelInfo; import org.schabi.newpipe.extractor.channel.ChannelInfoItem; import org.schabi.newpipe.extractor.exceptions.ContentNotAvailableException; @@ -46,6 +47,7 @@ import org.schabi.newpipe.report.UserAction; import java.io.IOException; import java.io.InterruptedIOException; +import java.util.Collections; import java.util.List; import io.reactivex.Maybe; @@ -95,10 +97,13 @@ public final class ExtractorHelper { public static Single> suggestionsFor(final int serviceId, final String query) { checkServiceId(serviceId); - return Single.fromCallable(() -> - NewPipe.getService(serviceId) - .getSuggestionExtractor() - .suggestionList(query)); + return Single.fromCallable(() -> { + SuggestionExtractor extractor = NewPipe.getService(serviceId) + .getSuggestionExtractor(); + return extractor != null + ? extractor.suggestionList(query) + : Collections.emptyList(); + }); } public static Single getStreamInfo(final int serviceId, diff --git a/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java b/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java index eb106f91d..49a7125ed 100644 --- a/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java +++ b/app/src/main/java/org/schabi/newpipe/util/StreamItemAdapter.java @@ -28,7 +28,8 @@ import io.reactivex.schedulers.Schedulers; import us.shandian.giga.util.Utility; /** - * A list adapter for a list of {@link Stream streams}, currently supporting {@link VideoStream} and {@link AudioStream}. + * A list adapter for a list of {@link Stream streams}, + * currently supporting {@link VideoStream}, {@link AudioStream} and {@link SubtitlesStream} */ public class StreamItemAdapter extends BaseAdapter { private final Context context; @@ -110,7 +111,10 @@ public class StreamItemAdapter extends BaseA } } } else if (stream instanceof AudioStream) { - qualityString = ((AudioStream) stream).getAverageBitrate() + "kbps"; + AudioStream audioStream = ((AudioStream) stream); + qualityString = audioStream.getAverageBitrate() > 0 + ? audioStream.getAverageBitrate() + "kbps" + : audioStream.getFormat().getName(); } else if (stream instanceof SubtitlesStream) { qualityString = ((SubtitlesStream) stream).getDisplayLanguageName(); if (((SubtitlesStream) stream).isAutoGenerated()) { @@ -154,8 +158,10 @@ public class StreamItemAdapter extends BaseA private final long[] streamSizes; private final String unknownSize; - public StreamSizeWrapper(List streamsList, Context context) { - this.streamsList = streamsList; + public StreamSizeWrapper(List sL, Context context) { + this.streamsList = sL != null + ? sL + : Collections.emptyList(); this.streamSizes = new long[streamsList.size()]; this.unknownSize = context == null ? "--.-" : context.getString(R.string.unknown_content); diff --git a/app/src/main/res/values/colors_services.xml b/app/src/main/res/values/colors_services.xml index 761b721d0..1cc464280 100644 --- a/app/src/main/res/values/colors_services.xml +++ b/app/src/main/res/values/colors_services.xml @@ -22,4 +22,15 @@ #FFFFFF #ff9100 + + #888888 + #555555 + #000000 + #777777 + + #888888 + #555555 + #FFFFFF + #777777 + \ No newline at end of file From e88a90f24288034481ec46075c9622a7ee27f04d Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sun, 23 Dec 2018 22:41:42 +0100 Subject: [PATCH 2/7] add theming to mediaccc --- .../schabi/newpipe/util/ServiceHelper.java | 6 +- .../org/schabi/newpipe/util/ThemeHelper.java | 4 +- .../res/drawable-nodpi/place_holder_cloud.png | Bin 0 -> 8032 bytes .../res/drawable-nodpi/place_holder_gadse.png | Bin 0 -> 17166 bytes .../main/res/values-v21/styles_services.xml | 18 ++++++ app/src/main/res/values/colors_services.xml | 18 +++--- app/src/main/res/values/styles_services.xml | 20 ++++++ assets/media_gadse.svg | 60 ++++++++++++++++++ 8 files changed, 114 insertions(+), 12 deletions(-) create mode 100644 app/src/main/res/drawable-nodpi/place_holder_cloud.png create mode 100644 app/src/main/res/drawable-nodpi/place_holder_gadse.png create mode 100644 assets/media_gadse.svg diff --git a/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java b/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java index 7c781eb14..da0d33809 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java @@ -24,9 +24,11 @@ public class ServiceHelper { case 0: return R.drawable.place_holder_youtube; case 1: - return R.drawable.place_holder_circle; + return R.drawable.place_holder_cloud; + case 2: + return R.drawable.place_holder_gadse; default: - return R.drawable.service; + return R.drawable.place_holder_circle; } } diff --git a/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java index 1d1b66bf9..0c7861e16 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ThemeHelper.java @@ -137,7 +137,9 @@ public class ThemeHelper { else if (selectedTheme.equals(darkTheme)) themeName = "DarkTheme"; themeName += "." + service.getServiceInfo().getName(); - int resourceId = context.getResources().getIdentifier(themeName, "style", context.getPackageName()); + int resourceId = context + .getResources() + .getIdentifier(themeName, "style", context.getPackageName()); if (resourceId > 0) { return resourceId; diff --git a/app/src/main/res/drawable-nodpi/place_holder_cloud.png b/app/src/main/res/drawable-nodpi/place_holder_cloud.png new file mode 100644 index 0000000000000000000000000000000000000000..f78e846e155e78f04eafcf8d31459b2a0610a6b9 GIT binary patch literal 8032 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 B-o^j` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-nodpi/place_holder_gadse.png b/app/src/main/res/drawable-nodpi/place_holder_gadse.png new file mode 100644 index 0000000000000000000000000000000000000000..f11dd57e536590d12225cb9349eb6f930957f8b7 GIT binary patch literal 17166 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:ejEC0`Y5 zT)8Pn!NjkiOYMLRBy*q+)n)~MXB{AK2Kus-p7Emlg7$WIFmG-4wx&GLG$hZD${6W^J~{rs+GvB$%vSa0bFRsq;Dj12#VTxQCs<>?EEX_jXP$ zgsV{L08s~Uc=r^xm+UiL!$_&EVhOwE+_5|WsT1w&)zpNp{|Z0`iyYo24SM-7GqRxW zCIH$2w;{0gS;7ci|b^~FyH{YlS{m6_Xz1w9WlHoz_G zyH9TpCeEV7)ETmMq6#pH!0K8cD~9)_ElA+&2EsSL7eKb(YB%rm9bpQ7jC?v&^swWr zpCBBocaujlKQR}HiNz-07@qTkR3YKP5d-(e>PR3*da{ftX zK$`%0^ziDab+Iexz9yTNbSaN07V?ep#aFp4j-%eKyl331Ts-E)P>caNw&J}qTeDL^ zVl(%Y$>S{hhAoL(@r|fL0A>E1r+jtU{F(-iL3IIz$jK-3{3J%J2CkLLdO2+RgR2v< zf@mg?E=ZPVG5E*t=5KQzUQgnh;K1{upf6~Q>lX3nM)Oq?aq|J?-nRj77Pu`|B%(%2 zBTPSI6PE~YF^k;t-X=@KfJW_e+-S}iDH|xW}*V6iLR>^E&I(~6;ns{i$HBPK@t}VU-d=tXZdL}F%CeGmP=y`@O zhI37xGGf0B?|#nf=mF6aE-zQ{M;;m(eVvh-+^LR{nGdG1y9&dpHW8o!p4{5ofINl& oU+u<({FI}F`TzInRp2Y1vq@f6_KuYR-(3OOS~}pXju5W@AD*IeMF0Q* literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-v21/styles_services.xml b/app/src/main/res/values-v21/styles_services.xml index e3d6c24e2..6c118bc09 100644 --- a/app/src/main/res/values-v21/styles_services.xml +++ b/app/src/main/res/values-v21/styles_services.xml @@ -31,4 +31,22 @@ @color/dark_soundcloud_accent_color + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors_services.xml b/app/src/main/res/values/colors_services.xml index 1cc464280..ea90cb083 100644 --- a/app/src/main/res/values/colors_services.xml +++ b/app/src/main/res/values/colors_services.xml @@ -22,15 +22,15 @@ #FFFFFF #ff9100 - - #888888 - #555555 - #000000 - #777777 + + #9e9e9e + #616161 + #000000 + #afafaf - #888888 - #555555 - #FFFFFF - #777777 + #9e9e9e + #616161 + #FFFFFF + #afafaf \ No newline at end of file diff --git a/app/src/main/res/values/styles_services.xml b/app/src/main/res/values/styles_services.xml index 7ca9dacde..257b1905d 100644 --- a/app/src/main/res/values/styles_services.xml +++ b/app/src/main/res/values/styles_services.xml @@ -9,6 +9,7 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/media_gadse.svg b/assets/media_gadse.svg new file mode 100644 index 000000000..eda875160 --- /dev/null +++ b/assets/media_gadse.svg @@ -0,0 +1,60 @@ + + + + + + image/svg+xml + + + + + + + + + From a1cc0897df286eb8307ed9527dd3a0c03b7d9c4b Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 26 Jan 2019 22:57:04 +0100 Subject: [PATCH 3/7] make frontend not crash on scrolling on ccc search --- .../org/schabi/newpipe/fragments/list/search/SearchFragment.java | 1 + 1 file changed, 1 insertion(+) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java index 2833abb8d..66827bd92 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java @@ -736,6 +736,7 @@ public class SearchFragment @Override protected void loadMoreItems() { + if(nextPageUrl == null || nextPageUrl.isEmpty()) return; isLoading.set(true); showListFooter(true); if (searchDisposable != null) searchDisposable.dispose(); From d8c76d4c213be8e2af8bb0d1719f345dbbdd1956 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Mon, 28 Jan 2019 13:33:30 +0100 Subject: [PATCH 4/7] add conferences --- app/build.gradle | 2 +- .../main/java/org/schabi/newpipe/util/KioskTranslator.java | 4 ++++ app/src/main/res/values/strings.xml | 1 + 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 59cf01e89..83da79219 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ dependencies { exclude module: 'support-annotations' }) - implementation 'com.github.TeamNewPipe:NewPipeExtractor:73232a7ba' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:150345929202a' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:2.23.0' diff --git a/app/src/main/java/org/schabi/newpipe/util/KioskTranslator.java b/app/src/main/java/org/schabi/newpipe/util/KioskTranslator.java index 392892cef..a04e1145f 100644 --- a/app/src/main/java/org/schabi/newpipe/util/KioskTranslator.java +++ b/app/src/main/java/org/schabi/newpipe/util/KioskTranslator.java @@ -31,6 +31,8 @@ public class KioskTranslator { return c.getString(R.string.top_50); case "New & hot": return c.getString(R.string.new_and_hot); + case "conferences": + return c.getString(R.string.conferences); default: return kioskId; } @@ -44,6 +46,8 @@ public class KioskTranslator { return ThemeHelper.resolveResourceIdFromAttr(c, R.attr.ic_hot); case "New & hot": return ThemeHelper.resolveResourceIdFromAttr(c, R.attr.ic_hot); + case "conferences": + return ThemeHelper.resolveResourceIdFromAttr(c, R.attr.ic_hot); default: return 0; } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 3756119a6..d83d4d3a4 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -396,6 +396,7 @@ Trending Top 50 New & hot + Conferences %1$s/%2$s From d0a3125df4d228d65af6ac8e742f610c472deef8 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Tue, 29 Jan 2019 16:13:46 +0100 Subject: [PATCH 5/7] fox ogg --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 83da79219..af32cdc2c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ dependencies { exclude module: 'support-annotations' }) - implementation 'com.github.TeamNewPipe:NewPipeExtractor:150345929202a' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:d0efe8bd47' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:2.23.0' From 6edbfe2a6f98c802fbb3e9f5b46e8cf81b3187b1 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Tue, 29 Jan 2019 17:20:30 +0100 Subject: [PATCH 6/7] add content filter to mediaccc --- app/build.gradle | 2 +- .../newpipe/fragments/list/search/SearchFragment.java | 9 +++++++-- .../main/java/org/schabi/newpipe/util/ServiceHelper.java | 2 ++ app/src/main/res/values/strings.xml | 1 + 4 files changed, 11 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index af32cdc2c..75f966a9b 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -57,7 +57,7 @@ dependencies { exclude module: 'support-annotations' }) - implementation 'com.github.TeamNewPipe:NewPipeExtractor:d0efe8bd47' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:79b0a19d1af' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:2.23.0' diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java index 66827bd92..c683f1af7 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/search/SearchFragment.java @@ -104,8 +104,13 @@ public class SearchFragment // this three represet the current search query @State protected String searchString; + + /** + * No content filter should add like contentfilter = all + * be aware of this when implementing an extractor. + */ @State - protected String[] contentFilter; + protected String[] contentFilter = new String[0]; @State protected String sortFilter; @@ -335,7 +340,7 @@ public class SearchFragment || (searchEditText != null && !TextUtils.isEmpty(searchEditText.getText()))) { search(!TextUtils.isEmpty(searchString) ? searchString - : searchEditText.getText().toString(), new String[0], ""); + : searchEditText.getText().toString(), this.contentFilter, ""); } else { if (searchEditText != null) { searchEditText.setText(""); diff --git a/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java b/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java index da0d33809..c6ce3fec7 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ServiceHelper.java @@ -40,6 +40,8 @@ public class ServiceHelper { case "playlists": return c.getString(R.string.playlists); case "tracks": return c.getString(R.string.tracks); case "users": return c.getString(R.string.users); + case "conferences" : return c.getString(R.string.conferences); + case "events" : return c.getString(R.string.events); default: return filter; } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index d83d4d3a4..462b331d2 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -137,6 +137,7 @@ Videos Tracks Users + Events Yes Later Disabled From 14043c86f551b951becc1dc0f47e9f1c35b481a5 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Thu, 31 Jan 2019 13:24:02 +0100 Subject: [PATCH 7/7] fix backstack issue with mediaccc --- .../fragments/detail/VideoDetailFragment.java | 54 ++++++++++++------- 1 file changed, 35 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java index 6738083c3..c346e1329 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/detail/VideoDetailFragment.java @@ -363,7 +363,8 @@ public class VideoDetailFragment } break; case R.id.detail_controls_download: - if (PermissionHelper.checkStoragePermissions(activity, PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) { + if (PermissionHelper.checkStoragePermissions(activity, + PermissionHelper.DOWNLOAD_DIALOG_REQUEST_CODE)) { this.openDownloadDialog(); } break; @@ -447,7 +448,6 @@ public class VideoDetailFragment return; } - //Log.d(TAG, "toggleExpandRelatedVideos() called with: info = [" + info + "], from = [" + INITIAL_RELATED_VIDEOS + "]"); for (int i = INITIAL_RELATED_VIDEOS; i < info.getRelatedStreams().size(); i++) { InfoItem item = info.getRelatedStreams().get(i); //Log.d(TAG, "i = " + i); @@ -520,7 +520,9 @@ public class VideoDetailFragment infoItemBuilder.setOnStreamSelectedListener(new OnClickGesture() { @Override public void selected(StreamInfoItem selectedItem) { - selectAndLoadVideo(selectedItem.getServiceId(), selectedItem.getUrl(), selectedItem.getName()); + selectAndLoadVideo(selectedItem.getServiceId(), + selectedItem.getUrl(), + selectedItem.getName()); } @Override @@ -743,10 +745,16 @@ public class VideoDetailFragment boolean isExternalPlayerEnabled = PreferenceManager.getDefaultSharedPreferences(activity) .getBoolean(activity.getString(R.string.use_external_video_player_key), false); - sortedVideoStreams = ListHelper.getSortedStreamVideosList(activity, info.getVideoStreams(), info.getVideoOnlyStreams(), false); + sortedVideoStreams = ListHelper.getSortedStreamVideosList( + activity, + info.getVideoStreams(), + info.getVideoOnlyStreams(), + false); selectedVideoStreamIndex = ListHelper.getDefaultResolutionIndex(activity, sortedVideoStreams); - final StreamItemAdapter streamsAdapter = new StreamItemAdapter<>(activity, new StreamSizeWrapper<>(sortedVideoStreams, activity), isExternalPlayerEnabled); + final StreamItemAdapter streamsAdapter = + new StreamItemAdapter<>(activity, + new StreamSizeWrapper<>(sortedVideoStreams, activity), isExternalPlayerEnabled); spinnerToolbar.setAdapter(streamsAdapter); spinnerToolbar.setSelection(selectedVideoStreamIndex); spinnerToolbar.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @@ -771,17 +779,17 @@ public class VideoDetailFragment */ protected final LinkedList stack = new LinkedList<>(); - public void clearHistory() { - stack.clear(); - } - public void pushToStack(int serviceId, String videoUrl, String name) { if (DEBUG) { - Log.d(TAG, "pushToStack() called with: serviceId = [" + serviceId + "], videoUrl = [" + videoUrl + "], name = [" + name + "]"); + Log.d(TAG, "pushToStack() called with: serviceId = [" + + serviceId + "], videoUrl = [" + videoUrl + "], name = [" + name + "]"); } - if (stack.size() > 0 && stack.peek().getServiceId() == serviceId && stack.peek().getUrl().equals(videoUrl)) { - Log.d(TAG, "pushToStack() called with: serviceId == peek.serviceId = [" + serviceId + "], videoUrl == peek.getUrl = [" + videoUrl + "]"); + if (stack.size() > 0 + && stack.peek().getServiceId() == serviceId + && stack.peek().getUrl().equals(videoUrl)) { + Log.d(TAG, "pushToStack() called with: serviceId == peek.serviceId = [" + + serviceId + "], videoUrl == peek.getUrl = [" + videoUrl + "]"); return; } else { Log.d(TAG, "pushToStack() wasn't equal"); @@ -812,7 +820,11 @@ public class VideoDetailFragment // Get stack item from the new top StackItem peek = stack.peek(); - selectAndLoadVideo(peek.getServiceId(), peek.getUrl(), !TextUtils.isEmpty(peek.getTitle()) ? peek.getTitle() : ""); + selectAndLoadVideo(peek.getServiceId(), + peek.getUrl(), + !TextUtils.isEmpty(peek.getTitle()) + ? peek.getTitle() + : ""); return true; } @@ -832,9 +844,10 @@ public class VideoDetailFragment } public void prepareAndHandleInfo(final StreamInfo info, boolean scrollToTop) { - if (DEBUG) Log.d(TAG, "prepareAndHandleInfo() called with: info = [" + info + "], scrollToTop = [" + scrollToTop + "]"); + if (DEBUG) Log.d(TAG, "prepareAndHandleInfo() called with: info = [" + + info + "], scrollToTop = [" + scrollToTop + "]"); - setInitialData(info.getServiceId(), info.getOriginalUrl(), info.getName()); + setInitialData(info.getServiceId(), info.getUrl(), info.getName()); pushToStack(serviceId, url, name); showLoading(); @@ -1027,7 +1040,8 @@ public class VideoDetailFragment private void showContentWithAnimation(long duration, long delay, - @FloatRange(from = 0.0f, to = 1.0f) float translationPercent) { + @FloatRange(from = 0.0f, to = 1.0f) + float translationPercent) { int translationY = (int) (getResources().getDisplayMetrics().heightPixels * (translationPercent > 0.0f ? translationPercent : .06f)); @@ -1135,7 +1149,7 @@ public class VideoDetailFragment super.handleResult(info); setInitialData(info.getServiceId(), info.getOriginalUrl(), info.getName()); - pushToStack(serviceId, url, name); + //pushToStack(serviceId, url, name); animateView(thumbnailPlayButton, true, 200); videoTitleTextView.setText(name); @@ -1186,11 +1200,13 @@ public class VideoDetailFragment if (info.getDuration() > 0) { detailDurationView.setText(Localization.getDurationString(info.getDuration())); - detailDurationView.setBackgroundColor(ContextCompat.getColor(activity, R.color.duration_background_color)); + detailDurationView.setBackgroundColor( + ContextCompat.getColor(activity, R.color.duration_background_color)); animateView(detailDurationView, true, 100); } else if (info.getStreamType() == StreamType.LIVE_STREAM) { detailDurationView.setText(R.string.duration_live); - detailDurationView.setBackgroundColor(ContextCompat.getColor(activity, R.color.live_duration_background_color)); + detailDurationView.setBackgroundColor( + ContextCompat.getColor(activity, R.color.live_duration_background_color)); animateView(detailDurationView, true, 100); } else { detailDurationView.setVisibility(View.GONE);