mirror of
				https://github.com/TeamNewPipe/NewPipe
				synced 2025-10-31 23:32:59 +00:00 
			
		
		
		
	Merge pull request #5310 from khimaros/list-play-kodi
add list item to play video on kodi
This commit is contained in:
		| @@ -31,6 +31,7 @@ import org.schabi.newpipe.info_list.InfoItemDialog; | ||||
| import org.schabi.newpipe.info_list.InfoListAdapter; | ||||
| import org.schabi.newpipe.player.helper.PlayerHolder; | ||||
| import org.schabi.newpipe.report.ErrorActivity; | ||||
| import org.schabi.newpipe.util.KoreUtil; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.OnClickGesture; | ||||
| import org.schabi.newpipe.util.StateSaver; | ||||
| @@ -332,7 +333,6 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I> | ||||
|         } | ||||
|     } | ||||
|  | ||||
|  | ||||
|     protected void showStreamDialog(final StreamInfoItem item) { | ||||
|         final Context context = getContext(); | ||||
|         final Activity activity = getActivity(); | ||||
| @@ -359,6 +359,9 @@ public abstract class BaseListFragment<I, N> extends BaseStateFragment<I> | ||||
|                     StreamDialogEntry.share | ||||
|             )); | ||||
|         } | ||||
|         if (KoreUtil.shouldShowPlayWithKodi(context, item.getServiceId())) { | ||||
|             entries.add(StreamDialogEntry.play_with_kodi); | ||||
|         } | ||||
|         StreamDialogEntry.setEnabledEntries(entries); | ||||
|  | ||||
|         new InfoItemDialog(activity, item, StreamDialogEntry.getCommands(context), | ||||
|   | ||||
| @@ -42,6 +42,7 @@ import org.schabi.newpipe.report.ErrorActivity; | ||||
| import org.schabi.newpipe.report.UserAction; | ||||
| import org.schabi.newpipe.util.ExtractorHelper; | ||||
| import org.schabi.newpipe.util.ImageDisplayConstants; | ||||
| import org.schabi.newpipe.util.KoreUtil; | ||||
| import org.schabi.newpipe.util.Localization; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.ShareUtils; | ||||
| @@ -174,6 +175,9 @@ public class PlaylistFragment extends BaseListInfoFragment<PlaylistInfo> { | ||||
|                     StreamDialogEntry.share | ||||
|             )); | ||||
|         } | ||||
|         if (KoreUtil.shouldShowPlayWithKodi(context, item.getServiceId())) { | ||||
|             entries.add(StreamDialogEntry.play_with_kodi); | ||||
|         } | ||||
|         StreamDialogEntry.setEnabledEntries(entries); | ||||
|  | ||||
|         StreamDialogEntry.start_here_on_background.setCustomAction((fragment, infoItem) -> | ||||
|   | ||||
| @@ -37,6 +37,7 @@ import org.schabi.newpipe.report.ErrorActivity; | ||||
| import org.schabi.newpipe.report.ErrorInfo; | ||||
| import org.schabi.newpipe.report.UserAction; | ||||
| import org.schabi.newpipe.settings.SettingsActivity; | ||||
| import org.schabi.newpipe.util.KoreUtil; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.OnClickGesture; | ||||
| import org.schabi.newpipe.util.StreamDialogEntry; | ||||
| @@ -413,6 +414,9 @@ public class StatisticsPlaylistFragment | ||||
|                     StreamDialogEntry.share | ||||
|             )); | ||||
|         } | ||||
|         if (KoreUtil.shouldShowPlayWithKodi(context, infoItem.getServiceId())) { | ||||
|             entries.add(StreamDialogEntry.play_with_kodi); | ||||
|         } | ||||
|         StreamDialogEntry.setEnabledEntries(entries); | ||||
|  | ||||
|         StreamDialogEntry.start_here_on_background.setCustomAction((fragment, infoItemDuplicate) -> | ||||
|   | ||||
| @@ -41,6 +41,7 @@ import org.schabi.newpipe.player.helper.PlayerHolder; | ||||
| import org.schabi.newpipe.player.playqueue.PlayQueue; | ||||
| import org.schabi.newpipe.player.playqueue.SinglePlayQueue; | ||||
| import org.schabi.newpipe.report.UserAction; | ||||
| import org.schabi.newpipe.util.KoreUtil; | ||||
| import org.schabi.newpipe.util.Localization; | ||||
| import org.schabi.newpipe.util.NavigationHelper; | ||||
| import org.schabi.newpipe.util.OnClickGesture; | ||||
| @@ -781,6 +782,9 @@ public class LocalPlaylistFragment extends BaseLocalListFragment<List<PlaylistSt | ||||
|                     StreamDialogEntry.share | ||||
|             )); | ||||
|         } | ||||
|         if (KoreUtil.shouldShowPlayWithKodi(context, infoItem.getServiceId())) { | ||||
|             entries.add(StreamDialogEntry.play_with_kodi); | ||||
|         } | ||||
|         StreamDialogEntry.setEnabledEntries(entries); | ||||
|  | ||||
|         StreamDialogEntry.start_here_on_background.setCustomAction((fragment, infoItemDuplicate) -> | ||||
|   | ||||
| @@ -937,9 +937,7 @@ public class VideoPlayerImpl extends VideoPlayer | ||||
|                 service.getString(R.string.show_play_with_kodi_key), false); | ||||
|         // show kodi button if it supports the current service and it is enabled in settings | ||||
|         final boolean showKodiButton = playQueue != null && playQueue.getItem() != null | ||||
|                 && KoreUtil.isServiceSupportedByKore(playQueue.getItem().getServiceId()) | ||||
|                 && PreferenceManager.getDefaultSharedPreferences(context) | ||||
|                 .getBoolean(context.getString(R.string.show_play_with_kodi_key), false); | ||||
|                 && KoreUtil.shouldShowPlayWithKodi(context, playQueue.getItem().getServiceId()); | ||||
|         playWithKodi.setVisibility(videoPlayerSelected() && kodiEnabled && showKodiButton | ||||
|                 ? View.VISIBLE : View.GONE); | ||||
|     } | ||||
|   | ||||
| @@ -1,9 +1,9 @@ | ||||
| package org.schabi.newpipe.util; | ||||
|  | ||||
|  | ||||
| import android.content.Context; | ||||
|  | ||||
| import androidx.appcompat.app.AlertDialog; | ||||
| import androidx.preference.PreferenceManager; | ||||
|  | ||||
| import org.schabi.newpipe.R; | ||||
| import org.schabi.newpipe.extractor.ServiceList; | ||||
| @@ -16,6 +16,12 @@ public final class KoreUtil { | ||||
|                 || serviceId == ServiceList.SoundCloud.getServiceId()); | ||||
|     } | ||||
|  | ||||
|     public static boolean shouldShowPlayWithKodi(final Context context, final int serviceId) { | ||||
|         return isServiceSupportedByKore(serviceId) | ||||
|                 && PreferenceManager.getDefaultSharedPreferences(context) | ||||
|                 .getBoolean(context.getString(R.string.show_play_with_kodi_key), false); | ||||
|     } | ||||
|  | ||||
|     public static void showInstallKoreDialog(final Context context) { | ||||
|         final AlertDialog.Builder builder = new AlertDialog.Builder(context); | ||||
|         builder.setMessage(R.string.kore_not_found) | ||||
|   | ||||
| @@ -1,6 +1,7 @@ | ||||
| package org.schabi.newpipe.util; | ||||
|  | ||||
| import android.content.Context; | ||||
| import android.net.Uri; | ||||
|  | ||||
| import androidx.fragment.app.Fragment; | ||||
|  | ||||
| @@ -70,6 +71,15 @@ public enum StreamDialogEntry { | ||||
|         } | ||||
|     }), | ||||
|  | ||||
|     play_with_kodi(R.string.play_with_kodi_title, (fragment, item) -> { | ||||
|         final Uri videoUrl = Uri.parse(item.getUrl()); | ||||
|         try { | ||||
|             NavigationHelper.playWithKore(fragment.getContext(), videoUrl); | ||||
|         } catch (final Exception e) { | ||||
|             KoreUtil.showInstallKoreDialog(fragment.getActivity()); | ||||
|         } | ||||
|     }), | ||||
|  | ||||
|     share(R.string.share, (fragment, item) -> | ||||
|             ShareUtils.shareUrl(fragment.getContext(), item.getName(), item.getUrl())); | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Tobias Groza
					Tobias Groza