From b500c3f526a41fc2244077e4511dea68d41b4e11 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Mon, 11 Sep 2017 15:37:41 +0200 Subject: [PATCH 01/13] Add service setting --- .../org/schabi/newpipe/fragments/MainFragment.java | 3 ++- app/src/main/res/values/settings_keys.xml | 11 +++++++++++ app/src/main/res/values/strings.xml | 1 + app/src/main/res/xml/content_settings.xml | 8 ++++++++ 4 files changed, 22 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java index 236f95968..e2a36cb62 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java @@ -1,6 +1,7 @@ package org.schabi.newpipe.fragments; import android.os.Bundle; +import android.preference.PreferenceManager; import android.support.annotation.Nullable; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; @@ -75,7 +76,7 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_search: - NavigationHelper.openSearchFragment(getFragmentManager(), 0, ""); + NavigationHelper.openSearchFragment(getFragmentManager(), Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("service", "0")), ""); return true; } return super.onOptionsItemSelected(item); diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index c779e8216..8076e61f0 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -43,6 +43,17 @@ 144p + + YouTube + SoundCloud + + + 0 + 1 + + service + 0 + video_mp4 video_webm video_3gp diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index a5b3993d8..335be1e8d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -81,6 +81,7 @@ Next video Show next and similar videos URL not supported + Service Default content language Player Behavior diff --git a/app/src/main/res/xml/content_settings.xml b/app/src/main/res/xml/content_settings.xml index 63cd3cd01..eb262ea60 100644 --- a/app/src/main/res/xml/content_settings.xml +++ b/app/src/main/res/xml/content_settings.xml @@ -3,6 +3,14 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/content"> + + Date: Thu, 14 Sep 2017 10:49:39 +0200 Subject: [PATCH 02/13] Change layout for audio-only streams --- .../fragments/detail/VideoDetailFragment.java | 14 ++++++++++++-- app/src/main/res/layout/fragment_video_detail.xml | 2 +- 2 files changed, 13 insertions(+), 3 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 5f954cad2..6b70ab6fc 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 @@ -329,7 +329,11 @@ public class VideoDetailFragment extends BaseStateFragment implement } break; case R.id.detail_thumbnail_root_layout: - openVideoPlayer(); + if (currentInfo.video_streams.isEmpty() && currentInfo.video_only_streams.isEmpty()) { + openBackgroundPlayer(); + } else { + openVideoPlayer(); + } break; case R.id.detail_title_root_layout: toggleTitleAndDescription(); @@ -1055,6 +1059,12 @@ public class VideoDetailFragment extends BaseStateFragment implement showSnackBarError(info.errors, UserAction.REQUESTED_STREAM, NewPipe.getNameOfService(info.service_id), info.url, 0); } + if (info.video_streams.isEmpty() && info.video_only_streams.isEmpty()) { + detailControlsBackground.setVisibility(View.GONE); + detailControlsPopup.setVisibility(View.GONE); + thumbnailPlayButton.setImageResource(R.drawable.ic_headset_white_24dp); + } + if (autoPlayEnabled) { openVideoPlayer(); // Only auto play in the first open @@ -1098,4 +1108,4 @@ public class VideoDetailFragment extends BaseStateFragment implement showError(getString(R.string.blocked_by_gema), false, R.drawable.gruese_die_gema); } -} \ No newline at end of file +} diff --git a/app/src/main/res/layout/fragment_video_detail.xml b/app/src/main/res/layout/fragment_video_detail.xml index 0d87809fc..4cafbcf9a 100644 --- a/app/src/main/res/layout/fragment_video_detail.xml +++ b/app/src/main/res/layout/fragment_video_detail.xml @@ -250,7 +250,7 @@ android:paddingBottom="6dp" android:paddingTop="6dp" android:text="@string/controls_background_title" - android:textSize="12sp"/> + android:textSize="12sp" /> From 442290d7f04861096903b13b9f1e88a51457bedb Mon Sep 17 00:00:00 2001 From: wb9688 Date: Thu, 14 Sep 2017 11:43:30 +0200 Subject: [PATCH 03/13] Hide spinner --- .../org/schabi/newpipe/fragments/detail/VideoDetailFragment.java | 1 + 1 file changed, 1 insertion(+) 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 6b70ab6fc..b2e1d3aa4 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 @@ -1062,6 +1062,7 @@ public class VideoDetailFragment extends BaseStateFragment implement if (info.video_streams.isEmpty() && info.video_only_streams.isEmpty()) { detailControlsBackground.setVisibility(View.GONE); detailControlsPopup.setVisibility(View.GONE); + spinnerToolbar.setVisibility(View.GONE); thumbnailPlayButton.setImageResource(R.drawable.ic_headset_white_24dp); } From 25db3c2940de8d74c48885aac3646c3684cff481 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Sat, 16 Sep 2017 09:47:15 +0200 Subject: [PATCH 04/13] Update NewPipeExtractor --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index 941dc72d7..f97ffffe2 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -45,7 +45,7 @@ dependencies { exclude module: 'support-annotations' } - compile 'com.github.TeamNewPipe:NewPipeExtractor:7ae274b' + compile 'com.github.TeamNewPipe:NewPipeExtractor:4a91e29' testCompile 'junit:junit:4.12' testCompile 'org.mockito:mockito-core:1.10.19' From 54aa40eac1f3a3670a67765a6d59b5846f8d8c68 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Sun, 19 Nov 2017 17:21:46 +0100 Subject: [PATCH 05/13] Add simple drawer for selecting service --- .../java/org/schabi/newpipe/MainActivity.java | 49 ++++++++++++++++++- .../newpipe/fragments/MainFragment.java | 5 +- app/src/main/res/layout/activity_main.xml | 28 ++++++++--- app/src/main/res/menu/drawer_items.xml | 5 ++ app/src/main/res/values/settings_keys.xml | 12 ++--- app/src/main/res/values/strings.xml | 6 +++ app/src/main/res/xml/content_settings.xml | 4 +- 7 files changed, 86 insertions(+), 23 deletions(-) create mode 100644 app/src/main/res/menu/drawer_items.xml diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index 056db3500..7bc1747bb 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -28,8 +28,13 @@ import android.os.Looper; import android.preference.PreferenceManager; import android.support.annotation.NonNull; import android.support.annotation.Nullable; +import android.support.design.widget.NavigationView; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.view.GravityCompat; +import android.support.v4.widget.DrawerLayout; import android.support.v7.app.ActionBar; +import android.support.v7.app.ActionBarDrawerToggle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; @@ -85,8 +90,50 @@ public class MainActivity extends AppCompatActivity implements HistoryListener { initFragments(); } - Toolbar toolbar = findViewById(R.id.toolbar); + final Toolbar toolbar = findViewById(R.id.toolbar); + final DrawerLayout drawer = findViewById(R.id.drawer_layout); + final NavigationView drawerItems = findViewById(R.id.navigation); setSupportActionBar(toolbar); + + final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.drawer_open, R.string.drawer_close); + toggle.syncState(); + drawer.addDrawerListener(toggle); + + getSupportFragmentManager().addOnBackStackChangedListener(new FragmentManager.OnBackStackChangedListener() { + @Override + public void onBackStackChanged() { + if (getSupportFragmentManager().getBackStackEntryCount() > 1) { + getSupportActionBar().setDisplayHomeAsUpEnabled(true); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + onBackPressed(); + } + }); + } else { + getSupportActionBar().setDisplayHomeAsUpEnabled(false); + toggle.syncState(); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + drawer.openDrawer(GravityCompat.START); + } + }); + } + } + }); + + drawerItems.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { + public boolean onNavigationItemSelected(@NonNull MenuItem item) { + SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit(); + editor.putString("service", item.getTitle().toString()); + editor.apply(); + drawer.closeDrawers(); + return true; + } + }); + + sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); initHistory(); diff --git a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java index a3beb712c..f01807bf2 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/MainFragment.java @@ -30,13 +30,10 @@ import org.schabi.newpipe.fragments.list.kiosk.KioskFragment; import org.schabi.newpipe.fragments.subscription.SubscriptionFragment; import org.schabi.newpipe.report.ErrorActivity; import org.schabi.newpipe.report.UserAction; -import org.schabi.newpipe.util.Constants; import org.schabi.newpipe.util.KioskTranslator; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.ThemeHelper; -import java.util.concurrent.ExecutionException; - public class MainFragment extends BaseFragment implements TabLayout.OnTabSelectedListener { private ViewPager viewPager; private boolean showBlankTab = false; @@ -139,7 +136,7 @@ public class MainFragment extends BaseFragment implements TabLayout.OnTabSelecte public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.action_search: - NavigationHelper.openSearchFragment(getFragmentManager(), Integer.parseInt(PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("service", "0")), ""); + NavigationHelper.openSearchFragment(getFragmentManager(), NewPipe.getIdOfService(PreferenceManager.getDefaultSharedPreferences(getActivity()).getString("service", "YouTube")), ""); return true; } return super.onOptionsItemSelected(item); diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 88a015e81..7eafc6c69 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,18 +1,30 @@ - + android:layout_height="match_parent"> + android:orientation="vertical" + tools:context="org.schabi.newpipe.MainActivity"> + - + + - + + \ No newline at end of file diff --git a/app/src/main/res/menu/drawer_items.xml b/app/src/main/res/menu/drawer_items.xml new file mode 100644 index 000000000..2f82327c3 --- /dev/null +++ b/app/src/main/res/menu/drawer_items.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/settings_keys.xml b/app/src/main/res/values/settings_keys.xml index d088432c9..89cc71e44 100644 --- a/app/src/main/res/values/settings_keys.xml +++ b/app/src/main/res/values/settings_keys.xml @@ -46,16 +46,12 @@ 144p - - YouTube - SoundCloud - - - 0 - 1 + + @string/youtube + @string/soundcloud service - 0 + @string/youtube video_mp4 video_webm diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 65b7ed386..ded1d770c 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -309,4 +309,10 @@ Details Audio Settings Hold To Enqueue + + + Open Drawer + Close Drawer + YouTube + SoundCloud diff --git a/app/src/main/res/xml/content_settings.xml b/app/src/main/res/xml/content_settings.xml index 8778b65f2..2a84ef0ef 100644 --- a/app/src/main/res/xml/content_settings.xml +++ b/app/src/main/res/xml/content_settings.xml @@ -5,8 +5,8 @@ From 1191455d377b40332270e3c8d327423b3fc83b63 Mon Sep 17 00:00:00 2001 From: wb9688 Date: Mon, 20 Nov 2017 16:04:18 +0100 Subject: [PATCH 06/13] Show selected service --- app/src/main/java/org/schabi/newpipe/MainActivity.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/MainActivity.java b/app/src/main/java/org/schabi/newpipe/MainActivity.java index 7bc1747bb..bf628b8cb 100644 --- a/app/src/main/java/org/schabi/newpipe/MainActivity.java +++ b/app/src/main/java/org/schabi/newpipe/MainActivity.java @@ -50,6 +50,7 @@ import org.schabi.newpipe.database.history.dao.WatchHistoryDAO; import org.schabi.newpipe.database.history.model.HistoryEntry; import org.schabi.newpipe.database.history.model.SearchHistoryEntry; import org.schabi.newpipe.database.history.model.WatchHistoryEntry; +import org.schabi.newpipe.extractor.NewPipe; import org.schabi.newpipe.extractor.StreamingService; import org.schabi.newpipe.extractor.stream.AudioStream; import org.schabi.newpipe.extractor.stream.StreamInfo; @@ -95,6 +96,8 @@ public class MainActivity extends AppCompatActivity implements HistoryListener { final NavigationView drawerItems = findViewById(R.id.navigation); setSupportActionBar(toolbar); + drawerItems.getMenu().getItem(NewPipe.getIdOfService(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("service", "YouTube"))).setChecked(true); + final ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.drawer_open, R.string.drawer_close); toggle.syncState(); drawer.addDrawerListener(toggle); @@ -125,15 +128,16 @@ public class MainActivity extends AppCompatActivity implements HistoryListener { drawerItems.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() { public boolean onNavigationItemSelected(@NonNull MenuItem item) { + drawerItems.getMenu().getItem(NewPipe.getIdOfService(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("service", "YouTube"))).setChecked(false); SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).edit(); editor.putString("service", item.getTitle().toString()); editor.apply(); drawer.closeDrawers(); + drawerItems.getMenu().getItem(NewPipe.getIdOfService(PreferenceManager.getDefaultSharedPreferences(getApplicationContext()).getString("service", "YouTube"))).setChecked(true); return true; } }); - sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this); initHistory(); From f5f8371865060b11be44f8fb5fd872c5a734fe0d Mon Sep 17 00:00:00 2001 From: wb9688 Date: Mon, 20 Nov 2017 19:31:33 +0100 Subject: [PATCH 07/13] Remove setting --- app/src/main/res/xml/content_settings.xml | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/app/src/main/res/xml/content_settings.xml b/app/src/main/res/xml/content_settings.xml index 2a84ef0ef..dc5ce8868 100644 --- a/app/src/main/res/xml/content_settings.xml +++ b/app/src/main/res/xml/content_settings.xml @@ -2,15 +2,6 @@ - - - - From 5f26501ddfc42c22b8859dc94eaeb449cf9bde72 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 20 Jan 2018 13:39:06 +0100 Subject: [PATCH 08/13] fix triangle play button when returning to app --- .../main/java/org/schabi/newpipe/player/MainVideoPlayer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java index 98dd99c3c..da8a733d8 100644 --- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java @@ -379,7 +379,7 @@ public final class MainVideoPlayer extends Activity { titleTextView.setText(getVideoTitle()); channelTextView.setText(getUploaderName()); - playPauseButton.setImageResource(R.drawable.ic_pause_white); + //playPauseButton.setImageResource(R.drawable.ic_pause_white); } @Override From eb4b3810e961135a27ae3329202dcc4800238df4 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 20 Jan 2018 13:57:31 +0100 Subject: [PATCH 09/13] refactor ExtractionHelper using lambda expression --- .../schabi/newpipe/util/ExtractorHelper.java | 167 +++++++++--------- 1 file changed, 79 insertions(+), 88 deletions(-) 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 f31ee0131..0f1c568e7 100644 --- a/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java +++ b/app/src/main/java/org/schabi/newpipe/util/ExtractorHelper.java @@ -57,105 +57,96 @@ public final class ExtractorHelper { } } - public static Single searchFor(final int serviceId, final String query, final int pageNumber, final String contentCountry, final SearchEngine.Filter filter) { + public static Single searchFor(final int serviceId, + final String query, + final int pageNumber, + final String contentCountry, + final SearchEngine.Filter filter) { checkServiceId(serviceId); - return Single.fromCallable(new Callable() { - @Override - public SearchResult call() throws Exception { - return SearchResult.getSearchResult(NewPipe.getService(serviceId).getSearchEngine(), - query, pageNumber, contentCountry, filter); - } - }); + return Single.fromCallable(() -> + SearchResult.getSearchResult(NewPipe.getService(serviceId).getSearchEngine(), + query, pageNumber, contentCountry, filter) + ); } - public static Single getMoreSearchItems(final int serviceId, final String query, final int nextPageNumber, final String searchLanguage, final SearchEngine.Filter filter) { + public static Single getMoreSearchItems(final int serviceId, + final String query, + final int nextPageNumber, + final String searchLanguage, + final SearchEngine.Filter filter) { checkServiceId(serviceId); return searchFor(serviceId, query, nextPageNumber, searchLanguage, filter) - .map(new Function() { - @Override - public NextItemsResult apply(@NonNull SearchResult searchResult) throws Exception { - return new NextItemsResult(searchResult.resultList, nextPageNumber + "", searchResult.errors); - } - }); + .map((@NonNull SearchResult searchResult) -> + new NextItemsResult(searchResult.resultList, + nextPageNumber + "", + searchResult.errors)); } - public static Single> suggestionsFor(final int serviceId, final String query, final String contentCountry) { + public static Single> suggestionsFor(final int serviceId, + final String query, + final String contentCountry) { checkServiceId(serviceId); - return Single.fromCallable(new Callable>() { - @Override - public List call() throws Exception { - return NewPipe.getService(serviceId).getSuggestionExtractor().suggestionList(query, contentCountry); - } - }); + return Single.fromCallable(() -> + NewPipe.getService(serviceId) + .getSuggestionExtractor() + .suggestionList(query, contentCountry)); } - public static Single getStreamInfo(final int serviceId, final String url, boolean forceLoad) { + public static Single getStreamInfo(final int serviceId, + final String url, + boolean forceLoad) { checkServiceId(serviceId); - return checkCache(forceLoad, serviceId, url, Single.fromCallable(new Callable() { - @Override - public StreamInfo call() throws Exception { - return StreamInfo.getInfo(NewPipe.getService(serviceId), url); - } - })); + return checkCache(forceLoad, serviceId, url, Single.fromCallable(() -> + StreamInfo.getInfo(NewPipe.getService(serviceId), url))); } - public static Single getChannelInfo(final int serviceId, final String url, boolean forceLoad) { + public static Single getChannelInfo(final int serviceId, + final String url, + boolean forceLoad) { checkServiceId(serviceId); - return checkCache(forceLoad, serviceId, url, Single.fromCallable(new Callable() { - @Override - public ChannelInfo call() throws Exception { - return ChannelInfo.getInfo(NewPipe.getService(serviceId), url); - } - })); + return checkCache(forceLoad, serviceId, url, Single.fromCallable(() -> + ChannelInfo.getInfo(NewPipe.getService(serviceId), url))); } - public static Single getMoreChannelItems(final int serviceId, final String url, final String nextStreamsUrl) { + public static Single getMoreChannelItems(final int serviceId, + final String url, + final String nextStreamsUrl) { checkServiceId(serviceId); - return Single.fromCallable(new Callable() { - @Override - public NextItemsResult call() throws Exception { - return ChannelInfo.getMoreItems(NewPipe.getService(serviceId), url, nextStreamsUrl); - } - }); + return Single.fromCallable(() -> + ChannelInfo.getMoreItems(NewPipe.getService(serviceId), url, nextStreamsUrl)); } - public static Single getPlaylistInfo(final int serviceId, final String url, boolean forceLoad) { + public static Single getPlaylistInfo(final int serviceId, + final String url, + boolean forceLoad) { checkServiceId(serviceId); - return checkCache(forceLoad, serviceId, url, Single.fromCallable(new Callable() { - @Override - public PlaylistInfo call() throws Exception { - return PlaylistInfo.getInfo(NewPipe.getService(serviceId), url); - } - })); + return checkCache(forceLoad, serviceId, url, Single.fromCallable(() -> + PlaylistInfo.getInfo(NewPipe.getService(serviceId), url))); } - public static Single getMorePlaylistItems(final int serviceId, final String url, final String nextStreamsUrl) { + public static Single getMorePlaylistItems(final int serviceId, + final String url, + final String nextStreamsUrl) { checkServiceId(serviceId); - return Single.fromCallable(new Callable() { - @Override - public NextItemsResult call() throws Exception { - return PlaylistInfo.getMoreItems(NewPipe.getService(serviceId), url, nextStreamsUrl); - } - }); + return Single.fromCallable(() -> + PlaylistInfo.getMoreItems(NewPipe.getService(serviceId), url, nextStreamsUrl)); } - public static Single getKioskInfo(final int serviceId, final String url, final String contentCountry, boolean forceLoad) { - return checkCache(forceLoad, serviceId, url, Single.fromCallable(new Callable() { - @Override - public KioskInfo call() throws Exception { - Log.e("---------", contentCountry); - return KioskInfo.getInfo(NewPipe.getService(serviceId), url, contentCountry); - } - })); + public static Single getKioskInfo(final int serviceId, + final String url, + final String contentCountry, + boolean forceLoad) { + return checkCache(forceLoad, serviceId, url, Single.fromCallable(() -> + KioskInfo.getInfo(NewPipe.getService(serviceId), url, contentCountry))); } - public static Single getMoreKioskItems(final int serviceId, final String url, final String nextStreamsUrl, final String contentCountry) { - return Single.fromCallable(new Callable() { - @Override - public NextItemsResult call() throws Exception { - return KioskInfo.getMoreItems(NewPipe.getService(serviceId), url, nextStreamsUrl, contentCountry); - } - }); + public static Single getMoreKioskItems(final int serviceId, + final String url, + final String nextStreamsUrl, + final String contentCountry) { + return Single.fromCallable(() -> + KioskInfo.getMoreItems(NewPipe.getService(serviceId), + url, nextStreamsUrl, contentCountry)); } /*////////////////////////////////////////////////////////////////////////// @@ -163,24 +154,24 @@ public final class ExtractorHelper { //////////////////////////////////////////////////////////////////////////*/ /** - * Check if we can load it from the cache (forceLoad parameter), if we can't, load from the network (Single loadFromNetwork) + * Check if we can load it from the cache (forceLoad parameter), if we can't, + * load from the network (Single loadFromNetwork) * and put the results in the cache. */ - private static Single checkCache(boolean forceLoad, int serviceId, String url, Single loadFromNetwork) { + private static Single checkCache(boolean forceLoad, + int serviceId, + String url, + Single loadFromNetwork) { checkServiceId(serviceId); - loadFromNetwork = loadFromNetwork.doOnSuccess(new Consumer() { - @Override - public void accept(@NonNull I i) throws Exception { - cache.putInfo(i); - } - }); + loadFromNetwork = loadFromNetwork.doOnSuccess((@NonNull I i) -> cache.putInfo(i)); Single load; if (forceLoad) { cache.removeInfo(serviceId, url); load = loadFromNetwork; } else { - load = Maybe.concat(ExtractorHelper.loadFromCache(serviceId, url), loadFromNetwork.toMaybe()) + load = Maybe.concat(ExtractorHelper.loadFromCache(serviceId, url), + loadFromNetwork.toMaybe()) .firstElement() //Take the first valid .toSingle(); } @@ -193,9 +184,7 @@ public final class ExtractorHelper { */ public static Maybe loadFromCache(final int serviceId, final String url) { checkServiceId(serviceId); - return Maybe.defer(new Callable>() { - @Override - public MaybeSource call() throws Exception { + return Maybe.defer(() -> { //noinspection unchecked I info = (I) cache.getFromKey(serviceId, url); if (MainActivity.DEBUG) Log.d(TAG, "loadFromCache() called, info > " + info); @@ -206,8 +195,7 @@ public final class ExtractorHelper { } return Maybe.empty(); - } - }); + }); } /** @@ -215,7 +203,8 @@ public final class ExtractorHelper { * * @see Class#isAssignableFrom(Class) */ - public static boolean hasAssignableCauseThrowable(Throwable throwable, Class... causesToCheck) { + public static boolean hasAssignableCauseThrowable(Throwable throwable, + Class... causesToCheck) { // Check if getCause is not the same as cause (the getCause is already the root), // as it will cause a infinite loop if it is Throwable cause, getCause = throwable; @@ -270,7 +259,9 @@ public final class ExtractorHelper { * Check if throwable have Interrupted* exception as one of its causes. */ public static boolean isInterruptedCaused(Throwable throwable) { - return ExtractorHelper.hasExactCauseThrowable(throwable, InterruptedIOException.class, InterruptedException.class); + return ExtractorHelper.hasExactCauseThrowable(throwable, + InterruptedIOException.class, + InterruptedException.class); } public static String toUpperCase(String value) { From 677865f34715999b1d27de06357bfeb24a211ee5 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 20 Jan 2018 14:46:10 +0100 Subject: [PATCH 10/13] player popup menu icons for white theme --- .../newpipe/player/MainVideoPlayer.java | 43 ++++++++-------- .../org/schabi/newpipe/util/InfoCache.java | 2 +- .../newpipe/util/PopupMenuIconHacker.java | 48 ++++++++++++++++++ .../ic_fullscreen_exit_black_24dp.png | Bin 0 -> 103 bytes .../ic_screen_rotation_black_24dp.png | Bin 0 -> 478 bytes .../ic_fullscreen_exit_black_24dp.png | Bin 0 -> 93 bytes .../ic_screen_rotation_black_24dp.png | Bin 0 -> 321 bytes .../ic_fullscreen_exit_black_24dp.png | Bin 0 -> 111 bytes .../ic_screen_rotation_black_24dp.png | Bin 0 -> 645 bytes .../ic_fullscreen_exit_black_24dp.png | Bin 0 -> 122 bytes .../ic_screen_rotation_black_24dp.png | Bin 0 -> 916 bytes .../ic_fullscreen_exit_black_24dp.png | Bin 0 -> 123 bytes .../ic_screen_rotation_black_24dp.png | Bin 0 -> 1178 bytes .../main/res/layout/activity_main_player.xml | 2 +- app/src/main/res/menu/menu_videooptions.xml | 7 +-- 15 files changed, 76 insertions(+), 26 deletions(-) create mode 100644 app/src/main/java/org/schabi/newpipe/util/PopupMenuIconHacker.java create mode 100644 app/src/main/res/drawable-hdpi/ic_fullscreen_exit_black_24dp.png create mode 100644 app/src/main/res/drawable-hdpi/ic_screen_rotation_black_24dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_fullscreen_exit_black_24dp.png create mode 100644 app/src/main/res/drawable-mdpi/ic_screen_rotation_black_24dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_fullscreen_exit_black_24dp.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_screen_rotation_black_24dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_fullscreen_exit_black_24dp.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_screen_rotation_black_24dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_fullscreen_exit_black_24dp.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_screen_rotation_black_24dp.png diff --git a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java index da8a733d8..2ec0dc14f 100644 --- a/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java +++ b/app/src/main/java/org/schabi/newpipe/player/MainVideoPlayer.java @@ -25,6 +25,7 @@ import android.content.Intent; import android.content.SharedPreferences; import android.content.pm.ActivityInfo; import android.content.res.Configuration; +import android.content.res.Resources; import android.graphics.Color; import android.media.AudioManager; import android.os.Build; @@ -37,7 +38,6 @@ import android.support.v7.widget.RecyclerView; import android.support.v7.widget.helper.ItemTouchHelper; import android.util.Log; import android.view.GestureDetector; -import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; @@ -62,6 +62,7 @@ import org.schabi.newpipe.util.AnimationUtils; import org.schabi.newpipe.util.ListHelper; import org.schabi.newpipe.util.NavigationHelper; import org.schabi.newpipe.util.PermissionHelper; +import org.schabi.newpipe.util.PopupMenuIconHacker; import org.schabi.newpipe.util.ThemeHelper; import java.lang.reflect.Field; @@ -326,7 +327,7 @@ public final class MainVideoPlayer extends Activity { this.playNextButton = rootView.findViewById(R.id.playNextButton); this.moreOptionsButton = rootView.findViewById(R.id.moreOptionsButton); this.moreOptionsPopupMenu = new PopupMenu(context, moreOptionsButton); - this.moreOptionsPopupMenu.getMenuInflater().inflate(R.menu.menu_videooptions, moreOptionsPopupMenu.getMenu()); + buildMoreOptionsMenu(); titleTextView.setSelected(true); channelTextView.setSelected(true); @@ -499,25 +500,7 @@ public final class MainVideoPlayer extends Activity { private void onMoreOptionsClicked() { if (DEBUG) Log.d(TAG, "onMoreOptionsClicked() called"); - buildMoreOptionsMenu(); - try { - Field[] fields = moreOptionsPopupMenu.getClass().getDeclaredFields(); - for (Field field : fields) { - if ("mPopup".equals(field.getName())) { - field.setAccessible(true); - Object menuPopupHelper = field.get(moreOptionsPopupMenu); - Class classPopupHelper = Class.forName(menuPopupHelper - .getClass().getName()); - Method setForceIcons = classPopupHelper.getMethod( - "setForceShowIcon", boolean.class); - setForceIcons.invoke(menuPopupHelper, true); - break; - } - } - } catch (Exception e) { - e.printStackTrace(); - } moreOptionsPopupMenu.show(); isSomePopupMenuVisible = true; showControls(300); @@ -659,7 +642,9 @@ public final class MainVideoPlayer extends Activity { } private void buildMoreOptionsMenu() { - if (moreOptionsPopupMenu == null) return; + this.moreOptionsPopupMenu.getMenuInflater().inflate(R.menu.menu_videooptions, + moreOptionsPopupMenu.getMenu()); + moreOptionsPopupMenu.setOnMenuItemClickListener(menuItem -> { switch (menuItem.getItemId()) { case R.id.toggleOrientation: @@ -674,6 +659,22 @@ public final class MainVideoPlayer extends Activity { } return false; }); + + try { + PopupMenuIconHacker.setShowPopupIcon(moreOptionsPopupMenu); + } catch (Exception e) { + e.printStackTrace(); + } + + // fix icon theme + if(ThemeHelper.isLightThemeSelected(MainVideoPlayer.this)) { + moreOptionsPopupMenu.getMenu() + .findItem(R.id.toggleOrientation) + .setIcon(R.drawable.ic_screen_rotation_black_24dp); + moreOptionsPopupMenu.getMenu() + .findItem(R.id.switchPopup) + .setIcon(R.drawable.ic_fullscreen_exit_black_24dp); + } } private void buildQueue() { diff --git a/app/src/main/java/org/schabi/newpipe/util/InfoCache.java b/app/src/main/java/org/schabi/newpipe/util/InfoCache.java index 0f082cc11..46c08b01b 100644 --- a/app/src/main/java/org/schabi/newpipe/util/InfoCache.java +++ b/app/src/main/java/org/schabi/newpipe/util/InfoCache.java @@ -1,4 +1,4 @@ -/* +/** * Copyright 2017 Mauricio Colli * InfoCache.java is part of NewPipe * diff --git a/app/src/main/java/org/schabi/newpipe/util/PopupMenuIconHacker.java b/app/src/main/java/org/schabi/newpipe/util/PopupMenuIconHacker.java new file mode 100644 index 000000000..70affb900 --- /dev/null +++ b/app/src/main/java/org/schabi/newpipe/util/PopupMenuIconHacker.java @@ -0,0 +1,48 @@ +package org.schabi.newpipe.util; + +import android.widget.PopupMenu; + +import java.lang.reflect.Field; +import java.lang.reflect.Method; + +/** + * Created by Christian Schabesberger on 20.01.18. + * Copyright 2018 Christian Schabesberger + * PopupMenuIconHacker.java is part of NewPipe + * + * License: GPL-3.0+ + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +public class PopupMenuIconHacker { + public static void setShowPopupIcon(PopupMenu menu) throws Exception { + try { + Field[] fields = menu.getClass().getDeclaredFields(); + for (Field field : fields) { + if ("mPopup".equals(field.getName())) { + field.setAccessible(true); + Object menuPopupHelper = field.get(menu); + Class classPopupHelper = Class.forName(menuPopupHelper + .getClass().getName()); + Method setForceIcons = classPopupHelper.getMethod( + "setForceShowIcon", boolean.class); + setForceIcons.invoke(menuPopupHelper, true); + break; + } + } + } catch (Exception e) { + throw new Exception("Could not make Popup menu show Icons", e); + } + } +} diff --git a/app/src/main/res/drawable-hdpi/ic_fullscreen_exit_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_fullscreen_exit_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..8328e2efe00875d42e2888ce9b498c82f8006487 GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^Dj>|k0wldT1B8K;o~MgrNCji^0XDaT8bA1(W++`T z&bYGR{|bTmcN9!APBa7>%u>jl^4pzPighsqLsReU)Sjm*uYo!lJYD@<);T3K0Ra3G B9xwm^ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_screen_rotation_black_24dp.png b/app/src/main/res/drawable-hdpi/ic_screen_rotation_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..9a55a65b71f13287aac3164b996ba348d4702a23 GIT binary patch literal 478 zcmV<40U`d0P)dQkbxDPyIB9h!Ff8`5>b0Y;8clR&|oA8?t$TOiwF@2{R#HV3_^$! zgccoIN}3Y0^FB?te20fGkG}w*W!mjCD z=9Lh_Z>@wn)EB~vdM>kQFQt5Q)r8kV_+TW5nZsy8J#+=sbo7KTF6JZ+g=cw8In@#RT6s(vRr5ypY$%T@qps--H*=VjngjrB2%7-il*y;Gg}%!$ ztS2l&1*-5vxCah@30k(t}WKt=!;T*sn;nX+)pgo{+84A0? zrdmFgG62&;n5TrwVBopXGgCrkG1Pq&j#CO#11g7s5xYXqBSWBJKBaOPxMW)hZ(TQL zUsy`0JPg%AnVa^SDkTm}layh|xis8GW_Yd-nuk0;8*Kd6^I Uk(I={0{{R307*qoM6N<$f)~EYHUIzs literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_fullscreen_exit_black_24dp.png b/app/src/main/res/drawable-mdpi/ic_fullscreen_exit_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..c8394487c9c3e539520d57b899313ab0779ed6ab GIT binary patch literal 93 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM0wlfaz7_*16;Bt(kP60RhQ`1T@*ERyFt2`S q&y&-%?yl!7t5P#MsIeDMx?*7l8LBL{Qe zfUGsaf0M0QYm&jzXF#r*oIHhle#={s2ZAY-E*=xfCX(y@nGW#UPyHH_*eM--)V(ID z9Y%sh4N2@U5qwhOz9IVmNNR_XgJ0eYj**55*v&s0jOND2QL#yTPx!fE}PTJn}WICX(A9-NFX{L$)8RM24-3FS#;OXk; Jvd$@?2>|5vARzz% literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_screen_rotation_black_24dp.png b/app/src/main/res/drawable-xhdpi/ic_screen_rotation_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..ae2be1fa8932d77352eda38679f4720453461a3f GIT binary patch literal 645 zcmV;00($+4P)GxjtJ@5Dae(c+vxH!Zc_V`MbN6c}FV+1F`TbgZa zg((Ku7hQ}pPTEe$+GdWUMC1UABB@hoOKh|UWYs9q6Gi{DO;YTbXtG8os{Uh#M1?cx zYqmHWML$I!%fBTCMOy(NMxGsgloNhEfStHXi<4~1euFD+y^*j;u%hoG>(U#E5;k#7 zd?)SFI}%BKP%nwO^+NAo6T|v(7o2)WA}_n&NVxQlL`;87?m6|2L{>lQgKoW%C}XiM zdpA(JSTyy~6BDxY1ZC8#*Tm8v69eqYpIicATz}H~AXws=%+DdDsmtYZz{D+?-bE?U z44gPGvxg{93Xqtg#R-|bgU|_sFp0(gH}OG6nSYm9kU^Gq$^jD7DEH;E0)Z2Ch7c~u zl4q(5Qk4UX$$dPUrsu=NHx z{m;Bg5}S&VDA{_OYc%BM&zz#gO$M!mTQ6MKckzR1x&gQ?Utlxg)(bgmdh9(p?#L@U zQFZH;jC`YhT^mNiuUC2~QZo_>P^R@!&Wk=0DIT!hAu+@lBkYsIO!C4=1SZ8rW?A49 fU)W`hI1YXS>b5nQ^cC1(00000NkvXXu0mjfGOi(K literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_fullscreen_exit_black_24dp.png b/app/src/main/res/drawable-xxhdpi/ic_fullscreen_exit_black_24dp.png new file mode 100644 index 0000000000000000000000000000000000000000..5691b5541c38292b3be0081e700065a2a1040f76 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xf3?%cF6IITFDn zS$j+pMZH_e;>ya=YC&?z^N2R*J6zw|C?lmSk{o7#eqS3T8|Sz zs!$Kxa-vATF6V5dE`F2~d)%eVIUA{)pXJ0FFK5DASV)90gK4N8aof4GJ6u(u~Xw>2QKc zZB*(`PQA%hd^M9*;@Fawy}1)^!)Q*CV@Dd2xlyDD1yzm>=>~ZlSwy;7jxG?KHfc#d z+C~&!AqCQe%-n-Cj~g1PS0+Y~668W7#VC6F*Dz`&9~$X6(y(k!LjY+rfTX~In0zz(7p?jv3yw4;BOic1$(93+{3hS{_3D!>IMT~9_$^U= zk}U@s*pT6OL7Qa3ksij81B2=$8;+EgBL(iWCuwsa&bl1iqDzfr&yl*>m!m&aMQZnx z)Hu=rMLE9B{q`g^j`S>!+@ipfl=pZrNrfZ5V31r=#4&ptmvk^mg(D49G;Wro54^5; z*Mdnp9O*IkjT<_AOeb(vt^|=5)i~1KWN?jj%on)6m8wY6<4AF4as0QpAqhvde)5(i zbADYoibZ*a-3p{6{t~>$@3`!drjZ)e#2fq)Op@woqK+CDV}!48Dv(0y4klRPu#7ZK qs5S5aFOp)J3_o$m3CFyNLjMAr$oSD#LC}5x00002x{08cb)2Xdq0CHOzC_Gp8`VX)Eh%CsVGu?XWN#bQ zMG*;uGb$n!3aSh3O+stgn}xpZS-@5L+oL3WCh3XbdVwTEaRj=jFIzDa164VSaUNYA&6aG3XX%+$B+O2 zDx76gjQA!Bj$Y=)itnM&Lo0*0P>*p#eE0!-8H%LP13;P`42Kj(xIHfXc3?>ag&zJ( z9R~<-TE=OK3!exIiVpxQIUV|@zAqO12nvEPsbv7CWs)uC_z@JAGF4JMNf{?CvCb4f zlEU=aOc5s?<5n|#BZU==;-m$xH^Hx1p_7?rIp=ZGqtqDSn<`|vh?5>Lz&BRdM1Yg7 zHNZDkcpSYiu+RYCSYZIYf71ZpSfQ3v==~iA_{Iv&1akciDFb|Cg_qFlZ3g(p3JdrX zeZ#oS0N+?)CwjZx0N+?4&2hOrZh&vD(28EJFu*rfNHeI9FGlzg6uPK156e}NT0&W7 zj_;>1pHaEm8GhqDX^-!z&?h$^0chIn@x2vR$wiU*py{{A_g2WDuSe@Zb3{ga0jg5r zZP|YwG>2p~#F8pictEzl0?i&=0u&a@?myIkj>Zz9P>|hQK$F8IK;c8#ydOZ*nE-`n zWN#lNPoYD$-h%2?=;qQ{BRii!;uOM}Q>Z+13Udm7FsA@$<`h1YmF6TWyekWBOqH(c zRoE}%ryzL>IT_|50SY-ZG|A{RBtYQ;4M?tLQij(hLSZ)=PRM8rBtRjLhL>gZI#j8` zv+{|D(XdfQL!=`qEX6jD;iP?NsAEEgS@2S@$9J@#0X~-DE8wMIkN*Yf>E7M{<|+>b zd;Bvr63Qa|C88ZX6s+-Y5t?n?1tjV^L87$_LxLyAFJ{g#x0f+0S@ z4qc}W3=|CU;c|YHg96tWC>Y|0e+Dmtfr24EWH>Ho0a*hDLwtahddey4Vpr($!3TIp z&lvzug@P*BY`c+=G(_Y&K9Z#0Pi{C%s74K*10nuHkyZl*Gkk#clyK639#Tw|n<6Nf;sb1_jMMTSb%X=^ zm|#N$1yg*0ZInVEu{w;8!$nXq#|K!?I8IBzt1JxR&rrb{U(>`$_ diff --git a/app/src/main/res/menu/menu_videooptions.xml b/app/src/main/res/menu/menu_videooptions.xml index 1887ec1dd..ce69ba9c1 100644 --- a/app/src/main/res/menu/menu_videooptions.xml +++ b/app/src/main/res/menu/menu_videooptions.xml @@ -4,17 +4,18 @@ xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> - From 86eccf219d3514a9b6e1795f1ecd68393ccaed5c Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 20 Jan 2018 15:24:45 +0100 Subject: [PATCH 11/13] refactore some more lambda functions --- .../fragments/list/BaseListInfoFragment.java | 38 ++++++------------- 1 file changed, 12 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java index 41561af66..57e77d97a 100644 --- a/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java +++ b/app/src/main/java/org/schabi/newpipe/fragments/list/BaseListInfoFragment.java @@ -124,20 +124,12 @@ public abstract class BaseListInfoFragment extends BaseListF currentWorker = loadResult(forceLoad) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer() { - @Override - public void accept(@NonNull I result) throws Exception { - isLoading.set(false); - currentInfo = result; - currentNextItemsUrl = result.next_streams_url; - handleResult(result); - } - }, new Consumer() { - @Override - public void accept(@NonNull Throwable throwable) throws Exception { - onError(throwable); - } - }); + .subscribe((@NonNull I result) -> { + isLoading.set(false); + currentInfo = result; + currentNextItemsUrl = result.next_streams_url; + handleResult(result); + }, (@NonNull Throwable throwable) -> onError(throwable)); } /** @@ -153,18 +145,12 @@ public abstract class BaseListInfoFragment extends BaseListF currentWorker = loadMoreItemsLogic() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) - .subscribe(new Consumer() { - @Override - public void accept(@io.reactivex.annotations.NonNull ListExtractor.NextItemsResult nextItemsResult) throws Exception { - isLoading.set(false); - handleNextItems(nextItemsResult); - } - }, new Consumer() { - @Override - public void accept(@io.reactivex.annotations.NonNull Throwable throwable) throws Exception { - isLoading.set(false); - onError(throwable); - } + .subscribe((@io.reactivex.annotations.NonNull ListExtractor.NextItemsResult nextItemsResult) -> { + isLoading.set(false); + handleNextItems(nextItemsResult); + }, (@io.reactivex.annotations.NonNull Throwable throwable) -> { + isLoading.set(false); + onError(throwable); }); } From 66fde7a212d2de7cf6996440fdbf2989dd9930d1 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 20 Jan 2018 15:59:34 +0100 Subject: [PATCH 12/13] fix loop in channel --- app/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/build.gradle b/app/build.gradle index ef034f98d..b3c3b9f0d 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,7 +55,7 @@ dependencies { exclude module: 'support-annotations' } - implementation 'com.github.TeamNewPipe:NewPipeExtractor:9de63f8c0a170a066' + implementation 'com.github.TeamNewPipe:NewPipeExtractor:1c97da8b51b3610' testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:1.10.19' From 4d12e71fba7a280702f07d9ead7fb4e1c72a8874 Mon Sep 17 00:00:00 2001 From: Christian Schabesberger Date: Sat, 20 Jan 2018 16:00:39 +0100 Subject: [PATCH 13/13] move on to v0.11.5 --- app/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index b3c3b9f0d..13f422afa 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "org.schabi.newpipe" minSdkVersion 15 targetSdkVersion 27 - versionCode 45 - versionName "0.11.4" + versionCode 46 + versionName "0.11.5" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" vectorDrawables.useSupportLibrary = true