improve about snackbar

This commit is contained in:
Bnyro 2022-08-15 11:05:43 +02:00
parent 777edca2ac
commit 8817a8ab43
6 changed files with 38 additions and 15 deletions

View File

@ -13,6 +13,7 @@ const val DONATE_URL = "https://github.com/libre-tube/LibreTube#donate"
const val GITHUB_URL = "https://github.com/libre-tube/LibreTube" const val GITHUB_URL = "https://github.com/libre-tube/LibreTube"
const val PIPED_GITHUB_URL = "https://github.com/TeamPiped/Piped" const val PIPED_GITHUB_URL = "https://github.com/TeamPiped/Piped"
const val WEBLATE_URL = "https://hosted.weblate.org/projects/libretube/libretube/" const val WEBLATE_URL = "https://hosted.weblate.org/projects/libretube/libretube/"
const val LICENSE_URL = "https://gnu.org/"
/** /**
* Social media links for the community fragment * Social media links for the community fragment

View File

@ -1,5 +1,8 @@
package com.github.libretube.activities package com.github.libretube.activities
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
@ -7,14 +10,16 @@ import android.os.Bundle
import android.text.Html import android.text.Html
import com.github.libretube.DONATE_URL import com.github.libretube.DONATE_URL
import com.github.libretube.GITHUB_URL import com.github.libretube.GITHUB_URL
import com.github.libretube.LICENSE_URL
import com.github.libretube.PIPED_GITHUB_URL import com.github.libretube.PIPED_GITHUB_URL
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.WEBLATE_URL import com.github.libretube.WEBLATE_URL
import com.github.libretube.WEBSITE_URL import com.github.libretube.WEBSITE_URL
import com.github.libretube.databinding.ActivityAboutBinding import com.github.libretube.databinding.ActivityAboutBinding
import com.github.libretube.extensions.BaseActivity import com.github.libretube.extensions.BaseActivity
import com.github.libretube.extensions.showSnackBar import com.github.libretube.extensions.getStyledSnackBar
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar
class AboutActivity : BaseActivity() { class AboutActivity : BaseActivity() {
private lateinit var binding: ActivityAboutBinding private lateinit var binding: ActivityAboutBinding
@ -29,7 +34,7 @@ class AboutActivity : BaseActivity() {
openLinkFromHref(WEBSITE_URL) openLinkFromHref(WEBSITE_URL)
} }
binding.website.setOnLongClickListener { binding.website.setOnLongClickListener {
binding.root.showSnackBar(R.string.website_summary) onLongClick(WEBSITE_URL)
true true
} }
@ -37,7 +42,7 @@ class AboutActivity : BaseActivity() {
openLinkFromHref(PIPED_GITHUB_URL) openLinkFromHref(PIPED_GITHUB_URL)
} }
binding.piped.setOnLongClickListener { binding.piped.setOnLongClickListener {
binding.root.showSnackBar(R.string.piped_summary) onLongClick(PIPED_GITHUB_URL)
true true
} }
@ -45,7 +50,7 @@ class AboutActivity : BaseActivity() {
openLinkFromHref(WEBLATE_URL) openLinkFromHref(WEBLATE_URL)
} }
binding.translate.setOnLongClickListener { binding.translate.setOnLongClickListener {
binding.root.showSnackBar(R.string.translate_summary) onLongClick(WEBLATE_URL)
true true
} }
@ -53,7 +58,7 @@ class AboutActivity : BaseActivity() {
openLinkFromHref(DONATE_URL) openLinkFromHref(DONATE_URL)
} }
binding.donate.setOnLongClickListener { binding.donate.setOnLongClickListener {
binding.root.showSnackBar(R.string.donate_summary) onLongClick(DONATE_URL)
true true
} }
@ -61,7 +66,7 @@ class AboutActivity : BaseActivity() {
openLinkFromHref(GITHUB_URL) openLinkFromHref(GITHUB_URL)
} }
binding.github.setOnLongClickListener { binding.github.setOnLongClickListener {
binding.root.showSnackBar(R.string.contributing_summary) onLongClick(GITHUB_URL)
true true
} }
@ -69,7 +74,7 @@ class AboutActivity : BaseActivity() {
showLicense() showLicense()
} }
binding.license.setOnLongClickListener { binding.license.setOnLongClickListener {
binding.root.showSnackBar(R.string.license_summary) onLongClick(LICENSE_URL)
true true
} }
} }
@ -80,6 +85,21 @@ class AboutActivity : BaseActivity() {
startActivity(intent) startActivity(intent)
} }
private fun onLongClick(href: String) {
// copy the link to the clipboard
val clipboard: ClipboardManager =
getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager
val clip = ClipData.newPlainText(getString(R.string.copied), href)
clipboard.setPrimaryClip(clip)
// show the snackBar with open action
val snackBar = binding.root.getStyledSnackBar(R.string.copied_to_clipboard)
snackBar.setAction(R.string.open_copied) {
openLinkFromHref(href)
}
snackBar.animationMode = Snackbar.ANIMATION_MODE_FADE
snackBar.show()
}
private fun showLicense() { private fun showLicense() {
val licenseString = assets val licenseString = assets
?.open("gpl3.html") ?.open("gpl3.html")

View File

@ -5,7 +5,7 @@ import android.os.Bundle
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.databinding.ActivityNointernetBinding import com.github.libretube.databinding.ActivityNointernetBinding
import com.github.libretube.extensions.BaseActivity import com.github.libretube.extensions.BaseActivity
import com.github.libretube.extensions.showSnackBar import com.github.libretube.extensions.getStyledSnackBar
import com.github.libretube.util.NetworkHelper import com.github.libretube.util.NetworkHelper
import com.github.libretube.util.ThemeHelper import com.github.libretube.util.ThemeHelper
@ -21,7 +21,7 @@ class NoInternetActivity : BaseActivity() {
if (NetworkHelper.isNetworkAvailable(this)) { if (NetworkHelper.isNetworkAvailable(this)) {
ThemeHelper.restartMainActivity(this) ThemeHelper.restartMainActivity(this)
} else { } else {
binding.root.showSnackBar(R.string.turnInternetOn) binding.root.getStyledSnackBar(R.string.turnInternetOn).show()
} }
} }
binding.noInternetSettingsImageView.setOnClickListener { binding.noInternetSettingsImageView.setOnClickListener {

View File

@ -5,7 +5,7 @@ import android.widget.FrameLayout
import com.github.libretube.R import com.github.libretube.R
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
fun View.showSnackBar(text: Int) { fun View.getStyledSnackBar(text: Int): Snackbar {
val snackBar = Snackbar.make(this, text, Snackbar.LENGTH_SHORT) val snackBar = Snackbar.make(this, text, Snackbar.LENGTH_SHORT)
snackBar.setTextMaxLines(3) snackBar.setTextMaxLines(3)
snackBar.animationMode = Snackbar.ANIMATION_MODE_SLIDE snackBar.animationMode = Snackbar.ANIMATION_MODE_SLIDE
@ -22,5 +22,5 @@ fun View.showSnackBar(text: Int) {
snackBar.view.layoutParams = params snackBar.view.layoutParams = params
snackBar.view.background = resources.getDrawable(R.drawable.snackbar_shape, null) snackBar.view.background = resources.getDrawable(R.drawable.snackbar_shape, null)
snackBar.show() return snackBar
} }

View File

@ -7,7 +7,7 @@ import com.github.libretube.BuildConfig
import com.github.libretube.R import com.github.libretube.R
import com.github.libretube.activities.SettingsActivity import com.github.libretube.activities.SettingsActivity
import com.github.libretube.dialogs.UpdateDialog import com.github.libretube.dialogs.UpdateDialog
import com.github.libretube.extensions.showSnackBar import com.github.libretube.extensions.getStyledSnackBar
import com.github.libretube.update.UpdateChecker import com.github.libretube.update.UpdateChecker
import com.github.libretube.util.NetworkHelper import com.github.libretube.util.NetworkHelper
import com.github.libretube.views.MaterialPreferenceFragment import com.github.libretube.views.MaterialPreferenceFragment
@ -87,14 +87,14 @@ class MainSettings : MaterialPreferenceFragment() {
update?.setOnPreferenceClickListener { update?.setOnPreferenceClickListener {
CoroutineScope(Dispatchers.IO).launch { CoroutineScope(Dispatchers.IO).launch {
if (!NetworkHelper.isNetworkAvailable(requireContext())) { if (!NetworkHelper.isNetworkAvailable(requireContext())) {
(activity as SettingsActivity).binding.root.showSnackBar(R.string.unknown_error) (activity as SettingsActivity).binding.root.getStyledSnackBar(R.string.unknown_error).show()
return@launch return@launch
} }
// check for update // check for update
val updateInfo = UpdateChecker.getLatestReleaseInfo() val updateInfo = UpdateChecker.getLatestReleaseInfo()
if (updateInfo?.name == null) { if (updateInfo?.name == null) {
// request failed // request failed
(activity as SettingsActivity).binding.root.showSnackBar(R.string.unknown_error) (activity as SettingsActivity).binding.root.getStyledSnackBar(R.string.unknown_error).show()
} else if (BuildConfig.VERSION_NAME != updateInfo.name) { } else if (BuildConfig.VERSION_NAME != updateInfo.name) {
// show the UpdateAvailableDialog if there's an update available // show the UpdateAvailableDialog if there's an update available
val updateAvailableDialog = UpdateDialog(updateInfo) val updateAvailableDialog = UpdateDialog(updateInfo)
@ -104,7 +104,7 @@ class MainSettings : MaterialPreferenceFragment() {
) )
} else { } else {
// otherwise show the no update available snackBar // otherwise show the no update available snackBar
(activity as SettingsActivity).binding.root.showSnackBar(R.string.app_uptodate) (activity as SettingsActivity).binding.root.getStyledSnackBar(R.string.app_uptodate).show()
} }
} }
true true

View File

@ -315,4 +315,6 @@
<string name="picture_in_picture">Picture in Picture</string> <string name="picture_in_picture">Picture in Picture</string>
<string name="player_resize_mode">Resize mode</string> <string name="player_resize_mode">Resize mode</string>
<string name="maximum_image_cache">Max image cache size</string> <string name="maximum_image_cache">Max image cache size</string>
<string name="copied_to_clipboard">Copied to clipboard</string>
<string name="open_copied">Open</string>
</resources> </resources>