chore: Replace deprecated usages with Locale, LocalResources, Bitmap and toColorInt (#1316)
* Replace deprecated usages with Locale, LocalResources, Bitmap and toColorInt; remove FlagKit class * remember(resources)
This commit is contained in:
parent
b648afb889
commit
6b15d76be6
9 changed files with 82 additions and 381 deletions
|
|
@ -10,7 +10,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalResources
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.util.fastAny
|
import androidx.compose.ui.util.fastAny
|
||||||
import androidx.paging.LoadState
|
import androidx.paging.LoadState
|
||||||
|
|
@ -116,11 +116,10 @@ internal fun BrowseSourceComfortableGridItem(
|
||||||
coverBadgeEnd = {
|
coverBadgeEnd = {
|
||||||
if (metadata is MangaDexSearchMetadata) {
|
if (metadata is MangaDexSearchMetadata) {
|
||||||
metadata.followStatus?.let { followStatus ->
|
metadata.followStatus?.let { followStatus ->
|
||||||
val text = LocalContext.current
|
val text = LocalResources.current
|
||||||
.resources
|
.let { resources ->
|
||||||
.let {
|
remember(resources, followStatus) {
|
||||||
remember {
|
resources.getStringArray(R.array.md_follows_options)
|
||||||
it.getStringArray(R.array.md_follows_options)
|
|
||||||
.getOrNull(followStatus)
|
.getOrNull(followStatus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalResources
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.util.fastAny
|
import androidx.compose.ui.util.fastAny
|
||||||
import androidx.paging.LoadState
|
import androidx.paging.LoadState
|
||||||
|
|
@ -111,11 +111,10 @@ internal fun BrowseSourceCompactGridItem(
|
||||||
coverBadgeEnd = {
|
coverBadgeEnd = {
|
||||||
if (metadata is MangaDexSearchMetadata) {
|
if (metadata is MangaDexSearchMetadata) {
|
||||||
metadata.followStatus?.let { followStatus ->
|
metadata.followStatus?.let { followStatus ->
|
||||||
val text = LocalContext.current
|
val text = LocalResources.current
|
||||||
.resources
|
.let { resources ->
|
||||||
.let {
|
remember(resources, followStatus) {
|
||||||
remember {
|
resources.getStringArray(R.array.md_follows_options)
|
||||||
it.getStringArray(R.array.md_follows_options)
|
|
||||||
.getOrNull(followStatus)
|
.getOrNull(followStatus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,7 +7,7 @@ import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.runtime.collectAsState
|
import androidx.compose.runtime.collectAsState
|
||||||
import androidx.compose.runtime.getValue
|
import androidx.compose.runtime.getValue
|
||||||
import androidx.compose.runtime.remember
|
import androidx.compose.runtime.remember
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalResources
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.util.fastAny
|
import androidx.compose.ui.util.fastAny
|
||||||
import androidx.paging.LoadState
|
import androidx.paging.LoadState
|
||||||
|
|
@ -102,11 +102,10 @@ internal fun BrowseSourceListItem(
|
||||||
// SY -->
|
// SY -->
|
||||||
if (metadata is MangaDexSearchMetadata) {
|
if (metadata is MangaDexSearchMetadata) {
|
||||||
metadata.followStatus?.let { followStatus ->
|
metadata.followStatus?.let { followStatus ->
|
||||||
val text = LocalContext.current
|
val text = LocalResources.current
|
||||||
.resources
|
.let { resources ->
|
||||||
.let {
|
remember(resources, followStatus) {
|
||||||
remember {
|
resources.getStringArray(R.array.md_follows_options)
|
||||||
it.getStringArray(R.array.md_follows_options)
|
|
||||||
.getOrNull(followStatus)
|
.getOrNull(followStatus)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -38,6 +38,7 @@ import androidx.compose.ui.unit.dp
|
||||||
import androidx.compose.ui.viewinterop.AndroidView
|
import androidx.compose.ui.viewinterop.AndroidView
|
||||||
import androidx.compose.ui.window.Dialog
|
import androidx.compose.ui.window.Dialog
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
|
import androidx.core.graphics.drawable.toDrawable
|
||||||
import androidx.core.view.updatePadding
|
import androidx.core.view.updatePadding
|
||||||
import coil3.asDrawable
|
import coil3.asDrawable
|
||||||
import coil3.imageLoader
|
import coil3.imageLoader
|
||||||
|
|
@ -211,12 +212,9 @@ fun MangaCoverDialog(
|
||||||
|
|
||||||
// Copy bitmap in case it came from memory cache
|
// Copy bitmap in case it came from memory cache
|
||||||
// Because SSIV needs to thoroughly read the image
|
// Because SSIV needs to thoroughly read the image
|
||||||
val copy = (drawable as? BitmapDrawable)?.let {
|
val copy = (drawable as? BitmapDrawable)?.bitmap?.copy(Bitmap.Config.HARDWARE, false)
|
||||||
BitmapDrawable(
|
?.toDrawable(view.context.resources)
|
||||||
view.context.resources,
|
?: drawable
|
||||||
it.bitmap.copy(Bitmap.Config.HARDWARE, false),
|
|
||||||
)
|
|
||||||
} ?: drawable
|
|
||||||
view.setImage(copy, ReaderPageImageView.Config(zoomDuration = 500))
|
view.setImage(copy, ReaderPageImageView.Config(zoomDuration = 500))
|
||||||
}
|
}
|
||||||
.build()
|
.build()
|
||||||
|
|
|
||||||
|
|
@ -23,6 +23,7 @@ import androidx.compose.runtime.saveable.rememberSaveable
|
||||||
import androidx.compose.runtime.setValue
|
import androidx.compose.runtime.setValue
|
||||||
import androidx.compose.runtime.toMutableStateList
|
import androidx.compose.runtime.toMutableStateList
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.platform.LocalResources
|
||||||
import androidx.compose.ui.platform.LocalUriHandler
|
import androidx.compose.ui.platform.LocalUriHandler
|
||||||
import androidx.compose.ui.window.DialogProperties
|
import androidx.compose.ui.window.DialogProperties
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
|
|
@ -103,6 +104,7 @@ import uy.kohesive.injekt.api.get
|
||||||
import java.io.File
|
import java.io.File
|
||||||
|
|
||||||
object SettingsAdvancedScreen : SearchableSettings {
|
object SettingsAdvancedScreen : SearchableSettings {
|
||||||
|
@Suppress("unused")
|
||||||
private fun readResolve(): Any = SettingsAdvancedScreen
|
private fun readResolve(): Any = SettingsAdvancedScreen
|
||||||
|
|
||||||
@ReadOnlyComposable
|
@ReadOnlyComposable
|
||||||
|
|
@ -210,7 +212,7 @@ object SettingsAdvancedScreen : SearchableSettings {
|
||||||
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
|
||||||
}
|
}
|
||||||
context.startActivity(intent)
|
context.startActivity(intent)
|
||||||
} catch (e: ActivityNotFoundException) {
|
} catch (_: ActivityNotFoundException) {
|
||||||
context.toast(MR.strings.battery_optimization_setting_activity_not_found)
|
context.toast(MR.strings.battery_optimization_setting_activity_not_found)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
@ -527,8 +529,8 @@ object SettingsAdvancedScreen : SearchableSettings {
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
onCleanupDownloads: (removeRead: Boolean, removeNonFavorite: Boolean) -> Unit,
|
onCleanupDownloads: (removeRead: Boolean, removeNonFavorite: Boolean) -> Unit,
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val resources = LocalResources.current
|
||||||
val options = remember { context.resources.getStringArray(R.array.clean_up_downloads).toList() }
|
val options = remember(resources) { resources.getStringArray(R.array.clean_up_downloads).toList() }
|
||||||
val selection = remember {
|
val selection = remember {
|
||||||
options.toMutableStateList()
|
options.toMutableStateList()
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -26,6 +26,7 @@ import androidx.compose.runtime.toMutableStateList
|
||||||
import androidx.compose.ui.Alignment
|
import androidx.compose.ui.Alignment
|
||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.platform.LocalContext
|
import androidx.compose.ui.platform.LocalContext
|
||||||
|
import androidx.compose.ui.platform.LocalResources
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import eu.kanade.domain.source.service.SourcePreferences
|
import eu.kanade.domain.source.service.SourcePreferences
|
||||||
import eu.kanade.domain.track.service.TrackPreferences
|
import eu.kanade.domain.track.service.TrackPreferences
|
||||||
|
|
@ -55,6 +56,7 @@ import uy.kohesive.injekt.Injekt
|
||||||
import uy.kohesive.injekt.api.get
|
import uy.kohesive.injekt.api.get
|
||||||
|
|
||||||
object SettingsMangadexScreen : SearchableSettings {
|
object SettingsMangadexScreen : SearchableSettings {
|
||||||
|
@Suppress("unused")
|
||||||
private fun readResolve(): Any = SettingsMangadexScreen
|
private fun readResolve(): Any = SettingsMangadexScreen
|
||||||
|
|
||||||
@ReadOnlyComposable
|
@ReadOnlyComposable
|
||||||
|
|
@ -193,9 +195,9 @@ object SettingsMangadexScreen : SearchableSettings {
|
||||||
onDismissRequest: () -> Unit,
|
onDismissRequest: () -> Unit,
|
||||||
onSelectionConfirmed: (List<String>) -> Unit,
|
onSelectionConfirmed: (List<String>) -> Unit,
|
||||||
) {
|
) {
|
||||||
val context = LocalContext.current
|
val resources = LocalResources.current
|
||||||
val items = remember {
|
val items = remember(resources) {
|
||||||
context.resources.getStringArray(R.array.md_follows_options)
|
resources.getStringArray(R.array.md_follows_options)
|
||||||
.drop(1)
|
.drop(1)
|
||||||
}
|
}
|
||||||
val selection = remember {
|
val selection = remember {
|
||||||
|
|
|
||||||
|
|
@ -1,12 +1,12 @@
|
||||||
package exh.util
|
package exh.util
|
||||||
|
|
||||||
import android.graphics.Color
|
|
||||||
import androidx.annotation.ColorInt
|
import androidx.annotation.ColorInt
|
||||||
import androidx.compose.foundation.layout.Column
|
import androidx.compose.foundation.layout.Column
|
||||||
import androidx.compose.foundation.layout.FlowRow
|
import androidx.compose.foundation.layout.FlowRow
|
||||||
import androidx.compose.material3.Text
|
import androidx.compose.material3.Text
|
||||||
import androidx.compose.runtime.Composable
|
import androidx.compose.runtime.Composable
|
||||||
import androidx.compose.ui.tooling.preview.Preview
|
import androidx.compose.ui.tooling.preview.Preview
|
||||||
|
import androidx.core.graphics.toColorInt
|
||||||
import exh.metadata.metadata.base.RaisedTag
|
import exh.metadata.metadata.base.RaisedTag
|
||||||
import exh.source.EH_SOURCE_ID
|
import exh.source.EH_SOURCE_ID
|
||||||
import exh.source.EXH_SOURCE_ID
|
import exh.source.EXH_SOURCE_ID
|
||||||
|
|
@ -108,40 +108,40 @@ object SourceTagsUtil {
|
||||||
MISC_COLOR("#f36594"),
|
MISC_COLOR("#f36594"),
|
||||||
;
|
;
|
||||||
|
|
||||||
constructor(color: String) : this(Color.parseColor(color))
|
constructor(color: String) : this(color.toColorInt())
|
||||||
}
|
}
|
||||||
|
|
||||||
@ColorInt fun genreTextColor(genre: GenreColor): Int {
|
@ColorInt fun genreTextColor(genre: GenreColor): Int {
|
||||||
return when (genre) {
|
return when (genre) {
|
||||||
GenreColor.DOUJINSHI_COLOR -> Color.parseColor("#000000")
|
GenreColor.DOUJINSHI_COLOR -> "#000000".toColorInt()
|
||||||
GenreColor.MANGA_COLOR -> Color.parseColor("#000000")
|
GenreColor.MANGA_COLOR -> "#000000".toColorInt()
|
||||||
GenreColor.ARTIST_CG_COLOR -> Color.parseColor("#000000")
|
GenreColor.ARTIST_CG_COLOR -> "#000000".toColorInt()
|
||||||
GenreColor.GAME_CG_COLOR -> Color.parseColor("#000000")
|
GenreColor.GAME_CG_COLOR -> "#000000".toColorInt()
|
||||||
GenreColor.WESTERN_COLOR -> Color.parseColor("#000000")
|
GenreColor.WESTERN_COLOR -> "#000000".toColorInt()
|
||||||
GenreColor.NON_H_COLOR -> Color.parseColor("#000000")
|
GenreColor.NON_H_COLOR -> "#000000".toColorInt()
|
||||||
GenreColor.IMAGE_SET_COLOR -> Color.parseColor("#FFFFFF")
|
GenreColor.IMAGE_SET_COLOR -> "#FFFFFF".toColorInt()
|
||||||
GenreColor.COSPLAY_COLOR -> Color.parseColor("#FFFFFF")
|
GenreColor.COSPLAY_COLOR -> "#FFFFFF".toColorInt()
|
||||||
GenreColor.ASIAN_PORN_COLOR -> Color.parseColor("#000000")
|
GenreColor.ASIAN_PORN_COLOR -> "#000000".toColorInt()
|
||||||
GenreColor.MISC_COLOR -> Color.parseColor("#000000")
|
GenreColor.MISC_COLOR -> "#000000".toColorInt()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fun getLocaleSourceUtil(language: String?) = when (language) {
|
fun getLocaleSourceUtil(language: String?) = when (language) {
|
||||||
"english", "eng" -> Locale("en")
|
"english", "eng" -> Locale.forLanguageTag("en")
|
||||||
"japanese" -> Locale("ja")
|
"japanese" -> Locale.forLanguageTag("ja")
|
||||||
"chinese" -> Locale("zh")
|
"chinese" -> Locale.forLanguageTag("zh")
|
||||||
"spanish" -> Locale("es")
|
"spanish" -> Locale.forLanguageTag("es")
|
||||||
"korean" -> Locale("ko")
|
"korean" -> Locale.forLanguageTag("ko")
|
||||||
"russian" -> Locale("ru")
|
"russian" -> Locale.forLanguageTag("ru")
|
||||||
"french" -> Locale("fr")
|
"french" -> Locale.forLanguageTag("fr")
|
||||||
"portuguese" -> Locale("pt")
|
"portuguese" -> Locale.forLanguageTag("pt")
|
||||||
"thai" -> Locale("th")
|
"thai" -> Locale.forLanguageTag("th")
|
||||||
"german" -> Locale("de")
|
"german" -> Locale.forLanguageTag("de")
|
||||||
"italian" -> Locale("it")
|
"italian" -> Locale.forLanguageTag("it")
|
||||||
"vietnamese" -> Locale("vi")
|
"vietnamese" -> Locale.forLanguageTag("vi")
|
||||||
"polish" -> Locale("pl")
|
"polish" -> Locale.forLanguageTag("pl")
|
||||||
"hungarian" -> Locale("hu")
|
"hungarian" -> Locale.forLanguageTag("hu")
|
||||||
"dutch" -> Locale("nl")
|
"dutch" -> Locale.forLanguageTag("nl")
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -154,21 +154,21 @@ object SourceTagsUtil {
|
||||||
@Composable
|
@Composable
|
||||||
private fun LanguageFlagPreview() {
|
private fun LanguageFlagPreview() {
|
||||||
val locales = listOf(
|
val locales = listOf(
|
||||||
Locale("en"),
|
Locale.forLanguageTag("en"),
|
||||||
Locale("ja"),
|
Locale.forLanguageTag("ja"),
|
||||||
Locale("zh"),
|
Locale.forLanguageTag("zh"),
|
||||||
Locale("es"),
|
Locale.forLanguageTag("es"),
|
||||||
Locale("ko"),
|
Locale.forLanguageTag("ko"),
|
||||||
Locale("ru"),
|
Locale.forLanguageTag("ru"),
|
||||||
Locale("fr"),
|
Locale.forLanguageTag("fr"),
|
||||||
Locale("pt"),
|
Locale.forLanguageTag("pt"),
|
||||||
Locale("th"),
|
Locale.forLanguageTag("th"),
|
||||||
Locale("de"),
|
Locale.forLanguageTag("de"),
|
||||||
Locale("it"),
|
Locale.forLanguageTag("it"),
|
||||||
Locale("vi"),
|
Locale.forLanguageTag("vi"),
|
||||||
Locale("pl"),
|
Locale.forLanguageTag("pl"),
|
||||||
Locale("hu"),
|
Locale.forLanguageTag("hu"),
|
||||||
Locale("nl"),
|
Locale.forLanguageTag("nl"),
|
||||||
)
|
)
|
||||||
Column {
|
Column {
|
||||||
FlowRow {
|
FlowRow {
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,6 @@ import android.graphics.Canvas
|
||||||
import android.graphics.Color
|
import android.graphics.Color
|
||||||
import android.graphics.Matrix
|
import android.graphics.Matrix
|
||||||
import android.graphics.Rect
|
import android.graphics.Rect
|
||||||
import android.graphics.drawable.ColorDrawable
|
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.graphics.drawable.GradientDrawable
|
import android.graphics.drawable.GradientDrawable
|
||||||
import android.os.Build
|
import android.os.Build
|
||||||
|
|
@ -19,6 +18,7 @@ import androidx.core.graphics.alpha
|
||||||
import androidx.core.graphics.applyCanvas
|
import androidx.core.graphics.applyCanvas
|
||||||
import androidx.core.graphics.blue
|
import androidx.core.graphics.blue
|
||||||
import androidx.core.graphics.createBitmap
|
import androidx.core.graphics.createBitmap
|
||||||
|
import androidx.core.graphics.drawable.toDrawable
|
||||||
import androidx.core.graphics.get
|
import androidx.core.graphics.get
|
||||||
import androidx.core.graphics.green
|
import androidx.core.graphics.green
|
||||||
import androidx.core.graphics.red
|
import androidx.core.graphics.red
|
||||||
|
|
@ -66,7 +66,7 @@ object ImageUtil {
|
||||||
Format.Webp -> ImageType.WEBP
|
Format.Webp -> ImageType.WEBP
|
||||||
else -> null
|
else -> null
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (_: Exception) {
|
||||||
null
|
null
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -88,7 +88,7 @@ object ImageUtil {
|
||||||
Format.Heif -> type.isAnimated && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
Format.Heif -> type.isAnimated && Build.VERSION.SDK_INT >= Build.VERSION_CODES.R
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
} catch (e: Exception) {
|
} catch (_: Exception) {
|
||||||
false
|
false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -386,9 +386,9 @@ object ImageUtil {
|
||||||
decoder?.recycle()
|
decoder?.recycle()
|
||||||
|
|
||||||
val whiteColor = Color.WHITE
|
val whiteColor = Color.WHITE
|
||||||
if (image == null) return ColorDrawable(whiteColor)
|
if (image == null) return whiteColor.toDrawable()
|
||||||
if (image.width < 50 || image.height < 50) {
|
if (image.width < 50 || image.height < 50) {
|
||||||
return ColorDrawable(whiteColor)
|
return whiteColor.toDrawable()
|
||||||
}
|
}
|
||||||
|
|
||||||
val top = 5
|
val top = 5
|
||||||
|
|
@ -429,7 +429,7 @@ object ImageUtil {
|
||||||
!color.isWhite() && color.isCloseTo(other)
|
!color.isWhite() && color.isCloseTo(other)
|
||||||
}
|
}
|
||||||
if (isNotWhiteAndCloseTo.all { it }) {
|
if (isNotWhiteAndCloseTo.all { it }) {
|
||||||
return ColorDrawable(topLeftPixel)
|
return topLeftPixel.toDrawable()
|
||||||
}
|
}
|
||||||
|
|
||||||
val cornerPixels = listOf(topLeftPixel, topRightPixel, botLeftPixel, botRightPixel)
|
val cornerPixels = listOf(topLeftPixel, topRightPixel, botLeftPixel, botRightPixel)
|
||||||
|
|
@ -544,8 +544,8 @@ object ImageUtil {
|
||||||
val isLandscape = context.resources.configuration?.orientation == Configuration.ORIENTATION_LANDSCAPE
|
val isLandscape = context.resources.configuration?.orientation == Configuration.ORIENTATION_LANDSCAPE
|
||||||
if (isLandscape) {
|
if (isLandscape) {
|
||||||
return when {
|
return when {
|
||||||
darkBG -> ColorDrawable(blackColor)
|
darkBG -> blackColor.toDrawable()
|
||||||
else -> ColorDrawable(whiteColor)
|
else -> whiteColor.toDrawable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -566,7 +566,7 @@ object ImageUtil {
|
||||||
intArrayOf(whiteColor, whiteColor, blackColor, blackColor)
|
intArrayOf(whiteColor, whiteColor, blackColor, blackColor)
|
||||||
}
|
}
|
||||||
darkBG -> {
|
darkBG -> {
|
||||||
return ColorDrawable(blackColor)
|
return blackColor.toDrawable()
|
||||||
}
|
}
|
||||||
topIsBlackStreak ||
|
topIsBlackStreak ||
|
||||||
(
|
(
|
||||||
|
|
@ -585,7 +585,7 @@ object ImageUtil {
|
||||||
intArrayOf(whiteColor, whiteColor, blackColor, blackColor)
|
intArrayOf(whiteColor, whiteColor, blackColor, blackColor)
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
return ColorDrawable(whiteColor)
|
return whiteColor.toDrawable()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -772,7 +772,7 @@ object ImageUtil {
|
||||||
|
|
||||||
val maxHeight = max(height, height2)
|
val maxHeight = max(height, height2)
|
||||||
|
|
||||||
val result = Bitmap.createBitmap(width + width2 + centerMargin, max(height, height2), Bitmap.Config.ARGB_8888)
|
val result = createBitmap(width + width2 + centerMargin, max(height, height2))
|
||||||
val canvas = Canvas(result)
|
val canvas = Canvas(result)
|
||||||
canvas.drawColor(background)
|
canvas.drawColor(background)
|
||||||
val upperPart = Rect(
|
val upperPart = Rect(
|
||||||
|
|
|
||||||
|
|
@ -1,298 +0,0 @@
|
||||||
package com.murgupluoglu.flagkit
|
|
||||||
|
|
||||||
import android.content.Context
|
|
||||||
import android.content.res.Resources
|
|
||||||
import android.graphics.drawable.Drawable
|
|
||||||
import androidx.core.content.ContextCompat
|
|
||||||
import java.util.Locale
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Created by Mustafa Ürgüplüoğlu on 06.01.2021.
|
|
||||||
* Copyright © 2021 Mustafa Ürgüplüoğlu. All rights reserved.
|
|
||||||
*/
|
|
||||||
|
|
||||||
object FlagKit {
|
|
||||||
|
|
||||||
fun getResId(context: Context, flagName: String): Int {
|
|
||||||
return context.resources.getIdentifier(fixResId(flagName), "drawable", context.packageName)
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getDrawable(context: Context, flagName: String): Drawable? {
|
|
||||||
val resourceId =
|
|
||||||
context.resources.getIdentifier(fixResId(flagName), "drawable", context.packageName)
|
|
||||||
return try {
|
|
||||||
ContextCompat.getDrawable(context, resourceId)!!
|
|
||||||
} catch (e: Resources.NotFoundException) {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun fixResId(resId: String): String {
|
|
||||||
var resourceId = resId.lowercase(Locale.ENGLISH)
|
|
||||||
|
|
||||||
// do is not a valid resource name (reserved Java keyword)
|
|
||||||
if (resourceId == "do") {
|
|
||||||
resourceId = "do_"
|
|
||||||
}
|
|
||||||
return resourceId
|
|
||||||
}
|
|
||||||
|
|
||||||
fun getAllAvailableCodes(): List<String> {
|
|
||||||
return listOf(
|
|
||||||
"ad",
|
|
||||||
"ae",
|
|
||||||
"af",
|
|
||||||
"ag",
|
|
||||||
"ai",
|
|
||||||
"al",
|
|
||||||
"am",
|
|
||||||
"ao",
|
|
||||||
"ar",
|
|
||||||
"as",
|
|
||||||
"at",
|
|
||||||
"au",
|
|
||||||
"aw",
|
|
||||||
"ax",
|
|
||||||
"az",
|
|
||||||
"ba",
|
|
||||||
"bb",
|
|
||||||
"bd",
|
|
||||||
"be",
|
|
||||||
"bf",
|
|
||||||
"bg",
|
|
||||||
"bh",
|
|
||||||
"bi",
|
|
||||||
"bj",
|
|
||||||
"bl",
|
|
||||||
"bm",
|
|
||||||
"bn",
|
|
||||||
"bo",
|
|
||||||
"br",
|
|
||||||
"bs",
|
|
||||||
"bt",
|
|
||||||
"bv",
|
|
||||||
"bw",
|
|
||||||
"by",
|
|
||||||
"bz",
|
|
||||||
"ca",
|
|
||||||
"cc",
|
|
||||||
"cd",
|
|
||||||
"cf",
|
|
||||||
"cg",
|
|
||||||
"ch",
|
|
||||||
"ci",
|
|
||||||
"ck",
|
|
||||||
"cl",
|
|
||||||
"cm",
|
|
||||||
"cn",
|
|
||||||
"co",
|
|
||||||
"cr",
|
|
||||||
"cu",
|
|
||||||
"cv",
|
|
||||||
"cw",
|
|
||||||
"cx",
|
|
||||||
"cy",
|
|
||||||
"cz",
|
|
||||||
"de",
|
|
||||||
"dj",
|
|
||||||
"dk",
|
|
||||||
"dm",
|
|
||||||
"do",
|
|
||||||
"dz",
|
|
||||||
"ec",
|
|
||||||
"ee",
|
|
||||||
"eg",
|
|
||||||
"er",
|
|
||||||
"es",
|
|
||||||
"et",
|
|
||||||
"eu",
|
|
||||||
"fi",
|
|
||||||
"fj",
|
|
||||||
"fk",
|
|
||||||
"fm",
|
|
||||||
"fo",
|
|
||||||
"fr",
|
|
||||||
"ga",
|
|
||||||
"gb",
|
|
||||||
"gb_eng",
|
|
||||||
"gb_nir",
|
|
||||||
"gb_sct",
|
|
||||||
"gb_wls",
|
|
||||||
"gb_zet",
|
|
||||||
"gd",
|
|
||||||
"ge",
|
|
||||||
"gf",
|
|
||||||
"gg",
|
|
||||||
"gh",
|
|
||||||
"gi",
|
|
||||||
"gl",
|
|
||||||
"gm",
|
|
||||||
"gn",
|
|
||||||
"gp",
|
|
||||||
"gq",
|
|
||||||
"gr",
|
|
||||||
"gs",
|
|
||||||
"gt",
|
|
||||||
"gu",
|
|
||||||
"gw",
|
|
||||||
"gy",
|
|
||||||
"hk",
|
|
||||||
"hm",
|
|
||||||
"hn",
|
|
||||||
"hr",
|
|
||||||
"ht",
|
|
||||||
"hu",
|
|
||||||
"id",
|
|
||||||
"ie",
|
|
||||||
"il",
|
|
||||||
"im",
|
|
||||||
"in",
|
|
||||||
"io",
|
|
||||||
"iq",
|
|
||||||
"ir",
|
|
||||||
"is",
|
|
||||||
"it",
|
|
||||||
"je",
|
|
||||||
"jm",
|
|
||||||
"jo",
|
|
||||||
"jp",
|
|
||||||
"ke",
|
|
||||||
"kg",
|
|
||||||
"kh",
|
|
||||||
"ki",
|
|
||||||
"km",
|
|
||||||
"kn",
|
|
||||||
"kp",
|
|
||||||
"kr",
|
|
||||||
"kw",
|
|
||||||
"ky",
|
|
||||||
"kz",
|
|
||||||
"la",
|
|
||||||
"lb",
|
|
||||||
"lc",
|
|
||||||
"li",
|
|
||||||
"lk",
|
|
||||||
"lr",
|
|
||||||
"ls",
|
|
||||||
"lt",
|
|
||||||
"lu",
|
|
||||||
"lv",
|
|
||||||
"ly",
|
|
||||||
"ma",
|
|
||||||
"mc",
|
|
||||||
"md",
|
|
||||||
"me",
|
|
||||||
"mf",
|
|
||||||
"mg",
|
|
||||||
"mh",
|
|
||||||
"mk",
|
|
||||||
"ml",
|
|
||||||
"mm",
|
|
||||||
"mn",
|
|
||||||
"mo",
|
|
||||||
"mp",
|
|
||||||
"mq",
|
|
||||||
"mr",
|
|
||||||
"ms",
|
|
||||||
"mt",
|
|
||||||
"mu",
|
|
||||||
"mv",
|
|
||||||
"mw",
|
|
||||||
"mx",
|
|
||||||
"my",
|
|
||||||
"mz",
|
|
||||||
"na",
|
|
||||||
"nc",
|
|
||||||
"ne",
|
|
||||||
"nf",
|
|
||||||
"ng",
|
|
||||||
"ni",
|
|
||||||
"nl",
|
|
||||||
"no",
|
|
||||||
"np",
|
|
||||||
"nr",
|
|
||||||
"nu",
|
|
||||||
"nz",
|
|
||||||
"om",
|
|
||||||
"pa",
|
|
||||||
"pe",
|
|
||||||
"pf",
|
|
||||||
"pg",
|
|
||||||
"ph",
|
|
||||||
"pk",
|
|
||||||
"pl",
|
|
||||||
"pm",
|
|
||||||
"pn",
|
|
||||||
"pr",
|
|
||||||
"ps",
|
|
||||||
"pt",
|
|
||||||
"pw",
|
|
||||||
"py",
|
|
||||||
"qa",
|
|
||||||
"re",
|
|
||||||
"ro",
|
|
||||||
"rs",
|
|
||||||
"ru",
|
|
||||||
"rw",
|
|
||||||
"sa",
|
|
||||||
"sb",
|
|
||||||
"sc",
|
|
||||||
"sd",
|
|
||||||
"se",
|
|
||||||
"sg",
|
|
||||||
"sh",
|
|
||||||
"si",
|
|
||||||
"sj",
|
|
||||||
"sk",
|
|
||||||
"sl",
|
|
||||||
"sm",
|
|
||||||
"sn",
|
|
||||||
"so",
|
|
||||||
"sr",
|
|
||||||
"ss",
|
|
||||||
"st",
|
|
||||||
"sv",
|
|
||||||
"sx",
|
|
||||||
"sy",
|
|
||||||
"sz",
|
|
||||||
"tc",
|
|
||||||
"td",
|
|
||||||
"tf",
|
|
||||||
"tg",
|
|
||||||
"th",
|
|
||||||
"tj",
|
|
||||||
"tk",
|
|
||||||
"tl",
|
|
||||||
"tm",
|
|
||||||
"tn",
|
|
||||||
"to",
|
|
||||||
"tr",
|
|
||||||
"tt",
|
|
||||||
"tv",
|
|
||||||
"tw",
|
|
||||||
"tz",
|
|
||||||
"ua",
|
|
||||||
"ug",
|
|
||||||
"um",
|
|
||||||
"us",
|
|
||||||
"us_ca",
|
|
||||||
"uy",
|
|
||||||
"uz",
|
|
||||||
"va",
|
|
||||||
"vc",
|
|
||||||
"ve",
|
|
||||||
"vg",
|
|
||||||
"vi",
|
|
||||||
"vn",
|
|
||||||
"vu",
|
|
||||||
"wf",
|
|
||||||
"ws",
|
|
||||||
"xk",
|
|
||||||
"ye",
|
|
||||||
"yt",
|
|
||||||
"za",
|
|
||||||
"zm",
|
|
||||||
"zw",
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue