Remove A5 compatibility code
This commit is contained in:
@@ -41,8 +41,8 @@ class KotatsuApp : BaseApp() {
|
|||||||
detectNetwork()
|
detectNetwork()
|
||||||
detectDiskWrites()
|
detectDiskWrites()
|
||||||
detectCustomSlowCalls()
|
detectCustomSlowCalls()
|
||||||
|
detectResourceMismatches()
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) detectUnbufferedIo()
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) detectUnbufferedIo()
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) detectResourceMismatches()
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) detectExplicitGc()
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) detectExplicitGc()
|
||||||
penaltyLog()
|
penaltyLog()
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && notifier != null) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P && notifier != null) {
|
||||||
|
|||||||
@@ -80,12 +80,7 @@ class NetworkState(
|
|||||||
if (settings.isOfflineCheckDisabled) {
|
if (settings.isOfflineCheckDisabled) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
return activeNetwork?.let { isOnline(it) } == true
|
||||||
activeNetwork?.let { isOnline(it) } == true
|
|
||||||
} else {
|
|
||||||
@Suppress("DEPRECATION")
|
|
||||||
activeNetworkInfo?.isConnected == true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun ConnectivityManager.isOnline(network: Network): Boolean {
|
private fun ConnectivityManager.isOnline(network: Network): Boolean {
|
||||||
|
|||||||
@@ -1,8 +0,0 @@
|
|||||||
package org.koitharu.kotatsu.core.ui
|
|
||||||
|
|
||||||
import android.view.View
|
|
||||||
|
|
||||||
fun interface OnContextClickListenerCompat {
|
|
||||||
|
|
||||||
fun onContextClick(v: View): Boolean
|
|
||||||
}
|
|
||||||
@@ -2,17 +2,16 @@ package org.koitharu.kotatsu.core.ui.list
|
|||||||
|
|
||||||
import android.view.View
|
import android.view.View
|
||||||
import android.view.View.OnClickListener
|
import android.view.View.OnClickListener
|
||||||
|
import android.view.View.OnContextClickListener
|
||||||
import android.view.View.OnLongClickListener
|
import android.view.View.OnLongClickListener
|
||||||
import androidx.core.util.Function
|
import androidx.core.util.Function
|
||||||
import com.hannesdorfmann.adapterdelegates4.dsl.AdapterDelegateViewBindingViewHolder
|
import com.hannesdorfmann.adapterdelegates4.dsl.AdapterDelegateViewBindingViewHolder
|
||||||
import org.koitharu.kotatsu.core.ui.OnContextClickListenerCompat
|
|
||||||
import org.koitharu.kotatsu.core.util.ext.setOnContextClickListenerCompat
|
|
||||||
|
|
||||||
class AdapterDelegateClickListenerAdapter<I, O>(
|
class AdapterDelegateClickListenerAdapter<I, O>(
|
||||||
private val adapterDelegate: AdapterDelegateViewBindingViewHolder<out I, *>,
|
private val adapterDelegate: AdapterDelegateViewBindingViewHolder<out I, *>,
|
||||||
private val clickListener: OnListItemClickListener<O>,
|
private val clickListener: OnListItemClickListener<O>,
|
||||||
private val itemMapper: Function<I, O>,
|
private val itemMapper: Function<I, O>,
|
||||||
) : OnClickListener, OnLongClickListener, OnContextClickListenerCompat {
|
) : OnClickListener, OnLongClickListener, OnContextClickListener {
|
||||||
|
|
||||||
override fun onClick(v: View) {
|
override fun onClick(v: View) {
|
||||||
clickListener.onItemClick(mappedItem(), v)
|
clickListener.onItemClick(mappedItem(), v)
|
||||||
@@ -33,7 +32,7 @@ class AdapterDelegateClickListenerAdapter<I, O>(
|
|||||||
fun attach(itemView: View) {
|
fun attach(itemView: View) {
|
||||||
itemView.setOnClickListener(this)
|
itemView.setOnClickListener(this)
|
||||||
itemView.setOnLongClickListener(this)
|
itemView.setOnLongClickListener(this)
|
||||||
itemView.setOnContextClickListenerCompat(this)
|
itemView.setOnContextClickListener(this)
|
||||||
}
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.koitharu.kotatsu.core.ui.util
|
package org.koitharu.kotatsu.core.ui.util
|
||||||
|
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.os.Build
|
|
||||||
import android.view.ViewGroup
|
import android.view.ViewGroup
|
||||||
import android.view.Window
|
import android.view.Window
|
||||||
import androidx.activity.OnBackPressedCallback
|
import androidx.activity.OnBackPressedCallback
|
||||||
@@ -14,7 +13,6 @@ import androidx.core.view.WindowInsetsCompat
|
|||||||
import androidx.core.view.updateLayoutParams
|
import androidx.core.view.updateLayoutParams
|
||||||
import androidx.lifecycle.DefaultLifecycleObserver
|
import androidx.lifecycle.DefaultLifecycleObserver
|
||||||
import androidx.lifecycle.LifecycleOwner
|
import androidx.lifecycle.LifecycleOwner
|
||||||
import org.koitharu.kotatsu.R
|
|
||||||
import org.koitharu.kotatsu.core.util.ext.getThemeColor
|
import org.koitharu.kotatsu.core.util.ext.getThemeColor
|
||||||
import com.google.android.material.R as materialR
|
import com.google.android.material.R as materialR
|
||||||
|
|
||||||
@@ -37,14 +35,10 @@ class ActionModeDelegate : OnBackPressedCallback(false) {
|
|||||||
listeners?.forEach { it.onActionModeStarted(mode) }
|
listeners?.forEach { it.onActionModeStarted(mode) }
|
||||||
if (window != null) {
|
if (window != null) {
|
||||||
val ctx = window.context
|
val ctx = window.context
|
||||||
val actionModeColor = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
val actionModeColor = ColorUtils.compositeColors(
|
||||||
ColorUtils.compositeColors(
|
ContextCompat.getColor(ctx, materialR.color.m3_appbar_overlay_color),
|
||||||
ContextCompat.getColor(ctx, materialR.color.m3_appbar_overlay_color),
|
ctx.getThemeColor(materialR.attr.colorSurface),
|
||||||
ctx.getThemeColor(materialR.attr.colorSurface),
|
)
|
||||||
)
|
|
||||||
} else {
|
|
||||||
ContextCompat.getColor(ctx, R.color.kotatsu_surface)
|
|
||||||
}
|
|
||||||
defaultStatusBarColor = window.statusBarColor
|
defaultStatusBarColor = window.statusBarColor
|
||||||
window.statusBarColor = actionModeColor
|
window.statusBarColor = actionModeColor
|
||||||
val insets = ViewCompat.getRootWindowInsets(window.decorView)
|
val insets = ViewCompat.getRootWindowInsets(window.decorView)
|
||||||
|
|||||||
@@ -4,12 +4,10 @@ import android.view.MenuItem
|
|||||||
import android.view.View
|
import android.view.View
|
||||||
import androidx.appcompat.widget.PopupMenu
|
import androidx.appcompat.widget.PopupMenu
|
||||||
import androidx.core.view.MenuProvider
|
import androidx.core.view.MenuProvider
|
||||||
import org.koitharu.kotatsu.core.ui.OnContextClickListenerCompat
|
|
||||||
import org.koitharu.kotatsu.core.util.ext.setOnContextClickListenerCompat
|
|
||||||
|
|
||||||
class PopupMenuMediator(
|
class PopupMenuMediator(
|
||||||
private val provider: MenuProvider,
|
private val provider: MenuProvider,
|
||||||
) : View.OnLongClickListener, OnContextClickListenerCompat, PopupMenu.OnMenuItemClickListener,
|
) : View.OnLongClickListener, View.OnContextClickListener, PopupMenu.OnMenuItemClickListener,
|
||||||
PopupMenu.OnDismissListener {
|
PopupMenu.OnDismissListener {
|
||||||
|
|
||||||
override fun onContextClick(v: View): Boolean = onLongClick(v)
|
override fun onContextClick(v: View): Boolean = onLongClick(v)
|
||||||
@@ -37,6 +35,6 @@ class PopupMenuMediator(
|
|||||||
|
|
||||||
fun attach(view: View) {
|
fun attach(view: View) {
|
||||||
view.setOnLongClickListener(this)
|
view.setOnLongClickListener(this)
|
||||||
view.setOnContextClickListenerCompat(this)
|
view.setOnContextClickListener(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -28,7 +28,6 @@ import com.google.android.material.progressindicator.BaseProgressIndicator
|
|||||||
import com.google.android.material.slider.RangeSlider
|
import com.google.android.material.slider.RangeSlider
|
||||||
import com.google.android.material.slider.Slider
|
import com.google.android.material.slider.Slider
|
||||||
import com.google.android.material.tabs.TabLayout
|
import com.google.android.material.tabs.TabLayout
|
||||||
import org.koitharu.kotatsu.core.ui.OnContextClickListenerCompat
|
|
||||||
import kotlin.math.roundToInt
|
import kotlin.math.roundToInt
|
||||||
|
|
||||||
fun View.hasGlobalPoint(x: Int, y: Int): Boolean {
|
fun View.hasGlobalPoint(x: Int, y: Int): Boolean {
|
||||||
@@ -169,12 +168,6 @@ fun BaseProgressIndicator<*>.showOrHide(value: Boolean) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun View.setOnContextClickListenerCompat(listener: OnContextClickListenerCompat) {
|
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
|
||||||
setOnContextClickListener(listener::onContextClick)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun View.setTooltipCompat(tooltip: CharSequence?) {
|
fun View.setTooltipCompat(tooltip: CharSequence?) {
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
||||||
tooltipText = tooltip
|
tooltipText = tooltip
|
||||||
|
|||||||
@@ -209,9 +209,7 @@ class DetailsActivity :
|
|||||||
|
|
||||||
override fun onProvideAssistContent(outContent: AssistContent) {
|
override fun onProvideAssistContent(outContent: AssistContent) {
|
||||||
super.onProvideAssistContent(outContent)
|
super.onProvideAssistContent(outContent)
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
viewModel.getMangaOrNull()?.publicUrl?.toUriOrNull()?.let { outContent.webUri = it }
|
||||||
viewModel.getMangaOrNull()?.publicUrl?.toUriOrNull()?.let { outContent.webUri = it }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isNsfwContent(): Flow<Boolean> = viewModel.manga.map { it?.contentRating == ContentRating.ADULT }
|
override fun isNsfwContent(): Flow<Boolean> = viewModel.manga.map { it?.contentRating == ContentRating.ADULT }
|
||||||
|
|||||||
@@ -51,9 +51,7 @@ class FilterSheetFragment : BaseAdaptiveSheet<SheetFilterBinding>(),
|
|||||||
super.onViewBindingCreated(binding, savedInstanceState)
|
super.onViewBindingCreated(binding, savedInstanceState)
|
||||||
if (dialog == null) {
|
if (dialog == null) {
|
||||||
binding.layoutBody.updatePadding(top = binding.layoutBody.paddingBottom)
|
binding.layoutBody.updatePadding(top = binding.layoutBody.paddingBottom)
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
binding.scrollView.scrollIndicators = 0
|
||||||
binding.scrollView.scrollIndicators = 0
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
val filter = FilterCoordinator.require(this)
|
val filter = FilterCoordinator.require(this)
|
||||||
filter.sortOrder.observe(viewLifecycleOwner, this::onSortOrderChanged)
|
filter.sortOrder.observe(viewLifecycleOwner, this::onSortOrderChanged)
|
||||||
|
|||||||
@@ -83,9 +83,7 @@ class CoverImageView @JvmOverloads constructor(
|
|||||||
if (fallbackDrawable == null) {
|
if (fallbackDrawable == null) {
|
||||||
fallbackDrawable = context.getThemeColor(materialR.attr.colorSurfaceContainer).toDrawable()
|
fallbackDrawable = context.getThemeColor(materialR.attr.colorSurfaceContainer).toDrawable()
|
||||||
}
|
}
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
addImageRequestListener(ErrorForegroundListener())
|
||||||
addImageRequestListener(ErrorForegroundListener())
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
|
||||||
@@ -169,7 +167,6 @@ class CoverImageView @JvmOverloads constructor(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@RequiresApi(Build.VERSION_CODES.M)
|
|
||||||
private inner class ErrorForegroundListener : ImageRequest.Listener {
|
private inner class ErrorForegroundListener : ImageRequest.Listener {
|
||||||
|
|
||||||
override fun onSuccess(request: ImageRequest, result: SuccessResult) {
|
override fun onSuccess(request: ImageRequest, result: SuccessResult) {
|
||||||
|
|||||||
@@ -215,9 +215,7 @@ class ReaderActivity :
|
|||||||
|
|
||||||
override fun onProvideAssistContent(outContent: AssistContent) {
|
override fun onProvideAssistContent(outContent: AssistContent) {
|
||||||
super.onProvideAssistContent(outContent)
|
super.onProvideAssistContent(outContent)
|
||||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
|
viewModel.getMangaOrNull()?.publicUrl?.toUriOrNull()?.let { outContent.webUri = it }
|
||||||
viewModel.getMangaOrNull()?.publicUrl?.toUriOrNull()?.let { outContent.webUri = it }
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun isNsfwContent(): Flow<Boolean> = viewModel.isMangaNsfw
|
override fun isNsfwContent(): Flow<Boolean> = viewModel.isMangaNsfw
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
package org.koitharu.kotatsu.settings.protect
|
package org.koitharu.kotatsu.settings.protect
|
||||||
|
|
||||||
import android.content.pm.PackageManager
|
import android.content.pm.PackageManager
|
||||||
import android.os.Build
|
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.text.Editable
|
import android.text.Editable
|
||||||
import android.view.KeyEvent
|
import android.view.KeyEvent
|
||||||
@@ -115,7 +114,6 @@ class ProtectSetupActivity :
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isBiometricAvailable(): Boolean {
|
private fun isBiometricAvailable(): Boolean {
|
||||||
return Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
|
return packageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)
|
||||||
packageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import android.annotation.SuppressLint
|
|||||||
import android.content.ActivityNotFoundException
|
import android.content.ActivityNotFoundException
|
||||||
import android.content.Context
|
import android.content.Context
|
||||||
import android.content.Intent
|
import android.content.Intent
|
||||||
import android.os.Build
|
|
||||||
import android.os.PowerManager
|
import android.os.PowerManager
|
||||||
import android.provider.Settings
|
import android.provider.Settings
|
||||||
import androidx.activity.result.contract.ActivityResultContracts
|
import androidx.activity.result.contract.ActivityResultContracts
|
||||||
@@ -33,10 +32,6 @@ class DozeHelper(
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun startIgnoreDoseActivity(): Boolean {
|
fun startIgnoreDoseActivity(): Boolean {
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
|
||||||
Snackbar.make(fragment.listView ?: return false, R.string.operation_not_supported, Snackbar.LENGTH_SHORT).show()
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
val context = fragment.context ?: return false
|
val context = fragment.context ?: return false
|
||||||
val packageName = context.packageName
|
val packageName = context.packageName
|
||||||
val powerManager = context.powerManager ?: return false
|
val powerManager = context.powerManager ?: return false
|
||||||
@@ -58,9 +53,6 @@ class DozeHelper(
|
|||||||
}
|
}
|
||||||
|
|
||||||
private fun isDozeIgnoreAvailable(): Boolean {
|
private fun isDozeIgnoreAvailable(): Boolean {
|
||||||
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) {
|
|
||||||
return false
|
|
||||||
}
|
|
||||||
val context = fragment.context ?: return false
|
val context = fragment.context ?: return false
|
||||||
val packageName = context.packageName
|
val packageName = context.packageName
|
||||||
val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
|
val powerManager = context.getSystemService(Context.POWER_SERVICE) as PowerManager
|
||||||
|
|||||||
Reference in New Issue
Block a user