Merge pull request #2939 from Bnyro/master

[Help & About] UI improvements and cleanup
This commit is contained in:
Bnyro 2023-02-01 18:50:47 +01:00 committed by GitHub
commit 7bd4d03701
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 58 additions and 81 deletions

View File

@ -0,0 +1,13 @@
package com.github.libretube.helpers
import android.content.Context
import android.content.Intent
import android.net.Uri
object IntentHelper {
fun openLinkFromHref(context: Context, link: String) {
val uri = Uri.parse(link)
val launchIntent = Intent(Intent.ACTION_VIEW).setData(uri)
context.startActivity(launchIntent)
}
}

View File

@ -4,7 +4,6 @@ import android.content.ClipData
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri
import android.os.Build import android.os.Build
import android.os.Bundle import android.os.Bundle
import androidx.core.text.HtmlCompat import androidx.core.text.HtmlCompat
@ -16,7 +15,9 @@ import com.github.libretube.constants.PIPED_GITHUB_URL
import com.github.libretube.constants.WEBLATE_URL import com.github.libretube.constants.WEBLATE_URL
import com.github.libretube.constants.WEBSITE_URL import com.github.libretube.constants.WEBSITE_URL
import com.github.libretube.databinding.ActivityAboutBinding import com.github.libretube.databinding.ActivityAboutBinding
import com.github.libretube.helpers.IntentHelper
import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.base.BaseActivity
import com.google.android.material.card.MaterialCardView
import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.snackbar.Snackbar import com.google.android.material.snackbar.Snackbar
@ -34,7 +35,7 @@ class AboutActivity : BaseActivity() {
} }
binding.appIcon.setOnClickListener { binding.appIcon.setOnClickListener {
val sendIntent: Intent = Intent().apply { val sendIntent = Intent().apply {
action = Intent.ACTION_SEND action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, GITHUB_URL) putExtra(Intent.EXTRA_TEXT, GITHUB_URL)
type = "text/plain" type = "text/plain"
@ -44,37 +45,10 @@ class AboutActivity : BaseActivity() {
startActivity(shareIntent) startActivity(shareIntent)
} }
binding.website.setOnClickListener { setupCard(binding.website, WEBSITE_URL)
openLinkFromHref(WEBSITE_URL) setupCard(binding.piped, PIPED_GITHUB_URL)
} setupCard(binding.translate, WEBLATE_URL)
binding.website.setOnLongClickListener { setupCard(binding.github, GITHUB_URL)
onLongClick(WEBSITE_URL)
true
}
binding.piped.setOnClickListener {
openLinkFromHref(PIPED_GITHUB_URL)
}
binding.piped.setOnLongClickListener {
onLongClick(PIPED_GITHUB_URL)
true
}
binding.translate.setOnClickListener {
openLinkFromHref(WEBLATE_URL)
}
binding.translate.setOnLongClickListener {
onLongClick(WEBLATE_URL)
true
}
binding.github.setOnClickListener {
openLinkFromHref(GITHUB_URL)
}
binding.github.setOnLongClickListener {
onLongClick(GITHUB_URL)
true
}
binding.license.setOnClickListener { binding.license.setOnClickListener {
showLicense() showLicense()
@ -89,10 +63,14 @@ class AboutActivity : BaseActivity() {
} }
} }
private fun openLinkFromHref(link: String) { private fun setupCard(card: MaterialCardView, link: String) {
val uri = Uri.parse(link) card.setOnClickListener {
val intent = Intent(Intent.ACTION_VIEW).setData(uri) IntentHelper.openLinkFromHref(this, link)
startActivity(intent) }
card.setOnLongClickListener {
onLongClick(link)
true
}
} }
private fun onLongClick(href: String) { private fun onLongClick(href: String) {
@ -108,7 +86,7 @@ class AboutActivity : BaseActivity() {
Snackbar.LENGTH_LONG Snackbar.LENGTH_LONG
) )
.setAction(R.string.open_copied) { .setAction(R.string.open_copied) {
openLinkFromHref(href) IntentHelper.openLinkFromHref(this, href)
} }
.setAnimationMode(Snackbar.ANIMATION_MODE_FADE) .setAnimationMode(Snackbar.ANIMATION_MODE_FADE)
.show() .show()

View File

@ -1,7 +1,5 @@
package com.github.libretube.ui.activities package com.github.libretube.ui.activities
import android.content.Intent
import android.net.Uri
import android.os.Bundle import android.os.Bundle
import com.github.libretube.constants.DISCORD_URL import com.github.libretube.constants.DISCORD_URL
import com.github.libretube.constants.FAQ_URL import com.github.libretube.constants.FAQ_URL
@ -10,7 +8,9 @@ import com.github.libretube.constants.MATRIX_URL
import com.github.libretube.constants.REDDIT_URL import com.github.libretube.constants.REDDIT_URL
import com.github.libretube.constants.TELEGRAM_URL import com.github.libretube.constants.TELEGRAM_URL
import com.github.libretube.databinding.ActivityHelpBinding import com.github.libretube.databinding.ActivityHelpBinding
import com.github.libretube.helpers.IntentHelper
import com.github.libretube.ui.base.BaseActivity import com.github.libretube.ui.base.BaseActivity
import com.google.android.material.card.MaterialCardView
class HelpActivity : BaseActivity() { class HelpActivity : BaseActivity() {
private lateinit var binding: ActivityHelpBinding private lateinit var binding: ActivityHelpBinding
@ -25,34 +25,17 @@ class HelpActivity : BaseActivity() {
onBackPressedDispatcher.onBackPressed() onBackPressedDispatcher.onBackPressed()
} }
binding.faq.setOnClickListener { setupCard(binding.faq, FAQ_URL)
openLinkFromHref(FAQ_URL) setupCard(binding.matrix, MATRIX_URL)
setupCard(binding.mastodon, MASTODON_URL)
setupCard(binding.telegram, TELEGRAM_URL)
setupCard(binding.discord, DISCORD_URL)
setupCard(binding.reddit, REDDIT_URL)
} }
binding.matrix.setOnClickListener { private fun setupCard(card: MaterialCardView, link: String) {
openLinkFromHref(MATRIX_URL) card.setOnClickListener {
IntentHelper.openLinkFromHref(this, link)
} }
binding.telegram.setOnClickListener {
openLinkFromHref(TELEGRAM_URL)
}
binding.discord.setOnClickListener {
openLinkFromHref(DISCORD_URL)
}
binding.reddit.setOnClickListener {
openLinkFromHref(REDDIT_URL)
}
binding.mastodon.setOnClickListener {
openLinkFromHref(MASTODON_URL)
}
}
private fun openLinkFromHref(link: String) {
val uri = Uri.parse(link)
val intent = Intent(Intent.ACTION_VIEW).setData(uri)
startActivity(intent)
} }
} }

View File

@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
@ -16,14 +17,15 @@
app:navigationIcon="?homeAsUpIndicator" app:navigationIcon="?homeAsUpIndicator"
app:title="@string/about" /> app:title="@string/about" />
<com.google.android.material.imageview.ShapeableImageView <ImageView
android:id="@+id/appIcon" android:id="@+id/app_icon"
android:layout_width="90dp" android:layout_width="120dp"
android:layout_height="90dp" android:layout_height="120dp"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="30dp" android:layout_marginTop="30dp"
android:src="@mipmap/ic_launcher_round" android:src="@drawable/ic_launcher_lockscreen"
app:shapeAppearance="@style/CircleImageView" /> app:tint="?attr/colorSecondary"
tools:ignore="ContentDescription" />
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@ -15,16 +15,17 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
app:navigationIcon="?homeAsUpIndicator" app:navigationIcon="?homeAsUpIndicator"
app:title="@string/community" /> app:title="@string/help" />
<com.google.android.material.imageview.ShapeableImageView <ImageView
android:layout_width="90dp" android:layout_width="120dp"
android:layout_height="90dp" android:layout_height="120dp"
android:layout_gravity="center" android:layout_gravity="center"
android:layout_marginTop="30dp" android:layout_marginTop="30dp"
android:layout_marginBottom="40dp" android:layout_marginBottom="40dp"
android:src="@mipmap/ic_launcher_round" android:src="@drawable/ic_launcher_lockscreen"
app:shapeAppearance="@style/CircleImageView" /> app:tint="?attr/colorSecondary"
tools:ignore="ContentDescription" />
<com.google.android.material.card.MaterialCardView <com.google.android.material.card.MaterialCardView
android:id="@+id/faq" android:id="@+id/faq"

View File

@ -39,8 +39,8 @@
<item name="android:drawablePadding">20dp</item> <item name="android:drawablePadding">20dp</item>
<item name="android:paddingStart">15dp</item> <item name="android:paddingStart">15dp</item>
<item name="android:paddingEnd">15dp</item> <item name="android:paddingEnd">15dp</item>
<item name="android:paddingTop">10dp</item> <item name="android:paddingTop">15dp</item>
<item name="android:paddingBottom">10dp</item> <item name="android:paddingBottom">15dp</item>
</style> </style>
<style name="CustomDialogButton" parent="@style/Widget.Material3.Button.TextButton"> <style name="CustomDialogButton" parent="@style/Widget.Material3.Button.TextButton">