From 866bd3b3a9669186a2bbac73c7bfac2bd763b19f Mon Sep 17 00:00:00 2001 From: Finnley Somdahl <87634197+rebelonion@users.noreply.github.com> Date: Wed, 25 Oct 2023 15:55:29 -0500 Subject: [PATCH] theme cleanup --- app/build.gradle | 2 +- .../main/java/ani/dantotsu/MainActivity.kt | 28 +++++++++++-------- .../ani/dantotsu/home/AnimePageAdapter.kt | 10 +++++++ .../ani/dantotsu/home/MangaPageAdapter.kt | 9 ++++++ .../ani/dantotsu/media/CalendarActivity.kt | 27 ++++++++++++++---- .../dantotsu/media/MediaDetailsActivity.kt | 2 +- .../ani/dantotsu/media/user/ListActivity.kt | 25 +++++++++++++---- .../ani/dantotsu/settings/SettingsActivity.kt | 24 ++++++++++++---- app/src/main/res/layout/activity_list.xml | 3 +- app/src/main/res/layout/activity_media.xml | 6 ++-- app/src/main/res/layout/item_anime_page.xml | 1 + app/src/main/res/layout/item_manga_page.xml | 1 + app/src/main/res/values/style.xml | 5 +++- app/src/main/res/values/themes.xml | 1 - 14 files changed, 108 insertions(+), 36 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 77544145..b8b31b2f 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -21,7 +21,7 @@ android { minSdk 23 targetSdk 34 versionCode ((System.currentTimeMillis() / 60000).toInteger()) - versionName "0.1.3" + versionName "0.1.5" signingConfig signingConfigs.debug } diff --git a/app/src/main/java/ani/dantotsu/MainActivity.kt b/app/src/main/java/ani/dantotsu/MainActivity.kt index a6e498af..ab44679f 100644 --- a/app/src/main/java/ani/dantotsu/MainActivity.kt +++ b/app/src/main/java/ani/dantotsu/MainActivity.kt @@ -7,7 +7,10 @@ import android.content.Context import android.content.Intent import android.content.IntentFilter import android.content.pm.PackageManager +import android.graphics.Color import android.graphics.drawable.Animatable +import android.graphics.drawable.ColorDrawable +import android.graphics.drawable.GradientDrawable import android.net.Uri import android.os.Build import android.os.Bundle @@ -21,6 +24,7 @@ import android.view.animation.AnticipateInterpolator import android.widget.TextView import androidx.activity.addCallback import androidx.activity.viewModels +import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity import androidx.core.animation.doOnEnd import androidx.core.app.ActivityCompat @@ -80,6 +84,17 @@ class MainActivity : AppCompatActivity() { binding = ActivityMainBinding.inflate(layoutInflater) setContentView(binding.root) + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + val bottomBar = findViewById(R.id.navbar) + val backgroundDrawable = bottomBar.background as GradientDrawable + val currentColor = backgroundDrawable.color?.defaultColor ?: 0 + val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0x80000000.toInt() + backgroundDrawable.setColor(semiTransparentColor) + bottomBar.background = backgroundDrawable + } + + val animeScope = CoroutineScope(Dispatchers.Default) animeScope.launch { animeExtensionManager.findAvailableExtensions() @@ -238,13 +253,6 @@ class MainActivity : AppCompatActivity() { override fun onResume() { super.onResume() - if (ActivityHelper.shouldRefreshMainActivity) { - ActivityHelper.shouldRefreshMainActivity = false - Refresh.all() - finish() - startActivity(Intent(this, MainActivity::class.java)) - initActivity(this) - } } @@ -264,8 +272,4 @@ class MainActivity : AppCompatActivity() { } } -} - -object ActivityHelper { - var shouldRefreshMainActivity: Boolean = false -} +} \ No newline at end of file diff --git a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt index e56fb134..48932305 100644 --- a/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/AnimePageAdapter.kt @@ -17,6 +17,7 @@ import androidx.recyclerview.widget.RecyclerView import androidx.viewpager2.widget.ViewPager2 import ani.dantotsu.media.GenreActivity import ani.dantotsu.MediaPageTransformer +import ani.dantotsu.R import ani.dantotsu.connections.anilist.Anilist import ani.dantotsu.databinding.ItemAnimePageBinding import ani.dantotsu.loadData @@ -31,6 +32,8 @@ import ani.dantotsu.setSlideUp import ani.dantotsu.settings.SettingsDialogFragment import ani.dantotsu.settings.UserInterfaceSettings import ani.dantotsu.statusBarHeight +import com.google.android.material.card.MaterialCardView +import com.google.android.material.textfield.TextInputLayout class AnimePageAdapter : RecyclerView.Adapter() { val ready = MutableLiveData(false) @@ -49,6 +52,13 @@ class AnimePageAdapter : RecyclerView.Adapter(R.id.animeSearchBar) + val currentColor = textInputLayout.boxBackgroundColor + val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0x80000000.toInt() + textInputLayout.boxBackgroundColor = semiTransparentColor + val materialCardView = holder.itemView.findViewById(R.id.animeUserAvatarContainer) + materialCardView.setCardBackgroundColor(semiTransparentColor) + binding.animeTitleContainer.updatePadding(top = statusBarHeight) if (uiSettings.smallView) binding.animeTrendingContainer.updateLayoutParams { diff --git a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt index f0fefcd8..68ca065a 100644 --- a/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt +++ b/app/src/main/java/ani/dantotsu/home/MangaPageAdapter.kt @@ -31,6 +31,8 @@ import ani.dantotsu.setSlideUp import ani.dantotsu.settings.SettingsDialogFragment import ani.dantotsu.settings.UserInterfaceSettings import ani.dantotsu.statusBarHeight +import com.google.android.material.card.MaterialCardView +import com.google.android.material.textfield.TextInputLayout class MangaPageAdapter : RecyclerView.Adapter() { val ready = MutableLiveData(false) @@ -49,6 +51,13 @@ class MangaPageAdapter : RecyclerView.Adapter(R.id.mangaSearchBar) + val currentColor = textInputLayout.boxBackgroundColor + val semiTransparentColor = (currentColor and 0x00FFFFFF) or 0x80000000.toInt() + textInputLayout.boxBackgroundColor = semiTransparentColor + val materialCardView = holder.itemView.findViewById(R.id.mangaUserAvatarContainer) + materialCardView.setCardBackgroundColor(semiTransparentColor) + binding.mangaTitleContainer.updatePadding(top = statusBarHeight) if (uiSettings.smallView) binding.mangaTrendingContainer.updateLayoutParams { diff --git a/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt b/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt index 15a31d0a..53398a23 100644 --- a/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/CalendarActivity.kt @@ -4,6 +4,8 @@ import android.annotation.SuppressLint import android.os.Bundle import android.util.TypedValue import android.view.View +import android.view.Window +import android.view.WindowManager import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.core.content.ContextCompat @@ -12,7 +14,9 @@ import androidx.lifecycle.lifecycleScope import ani.dantotsu.R import ani.dantotsu.Refresh import ani.dantotsu.databinding.ActivityListBinding +import ani.dantotsu.loadData import ani.dantotsu.media.user.ListViewPagerAdapter +import ani.dantotsu.settings.UserInterfaceSettings import ani.dantotsu.themes.ThemeManager import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator @@ -31,16 +35,16 @@ class CalendarActivity : AppCompatActivity() { super.onCreate(savedInstanceState) ThemeManager(this).applyTheme() binding = ActivityListBinding.inflate(layoutInflater) - setContentView(binding.root) + val typedValue = TypedValue() - theme.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue, true) + theme.resolveAttribute(com.google.android.material.R.attr.colorOnPrimary, typedValue, true) val primaryColor = typedValue.data val typedValue2 = TypedValue() - theme.resolveAttribute(com.google.android.material.R.attr.colorOnPrimary, typedValue2, true) + theme.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue2, true) val primaryTextColor = typedValue2.data val typedValue3 = TypedValue() - theme.resolveAttribute(com.google.android.material.R.attr.colorPrimaryContainer, typedValue3, true) + theme.resolveAttribute(com.google.android.material.R.attr.colorSecondary, typedValue3, true) val secondaryColor = typedValue3.data window.statusBarColor = primaryColor @@ -48,8 +52,21 @@ class CalendarActivity : AppCompatActivity() { binding.listTabLayout.setBackgroundColor(primaryColor) binding.listAppBar.setBackgroundColor(primaryColor) binding.listTitle.setTextColor(primaryTextColor) - binding.listTabLayout.setTabTextColors(primaryTextColor, secondaryColor) + binding.listTabLayout.setTabTextColors(primaryTextColor, primaryTextColor) binding.listTabLayout.setSelectedTabIndicatorColor(primaryTextColor) + val uiSettings = loadData("ui_settings") ?: UserInterfaceSettings() + if (!uiSettings.immersiveMode) { + this.window.statusBarColor = + ContextCompat.getColor(this, R.color.nav_bg_inv) + binding.root.fitsSystemWindows = true + + }else{ + binding.root.fitsSystemWindows = false + requestWindowFeature(Window.FEATURE_NO_TITLE) + window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) + } + setContentView(binding.root) + binding.listTitle.setText(R.string.release_calendar) binding.listSort.visibility = View.GONE diff --git a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt index 46d57ebd..fac3ea6e 100644 --- a/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/MediaDetailsActivity.kt @@ -190,7 +190,7 @@ class MediaDetailsActivity : AppCompatActivity(), AppBarLayout.OnOffsetChangedLi R.drawable.ic_round_favorite_24, R.drawable.ic_round_favorite_border_24, R.color.bg_opp, - R.color.violet_400, + R.color.violet_400,//TODO: Change to colorSecondary media.isFav ) { media.isFav = it diff --git a/app/src/main/java/ani/dantotsu/media/user/ListActivity.kt b/app/src/main/java/ani/dantotsu/media/user/ListActivity.kt index bf8a1666..f5407a98 100644 --- a/app/src/main/java/ani/dantotsu/media/user/ListActivity.kt +++ b/app/src/main/java/ani/dantotsu/media/user/ListActivity.kt @@ -4,6 +4,8 @@ import android.annotation.SuppressLint import android.os.Bundle import android.util.TypedValue import android.view.View +import android.view.Window +import android.view.WindowManager import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.widget.PopupMenu @@ -13,6 +15,8 @@ import androidx.lifecycle.lifecycleScope import ani.dantotsu.R import ani.dantotsu.Refresh import ani.dantotsu.databinding.ActivityListBinding +import ani.dantotsu.loadData +import ani.dantotsu.settings.UserInterfaceSettings import ani.dantotsu.themes.ThemeManager import com.google.android.material.tabs.TabLayout import com.google.android.material.tabs.TabLayoutMediator @@ -30,16 +34,15 @@ class ListActivity : AppCompatActivity() { super.onCreate(savedInstanceState) ThemeManager(this).applyTheme() binding = ActivityListBinding.inflate(layoutInflater) - setContentView(binding.root) val typedValue = TypedValue() - theme.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue, true) + theme.resolveAttribute(com.google.android.material.R.attr.colorOnPrimary, typedValue, true) val primaryColor = typedValue.data val typedValue2 = TypedValue() - theme.resolveAttribute(com.google.android.material.R.attr.colorOnPrimary, typedValue2, true) + theme.resolveAttribute(com.google.android.material.R.attr.colorPrimary, typedValue2, true) val primaryTextColor = typedValue2.data val typedValue3 = TypedValue() - theme.resolveAttribute(com.google.android.material.R.attr.colorPrimaryContainer, typedValue3, true) + theme.resolveAttribute(com.google.android.material.R.attr.colorSecondary, typedValue3, true) val secondaryColor = typedValue3.data window.statusBarColor = primaryColor @@ -47,8 +50,20 @@ class ListActivity : AppCompatActivity() { binding.listTabLayout.setBackgroundColor(primaryColor) binding.listAppBar.setBackgroundColor(primaryColor) binding.listTitle.setTextColor(primaryTextColor) - binding.listTabLayout.setTabTextColors(primaryTextColor, secondaryColor) + binding.listTabLayout.setTabTextColors(primaryTextColor, primaryTextColor) binding.listTabLayout.setSelectedTabIndicatorColor(primaryTextColor) + val uiSettings = loadData("ui_settings") ?: UserInterfaceSettings() + if (!uiSettings.immersiveMode) { + this.window.statusBarColor = + ContextCompat.getColor(this, R.color.nav_bg_inv) + binding.root.fitsSystemWindows = true + + }else{ + binding.root.fitsSystemWindows = false + requestWindowFeature(Window.FEATURE_NO_TITLE) + window.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN) + } + setContentView(binding.root) val anime = intent.getBooleanExtra("anime", true) binding.listTitle.text = intent.getStringExtra("username") + "'s " + (if (anime) "Anime" else "Manga") + " List" diff --git a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt index 2ac4c052..d99b1927 100644 --- a/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt +++ b/app/src/main/java/ani/dantotsu/settings/SettingsActivity.kt @@ -33,6 +33,7 @@ import ani.dantotsu.subcriptions.Subscription.Companion.defaultTime import ani.dantotsu.subcriptions.Subscription.Companion.startSubscription import ani.dantotsu.subcriptions.Subscription.Companion.timeMinutes import ani.dantotsu.themes.ThemeManager +import com.google.android.material.snackbar.Snackbar import eu.kanade.domain.base.BasePreferences import eu.kanade.tachiyomi.network.NetworkPreferences import io.noties.markwon.Markwon @@ -101,7 +102,7 @@ OS Version: $CODENAME $RELEASE ($SDK_INT) binding.settingsUseMaterialYou.isChecked = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getBoolean("use_material_you", false) binding.settingsUseMaterialYou.setOnCheckedChangeListener { _, isChecked -> getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putBoolean("use_material_you", isChecked).apply() - Toast.makeText(this, "Restart app to apply changes", Toast.LENGTH_LONG).show() + restartApp() } val themeString = getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).getString("theme", "PURPLE")!! @@ -111,12 +112,9 @@ OS Version: $CODENAME $RELEASE ($SDK_INT) binding.themeSwitcher.setOnItemClickListener { _, _, i, _ -> getSharedPreferences("Dantotsu", Context.MODE_PRIVATE).edit().putString("theme", ThemeManager.Companion.Theme.values()[i].theme).apply() - ActivityHelper.shouldRefreshMainActivity = true + //ActivityHelper.shouldRefreshMainActivity = true binding.themeSwitcher.clearFocus() - Refresh.all() - finish() - startActivity(Intent(this, SettingsActivity::class.java)) - initActivity(this) + restartApp() } @@ -586,4 +584,18 @@ OS Version: $CODENAME $RELEASE ($SDK_INT) } } } + private fun restartApp() { + Snackbar.make( + binding.root, + R.string.restart_app, Snackbar.LENGTH_SHORT + ).apply { + val mainIntent = + Intent.makeRestartActivityTask(context.packageManager.getLaunchIntentForPackage(context.packageName)!!.component) + setAction("Do it!") { + context.startActivity(mainIntent) + Runtime.getRuntime().exit(0) + } + show() + } + } } \ No newline at end of file diff --git a/app/src/main/res/layout/activity_list.xml b/app/src/main/res/layout/activity_list.xml index 665e0a9a..0e034839 100644 --- a/app/src/main/res/layout/activity_list.xml +++ b/app/src/main/res/layout/activity_list.xml @@ -4,7 +4,8 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".media.user.ListActivity"> + tools:context=".media.user.ListActivity" + android:fitsSystemWindows="true"> ?android:colorBackground - \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 18ae13d5..0386e107 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -1,6 +1,5 @@