diff --git a/app/src/main/java/com/hbb20/androidcountrypicker/compose/ComposeDemoActivity.kt b/app/src/main/java/com/hbb20/androidcountrypicker/compose/ComposeDemoActivity.kt
index 97f7cdb..af3c7c9 100644
--- a/app/src/main/java/com/hbb20/androidcountrypicker/compose/ComposeDemoActivity.kt
+++ b/app/src/main/java/com/hbb20/androidcountrypicker/compose/ComposeDemoActivity.kt
@@ -36,6 +36,7 @@ import androidx.compose.ui.text.input.KeyboardType
import androidx.compose.ui.tooling.preview.Preview
import androidx.compose.ui.unit.dp
import com.hbb20.androidcountrypicker.R
+import com.hbb20.androidcountrypicker.compose.theme.DemoTheme
import com.hbb20.contrypicker.flagpack1.FlagPack1
import com.hbb20.countrypicker.compose.CountryFlagLayout
import com.hbb20.countrypicker.compose.CountryPicker
@@ -51,7 +52,7 @@ class ComposeDemoActivity : ComponentActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent {
- MaterialTheme {
+ DemoTheme {
// A surface container using the 'background' color from the theme
Surface(
modifier = Modifier.fillMaxSize(),
@@ -157,13 +158,22 @@ class ComposeDemoActivity : ComponentActivity() {
flagProvider = CPFlagImageProvider(
// map of alpha2 to drawable resource id
alpha2ToFlag = mapOf(
- "IN" to R.drawable.ic_flag,
- "US" to R.drawable.ic_flag,
- "GB" to R.drawable.ic_flag,
+ "IN" to R.drawable.ic_flag_green_outlint,
+ "gb" to R.drawable.ic_flag_yellow,
+ "US" to R.drawable.ic_flag_blue,
),
// drawable resource id for missing flag
missingFlagPlaceHolder = R.drawable.ic_flag
- )
+ ),
+ pickerDialog = { cpDataStore, flagProvider, onDismissRequest, onCountrySelected ->
+ CountryPickerDialog(
+ cpDataStore = cpDataStore,
+ flagProvider = flagProvider,
+ onDismissRequest = onDismissRequest,
+ onCountrySelected = onCountrySelected,
+ quickAccessCountries = listOf("IN", "us", "GB"),
+ )
+ }
) {
setCountryCode(it?.alpha2)
}
@@ -215,7 +225,7 @@ class ComposeDemoActivity : ComponentActivity() {
)
}
- if(showPickerDialog){
+ if (showPickerDialog) {
CountryPickerDialog(
cpDataStore = cpDataStore,
flagProvider = flagProvider,
@@ -359,21 +369,24 @@ class ComposeDemoActivity : ComponentActivity() {
modifier = Modifier
.fillMaxWidth()
.background(MaterialTheme.colors.surface)
- .padding(16.dp)
+ .padding(16.dp),
+ backgroundColor = MaterialTheme.colors.surface
) {
- Column(modifier = Modifier.padding(16.dp)) {
- Text(
- text = title,
- style = MaterialTheme.typography.subtitle1,
- color = Color.Black
- )
- Text(
- text = body,
- style = MaterialTheme.typography.body2,
- color = Color.DarkGray
- )
- Spacer(modifier = Modifier.padding(8.dp))
- countryPickerLayout()
+ Surface(color = MaterialTheme.colors.surface) {
+ Column(modifier = Modifier.padding(16.dp)) {
+ Text(
+ text = title,
+ style = MaterialTheme.typography.subtitle1,
+ color = MaterialTheme.colors.onSurface
+ )
+ Text(
+ text = body,
+ style = MaterialTheme.typography.body2,
+ color = MaterialTheme.colors.onSurface
+ )
+ Spacer(modifier = Modifier.padding(8.dp))
+ countryPickerLayout()
+ }
}
}
}
diff --git a/app/src/main/java/com/hbb20/androidcountrypicker/compose/theme/Colors.kt b/app/src/main/java/com/hbb20/androidcountrypicker/compose/theme/Colors.kt
new file mode 100644
index 0000000..589665b
--- /dev/null
+++ b/app/src/main/java/com/hbb20/androidcountrypicker/compose/theme/Colors.kt
@@ -0,0 +1,50 @@
+package com.hbb20.androidcountrypicker.compose.theme
+
+import androidx.compose.foundation.isSystemInDarkTheme
+import androidx.compose.material.MaterialTheme
+import androidx.compose.material.darkColors
+import androidx.compose.material.lightColors
+import androidx.compose.runtime.Composable
+import androidx.compose.ui.graphics.Color
+
+
+@Composable
+fun DemoTheme(
+ darkTheme: Boolean = isSystemInDarkTheme(),
+ content: @Composable () -> Unit
+) {
+ MaterialTheme(
+ colors = if (darkTheme) darkThemeColors else lightThemeColors,
+ content = content
+ )
+}
+
+val lightThemeColors = lightColors(
+ primary = Color(0xFF008577),
+ primaryVariant = Color(0xFF00574B),
+ secondary = Color(0xFF3F51B5),
+ secondaryVariant = Color(0xFF3F51B5),
+ onPrimary = Color(0xFFFFFFFF),
+ onSecondary = Color(0xFFFFFFFF),
+ error = Color(0xFFED5933),
+ onError = Color(0xFFFFFFFF),
+ background = Color(0xFFF4F4F7),
+ onBackground = Color(0xFF000000),
+ surface = Color(0xFFFFFFFF),
+ onSurface = Color(0xFF000000)
+)
+
+val darkThemeColors = darkColors(
+ primary = Color(0xFF00E0C9),
+ primaryVariant = Color(0xFF00C7AB),
+ secondary = Color(0xFF3F51B5),
+ secondaryVariant = Color(0xFF3F51B5),
+ onPrimary = Color(0xFFFFFFFF),
+ onSecondary = Color(0xFFFFFFFF),
+ error = Color(0xFFED5933),
+ onError = Color(0xFFFFFFFF),
+ background = Color(0xFF000000),
+ onBackground = Color(0xFFFAFAFC),
+ surface = Color(0xFF292B2E),
+ onSurface = Color(0xFFFAFAFC)
+)
diff --git a/app/src/main/res/drawable/ic_flag_blue.xml b/app/src/main/res/drawable/ic_flag_blue.xml
new file mode 100644
index 0000000..4ea8b2e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag_blue.xml
@@ -0,0 +1,6 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_flag_green_outlint.xml b/app/src/main/res/drawable/ic_flag_green_outlint.xml
new file mode 100644
index 0000000..5dd8f92
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag_green_outlint.xml
@@ -0,0 +1,12 @@
+
+
+
+
+
diff --git a/app/src/main/res/drawable/ic_flag_yellow.xml b/app/src/main/res/drawable/ic_flag_yellow.xml
new file mode 100644
index 0000000..2198d8c
--- /dev/null
+++ b/app/src/main/res/drawable/ic_flag_yellow.xml
@@ -0,0 +1,10 @@
+
+
+
diff --git a/countrypicker/src/main/java/com/hbb20/countrypicker/compose/CountryPickerComposable.kt b/countrypicker/src/main/java/com/hbb20/countrypicker/compose/CountryPickerComposable.kt
index a3eadb3..15cb1f3 100644
--- a/countrypicker/src/main/java/com/hbb20/countrypicker/compose/CountryPickerComposable.kt
+++ b/countrypicker/src/main/java/com/hbb20/countrypicker/compose/CountryPickerComposable.kt
@@ -351,6 +351,7 @@ private fun DefaultCountryPickerDialogContent(
.fillMaxWidth(0.8f)
.padding(16.dp),
shape = RoundedCornerShape(16.dp),
+ backgroundColor = MaterialTheme.colors.surface,
) {
val countryList = remember(cpDataStore) {
cpDataStore.countryList
@@ -439,7 +440,7 @@ private fun DefaultSearchField(
BasicTextField(
value = searchQuery,
onValueChange = { setSearchQuery(it) },
- textStyle = MaterialTheme.typography.body1,
+ textStyle = MaterialTheme.typography.body1.copy(color = MaterialTheme.colors.onSurface),
cursorBrush = SolidColor(
TextFieldDefaults.outlinedTextFieldColors()
.cursorColor(isError = false).value
diff --git a/countrypicker/src/main/java/com/hbb20/countrypicker/flagprovider/CPFlagProvider.kt b/countrypicker/src/main/java/com/hbb20/countrypicker/flagprovider/CPFlagProvider.kt
index 6d4c9a2..fd9b2ad 100644
--- a/countrypicker/src/main/java/com/hbb20/countrypicker/flagprovider/CPFlagProvider.kt
+++ b/countrypicker/src/main/java/com/hbb20/countrypicker/flagprovider/CPFlagProvider.kt
@@ -1,6 +1,7 @@
package com.hbb20.countrypicker.flagprovider
import androidx.annotation.DrawableRes
+import java.util.Locale
abstract class CPFlagProvider
@@ -18,14 +19,17 @@ class DefaultEmojiFlagProvider(val useEmojiCompat: Boolean = false) : CPFlagProv
* other flags in this pack to maintain visual symmetry.
*/
class CPFlagImageProvider(
- val alpha2ToFlag: Map,
+ alpha2ToFlag: Map,
@DrawableRes val missingFlagPlaceHolder: Int
) : CPFlagProvider() {
+ private val flagMap = alpha2ToFlag.map { it.key.uppercase(Locale.ENGLISH) to it.value }.toMap()
@DrawableRes
fun getFlag(alpha2Code: String): Int {
- return alpha2ToFlag.getOrElse(
- getNormalizedAlpha2ForFlag(alpha2Code)
+ val upperCaseAlpha2Code = alpha2Code.uppercase(Locale.ENGLISH)
+ val flag = flagMap[upperCaseAlpha2Code]
+ return flag ?: flagMap.getOrElse(
+ getNormalizedAlpha2ForFlag(upperCaseAlpha2Code)
) { missingFlagPlaceHolder }
}
@@ -35,12 +39,12 @@ class CPFlagImageProvider(
* This function will convert "UM" to "US"
*/
private fun getNormalizedAlpha2ForFlag(alpha2Code: String): String {
- return when (alpha2Code.toLowerCase()) {
- "um" -> "us"
- "sj" -> "no"
- "bv" -> "no"
- "hm" -> "au"
- else -> alpha2Code.toLowerCase()
+ return when (alpha2Code.uppercase(Locale.ENGLISH)) {
+ "UM" -> "US"
+ "SJ" -> "NO"
+ "BV" -> "NO"
+ "HM" -> "AU"
+ else -> alpha2Code.uppercase(Locale.ENGLISH)
}
}
}
diff --git a/countrypicker/src/main/java/com/hbb20/countrypicker/models/CPLanguage.kt b/countrypicker/src/main/java/com/hbb20/countrypicker/models/CPLanguage.kt
index 4724e40..a2ab75c 100644
--- a/countrypicker/src/main/java/com/hbb20/countrypicker/models/CPLanguage.kt
+++ b/countrypicker/src/main/java/com/hbb20/countrypicker/models/CPLanguage.kt
@@ -40,5 +40,5 @@ enum class CPLanguage(
UZBEK("uz"),
VIETNAMESE("vi");
- val translationFileName: String by lazy { "cp_${name.toLowerCase(Locale.ROOT)}.xml" }
+ val translationFileName: String by lazy { "cp_${name.lowercase(Locale.ROOT)}.xml" }
}
diff --git a/countrypicker/src/main/java/com/hbb20/countrypicker/view/CPViewHelper.kt b/countrypicker/src/main/java/com/hbb20/countrypicker/view/CPViewHelper.kt
index d53ee55..cbb215d 100644
--- a/countrypicker/src/main/java/com/hbb20/countrypicker/view/CPViewHelper.kt
+++ b/countrypicker/src/main/java/com/hbb20/countrypicker/view/CPViewHelper.kt
@@ -77,7 +77,7 @@ class CPViewHelper(
val detectedAlpha2 =
if (isInEditMode) "US" else countryDetector.detectCountry(countryDetectSources)
val detectedCountry = cpDataStore.countryList.firstOrNull {
- it.alpha2.toLowerCase(Locale.ROOT) == detectedAlpha2?.toLowerCase(
+ it.alpha2.lowercase(Locale.ROOT) == detectedAlpha2?.lowercase(
Locale.ROOT
)
}