From 9294df32d84884d7c0b3af9b6086eff5efd2960c Mon Sep 17 00:00:00 2001 From: Bnyro Date: Fri, 2 Dec 2022 14:13:16 +0100 Subject: [PATCH] add a channel share bottom sheet --- .../ui/adapters/LegacySubscriptionAdapter.kt | 8 +++++ .../libretube/ui/adapters/SearchAdapter.kt | 7 ++++ .../ui/adapters/SubscriptionChannelAdapter.kt | 8 +++++ .../ui/sheets/ChannelOptionsBottomSheet.kt | 36 +++++++++++++++++++ 4 files changed, 59 insertions(+) create mode 100644 app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt diff --git a/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt index b0639128d..d339f00ba 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/LegacySubscriptionAdapter.kt @@ -5,6 +5,8 @@ import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import com.github.libretube.databinding.LegacySubscriptionChannelBinding import com.github.libretube.extensions.toID +import com.github.libretube.ui.base.BaseActivity +import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet import com.github.libretube.ui.viewholders.LegacySubscriptionViewHolder import com.github.libretube.util.ImageHelper import com.github.libretube.util.NavigationHelper @@ -36,6 +38,12 @@ class LegacySubscriptionAdapter( subscription.url!!.toID() ) } + + root.setOnLongClickListener { + ChannelOptionsBottomSheet(subscription.url!!.toID(), subscription.name) + .show((root.context as BaseActivity).supportFragmentManager) + true + } } } diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt index 4f8a4e141..5f8b325fa 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SearchAdapter.kt @@ -17,6 +17,7 @@ import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.extensions.setFormattedDuration import com.github.libretube.ui.extensions.setWatchProgressLength import com.github.libretube.ui.extensions.setupSubscriptionButton +import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet import com.github.libretube.ui.sheets.PlaylistOptionsBottomSheet import com.github.libretube.ui.sheets.VideoOptionsBottomSheet import com.github.libretube.ui.viewholders.SearchViewHolder @@ -127,6 +128,12 @@ class SearchAdapter( NavigationHelper.navigateChannel(root.context, item.url) } + root.setOnLongClickListener { + ChannelOptionsBottomSheet(item.url!!.toID(), item.name) + .show((root.context as BaseActivity).supportFragmentManager) + true + } + binding.searchSubButton.setupSubscriptionButton(item.url?.toID(), item.name?.toID()) } } diff --git a/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt b/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt index 91675f16f..c0e2c37e1 100644 --- a/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt +++ b/app/src/main/java/com/github/libretube/ui/adapters/SubscriptionChannelAdapter.kt @@ -6,7 +6,9 @@ import androidx.recyclerview.widget.RecyclerView import com.github.libretube.api.obj.Subscription import com.github.libretube.databinding.ChannelSubscriptionRowBinding import com.github.libretube.extensions.toID +import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.extensions.setupSubscriptionButton +import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet import com.github.libretube.ui.viewholders.SubscriptionChannelViewHolder import com.github.libretube.util.ImageHelper import com.github.libretube.util.NavigationHelper @@ -36,6 +38,12 @@ class SubscriptionChannelAdapter( root.setOnClickListener { NavigationHelper.navigateChannel(root.context, subscription.url) } + root.setOnLongClickListener { + ChannelOptionsBottomSheet(subscription.url!!.toID(), subscription.name) + .show((root.context as BaseActivity).supportFragmentManager) + true + } + subscriptionSubscribe.setupSubscriptionButton( subscription.url?.toID(), subscription.name, diff --git a/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt b/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt new file mode 100644 index 000000000..0e2ef8b26 --- /dev/null +++ b/app/src/main/java/com/github/libretube/ui/sheets/ChannelOptionsBottomSheet.kt @@ -0,0 +1,36 @@ +package com.github.libretube.ui.sheets + +import android.os.Bundle +import com.github.libretube.R +import com.github.libretube.enums.ShareObjectType +import com.github.libretube.obj.ShareData +import com.github.libretube.ui.dialogs.ShareDialog + +/** + * Dialog with different options for a selected video. + * + * Needs the [videoId] to load the content from the right video. + */ +class ChannelOptionsBottomSheet( + private val channelId: String, + private val channelName: String? +) : BaseBottomSheet() { + private val shareData = ShareData(currentChannel = channelName) + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + // List that stores the different menu options. In the future could be add more options here. + val optionsList = mutableListOf( + context?.getString(R.string.share)!! + ) + + setSimpleItems(optionsList) { which -> + when (optionsList[which]) { + getString(R.string.share) -> { + ShareDialog(channelId, ShareObjectType.CHANNEL, shareData) + .show(parentFragmentManager, null) + } + } + } + } +}