add a channel share bottom sheet

This commit is contained in:
Bnyro 2022-12-02 14:13:16 +01:00
parent 7923347d91
commit 9294df32d8
4 changed files with 59 additions and 0 deletions

View File

@ -5,6 +5,8 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.databinding.LegacySubscriptionChannelBinding import com.github.libretube.databinding.LegacySubscriptionChannelBinding
import com.github.libretube.extensions.toID 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.ui.viewholders.LegacySubscriptionViewHolder
import com.github.libretube.util.ImageHelper import com.github.libretube.util.ImageHelper
import com.github.libretube.util.NavigationHelper import com.github.libretube.util.NavigationHelper
@ -36,6 +38,12 @@ class LegacySubscriptionAdapter(
subscription.url!!.toID() subscription.url!!.toID()
) )
} }
root.setOnLongClickListener {
ChannelOptionsBottomSheet(subscription.url!!.toID(), subscription.name)
.show((root.context as BaseActivity).supportFragmentManager)
true
}
} }
} }

View File

@ -17,6 +17,7 @@ import com.github.libretube.ui.base.BaseActivity
import com.github.libretube.ui.extensions.setFormattedDuration import com.github.libretube.ui.extensions.setFormattedDuration
import com.github.libretube.ui.extensions.setWatchProgressLength import com.github.libretube.ui.extensions.setWatchProgressLength
import com.github.libretube.ui.extensions.setupSubscriptionButton 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.PlaylistOptionsBottomSheet
import com.github.libretube.ui.sheets.VideoOptionsBottomSheet import com.github.libretube.ui.sheets.VideoOptionsBottomSheet
import com.github.libretube.ui.viewholders.SearchViewHolder import com.github.libretube.ui.viewholders.SearchViewHolder
@ -127,6 +128,12 @@ class SearchAdapter(
NavigationHelper.navigateChannel(root.context, item.url) 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()) binding.searchSubButton.setupSubscriptionButton(item.url?.toID(), item.name?.toID())
} }
} }

View File

@ -6,7 +6,9 @@ import androidx.recyclerview.widget.RecyclerView
import com.github.libretube.api.obj.Subscription import com.github.libretube.api.obj.Subscription
import com.github.libretube.databinding.ChannelSubscriptionRowBinding import com.github.libretube.databinding.ChannelSubscriptionRowBinding
import com.github.libretube.extensions.toID 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.extensions.setupSubscriptionButton
import com.github.libretube.ui.sheets.ChannelOptionsBottomSheet
import com.github.libretube.ui.viewholders.SubscriptionChannelViewHolder import com.github.libretube.ui.viewholders.SubscriptionChannelViewHolder
import com.github.libretube.util.ImageHelper import com.github.libretube.util.ImageHelper
import com.github.libretube.util.NavigationHelper import com.github.libretube.util.NavigationHelper
@ -36,6 +38,12 @@ class SubscriptionChannelAdapter(
root.setOnClickListener { root.setOnClickListener {
NavigationHelper.navigateChannel(root.context, subscription.url) NavigationHelper.navigateChannel(root.context, subscription.url)
} }
root.setOnLongClickListener {
ChannelOptionsBottomSheet(subscription.url!!.toID(), subscription.name)
.show((root.context as BaseActivity).supportFragmentManager)
true
}
subscriptionSubscribe.setupSubscriptionButton( subscriptionSubscribe.setupSubscriptionButton(
subscription.url?.toID(), subscription.url?.toID(),
subscription.name, subscription.name,

View File

@ -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)
}
}
}
}
}