diff --git a/app/src/main/java/com/github/libretube/activities/MainActivity.kt b/app/src/main/java/com/github/libretube/activities/MainActivity.kt index 66007f124..967ab1cfc 100644 --- a/app/src/main/java/com/github/libretube/activities/MainActivity.kt +++ b/app/src/main/java/com/github/libretube/activities/MainActivity.kt @@ -13,7 +13,6 @@ import android.os.Bundle import android.os.Handler import android.os.Looper import android.util.Log -import android.util.TypedValue import android.view.View import android.view.WindowInsets import android.view.WindowInsetsController @@ -24,7 +23,6 @@ import androidx.appcompat.app.AppCompatActivity import androidx.constraintlayout.motion.widget.MotionLayout import androidx.constraintlayout.widget.ConstraintLayout import androidx.core.os.bundleOf -import androidx.core.text.HtmlCompat import androidx.fragment.app.Fragment import androidx.navigation.NavController import androidx.navigation.findNavController @@ -124,14 +122,7 @@ class MainActivity : AppCompatActivity() { false } - val typedValue = TypedValue() - this.theme.resolveAttribute(R.attr.colorPrimary, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.toolbar.title = appName + binding.toolbar.title = ThemeHelper.getStyledAppName(this) binding.toolbar.setNavigationOnClickListener { // settings activity stuff diff --git a/app/src/main/java/com/github/libretube/dialogs/AddtoPlaylistDialog.kt b/app/src/main/java/com/github/libretube/dialogs/AddtoPlaylistDialog.kt index fb993a514..14ab1ef30 100644 --- a/app/src/main/java/com/github/libretube/dialogs/AddtoPlaylistDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/AddtoPlaylistDialog.kt @@ -3,10 +3,8 @@ package com.github.libretube.dialogs import android.app.Dialog import android.os.Bundle import android.util.Log -import android.util.TypedValue import android.widget.ArrayAdapter import android.widget.Toast -import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import androidx.fragment.app.Fragment import androidx.lifecycle.lifecycleScope @@ -15,6 +13,7 @@ import com.github.libretube.databinding.DialogAddtoplaylistBinding import com.github.libretube.obj.PlaylistId import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.RetrofitInstance +import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder import retrofit2.HttpException import java.io.IOException @@ -37,14 +36,7 @@ class AddtoPlaylistDialog : DialogFragment() { if (token != "") fetchPlaylists() - val typedValue = TypedValue() - this.requireActivity().theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.title.text = appName + binding.title.text = ThemeHelper.getStyledAppName(requireContext()) builder.setView(binding.root) builder.create() diff --git a/app/src/main/java/com/github/libretube/dialogs/CreatePlaylistDialog.kt b/app/src/main/java/com/github/libretube/dialogs/CreatePlaylistDialog.kt index 3d58aa99f..fe316ed02 100644 --- a/app/src/main/java/com/github/libretube/dialogs/CreatePlaylistDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/CreatePlaylistDialog.kt @@ -3,9 +3,7 @@ package com.github.libretube.dialogs import android.app.Dialog import android.os.Bundle import android.util.Log -import android.util.TypedValue import android.widget.Toast -import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import com.github.libretube.R @@ -14,6 +12,7 @@ import com.github.libretube.fragments.LibraryFragment import com.github.libretube.obj.Playlists import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.RetrofitInstance +import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder import retrofit2.HttpException import java.io.IOException @@ -28,14 +27,7 @@ class CreatePlaylistDialog : DialogFragment() { val builder = MaterialAlertDialogBuilder(it) binding = DialogCreatePlaylistBinding.inflate(layoutInflater) - val typedValue = TypedValue() - this.requireActivity().theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.title.text = appName + binding.title.text = ThemeHelper.getStyledAppName(requireContext()) binding.cancelButton.setOnClickListener { dismiss() diff --git a/app/src/main/java/com/github/libretube/dialogs/CustomInstanceDialog.kt b/app/src/main/java/com/github/libretube/dialogs/CustomInstanceDialog.kt index 2e6575532..07fd1f043 100644 --- a/app/src/main/java/com/github/libretube/dialogs/CustomInstanceDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/CustomInstanceDialog.kt @@ -2,14 +2,13 @@ package com.github.libretube.dialogs import android.app.Dialog import android.os.Bundle -import android.util.TypedValue import android.widget.Toast -import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import com.github.libretube.R import com.github.libretube.databinding.DialogCustomInstanceBinding import com.github.libretube.obj.CustomInstance import com.github.libretube.preferences.PreferenceHelper +import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder import java.net.URL @@ -63,14 +62,7 @@ class CustomInstanceDialog : DialogFragment() { } } - val typedValue = TypedValue() - this.requireActivity().theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.title.text = appName + binding.title.text = ThemeHelper.getStyledAppName(requireContext()) builder.setView(binding.root) builder.create() diff --git a/app/src/main/java/com/github/libretube/dialogs/DeleteAccountDialog.kt b/app/src/main/java/com/github/libretube/dialogs/DeleteAccountDialog.kt index dc97cd978..a04ec1af8 100644 --- a/app/src/main/java/com/github/libretube/dialogs/DeleteAccountDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/DeleteAccountDialog.kt @@ -3,9 +3,7 @@ package com.github.libretube.dialogs import android.app.Dialog import android.os.Bundle import android.util.Log -import android.util.TypedValue import android.widget.Toast -import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import com.github.libretube.R @@ -14,6 +12,7 @@ import com.github.libretube.databinding.DialogDeleteAccountBinding import com.github.libretube.obj.DeleteUserRequest import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.RetrofitInstance +import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder class DeleteAccountDialog : DialogFragment() { @@ -37,14 +36,7 @@ class DeleteAccountDialog : DialogFragment() { } } - val typedValue = TypedValue() - this.requireActivity().theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.title.text = appName + binding.title.text = ThemeHelper.getStyledAppName(requireContext()) builder.setView(binding.root) builder.create() diff --git a/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt b/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt index 394ed4b6a..e7042b789 100644 --- a/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/DownloadDialog.kt @@ -8,16 +8,15 @@ import android.os.Build import android.os.Bundle import android.os.Environment import android.util.Log -import android.util.TypedValue import android.widget.ArrayAdapter import androidx.core.app.ActivityCompat -import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import com.github.libretube.R import com.github.libretube.activities.MainActivity import com.github.libretube.databinding.DialogDownloadBinding import com.github.libretube.obj.Streams import com.github.libretube.services.DownloadService +import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder class DownloadDialog : DialogFragment() { @@ -130,14 +129,7 @@ class DownloadDialog : DialogFragment() { dismiss() } - val typedValue = TypedValue() - this.requireActivity().theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.title.text = appName + binding.title.text = ThemeHelper.getStyledAppName(requireContext()) builder.setView(binding.root) builder.create() diff --git a/app/src/main/java/com/github/libretube/dialogs/LoginDialog.kt b/app/src/main/java/com/github/libretube/dialogs/LoginDialog.kt index ed86ccef6..ce75cde27 100644 --- a/app/src/main/java/com/github/libretube/dialogs/LoginDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/LoginDialog.kt @@ -3,9 +3,7 @@ package com.github.libretube.dialogs import android.app.Dialog import android.os.Bundle import android.util.Log -import android.util.TypedValue import android.widget.Toast -import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import com.github.libretube.R @@ -14,6 +12,7 @@ import com.github.libretube.databinding.DialogLoginBinding import com.github.libretube.obj.Login import com.github.libretube.preferences.PreferenceHelper import com.github.libretube.util.RetrofitInstance +import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder import retrofit2.HttpException import java.io.IOException @@ -52,14 +51,7 @@ class LoginDialog : DialogFragment() { } } - val typedValue = TypedValue() - this.requireActivity().theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.title.text = appName + binding.title.text = ThemeHelper.getStyledAppName(requireContext()) builder.setView(binding.root) builder.create() diff --git a/app/src/main/java/com/github/libretube/dialogs/LogoutDialog.kt b/app/src/main/java/com/github/libretube/dialogs/LogoutDialog.kt index 52584435a..b039f1a57 100644 --- a/app/src/main/java/com/github/libretube/dialogs/LogoutDialog.kt +++ b/app/src/main/java/com/github/libretube/dialogs/LogoutDialog.kt @@ -2,14 +2,13 @@ package com.github.libretube.dialogs import android.app.Dialog import android.os.Bundle -import android.util.TypedValue import android.widget.Toast -import androidx.core.text.HtmlCompat import androidx.fragment.app.DialogFragment import com.github.libretube.R import com.github.libretube.activities.requireMainActivityRestart import com.github.libretube.databinding.DialogLogoutBinding import com.github.libretube.preferences.PreferenceHelper +import com.github.libretube.util.ThemeHelper import com.google.android.material.dialog.MaterialAlertDialogBuilder class LogoutDialog : DialogFragment() { @@ -32,14 +31,7 @@ class LogoutDialog : DialogFragment() { dialog?.dismiss() } - val typedValue = TypedValue() - this.requireActivity().theme.resolveAttribute(R.attr.colorPrimaryDark, typedValue, true) - val hexColor = String.format("#%06X", (0xFFFFFF and typedValue.data)) - val appName = HtmlCompat.fromHtml( - "LibreTube", - HtmlCompat.FROM_HTML_MODE_COMPACT - ) - binding.title.text = appName + binding.title.text = ThemeHelper.getStyledAppName(requireContext()) builder.setView(binding.root) builder.create() diff --git a/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt b/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt index 5fe36d3bf..a881b4e6c 100644 --- a/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt +++ b/app/src/main/java/com/github/libretube/preferences/AboutFragment.kt @@ -5,7 +5,6 @@ import android.net.Uri import android.os.Build import android.os.Bundle import android.text.Html -import android.util.TypedValue import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -16,6 +15,7 @@ import com.github.libretube.databinding.FragmentAboutBinding import com.github.libretube.util.DONATE_URL import com.github.libretube.util.GITHUB_URL import com.github.libretube.util.PIPED_GITHUB_URL +import com.github.libretube.util.ThemeHelper.getThemeColor import com.github.libretube.util.WEBSITE_URL import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.snackbar.Snackbar @@ -93,8 +93,8 @@ class AboutFragment : Fragment() { private fun showSnackBar(text: String) { val snackBar = Snackbar .make(binding.root, text, Snackbar.LENGTH_LONG) - snackBar.setBackgroundTint(getThemeColor(R.attr.colorSurface)) - snackBar.setTextColor(getThemeColor(R.attr.colorPrimary)) + snackBar.setBackgroundTint(getThemeColor(requireContext(), R.attr.colorSurface)) + snackBar.setTextColor(getThemeColor(requireContext(), R.attr.colorPrimary)) snackBar.show() } @@ -119,10 +119,4 @@ class AboutFragment : Fragment() { .create() .show() } - - private fun getThemeColor(colorCode: Int): Int { - val value = TypedValue() - context!!.theme.resolveAttribute(colorCode, value, true) - return value.data - } } diff --git a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt index af3fd368b..4860b93d9 100644 --- a/app/src/main/java/com/github/libretube/util/ThemeHelper.kt +++ b/app/src/main/java/com/github/libretube/util/ThemeHelper.kt @@ -5,8 +5,11 @@ import android.content.ComponentName import android.content.Context import android.content.Intent import android.content.pm.PackageManager +import android.text.Spanned +import android.util.TypedValue import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatDelegate +import androidx.core.text.HtmlCompat import com.github.libretube.R import com.github.libretube.preferences.PreferenceHelper @@ -70,4 +73,19 @@ object ThemeHelper { intent?.flags = Intent.FLAG_ACTIVITY_CLEAR_TASK context.startActivity(intent) } + + fun getThemeColor(context: Context, colorCode: Int): Int { + val value = TypedValue() + context.theme.resolveAttribute(colorCode, value, true) + return value.data + } + + fun getStyledAppName(context: Context): Spanned { + val colorPrimary = getThemeColor(context, R.attr.colorPrimaryDark) + val hexColor = String.format("#%06X", (0xFFFFFF and colorPrimary)) + return HtmlCompat.fromHtml( + "LibreTube", + HtmlCompat.FROM_HTML_MODE_COMPACT + ) + } }