mirror of
https://github.com/libre-tube/LibreTube.git
synced 2024-12-16 07:10:29 +05:30
123 lines
5.3 KiB
Kotlin
123 lines
5.3 KiB
Kotlin
package com.github.libretube
|
|
|
|
import android.app.Dialog
|
|
import android.content.Context
|
|
import android.content.Intent
|
|
import android.os.Bundle
|
|
import android.widget.ArrayAdapter
|
|
import android.widget.Toast
|
|
import androidx.fragment.app.DialogFragment
|
|
import com.google.android.material.dialog.MaterialAlertDialogBuilder
|
|
|
|
/**
|
|
* Dialog with different options for a selected video.
|
|
*
|
|
* Needs the [videoId] to load the content from the right video.
|
|
*/
|
|
class VideoOptionsDialog(private val videoId: String, context: Context) : DialogFragment() {
|
|
/**
|
|
* List that stores the different menu options. In the future could be add more options here.
|
|
*/
|
|
private val list = listOf(
|
|
context.getString(R.string.playOnBackground),
|
|
context.getString(R.string.addToPlaylist),
|
|
context.getString(R.string.share)
|
|
)
|
|
|
|
/**
|
|
* Dialog that returns a [MaterialAlertDialogBuilder] showing a menu of options.
|
|
*/
|
|
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
|
|
return MaterialAlertDialogBuilder(requireContext())
|
|
.setNegativeButton(R.string.cancel) { dialog, _ ->
|
|
dialog.dismiss()
|
|
}
|
|
.setAdapter(
|
|
ArrayAdapter(
|
|
requireContext(),
|
|
R.layout.video_options_dialog_item,
|
|
list
|
|
)
|
|
) { dialog, which ->
|
|
// For now, this checks the position of the option with the position that is in the
|
|
// list. I don't like it, but we will do like this for now.
|
|
when (which) {
|
|
// This for example will be the "Background mode" option
|
|
0 -> {
|
|
BackgroundMode
|
|
.getInstance()
|
|
.playOnBackgroundMode(requireContext(), videoId, 0)
|
|
}
|
|
// Add Video to Playlist Dialog
|
|
1 -> {
|
|
val sharedPref = context?.getSharedPreferences(
|
|
"token",
|
|
Context.MODE_PRIVATE
|
|
)
|
|
val token = sharedPref?.getString("token", "")
|
|
if (token != "") {
|
|
val newFragment = AddtoPlaylistDialog()
|
|
val bundle = Bundle()
|
|
bundle.putString("videoId", videoId)
|
|
newFragment.arguments = bundle
|
|
newFragment.show(parentFragmentManager, "AddToPlaylist")
|
|
} else {
|
|
Toast.makeText(context, R.string.login_first, Toast.LENGTH_SHORT).show()
|
|
}
|
|
}
|
|
2 -> {
|
|
/* crashes
|
|
val sharedPreferences =
|
|
PreferenceManager.getDefaultSharedPreferences(requireContext())
|
|
val instancePref = sharedPreferences.getString(
|
|
"instance",
|
|
"https://pipedapi.kavin.rocks"
|
|
)!!
|
|
val instance = "&instance=${URLEncoder.encode(instancePref, "UTF-8")}"
|
|
val shareOptions = arrayOf(
|
|
getString(R.string.piped),
|
|
getString(R.string.instance),
|
|
getString(R.string.youtube)
|
|
)
|
|
MaterialAlertDialogBuilder(requireContext())
|
|
.setTitle(getString(R.string.share))
|
|
.setItems(
|
|
shareOptions
|
|
) { _, id ->
|
|
val url = when (id) {
|
|
0 -> "https://piped.kavin.rocks/watch?v=$videoId"
|
|
1 -> "https://piped.kavin.rocks/watch?v=$videoId$instance"
|
|
2 -> "https://youtu.be/$videoId"
|
|
else -> "https://piped.kavin.rocks/watch?v=$videoId"
|
|
}
|
|
dismiss()
|
|
val intent = Intent()
|
|
intent.action = Intent.ACTION_SEND
|
|
intent.putExtra(Intent.EXTRA_TEXT, url)
|
|
intent.type = "text/plain"
|
|
startActivity(Intent.createChooser(intent, "Share Url To:"))
|
|
}
|
|
.show()
|
|
*/
|
|
val intent = Intent()
|
|
intent.action = Intent.ACTION_SEND
|
|
intent.putExtra(
|
|
Intent.EXTRA_TEXT,
|
|
"https://piped.kavin.rocks/watch?v=$videoId"
|
|
)
|
|
intent.type = "text/plain"
|
|
startActivity(Intent.createChooser(intent, "Share Url To:"))
|
|
}
|
|
else -> {
|
|
dialog.dismiss()
|
|
}
|
|
}
|
|
}
|
|
.show()
|
|
}
|
|
|
|
companion object {
|
|
const val TAG = "VideoOptionsDialog"
|
|
}
|
|
}
|