Revert "Drop support for Android 5.x"

This reverts commit 443024cebb. Guess I'll do this a bit later so scb can get another major update first.

April Fools or whatever.
This commit is contained in:
arkon
2021-03-31 22:20:24 -04:00
parent 7aa379a857
commit f7a6cbe5e2
15 changed files with 91 additions and 37 deletions

View File

@@ -32,6 +32,10 @@ abstract class BaseThemedActivity : AppCompatActivity() {
R.style.Theme_Tachiyomi_Light_Api27
}
// Light status bar + fallback gray navigation bar
Build.VERSION.SDK_INT >= Build.VERSION_CODES.M -> {
R.style.Theme_Tachiyomi_Light_Api23
}
// Fallback gray status + navigation bar
else -> {
R.style.Theme_Tachiyomi_Light
}

View File

@@ -2,6 +2,7 @@ package eu.kanade.tachiyomi.ui.base.controller
import android.content.Intent
import android.content.pm.PackageManager.PERMISSION_GRANTED
import android.os.Build
import androidx.core.content.ContextCompat
import androidx.core.net.toUri
import com.bluelinelabs.conductor.Controller
@@ -20,9 +21,11 @@ fun Router.popControllerWithTag(tag: String): Boolean {
fun Controller.requestPermissionsSafe(permissions: Array<String>, requestCode: Int) {
val activity = activity ?: return
permissions.forEach { permission ->
if (ContextCompat.checkSelfPermission(activity, permission) != PERMISSION_GRANTED) {
requestPermissions(arrayOf(permission), requestCode)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
permissions.forEach { permission ->
if (ContextCompat.checkSelfPermission(activity, permission) != PERMISSION_GRANTED) {
requestPermissions(arrayOf(permission), requestCode)
}
}
}
}

View File

@@ -290,17 +290,23 @@ class MangaController :
fab.setOnClickListener {
val item = presenter.getNextUnreadChapter()
if (item != null) {
// Create animation listener
val revealAnimationListener: Animator.AnimatorListener = object : AnimatorListenerAdapter() {
override fun onAnimationStart(animation: Animator?) {
openChapter(item.chapter, true)
}
}
// Get coordinates and start animation
actionFab?.getCoordinates()?.let { coordinates ->
binding.revealView.showRevealEffect(
coordinates.x,
coordinates.y,
object : AnimatorListenerAdapter() {
override fun onAnimationStart(animation: Animator?) {
openChapter(item.chapter, true)
}
}
)
if (!binding.revealView.showRevealEffect(
coordinates.x,
coordinates.y,
revealAnimationListener
)
) {
openChapter(item.chapter)
}
}
} else {
view?.context?.toast(R.string.no_next_chapter)

View File

@@ -1,5 +1,7 @@
package eu.kanade.tachiyomi.ui.manga.info
import android.graphics.PorterDuff
import android.os.Build
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@@ -19,6 +21,7 @@ import eu.kanade.tachiyomi.source.model.SManga
import eu.kanade.tachiyomi.source.online.HttpSource
import eu.kanade.tachiyomi.ui.manga.MangaController
import eu.kanade.tachiyomi.util.system.copyToClipboard
import eu.kanade.tachiyomi.util.system.getResourceColor
import eu.kanade.tachiyomi.util.view.setChips
import kotlinx.coroutines.flow.launchIn
import kotlinx.coroutines.flow.merge
@@ -301,6 +304,18 @@ class MangaInfoHeaderAdapter(
initialLoad = false
}
}
// backgroundTint attribute doesn't work properly on Android 5
if (Build.VERSION.SDK_INT == Build.VERSION_CODES.LOLLIPOP) {
listOf(binding.backdropOverlay, binding.mangaInfoToggleMoreScrim)
.forEach {
@Suppress("DEPRECATION")
it.background.setColorFilter(
view.context.getResourceColor(android.R.attr.colorBackground),
PorterDuff.Mode.SRC_ATOP
)
}
}
}
private fun showMangaInfo(visible: Boolean) {

View File

@@ -4,6 +4,7 @@ import android.annotation.SuppressLint
import android.app.Dialog
import android.content.ActivityNotFoundException
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.provider.Settings
import androidx.core.net.toUri
@@ -63,25 +64,27 @@ class SettingsAdvancedController : SettingsController() {
}
}
preference {
key = "pref_disable_battery_optimization"
titleRes = R.string.pref_disable_battery_optimization
summaryRes = R.string.pref_disable_battery_optimization_summary
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
preference {
key = "pref_disable_battery_optimization"
titleRes = R.string.pref_disable_battery_optimization
summaryRes = R.string.pref_disable_battery_optimization_summary
onClick {
val packageName: String = context.packageName
if (!context.powerManager.isIgnoringBatteryOptimizations(packageName)) {
try {
val intent = Intent().apply {
action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
data = "package:$packageName".toUri()
onClick {
val packageName: String = context.packageName
if (!context.powerManager.isIgnoringBatteryOptimizations(packageName)) {
try {
val intent = Intent().apply {
action = Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS
data = "package:$packageName".toUri()
}
startActivity(intent)
} catch (e: ActivityNotFoundException) {
context.toast(R.string.battery_optimization_setting_activity_not_found)
}
startActivity(intent)
} catch (e: ActivityNotFoundException) {
context.toast(R.string.battery_optimization_setting_activity_not_found)
} else {
context.toast(R.string.battery_optimization_disabled)
}
} else {
context.toast(R.string.battery_optimization_disabled)
}
}
}