浏览代码

Worked on modal bottom sheet for country along with its timezone

Khubaib 4 月之前
父节点
当前提交
a6527c4526
共有 100 个文件被更改,包括 719 次插入229 次删除
  1. 2 2
      .idea/deploymentTargetSelector.xml
  2. 1 0
      app/build.gradle.kts
  3. 7 0
      app/src/main/java/com/fastest/pass/home/domain/model/CountryInfoCode.kt
  4. 395 195
      app/src/main/java/com/fastest/pass/home/domain/model/CountryInfoList.kt
  5. 300 32
      app/src/main/java/com/fastest/pass/home/presentation/ui/components/AddContactInfoScreen.kt
  6. 14 0
      app/src/main/java/com/fastest/pass/home/utils/GetDrawable.kt
  7. 二进制
      app/src/main/res/drawable/ad.png
  8. 二进制
      app/src/main/res/drawable/ae.png
  9. 二进制
      app/src/main/res/drawable/af.png
  10. 二进制
      app/src/main/res/drawable/ag.png
  11. 二进制
      app/src/main/res/drawable/ai.png
  12. 二进制
      app/src/main/res/drawable/al.png
  13. 二进制
      app/src/main/res/drawable/am.png
  14. 二进制
      app/src/main/res/drawable/ao.png
  15. 二进制
      app/src/main/res/drawable/aq.png
  16. 二进制
      app/src/main/res/drawable/ar.png
  17. 二进制
      app/src/main/res/drawable/as.png
  18. 二进制
      app/src/main/res/drawable/at.png
  19. 二进制
      app/src/main/res/drawable/au.png
  20. 二进制
      app/src/main/res/drawable/aw.png
  21. 二进制
      app/src/main/res/drawable/ax.png
  22. 二进制
      app/src/main/res/drawable/az.png
  23. 二进制
      app/src/main/res/drawable/ba.png
  24. 二进制
      app/src/main/res/drawable/bb.png
  25. 二进制
      app/src/main/res/drawable/bd.png
  26. 二进制
      app/src/main/res/drawable/be.png
  27. 二进制
      app/src/main/res/drawable/bf.png
  28. 二进制
      app/src/main/res/drawable/bg.png
  29. 二进制
      app/src/main/res/drawable/bh.png
  30. 二进制
      app/src/main/res/drawable/bi.png
  31. 二进制
      app/src/main/res/drawable/bj.png
  32. 二进制
      app/src/main/res/drawable/bl.png
  33. 二进制
      app/src/main/res/drawable/bm.png
  34. 二进制
      app/src/main/res/drawable/bn.png
  35. 二进制
      app/src/main/res/drawable/bo.png
  36. 二进制
      app/src/main/res/drawable/bq.png
  37. 二进制
      app/src/main/res/drawable/br.png
  38. 二进制
      app/src/main/res/drawable/brl.png
  39. 二进制
      app/src/main/res/drawable/bs.png
  40. 二进制
      app/src/main/res/drawable/bt.png
  41. 二进制
      app/src/main/res/drawable/bv.png
  42. 二进制
      app/src/main/res/drawable/bw.png
  43. 二进制
      app/src/main/res/drawable/by.png
  44. 二进制
      app/src/main/res/drawable/bz.png
  45. 二进制
      app/src/main/res/drawable/ca.png
  46. 二进制
      app/src/main/res/drawable/cc.png
  47. 二进制
      app/src/main/res/drawable/cd.png
  48. 二进制
      app/src/main/res/drawable/cf.png
  49. 二进制
      app/src/main/res/drawable/cg.png
  50. 二进制
      app/src/main/res/drawable/ch.png
  51. 二进制
      app/src/main/res/drawable/ci.png
  52. 二进制
      app/src/main/res/drawable/ck.png
  53. 二进制
      app/src/main/res/drawable/cl.png
  54. 二进制
      app/src/main/res/drawable/cm.png
  55. 二进制
      app/src/main/res/drawable/cn.png
  56. 二进制
      app/src/main/res/drawable/co.png
  57. 二进制
      app/src/main/res/drawable/cr.png
  58. 二进制
      app/src/main/res/drawable/cu.png
  59. 二进制
      app/src/main/res/drawable/cv.png
  60. 二进制
      app/src/main/res/drawable/cw.png
  61. 二进制
      app/src/main/res/drawable/cx.png
  62. 二进制
      app/src/main/res/drawable/cy.png
  63. 二进制
      app/src/main/res/drawable/cz.png
  64. 二进制
      app/src/main/res/drawable/de.png
  65. 二进制
      app/src/main/res/drawable/dj.png
  66. 二进制
      app/src/main/res/drawable/dk.png
  67. 二进制
      app/src/main/res/drawable/dm.png
  68. 二进制
      app/src/main/res/drawable/dor.png
  69. 二进制
      app/src/main/res/drawable/dz.png
  70. 二进制
      app/src/main/res/drawable/ec.png
  71. 二进制
      app/src/main/res/drawable/ee.png
  72. 二进制
      app/src/main/res/drawable/eg.png
  73. 二进制
      app/src/main/res/drawable/eh.png
  74. 二进制
      app/src/main/res/drawable/eo.png
  75. 二进制
      app/src/main/res/drawable/er.png
  76. 二进制
      app/src/main/res/drawable/es.png
  77. 二进制
      app/src/main/res/drawable/et.png
  78. 二进制
      app/src/main/res/drawable/eu.png
  79. 二进制
      app/src/main/res/drawable/fi.png
  80. 二进制
      app/src/main/res/drawable/fj.png
  81. 二进制
      app/src/main/res/drawable/fk.png
  82. 二进制
      app/src/main/res/drawable/fm.png
  83. 二进制
      app/src/main/res/drawable/fo.png
  84. 二进制
      app/src/main/res/drawable/fr.png
  85. 二进制
      app/src/main/res/drawable/ga.png
  86. 二进制
      app/src/main/res/drawable/gb.png
  87. 二进制
      app/src/main/res/drawable/gd.png
  88. 二进制
      app/src/main/res/drawable/ge.png
  89. 二进制
      app/src/main/res/drawable/gf.png
  90. 二进制
      app/src/main/res/drawable/gg.png
  91. 二进制
      app/src/main/res/drawable/gh.png
  92. 二进制
      app/src/main/res/drawable/gi.png
  93. 二进制
      app/src/main/res/drawable/gl.png
  94. 二进制
      app/src/main/res/drawable/gm.png
  95. 二进制
      app/src/main/res/drawable/gn.png
  96. 二进制
      app/src/main/res/drawable/gp.png
  97. 二进制
      app/src/main/res/drawable/gq.png
  98. 二进制
      app/src/main/res/drawable/gr.png
  99. 二进制
      app/src/main/res/drawable/gs.png
  100. 0 0
      app/src/main/res/drawable/gt.png

+ 2 - 2
.idea/deploymentTargetSelector.xml

@@ -4,10 +4,10 @@
     <selectionStates>
       <SelectionState runConfigName="app">
         <option name="selectionMode" value="DROPDOWN" />
-        <DropdownSelection timestamp="2024-12-18T15:37:26.802152740Z">
+        <DropdownSelection timestamp="2024-12-18T15:40:16.430600454Z">
           <Target type="DEFAULT_BOOT">
             <handle>
-              <DeviceId pluginId="LocalEmulator" identifier="path=/home/ubuntu/.android/avd/Small_Phone_API_25.avd" />
+              <DeviceId pluginId="PhysicalDevice" identifier="serial=1C051FDF60048Z" />
             </handle>
           </Target>
         </DropdownSelection>

+ 1 - 0
app/build.gradle.kts

@@ -79,6 +79,7 @@ dependencies {
     implementation(libs.accompanist.pager)
     implementation(libs.accompanist.pager.indicators)
 
+    implementation(libs.ccp)
 
     testImplementation(libs.junit)
     androidTestImplementation(libs.androidx.junit)

+ 7 - 0
app/src/main/java/com/fastest/pass/home/domain/model/CountryInfoCode.kt

@@ -0,0 +1,7 @@
+package com.fastest.pass.home.domain.model
+
+data class CountryInfoCode(
+    val name: String,
+    val code: String,
+    val flag: String
+)

+ 395 - 195
app/src/main/java/com/fastest/pass/home/domain/model/CountryInfoList.kt

@@ -1,199 +1,399 @@
 package com.fastest.pass.home.domain.model
 
 val countryInfoList = listOf(
-    CountryInfo("Afghanistan", "🇦🇫", "GMT+04:30 (Asia/Kabul)"),
-    CountryInfo("Albania", "🇦🇱", "GMT+01:00 (Europe/Tirane)"),
-    CountryInfo("Algeria", "🇩🇿", "GMT+01:00 (Africa/Algiers)"),
-    CountryInfo("Andorra", "🇦🇩", "GMT+01:00 (Europe/Andorra)"),
-    CountryInfo("Angola", "🇦🇴", "GMT+01:00 (Africa/Luanda)"),
-    CountryInfo("Antigua and Barbuda", "🇦🇬", "GMT-04:00 (America/Antigua)"),
-    CountryInfo("Argentina", "🇦🇷", "GMT-03:00 (America/Argentina/Buenos_Aires)"),
-    CountryInfo("Armenia", "🇦🇲", "GMT+04:00 (Asia/Yerevan)"),
-    CountryInfo("Australia", "🇦🇺", "GMT+10:00 (Australia/Sydney)"),
-    CountryInfo("Austria", "🇦🇹", "GMT+01:00 (Europe/Vienna)"),
-    CountryInfo("Azerbaijan", "🇦🇿", "GMT+04:00 (Asia/Baku)"),
-    CountryInfo("Bahamas", "🇧🇸", "GMT-05:00 (America/Nassau)"),
-    CountryInfo("Bahrain", "🇧🇭", "GMT+03:00 (Asia/Bahrain)"),
-    CountryInfo("Bangladesh", "🇧🇩", "GMT+06:00 (Asia/Dhaka)"),
-    CountryInfo("Barbados", "🇧🇧", "GMT-04:00 (America/Barbados)"),
-    CountryInfo("Belarus", "🇧🇾", "GMT+03:00 (Europe/Minsk)"),
-    CountryInfo("Belgium", "🇧🇪", "GMT+01:00 (Europe/Brussels)"),
-    CountryInfo("Belize", "🇧🇿", "GMT-06:00 (America/Belize)"),
-    CountryInfo("Benin", "🇧🇯", "GMT+01:00 (Africa/Porto-Novo)"),
-    CountryInfo("Bhutan", "🇧🇹", "GMT+06:00 (Asia/Thimphu)"),
-    CountryInfo("Bolivia", "🇧🇴", "GMT-04:00 (America/La_Paz)"),
-    CountryInfo("Bosnia and Herzegovina", "🇧🇦", "GMT+01:00 (Europe/Sarajevo)"),
-    CountryInfo("Botswana", "🇧🇼", "GMT+02:00 (Africa/Gaborone)"),
-    CountryInfo("Brazil", "🇧🇷", "GMT-03:00 (America/Sao_Paulo)"),
-    CountryInfo("Brunei", "🇧🇳", "GMT+08:00 (Asia/Brunei)"),
-    CountryInfo("Bulgaria", "🇧🇬", "GMT+02:00 (Europe/Sofia)"),
-    CountryInfo("Burkina Faso", "🇧🇫", "GMT+00:00 (Africa/Ouagadougou)"),
-    CountryInfo("Burundi", "🇧🇮", "GMT+02:00 (Africa/Bujumbura)"),
-    CountryInfo("Cabo Verde", "🇨🇻", "GMT-01:00 (Atlantic/Cape_Verde)"),
-    CountryInfo("Cambodia", "🇰🇭", "GMT+07:00 (Asia/Phnom_Penh)"),
-    CountryInfo("Cameroon", "🇨🇲", "GMT+01:00 (Africa/Douala)"),
-    CountryInfo("Canada", "🇨🇦", "GMT-05:00 (America/Toronto)"),
-    CountryInfo("Central African Republic", "🇨🇫", "GMT+01:00 (Africa/Bangui)"),
-    CountryInfo("Chad", "🇹🇩", "GMT+01:00 (Africa/N'Djamena)"),
-    CountryInfo("Chile", "🇨🇱", "GMT-04:00 (America/Santiago)"),
-    CountryInfo("China", "🇨🇳", "GMT+08:00 (Asia/Shanghai)"),
-    CountryInfo("Colombia", "🇨🇴", "GMT-05:00 (America/Bogota)"),
-    CountryInfo("Comoros", "🇰🇲", "GMT+03:00 (Indian/Comoro)"),
-    CountryInfo("Congo (Congo-Brazzaville)", "🇨🇬", "GMT+01:00 (Africa/Brazzaville)"),
-    CountryInfo("Congo (Democratic Republic)", "🇨🇩", "GMT+01:00 (Africa/Kinshasa)"),
-    CountryInfo("Costa Rica", "🇨🇷", "GMT-06:00 (America/Costa_Rica)"),
-    CountryInfo("Croatia", "🇭🇷", "GMT+01:00 (Europe/Zagreb)"),
-    CountryInfo("Cuba", "🇨🇺", "GMT-05:00 (America/Havana)"),
-    CountryInfo("Cyprus", "🇨🇾", "GMT+02:00 (Asia/Nicosia)"),
-    CountryInfo("Czech Republic", "🇨🇿", "GMT+01:00 (Europe/Prague)"),
-    CountryInfo("Denmark", "🇩🇰", "GMT+01:00 (Europe/Copenhagen)"),
-    CountryInfo("Djibouti", "🇩🇯", "GMT+03:00 (Africa/Djibouti)"),
-    CountryInfo("Dominica", "🇩🇲", "GMT-04:00 (America/Dominica)"),
-    CountryInfo("Dominican Republic", "🇩🇴", "GMT-04:00 (America/Santo_Domingo)"),
-    CountryInfo("Ecuador", "🇪🇨", "GMT-05:00 (America/Guayaquil)"),
-    CountryInfo("Egypt", "🇪🇬", "GMT+02:00 (Africa/Cairo)"),
-    CountryInfo("El Salvador", "🇸🇻", "GMT-06:00 (America/El_Salvador)"),
-    CountryInfo("Equatorial Guinea", "🇬🇶", "GMT+01:00 (Africa/Malabo)"),
-    CountryInfo("Eritrea", "🇪🇷", "GMT+03:00 (Africa/Asmara)"),
-    CountryInfo("Estonia", "🇪🇪", "GMT+02:00 (Europe/Tallinn)"),
-    CountryInfo("Eswatini", "🇸🇿", "GMT+02:00 (Africa/Mbabane)"),
-    CountryInfo("Ethiopia", "🇪🇹", "GMT+03:00 (Africa/Addis_Ababa)"),
-    CountryInfo("Fiji", "🇫🇯", "GMT+12:00 (Pacific/Fiji)"),
-    CountryInfo("Finland", "🇫🇮", "GMT+02:00 (Europe/Helsinki)"),
-    CountryInfo("France", "🇫🇷", "GMT+01:00 (Europe/Paris)"),
-    CountryInfo("Gabon", "🇬🇦", "GMT+01:00 (Africa/Libreville)"),
-    CountryInfo("Gambia", "🇬🇲", "GMT+00:00 (Africa/Banjul)"),
-    CountryInfo("Georgia", "🇬🇪", "GMT+04:00 (Asia/Tbilisi)"),
-    CountryInfo("Germany", "🇩🇪", "GMT+01:00 (Europe/Berlin)"),
-    CountryInfo("Ghana", "🇬🇭", "GMT+00:00 (Africa/Accra)"),
-    CountryInfo("Greece", "🇬🇷", "GMT+02:00 (Europe/Athens)"),
-    CountryInfo("Grenada", "🇬🇩", "GMT-04:00 (America/Grenada)"),
-    CountryInfo("Guatemala", "🇬🇹", "GMT-06:00 (America/Guatemala)"),
-    CountryInfo("Guinea", "🇬🇳", "GMT+00:00 (Africa/Conakry)"),
-    CountryInfo("Guinea-Bissau", "🇬🇼", "GMT+00:00 (Africa/Bissau)"),
-    CountryInfo("Guyana", "🇬🇾", "GMT-04:00 (America/Guyana)"),
-    CountryInfo("Haiti", "🇭🇹", "GMT-05:00 (America/Port-au-Prince)"),
-    CountryInfo("Honduras", "🇭🇳", "GMT-06:00 (America/Tegucigalpa)"),
-    CountryInfo("Hungary", "🇭🇺", "GMT+01:00 (Europe/Budapest)"),
-    CountryInfo("Iceland", "🇮🇸", "GMT+00:00 (Atlantic/Reykjavik)"),
-    CountryInfo("India", "🇮🇳", "GMT+05:30 (Asia/Kolkata)"),
-    CountryInfo("Indonesia", "🇮🇩", "GMT+07:00 (Asia/Jakarta)"),
-    CountryInfo("Iran", "🇮🇷", "GMT+03:30 (Asia/Tehran)"),
-    CountryInfo("Iraq", "🇮🇶", "GMT+03:00 (Asia/Baghdad)"),
-    CountryInfo("Ireland", "🇮🇪", "GMT+00:00 (Europe/Dublin)"),
-    CountryInfo("Israel", "🇮🇱", "GMT+02:00 (Asia/Jerusalem)"),
-    CountryInfo("Italy", "🇮🇹", "GMT+01:00 (Europe/Rome)"),
-    CountryInfo("Jamaica", "🇯🇲", "GMT-05:00 (America/Jamaica)"),
-    CountryInfo("Japan", "🇯🇵", "GMT+09:00 (Asia/Tokyo)"),
-    CountryInfo("Jordan", "🇯🇴", "GMT+02:00 (Asia/Amman)"),
-    CountryInfo("Kazakhstan", "🇰🇿", "GMT+06:00 (Asia/Almaty)"),
-    CountryInfo("Kenya", "🇰🇪", "GMT+03:00 (Africa/Nairobi)"),
-    CountryInfo("Kiribati", "🇰🇮", "GMT+12:00 (Pacific/Kiritimati)"),
-    CountryInfo("Korea (North)", "🇰🇵", "GMT+09:00 (Asia/Pyongyang)"),
-    CountryInfo("Korea (South)", "🇰🇷", "GMT+09:00 (Asia/Seoul)"),
-    CountryInfo("Kuwait", "🇰🇼", "GMT+03:00 (Asia/Kuwait)"),
-    CountryInfo("Kyrgyzstan", "🇰🇬", "GMT+06:00 (Asia/Bishkek)"),
-    CountryInfo("Laos", "🇱🇸", "GMT+07:00 (Asia/Vientiane)"),
-    CountryInfo("Latvia", "🇱🇻", "GMT+02:00 (Europe/Riga)"),
-    CountryInfo("Lebanon", "🇱🇧", "GMT+02:00 (Asia/Beirut)"),
-    CountryInfo("Lesotho", "🇱🇸", "GMT+02:00 (Africa/Maseru)"),
-    CountryInfo("Liberia", "🇱🇸", "GMT+00:00 (Africa/Monrovia)"),
-    CountryInfo("Libya", "🇱🇾", "GMT+02:00 (Africa/Tripoli)"),
-    CountryInfo("Liechtenstein", "🇱🇮", "GMT+01:00 (Europe/Vaduz)"),
-    CountryInfo("Lithuania", "🇱🇹", "GMT+02:00 (Europe/Vilnius)"),
-    CountryInfo("Luxembourg", "🇱🇺", "GMT+01:00 (Europe/Luxembourg)"),
-    CountryInfo("Madagascar", "🇲🇬", "GMT+03:00 (Indian/Antananarivo)"),
-    CountryInfo("Malawi", "🇲🇼", "GMT+02:00 (Africa/Lilongwe)"),
-    CountryInfo("Malaysia", "🇲🇾", "GMT+08:00 (Asia/Kuala_Lumpur)"),
-    CountryInfo("Maldives", "🇲🇻", "GMT+05:00 (Indian/Maldives)"),
-    CountryInfo("Mali", "🇲🇱", "GMT+00:00 (Africa/Bamako)"),
-    CountryInfo("Malta", "🇲🇹", "GMT+01:00 (Europe/Malta)"),
-    CountryInfo("Marshall Islands", "🇲🇭", "GMT+12:00 (Pacific/Majuro)"),
-    CountryInfo("Mauritania", "🇲🇷", "GMT+00:00 (Africa/Nouakchott)"),
-    CountryInfo("Mauritius", "🇲🇺", "GMT+04:00 (Indian/Mauritius)"),
-    CountryInfo("Mexico", "🇲🇽", "GMT-06:00 (America/Mexico_City)"),
-    CountryInfo("Micronesia", "🇫🇲", "GMT+10:00 (Pacific/Chuuk)"),
-    CountryInfo("Moldova", "🇲🇩", "GMT+02:00 (Europe/Chisinau)"),
-    CountryInfo("Monaco", "🇲🇨", "GMT+01:00 (Europe/Monaco)"),
-    CountryInfo("Mongolia", "🇲🇳", "GMT+08:00 (Asia/Ulaanbaatar)"),
-    CountryInfo("Montenegro", "🇲🇪", "GMT+01:00 (Europe/Podgorica)"),
-    CountryInfo("Morocco", "🇲🇦", "GMT+01:00 (Africa/Casablanca)"),
-    CountryInfo("Mozambique", "🇲🇿", "GMT+02:00 (Africa/Maputo)"),
-    CountryInfo("Myanmar", "🇲🇲", "GMT+06:30 (Asia/Yangon)"),
-    CountryInfo("Namibia", "🇳🇦", "GMT+02:00 (Africa/Windhoek)"),
-    CountryInfo("Nauru", "🇳🇷", "GMT+12:00 (Pacific/Nauru)"),
-    CountryInfo("Nepal", "🇳🇵", "GMT+05:45 (Asia/Kathmandu)"),
-    CountryInfo("Netherlands", "🇳🇱", "GMT+01:00 (Europe/Amsterdam)"),
-    CountryInfo("New Zealand", "🇳🇿", "GMT+13:00 (Pacific/Auckland)"),
-    CountryInfo("Nicaragua", "🇳🇮", "GMT-06:00 (America/Managua)"),
-    CountryInfo("Niger", "🇳🇪", "GMT+01:00 (Africa/Niamey)"),
-    CountryInfo("Nigeria", "🇳🇬", "GMT+01:00 (Africa/Lagos)"),
-    CountryInfo("North Macedonia", "🇲🇰", "GMT+01:00 (Europe/Skopje)"),
-    CountryInfo("Norway", "🇳🇴", "GMT+01:00 (Europe/Oslo)"),
-    CountryInfo("Oman", "🇴🇲", "GMT+04:00 (Asia/Muscat)"),
-    CountryInfo("Pakistan", "🇵🇰", "GMT+05:00 (Asia/Karachi)"),
-    CountryInfo("Palau", "🇵🇬", "GMT+09:00 (Pacific/Palau)"),
-    CountryInfo("Panama", "🇵🇦", "GMT-05:00 (America/Panama)"),
-    CountryInfo("Papua New Guinea", "🇵🇬", "GMT+10:00 (Pacific/Port_Moresby)"),
-    CountryInfo("Paraguay", "🇵🇾", "GMT-04:00 (America/Asuncion)"),
-    CountryInfo("Peru", "🇵🇪", "GMT-05:00 (America/Lima)"),
-    CountryInfo("Philippines", "🇵🇭", "GMT+08:00 (Asia/Manila)"),
-    CountryInfo("Poland", "🇵🇱", "GMT+01:00 (Europe/Warsaw)"),
-    CountryInfo("Portugal", "🇵🇹", "GMT+00:00 (Europe/Lisbon)"),
-    CountryInfo("Qatar", "🇶🇦", "GMT+03:00 (Asia/Qatar)"),
-    CountryInfo("Romania", "🇷🇴", "GMT+02:00 (Europe/Bucharest)"),
-    CountryInfo("Russia", "🇷🇺", "GMT+03:00 (Europe/Moscow)"),
-    CountryInfo("Rwanda", "🇷🇼", "GMT+02:00 (Africa/Kigali)"),
-    CountryInfo("Saint Kitts and Nevis", "🇰🇳", "GMT-04:00 (America/St_Kitts)"),
-    CountryInfo("Saint Lucia", "🇱🇨", "GMT-04:00 (America/St_Lucia)"),
-    CountryInfo("Saint Vincent and the Grenadines", "🇻🇨", "GMT-04:00 (America/St_Vincent)"),
-    CountryInfo("Samoa", "🇼🇸", "GMT+13:00 (Pacific/Apia)"),
-    CountryInfo("San Marino", "🇸🇲", "GMT+01:00 (Europe/San_Marino)"),
-    CountryInfo("Sao Tome and Principe", "🇸🇹", "GMT+00:00 (Africa/Sao_Tome)"),
-    CountryInfo("Saudi Arabia", "🇸🇦", "GMT+03:00 (Asia/Riyadh)"),
-    CountryInfo("Senegal", "🇸🇳", "GMT+00:00 (Africa/Dakar)"),
-    CountryInfo("Serbia", "🇷🇸", "GMT+01:00 (Europe/Belgrade)"),
-    CountryInfo("Seychelles", "🇸🇨", "GMT+04:00 (Indian/Mahe)"),
-    CountryInfo("Sierra Leone", "🇸🇱", "GMT+00:00 (Africa/Freetown)"),
-    CountryInfo("Singapore", "🇸🇬", "GMT+08:00 (Asia/Singapore)"),
-    CountryInfo("Slovakia", "🇸🇰", "GMT+01:00 (Europe/Bratislava)"),
-    CountryInfo("Slovenia", "🇸🇮", "GMT+01:00 (Europe/Ljubljana)"),
-    CountryInfo("Solomon Islands", "🇸🇧", "GMT+11:00 (Pacific/Guadalcanal)"),
-    CountryInfo("Somalia", "🇸🇴", "GMT+03:00 (Africa/Mogadishu)"),
-    CountryInfo("South Africa", "🇿🇦", "GMT+02:00 (Africa/Johannesburg)"),
-    CountryInfo("South Korea", "🇰🇷", "GMT+09:00 (Asia/Seoul)"),
-    CountryInfo("South Sudan", "🇸🇸", "GMT+03:00 (Africa/Juba)"),
-    CountryInfo("Spain", "🇪🇸", "GMT+01:00 (Europe/Madrid)"),
-    CountryInfo("Sri Lanka", "🇱🇰", "GMT+05:30 (Asia/Colombo)"),
-    CountryInfo("Sudan", "🇸🇩", "GMT+02:00 (Africa/Khartoum)"),
-    CountryInfo("Suriname", "🇸🇷", "GMT-03:00 (America/Paramaribo)"),
-    CountryInfo("Sweden", "🇸🇪", "GMT+01:00 (Europe/Stockholm)"),
-    CountryInfo("Switzerland", "🇨🇭", "GMT+01:00 (Europe/Zurich)"),
-    CountryInfo("Syria", "🇸🇾", "GMT+02:00 (Asia/Damascus)"),
-    CountryInfo("Taiwan", "🇹🇼", "GMT+08:00 (Asia/Taipei)"),
-    CountryInfo("Tajikistan", "🇹🇯", "GMT+05:00 (Asia/Dushanbe)"),
-    CountryInfo("Tanzania", "🇹🇿", "GMT+03:00 (Africa/Dar_es_Salaam)"),
-    CountryInfo("Thailand", "🇹🇭", "GMT+07:00 (Asia/Bangkok)"),
-    CountryInfo("Timor-Leste", "🇹🇱", "GMT+09:00 (Asia/Dili)"),
-    CountryInfo("Togo", "🇹🇬", "GMT+00:00 (Africa/Lome)"),
-    CountryInfo("Tonga", "🇹🇴", "GMT+13:00 (Pacific/Tongatapu)"),
-    CountryInfo("Trinidad and Tobago", "🇹🇹", "GMT-04:00 (America/Port_of_Spain)"),
-    CountryInfo("Tunisia", "🇹🇳", "GMT+01:00 (Africa/Tunis)"),
-    CountryInfo("Turkey", "🇹🇷", "GMT+03:00 (Europe/Istanbul)"),
-    CountryInfo("Turkmenistan", "🇹🇲", "GMT+05:00 (Asia/Ashgabat)"),
-    CountryInfo("Tuvalu", "🇹🇻", "GMT+12:00 (Pacific/Funafuti)"),
-    CountryInfo("Uganda", "🇺🇬", "GMT+03:00 (Africa/Kampala)"),
-    CountryInfo("Ukraine", "🇺🇦", "GMT+02:00 (Europe/Kiev)"),
-    CountryInfo("United Arab Emirates", "🇦🇪", "GMT+04:00 (Asia/Dubai)"),
-    CountryInfo("United Kingdom", "🇬🇧", "GMT+00:00 (Europe/London)"),
-    CountryInfo("United States", "🇺🇸", "GMT-05:00 (America/New_York)"),
-    CountryInfo("Uruguay", "🇺🇾", "GMT-03:00 (America/Montevideo)"),
-    CountryInfo("Uzbekistan", "🇺🇿", "GMT+05:00 (Asia/Tashkent)"),
-    CountryInfo("Vanuatu", "🇻🇺", "GMT+11:00 (Pacific/Efate)"),
-    CountryInfo("Vatican City", "🇻🇦", "GMT+01:00 (Europe/Vatican)"),
-    CountryInfo("Venezuela", "🇻🇪", "GMT-04:00 (America/Caracas)"),
-    CountryInfo("Vietnam", "🇻🇳", "GMT+07:00 (Asia/Ho_Chi_Minh)"),
-    CountryInfo("Yemen", "🇾🇪", "GMT+03:00 (Asia/Aden)"),
-    CountryInfo("Zambia", "🇿🇲", "GMT+02:00 (Africa/Lusaka)"),
-    CountryInfo("Zimbabwe", "🇿🇼", "GMT+02:00 (Africa/Harare)")
+    CountryInfo("Afghanistan", "af", "GMT+04:30"),
+    CountryInfo("Albania", "al", "GMT+01:00"),
+    CountryInfo("Algeria", "dz", "GMT+01:00"),
+    CountryInfo("Andorra", "ad", "GMT+01:00"),
+    CountryInfo("Angola", "ao", "GMT+01:00"),
+    CountryInfo("Antigua and Barbuda", "ag", "GMT-04:00"),
+    CountryInfo("Argentina", "ar", "GMT-03:00"),
+    CountryInfo("Armenia", "am", "GMT+04:00"),
+    CountryInfo("Australia", "au", "GMT+10:00"),
+    CountryInfo("Austria", "at", "GMT+01:00"),
+    CountryInfo("Azerbaijan", "az", "GMT+04:00"),
+    CountryInfo("Bahamas", "bs", "GMT-05:00"),
+    CountryInfo("Bahrain", "bh", "GMT+03:00"),
+    CountryInfo("Bangladesh", "bd", "GMT+06:00"),
+    CountryInfo("Barbados", "bb", "GMT-04:00"),
+    CountryInfo("Belarus", "by", "GMT+03:00"),
+    CountryInfo("Belgium", "be", "GMT+01:00"),
+    CountryInfo("Belize", "bz", "GMT-06:00"),
+    CountryInfo("Benin", "bj", "GMT+01:00"),
+    CountryInfo("Bhutan", "bt", "GMT+06:00"),
+    CountryInfo("Bolivia", "bo", "GMT-04:00"),
+    CountryInfo("Bosnia and Herzegovina", "ba", "GMT+01:00"),
+    CountryInfo("Botswana", "bw", "GMT+02:00"),
+    CountryInfo("Brazil", "br", "GMT-03:00"),
+    CountryInfo("Brunei", "bn", "GMT+08:00"),
+    CountryInfo("Bulgaria", "bg", "GMT+02:00"),
+    CountryInfo("Burkina Faso", "bf", "GMT+00:00"),
+    CountryInfo("Burundi", "bi", "GMT+02:00"),
+    CountryInfo("Cabo Verde", "cv", "GMT-01:00"),
+    CountryInfo("Cambodia", "kh", "GMT+07:00"),
+    CountryInfo("Cameroon", "cm", "GMT+01:00"),
+    CountryInfo("Canada", "ca", "GMT-05:00"),
+    CountryInfo("Central African Republic", "cf", "GMT+01:00"),
+    CountryInfo("Chad", "td", "GMT+01:00"),
+    CountryInfo("Chile", "cl", "GMT-04:00"),
+    CountryInfo("China", "cn", "GMT+08:00"),
+    CountryInfo("Colombia", "co", "GMT-05:00"),
+    CountryInfo("Comoros", "km", "GMT+03:00"),
+    CountryInfo("Congo (Congo-Brazzaville)", "cg", "GMT+01:00"),
+    CountryInfo("Congo (Democratic Republic)", "cd", "GMT+01:00"),
+    CountryInfo("Costa Rica", "cr", "GMT-06:00"),
+    CountryInfo("Croatia", "hr", "GMT+01:00"),
+    CountryInfo("Cuba", "cu", "GMT-05:00"),
+    CountryInfo("Cyprus", "cy", "GMT+02:00"),
+    CountryInfo("Czech Republic", "cz", "GMT+01:00"),
+    CountryInfo("Denmark", "dk", "GMT+01:00"),
+    CountryInfo("Djibouti", "dj", "GMT+03:00"),
+    CountryInfo("Dominica", "dm", "GMT-04:00"),
+    CountryInfo("Dominican Republic", "dor", "GMT-04:00"),
+    CountryInfo("Ecuador", "ec", "GMT-05:00"),
+    CountryInfo("Egypt", "eg", "GMT+02:00"),
+    CountryInfo("El Salvador", "sv", "GMT-06:00"),
+    CountryInfo("Equatorial Guinea", "gq", "GMT+01:00"),
+    CountryInfo("Eritrea", "er", "GMT+03:00"),
+    CountryInfo("Estonia", "ee", "GMT+02:00"),
+    CountryInfo("Eswatini", "sz", "GMT+02:00"),
+    CountryInfo("Ethiopia", "et", "GMT+03:00"),
+    CountryInfo("Fiji", "fj", "GMT+12:00"),
+    CountryInfo("Finland", "fi", "GMT+02:00"),
+    CountryInfo("France", "fr", "GMT+01:00"),
+    CountryInfo("Gabon", "ga", "GMT+01:00"),
+    CountryInfo("Gambia", "gm", "GMT+00:00"),
+    CountryInfo("Georgia", "ge", "GMT+04:00"),
+    CountryInfo("Germany", "de", "GMT+01:00"),
+    CountryInfo("Ghana", "gh", "GMT+00:00"),
+    CountryInfo("Greece", "gr", "GMT+02:00"),
+    CountryInfo("Grenada", "gd", "GMT-04:00"),
+    CountryInfo("Guatemala", "gt", "GMT-06:00"),
+    CountryInfo("Guinea", "gn", "GMT+00:00"),
+    CountryInfo("Guinea-Bissau", "gw", "GMT+00:00"),
+    CountryInfo("Guyana", "gy", "GMT-04:00"),
+    CountryInfo("Haiti", "ht", "GMT-05:00"),
+    CountryInfo("Honduras", "hn", "GMT-06:00"),
+    CountryInfo("Hungary", "hu", "GMT+01:00"),
+    CountryInfo("Iceland", "is", "GMT+00:00"),
+    CountryInfo("India", "in", "GMT+05:30"),
+    CountryInfo("Indonesia", "id", "GMT+07:00"),
+    CountryInfo("Iran", "ir", "GMT+03:30"),
+    CountryInfo("Iraq", "iq", "GMT+03:00"),
+    CountryInfo("Ireland", "ie", "GMT+00:00"),
+    CountryInfo("Israel", "il", "GMT+02:00"),
+    CountryInfo("Italy", "it", "GMT+01:00"),
+    CountryInfo("Jamaica", "jm", "GMT-05:00"),
+    CountryInfo("Japan", "jp", "GMT+09:00"),
+    CountryInfo("Jordan", "jo", "GMT+02:00"),
+    CountryInfo("Kazakhstan", "kz", "GMT+06:00"),
+    CountryInfo("Kenya", "ke", "GMT+03:00"),
+    CountryInfo("Kiribati", "ki", "GMT+12:00"),
+    CountryInfo("Korea (North)", "kp", "GMT+09:00"),
+    CountryInfo("Korea (South)", "kr", "GMT+09:00"),
+    CountryInfo("Kuwait", "kw", "GMT+03:00"),
+    CountryInfo("Kyrgyzstan", "kg", "GMT+06:00"),
+    CountryInfo("Laos", "la", "GMT+07:00"),
+    CountryInfo("Latvia", "lv", "GMT+02:00"),
+    CountryInfo("Lebanon", "lb", "GMT+02:00"),
+    CountryInfo("Lesotho", "ls", "GMT+02:00"),
+    CountryInfo("Liberia", "lr", "GMT+00:00"),
+    CountryInfo("Libya", "ly", "GMT+02:00"),
+    CountryInfo("Liechtenstein", "li", "GMT+01:00"),
+    CountryInfo("Lithuania", "lt", "GMT+02:00"),
+    CountryInfo("Luxembourg", "lu", "GMT+01:00"),
+    CountryInfo("Madagascar", "mg", "GMT+03:00"),
+    CountryInfo("Malawi", "mw", "GMT+02:00"),
+    CountryInfo("Malaysia", "my", "GMT+08:00"),
+    CountryInfo("Maldives", "mv", "GMT+05:00"),
+    CountryInfo("Mali", "ml", "GMT+00:00"),
+    CountryInfo("Malta", "mt", "GMT+01:00"),
+    CountryInfo("Marshall Islands", "mh", "GMT+12:00"),
+    CountryInfo("Mauritania", "mr", "GMT+00:00"),
+    CountryInfo("Mauritius", "mu", "GMT+04:00"),
+    CountryInfo("Mexico", "mx", "GMT-06:00"),
+    CountryInfo("Micronesia", "fm", "GMT+10:00"),
+    CountryInfo("Moldova", "md", "GMT+02:00"),
+    CountryInfo("Monaco", "mc", "GMT+01:00"),
+    CountryInfo("Mongolia", "mn", "GMT+08:00"),
+    CountryInfo("Montenegro", "me", "GMT+01:00"),
+    CountryInfo("Morocco", "ma", "GMT+01:00"),
+    CountryInfo("Mozambique", "mz", "GMT+02:00"),
+    CountryInfo("Myanmar", "mm", "GMT+06:30"),
+    CountryInfo("Namibia", "na", "GMT+02:00"),
+    CountryInfo("Nauru", "nr", "GMT+12:00"),
+    CountryInfo("Nepal", "np", "GMT+05:45"),
+    CountryInfo("Netherlands", "nl", "GMT+01:00"),
+    CountryInfo("New Zealand", "nz", "GMT+12:00"),
+    CountryInfo("Nicaragua", "ni", "GMT-06:00"),
+    CountryInfo("Niger", "ne", "GMT+01:00"),
+    CountryInfo("Nigeria", "ng", "GMT+01:00"),
+    CountryInfo("North Macedonia", "mk", "GMT+01:00"),
+    CountryInfo("Norway", "no", "GMT+01:00"),
+    CountryInfo("Oman", "om", "GMT+04:00"),
+    CountryInfo("Pakistan", "pk", "GMT+05:00"),
+    CountryInfo("Palau", "pw", "GMT+09:00"),
+    CountryInfo("Palestine", "ps", "GMT+02:00"),
+    CountryInfo("Panama", "pa", "GMT-05:00"),
+    CountryInfo("Papua New Guinea", "pg", "GMT+10:00"),
+    CountryInfo("Paraguay", "py", "GMT-04:00"),
+    CountryInfo("Peru", "pe", "GMT-05:00"),
+    CountryInfo("Philippines", "ph", "GMT+08:00"),
+    CountryInfo("Poland", "pl", "GMT+01:00"),
+    CountryInfo("Portugal", "pt", "GMT+00:00"),
+    CountryInfo("Qatar", "qa", "GMT+03:00"),
+    CountryInfo("Romania", "ro", "GMT+02:00"),
+    CountryInfo("Russia", "ru", "GMT+03:00"),
+    CountryInfo("Rwanda", "rw", "GMT+02:00"),
+    CountryInfo("Saint Kitts and Nevis", "kn", "GMT-04:00"),
+    CountryInfo("Saint Lucia", "lc", "GMT-04:00"),
+    CountryInfo("Saint Vincent and the Grenadines", "vc", "GMT-04:00"),
+    CountryInfo("Samoa", "ws", "GMT+13:00"),
+    CountryInfo("San Marino", "sm", "GMT+01:00"),
+    CountryInfo("Sao Tome and Principe", "st", "GMT+00:00"),
+    CountryInfo("Saudi Arabia", "sa", "GMT+03:00"),
+    CountryInfo("Senegal", "sn", "GMT+00:00"),
+    CountryInfo("Serbia", "rs", "GMT+01:00"),
+    CountryInfo("Seychelles", "sc", "GMT+04:00"),
+    CountryInfo("Sierra Leone", "sl", "GMT+00:00"),
+    CountryInfo("Singapore", "sg", "GMT+08:00"),
+    CountryInfo("Slovakia", "sk", "GMT+01:00"),
+    CountryInfo("Slovenia", "si", "GMT+01:00"),
+    CountryInfo("Solomon Islands", "sb", "GMT+11:00"),
+    CountryInfo("Somalia", "so", "GMT+03:00"),
+    CountryInfo("South Africa", "za", "GMT+02:00"),
+    CountryInfo("South Sudan", "ss", "GMT+03:00"),
+    CountryInfo("Spain", "es", "GMT+01:00"),
+    CountryInfo("Sri Lanka", "lk", "GMT+05:30"),
+    CountryInfo("Sudan", "sd", "GMT+02:00"),
+    CountryInfo("Suriname", "sr", "GMT-03:00"),
+    CountryInfo("Sweden", "se", "GMT+01:00"),
+    CountryInfo("Switzerland", "ch", "GMT+01:00"),
+    CountryInfo("Syria", "sy", "GMT+02:00"),
+    CountryInfo("Taiwan", "tw", "GMT+08:00"),
+    CountryInfo("Tajikistan", "tj", "GMT+05:00"),
+    CountryInfo("Tanzania", "tz", "GMT+03:00"),
+    CountryInfo("Thailand", "th", "GMT+07:00"),
+    CountryInfo("Timor-Leste", "tl", "GMT+09:00"),
+    CountryInfo("Togo", "tg", "GMT+00:00"),
+    CountryInfo("Tonga", "to", "GMT+13:00"),
+    CountryInfo("Trinidad and Tobago", "tt", "GMT-04:00"),
+    CountryInfo("Tunisia", "tn", "GMT+01:00"),
+    CountryInfo("Turkey", "tr", "GMT+03:00"),
+    CountryInfo("Turkmenistan", "tm", "GMT+05:00"),
+    CountryInfo("Tuvalu", "tv", "GMT+12:00"),
+    CountryInfo("Uganda", "ug", "GMT+03:00"),
+    CountryInfo("Ukraine", "ua", "GMT+02:00"),
+    CountryInfo("United Arab Emirates", "ae", "GMT+04:00"),
+    CountryInfo("United Kingdom", "gb", "GMT+00:00"),
+    CountryInfo("United States", "us", "GMT-05:00"),
+    CountryInfo("Uruguay", "uy", "GMT-03:00"),
+    CountryInfo("Uzbekistan", "uz", "GMT+05:00"),
+    CountryInfo("Vanuatu", "vu", "GMT+11:00"),
+    CountryInfo("Vatican City", "va", "GMT+01:00"),
+    CountryInfo("Venezuela", "ve", "GMT-04:00"),
+    CountryInfo("Vietnam", "vn", "GMT+07:00"),
+    CountryInfo("Yemen", "ye", "GMT+03:00"),
+    CountryInfo("Zambia", "zm", "GMT+02:00"),
+    CountryInfo("Zimbabwe", "zw", "GMT+02:00")
 )
+
+val countryInfoCodeList = listOf(
+    CountryInfoCode("Afghanistan", "+93", "AF"),
+    CountryInfoCode("Albania", "+355", "AL"),
+    CountryInfoCode("Algeria", "+213", "DZ"),
+    CountryInfoCode("Andorra", "+376", "AD"),
+    CountryInfoCode("Angola", "+244", "AO"),
+    CountryInfoCode("Antigua and Barbuda", "+1-268", "AG"),
+    CountryInfoCode("Argentina", "+54", "AR"),
+    CountryInfoCode("Armenia", "+374", "AM"),
+    CountryInfoCode("Australia", "+61", "AU"),
+    CountryInfoCode("Austria", "+43", "AT"),
+    CountryInfoCode("Azerbaijan", "+994", "AZ"),
+    CountryInfoCode("Bahamas", "+1-242", "BS"),
+    CountryInfoCode("Bahrain", "+973", "BH"),
+    CountryInfoCode("Bangladesh", "+880", "BD"),
+    CountryInfoCode("Barbados", "+1-246", "BB"),
+    CountryInfoCode("Belarus", "+375", "BY"),
+    CountryInfoCode("Belgium", "+32", "BE"),
+    CountryInfoCode("Belize", "+501", "BZ"),
+    CountryInfoCode("Benin", "+229", "BJ"),
+    CountryInfoCode("Bhutan", "+975", "BT"),
+    CountryInfoCode("Bolivia", "+591", "BO"),
+    CountryInfoCode("Bosnia and Herzegovina", "+387", "BA"),
+    CountryInfoCode("Botswana", "+267", "BW"),
+    CountryInfoCode("Brazil", "+55", "BR"),
+    CountryInfoCode("Brunei", "+673", "BN"),
+    CountryInfoCode("Bulgaria", "+359", "BG"),
+    CountryInfoCode("Burkina Faso", "+226", "BF"),
+    CountryInfoCode("Burundi", "+257", "BI"),
+    CountryInfoCode("Cambodia", "+855", "KH"),
+    CountryInfoCode("Cameroon", "+237", "CM"),
+    CountryInfoCode("Canada", "+1", "CA"),
+    CountryInfoCode("Cape Verde", "+238", "CV"),
+    CountryInfoCode("Central African Republic", "+236", "CF"),
+    CountryInfoCode("Chad", "+235", "TD"),
+    CountryInfoCode("Chile", "+56", "CL"),
+    CountryInfoCode("China", "+86", "CN"),
+    CountryInfoCode("Colombia", "+57", "CO"),
+    CountryInfoCode("Comoros", "+269", "KM"),
+    CountryInfoCode("Congo (DRC)", "+243", "CD"),
+    CountryInfoCode("Congo (Republic)", "+242", "CG"),
+    CountryInfoCode("Costa Rica", "+506", "CR"),
+    CountryInfoCode("Croatia", "+385", "HR"),
+    CountryInfoCode("Cuba", "+53", "CU"),
+    CountryInfoCode("Cyprus", "+357", "CY"),
+    CountryInfoCode("Czech Republic", "+420", "CZ"),
+    CountryInfoCode("Denmark", "+45", "DK"),
+    CountryInfoCode("Djibouti", "+253", "DJ"),
+    CountryInfoCode("Dominica", "+1-767", "DM"),
+    CountryInfoCode("Dominican Republic", "+1-809", "DOR"),
+    CountryInfoCode("Ecuador", "+593", "EC"),
+    CountryInfoCode("Egypt", "+20", "EG"),
+    CountryInfoCode("El Salvador", "+503", "SV"),
+    CountryInfoCode("Equatorial Guinea", "+240", "GQ"),
+    CountryInfoCode("Eritrea", "+291", "ER"),
+    CountryInfoCode("Estonia", "+372", "EE"),
+    CountryInfoCode("Eswatini", "+268", "SZ"),
+    CountryInfoCode("Ethiopia", "+251", "ET"),
+    CountryInfoCode("Fiji", "+679", "FJ"),
+    CountryInfoCode("Finland", "+358", "FI"),
+    CountryInfoCode("France", "+33", "FR"),
+    CountryInfoCode("Gabon", "+241", "GA"),
+    CountryInfoCode("Gambia", "+220", "GM"),
+    CountryInfoCode("Georgia", "+995", "GE"),
+    CountryInfoCode("Germany", "+49", "DE"),
+    CountryInfoCode("Ghana", "+233", "GH"),
+    CountryInfoCode("Greece", "+30", "GR"),
+    CountryInfoCode("Grenada", "+1-473", "GD"),
+    CountryInfoCode("Guatemala", "+502", "GT"),
+    CountryInfoCode("Guinea", "+224", "GN"),
+    CountryInfoCode("Guinea-Bissau", "+245", "GW"),
+    CountryInfoCode("Guyana", "+592", "GY"),
+    CountryInfoCode("Haiti", "+509", "HT"),
+    CountryInfoCode("Honduras", "+504", "HN"),
+    CountryInfoCode("Hungary", "+36", "HU"),
+    CountryInfoCode("Iceland", "+354", "IS"),
+    CountryInfoCode("India", "+91", "IN"),
+    CountryInfoCode("Indonesia", "+62", "ID"),
+    CountryInfoCode("Iran", "+98", "IR"),
+    CountryInfoCode("Iraq", "+964", "IQ"),
+    CountryInfoCode("Ireland", "+353", "IE"),
+    CountryInfoCode("Israel", "+972", "IL"),
+    CountryInfoCode("Italy", "+39", "IT"),
+    CountryInfoCode("Ivory Coast", "+225", "CI"),
+    CountryInfoCode("Jamaica", "+1-876", "JM"),
+    CountryInfoCode("Japan", "+81", "JP"),
+    CountryInfoCode("Jordan", "+962", "JO"),
+    CountryInfoCode("Kazakhstan", "+7", "KZ"),
+    CountryInfoCode("Kenya", "+254", "KE"),
+    CountryInfoCode("Kiribati", "+686", "KI"),
+    CountryInfoCode("Korea (North)", "+850", "KP"),
+    CountryInfoCode("Korea (South)", "+82", "KR"),
+    CountryInfoCode("Kuwait", "+965", "KW"),
+    CountryInfoCode("Kyrgyzstan", "+996", "KG"),
+    CountryInfoCode("Laos", "+856", "LA"),
+    CountryInfoCode("Latvia", "+371", "LV"),
+    CountryInfoCode("Lebanon", "+961", "LB"),
+    CountryInfoCode("Lesotho", "+266", "LS"),
+    CountryInfoCode("Liberia", "+231", "LR"),
+    CountryInfoCode("Libya", "+218", "LY"),
+    CountryInfoCode("Liechtenstein", "+423", "LI"),
+    CountryInfoCode("Lithuania", "+370", "LT"),
+    CountryInfoCode("Luxembourg", "+352", "LU"),
+    CountryInfoCode("Madagascar", "+261", "MG"),
+    CountryInfoCode("Malawi", "+265", "MW"),
+    CountryInfoCode("Malaysia", "+60", "MY"),
+    CountryInfoCode("Maldives", "+960", "MV"),
+    CountryInfoCode("Mali", "+223", "ML"),
+    CountryInfoCode("Malta", "+356", "MT"),
+    CountryInfoCode("Marshall Islands", "+692", "MH"),
+    CountryInfoCode("Mauritania", "+222", "MR"),
+    CountryInfoCode("Mauritius", "+230", "MU"),
+    CountryInfoCode("Mexico", "+52", "MX"),
+    CountryInfoCode("Micronesia", "+691", "FM"),
+    CountryInfoCode("Moldova", "+373", "MD"),
+    CountryInfoCode("Monaco", "+377", "MC"),
+    CountryInfoCode("Mongolia", "+976", "MN"),
+    CountryInfoCode("Montenegro", "+382", "ME"),
+    CountryInfoCode("Morocco", "+212", "MA"),
+    CountryInfoCode("Mozambique", "+258", "MZ"),
+    CountryInfoCode("Myanmar", "+95", "MM"),
+    CountryInfoCode("Namibia", "+264", "NA"),
+    CountryInfoCode("Nauru", "+674", "NR"),
+    CountryInfoCode("Nepal", "+977", "NP"),
+    CountryInfoCode("Netherlands", "+31", "NL"),
+    CountryInfoCode("New Zealand", "+64", "NZ"),
+    CountryInfoCode("Nicaragua", "+505", "NI"),
+    CountryInfoCode("Niger", "+227", "NE"),
+    CountryInfoCode("Nigeria", "+234", "NG"),
+    CountryInfoCode("North Macedonia", "+389", "MK"),
+    CountryInfoCode("Norway", "+47", "NO"),
+    CountryInfoCode("Oman", "+968", "OM"),
+    CountryInfoCode("Pakistan", "+92", "PK"),
+    CountryInfoCode("Palau", "+680", "PW"),
+    CountryInfoCode("Panama", "+507", "PA"),
+    CountryInfoCode("Papua New Guinea", "+675", "PG"),
+    CountryInfoCode("Paraguay", "+595", "PY"),
+    CountryInfoCode("Peru", "+51", "PE"),
+    CountryInfoCode("Philippines", "+63", "PH"),
+    CountryInfoCode("Poland", "+48", "PL"),
+    CountryInfoCode("Portugal", "+351", "PT"),
+    CountryInfoCode("Qatar", "+974", "QA"),
+    CountryInfoCode("Romania", "+40", "RO"),
+    CountryInfoCode("Russia", "+7", "RU"),
+    CountryInfoCode("Rwanda", "+250", "RW"),
+    CountryInfoCode("Saint Kitts and Nevis", "+1-869", "KN"),
+    CountryInfoCode("Saint Lucia", "+1-758", "LC"),
+    CountryInfoCode("Saint Vincent and the Grenadines", "+1-784", "VC"),
+    CountryInfoCode("Samoa", "+685", "WS"),
+    CountryInfoCode("San Marino", "+378", "SM"),
+    CountryInfoCode("Sao Tome and Principe", "+239", "ST"),
+    CountryInfoCode("Saudi Arabia", "+966", "SA"),
+    CountryInfoCode("Senegal", "+221", "SN"),
+    CountryInfoCode("Serbia", "+381", "RS"),
+    CountryInfoCode("Seychelles", "+248", "SC"),
+    CountryInfoCode("Sierra Leone", "+232", "SL"),
+    CountryInfoCode("Singapore", "+65", "SG"),
+    CountryInfoCode("Slovakia", "+421", "SK"),
+    CountryInfoCode("Slovenia", "+386", "SI"),
+    CountryInfoCode("Solomon Islands", "+677", "SB"),
+    CountryInfoCode("Somalia", "+252", "SO"),
+    CountryInfoCode("South Africa", "+27", "ZA"),
+    CountryInfoCode("South Sudan", "+211", "SS"),
+    CountryInfoCode("Spain", "+34", "ES"),
+    CountryInfoCode("Sri Lanka", "+94", "LK"),
+    CountryInfoCode("Sudan", "+249", "SD"),
+    CountryInfoCode("Suriname", "+597", "SR"),
+    CountryInfoCode("Sweden", "+46", "SE"),
+    CountryInfoCode("Switzerland", "+41", "CH"),
+    CountryInfoCode("Syria", "+963", "SY"),
+    CountryInfoCode("Taiwan", "+886", "TW"),
+    CountryInfoCode("Tajikistan", "+992", "TJ"),
+    CountryInfoCode("Tanzania", "+255", "TZ"),
+    CountryInfoCode("Thailand", "+66", "TH"),
+    CountryInfoCode("Timor-Leste", "+670", "TL"),
+    CountryInfoCode("Togo", "+228", "TG"),
+    CountryInfoCode("Tonga", "+676", "TO"),
+    CountryInfoCode("Trinidad and Tobago", "+1-868", "TT"),
+    CountryInfoCode("Tunisia", "+216", "TN"),
+    CountryInfoCode("Turkey", "+90", "TR"),
+    CountryInfoCode("Turkmenistan", "+993", "TM"),
+    CountryInfoCode("Tuvalu", "+688", "TV"),
+    CountryInfoCode("Uganda", "+256", "UG"),
+    CountryInfoCode("Ukraine", "+380", "UA"),
+    CountryInfoCode("United Arab Emirates", "+971", "AE"),
+    CountryInfoCode("United Kingdom", "+44", "GB"),
+    CountryInfoCode("United States", "+1", "US"),
+    CountryInfoCode("Uruguay", "+598", "UY"),
+    CountryInfoCode("Uzbekistan", "+998", "UZ"),
+    CountryInfoCode("Vanuatu", "+678", "VU"),
+    CountryInfoCode("Vatican City", "+379", "VA"),
+    CountryInfoCode("Venezuela", "+58", "VE"),
+    CountryInfoCode("Vietnam", "+84", "VN"),
+    CountryInfoCode("Yemen", "+967", "YE"),
+    CountryInfoCode("Zambia", "+260", "ZM"),
+    CountryInfoCode("Zimbabwe", "+263", "ZW"),
+)
+
+

+ 300 - 32
app/src/main/java/com/fastest/pass/home/presentation/ui/components/AddContactInfoScreen.kt

@@ -2,60 +2,92 @@ package com.fastest.pass.home.presentation.ui.components
 
 import android.os.Build
 import android.util.Log
+import android.widget.Toast
 import androidx.annotation.RequiresApi
+import androidx.compose.foundation.BorderStroke
+import androidx.compose.foundation.ExperimentalFoundationApi
+import androidx.compose.foundation.Image
+import androidx.compose.foundation.LocalOverscrollConfiguration
 import androidx.compose.foundation.background
 import androidx.compose.foundation.border
 import androidx.compose.foundation.clickable
+import androidx.compose.foundation.layout.Arrangement
 import androidx.compose.foundation.layout.Box
 import androidx.compose.foundation.layout.Column
 import androidx.compose.foundation.layout.ColumnScope
+import androidx.compose.foundation.layout.Row
 import androidx.compose.foundation.layout.Spacer
 import androidx.compose.foundation.layout.defaultMinSize
 import androidx.compose.foundation.layout.fillMaxSize
 import androidx.compose.foundation.layout.fillMaxWidth
 import androidx.compose.foundation.layout.height
 import androidx.compose.foundation.layout.padding
+import androidx.compose.foundation.layout.size
 import androidx.compose.foundation.layout.wrapContentHeight
+import androidx.compose.foundation.lazy.LazyColumn
+import androidx.compose.foundation.lazy.items
 import androidx.compose.foundation.rememberScrollState
+import androidx.compose.foundation.shape.CircleShape
 import androidx.compose.foundation.shape.RoundedCornerShape
 import androidx.compose.foundation.text.KeyboardActions
 import androidx.compose.foundation.text.KeyboardOptions
 import androidx.compose.foundation.verticalScroll
 import androidx.compose.material.icons.Icons
 import androidx.compose.material.icons.filled.DateRange
+import androidx.compose.material3.BottomSheetDefaults
 import androidx.compose.material3.DatePicker
 import androidx.compose.material3.DatePickerDefaults
 import androidx.compose.material3.DatePickerDialog
+import androidx.compose.material3.DockedSearchBar
 import androidx.compose.material3.DropdownMenuItem
 import androidx.compose.material3.ExperimentalMaterial3Api
 import androidx.compose.material3.ExposedDropdownMenuBox
 import androidx.compose.material3.ExposedDropdownMenuDefaults
 import androidx.compose.material3.Icon
 import androidx.compose.material3.MaterialTheme
+import androidx.compose.material3.ModalBottomSheet
+import androidx.compose.material3.SearchBarDefaults
+import androidx.compose.material3.Surface
 import androidx.compose.material3.Text
 import androidx.compose.material3.TextButton
 import androidx.compose.material3.TextField
 import androidx.compose.material3.TextFieldDefaults
 import androidx.compose.material3.rememberDatePickerState
+import androidx.compose.material3.rememberModalBottomSheetState
 import androidx.compose.runtime.Composable
+import androidx.compose.runtime.CompositionLocalProvider
+import androidx.compose.runtime.LaunchedEffect
 import androidx.compose.runtime.getValue
 import androidx.compose.runtime.mutableStateOf
 import androidx.compose.runtime.remember
 import androidx.compose.runtime.setValue
 import androidx.compose.ui.Alignment
 import androidx.compose.ui.Modifier
+import androidx.compose.ui.draw.clip
+import androidx.compose.ui.draw.paint
 import androidx.compose.ui.focus.FocusManager
 import androidx.compose.ui.graphics.Color
+import androidx.compose.ui.graphics.ColorFilter
+import androidx.compose.ui.graphics.RectangleShape
+import androidx.compose.ui.graphics.Shape
+import androidx.compose.ui.layout.ContentScale
+import androidx.compose.ui.platform.LocalContext
 import androidx.compose.ui.platform.LocalFocusManager
 import androidx.compose.ui.platform.LocalSoftwareKeyboardController
 import androidx.compose.ui.platform.SoftwareKeyboardController
 import androidx.compose.ui.res.colorResource
+import androidx.compose.ui.res.painterResource
 import androidx.compose.ui.res.stringResource
 import androidx.compose.ui.text.input.ImeAction
 import androidx.compose.ui.text.input.KeyboardType
 import androidx.compose.ui.unit.dp
 import com.fastest.pass.R
 import com.fastest.pass.home.domain.model.CountryInfo
+import com.fastest.pass.home.domain.model.countryInfoList
+import com.fastest.pass.home.utils.GetDrawable
+import com.hbb20.CountryCodePicker
+import kotlinx.coroutines.delay
+import kotlinx.coroutines.launch
 import java.text.SimpleDateFormat
 import java.time.OffsetDateTime
 import java.time.ZoneId
@@ -79,6 +111,8 @@ fun AddContactInfoScreen() {
 //    timezoneList.addAll(timezone)
 //    timezoneList.add(0, "Please Select")
 
+    getCountriesWithFlagsAndTimezones()
+
     val gender = listOf("Please Select", "Male", "Female", "Other")
 
     Column(
@@ -119,7 +153,9 @@ fun AddContactInfoScreen() {
         NameTextFieldACIFS(keyboardController = keyboardController, focusManager = focusManager, labelText = R.string.zip_postal_code)
 
         Spacer(modifier = Modifier.height(20.dp))
-        DropDownFieldACIFS(keyboardController = keyboardController, focusManager = focusManager, labelText = R.string.country, countriesList)
+        SelectCountryInfo(labelText = R.string.country, keyboardController, focusManager)
+//        DropDownFieldACIFS(keyboardController = keyboardController, focusManager = focusManager, labelText = R.string.country, countriesList)
+
 //        Spacer(modifier = Modifier.height(20.dp))
 //        DropDownFieldACIFS(keyboardController = keyboardController, focusManager = focusManager, labelText = R.string.time_zone, timezoneList, topPadding = 10)
 
@@ -135,7 +171,9 @@ fun AddContactInfoScreen() {
 
         Spacer(modifier = Modifier.height(20.dp))
         EmailFieldACIFS(keyboardController = keyboardController, focusManager = focusManager, R.string.enter_email_address)
+        Spacer(modifier = Modifier.height(20.dp))
 
+//        OpenModalBottomSheet()
 
     }
 }
@@ -496,7 +534,7 @@ fun getCountriesWithFlagsAndTimezones(): List<CountryInfo> {
 
 //        timezone = getRepresentativeTimezone(countryName)
 
-        Log.d("country_list_det", "country => $countryName, $flag, $timezone")
+        Log.d("country_list_", "country => $countryName, $flag, $timezone => $countryCode")
 
         CountryInfo(
             name = countryName,
@@ -507,31 +545,6 @@ fun getCountriesWithFlagsAndTimezones(): List<CountryInfo> {
     }.sortedBy { it.name }
 }
 
-@RequiresApi(Build.VERSION_CODES.O)
-fun getCountriesWithFlagsAndTimezones2(): List<CountryInfo> {
-    val offsetFormatter = java.time.format.DateTimeFormatter.ofPattern("xxx") // To format offsets like "+02:00"
-    return Locale.getISOCountries().mapNotNull { countryCode ->
-        val locale = Locale("", countryCode)
-        val countryName = locale.displayCountry
-        val flag = countryCodeToFlag(countryCode)
-        val timezone = getRepresentativeTimezone(countryCode)?.let { zoneId ->
-            val offsetToday = ZoneId.of(zoneId).rules.getOffset(java.time.Instant.now())
-            val formattedOffset = offsetFormatter.format(offsetToday)
-            "$formattedOffset $zoneId"
-        } ?: "Unknown"
-
-        Log.d("country_list_det", "country => $countryName, $flag, $timezone")
-
-
-        CountryInfo(
-            name = countryName,
-            flag = flag,
-            timezone = timezone
-        )
-    }.sortedBy { it.name }
-}
-
-
 fun countryCodeToFlag(countryCode: String): String {
     return countryCode.uppercase().map { char ->
         Character.toChars(0x1F1E6 + (char.code - 'A'.code)).concatToString()
@@ -539,11 +552,6 @@ fun countryCodeToFlag(countryCode: String): String {
 }
 
 @RequiresApi(Build.VERSION_CODES.O)
-fun getRepresentativeTimezone(countryCode: String): String? {
-    return ZoneId.getAvailableZoneIds().find { it.startsWith(countryCode, ignoreCase = true) }
-}
-
-@RequiresApi(Build.VERSION_CODES.O)
 fun getRepresentativeTimezoneId(countryCode: String): String {
     val zone = ZoneId.of(countryCode)
 
@@ -586,3 +594,263 @@ fun convertMillisToFormattedDate(millis: Long) : String {
     val formatter = SimpleDateFormat("MMM dd, yyyy", Locale.getDefault())
     return formatter.format(date)
 }
+
+@Composable
+fun ColumnScope.ShowCountryListItem(
+    item: CountryInfo,
+    isSheetOpened: () -> Unit,
+    onSelectedCountry: (String) -> Unit
+) {
+    val context = LocalContext.current
+    val icon = GetDrawable.getDrawable(context, item.flag)
+    Row(
+        modifier = Modifier
+            .border(
+                border = BorderStroke(1.dp, colorResource(id = R.color.white)),
+                shape = RoundedCornerShape(15.dp)
+            )
+            .clip(RoundedCornerShape(15.dp))
+            .background(colorResource(id = R.color.white))
+            .fillMaxWidth()
+            .clickable {
+//                Toast.makeText(context, item.name, Toast.LENGTH_SHORT).show()
+                isSheetOpened.invoke()
+                onSelectedCountry.invoke(item.name)
+            },
+        horizontalArrangement = Arrangement.Start,
+        verticalAlignment = Alignment.CenterVertically
+    ) {
+        Surface(
+            modifier = Modifier.padding(start = 10.dp),
+            color = Color.Transparent
+        ) {
+            Icon(
+                painter = painterResource(id = icon),
+                contentDescription = "Icon",
+                tint = Color.Unspecified,
+                modifier = Modifier
+                    .padding(vertical = 15.dp)
+                    .border(1.dp, colorResource(id = R.color.gray_border_textfield))
+                    .size(38.dp, 34.dp)
+//                    .clip(CircleShape)
+//                    .weight(1f)
+                    .paint(
+                        painter = painterResource(id = icon),
+                        contentScale = ContentScale.FillBounds
+                    ),
+//                colorFilter = ColorFilter.tint(colorResource(id = R.color.gray_splash)),
+            )
+        }
+
+        Surface(
+            modifier = Modifier.padding(start = 15.dp, end = 5.dp),
+            color = Color.Transparent
+        ) {
+            Column {
+                Text(
+                    text = item.name,
+                    style = MaterialTheme.typography.displayMedium,
+                    color = colorResource(id = R.color.gray_splash),
+//                    maxLines = 1,
+                    modifier = Modifier
+//                        .weight(1F)
+                )
+                Spacer(modifier = Modifier.height(1.dp))
+                Text(
+                    text = item.timezone,
+                    style = MaterialTheme.typography.displaySmall,
+                    color = colorResource(id = R.color.gray_text),
+                    modifier = Modifier
+//                        .weight(1F)
+                )
+            }
+        }
+    }
+}
+
+@OptIn(ExperimentalMaterial3Api::class, ExperimentalFoundationApi::class)
+@Composable
+fun ColumnScope.OpenModalBottomSheet(
+    keyboardController: SoftwareKeyboardController?,
+    focusManager: FocusManager,
+    isSheetOpened: () -> Unit,
+    onSelectedCountry: (String) -> Unit
+) {
+    val sheetState = rememberModalBottomSheetState(skipPartiallyExpanded = true)
+    var isSheetOpen by remember { mutableStateOf(true) }
+    var isActive by remember { mutableStateOf(false) }
+    var searchText by remember { mutableStateOf("") }
+    
+   if (isSheetOpen) {
+       ModalBottomSheet(
+           onDismissRequest = {
+               isSheetOpen = false
+               isSheetOpened.invoke()
+           },
+           sheetState = sheetState,
+           containerColor = colorResource(id = R.color.white),
+           dragHandle = {
+               BottomSheetDefaults.DragHandle(
+                   color = colorResource(id = R.color.gray_splash),
+               )
+           },
+           modifier = Modifier
+               .padding(top = 15.dp)
+               .fillMaxSize()
+       ) {
+           Box(
+               modifier = Modifier
+                   .background(Color.Transparent)
+//                .fillMaxWidth()
+//                .fillMaxHeight()
+                   .padding(start = 0.dp, top = 10.dp)
+                   .fillMaxSize(),
+           ) {
+               Column(
+                   verticalArrangement = Arrangement.Top,
+                   horizontalAlignment = Alignment.Start
+               ) {
+                   CompositionLocalProvider(
+                       LocalOverscrollConfiguration provides null
+                   ) {
+                       DockedSearchBar(
+                           query = searchText,
+                           onQueryChange = {
+                               searchText = it
+//                                scope.launch {
+//                                    searchListViewModelSplash.searchTextChange(it)
+//                                }
+                           },
+                           onSearch = {
+                            isActive = false
+                           },
+                           active = isActive,
+                           onActiveChange = {
+                               isActive = it
+                           },
+                           placeholder = {
+                               Text(
+                                   text = "Search Country",
+                                   style = MaterialTheme.typography.displaySmall,
+                                   color = colorResource(id = R.color.gray_splash),
+                               )
+                           },
+                           leadingIcon = {
+                               Icon(
+                                   painter = painterResource(id = R.drawable.searchicon),
+                                   contentDescription = "Search Icon",
+                                   tint = colorResource(id = R.color.gray_splash),
+                                   modifier = Modifier
+                                       .size(21.dp)
+                               )
+                           },
+                           colors = SearchBarDefaults.colors(
+                               containerColor = colorResource(id = R.color.light_gray_login),
+                               dividerColor = Color.Transparent,
+                               inputFieldColors = TextFieldDefaults.colors(
+                                   focusedTextColor = colorResource(id = R.color.gray_splash),
+                                   unfocusedTextColor = colorResource(id = R.color.gray_splash),
+                                   unfocusedIndicatorColor = colorResource(id = R.color.gray_splash),
+                                   focusedIndicatorColor = colorResource(id = R.color.gray_splash),
+                                   disabledIndicatorColor = colorResource(id = R.color.gray_splash),
+                                   cursorColor = colorResource(id = R.color.gray_splash),
+                               )
+                           ),
+                           modifier = Modifier
+                               .fillMaxWidth()
+                               .height(50.dp)
+                               .padding(horizontal = 10.dp)
+                               .background(Color.Transparent)
+                       ) {}
+
+                       LazyColumn(
+                           modifier = Modifier
+                               .padding(top = 20.dp, bottom = 40.dp)
+                       ) {
+                           Log.d("countryInfoList", "countryInfoList => ${countryInfoList.size}")
+                           items(countryInfoList, itemContent = { item ->
+                               ShowCountryListItem(
+                                   item = item,
+                                   isSheetOpened = {
+                                       isSheetOpen = false
+                                       isSheetOpened.invoke()
+                                   }
+                               ) { countryName ->
+                                   onSelectedCountry.invoke(countryName)
+                               }
+                           })
+                       }
+                   }
+               }
+           }
+       }
+   }
+}
+
+@Composable
+fun ColumnScope.SelectCountryInfo(
+    labelText: Int,
+    keyboardController: SoftwareKeyboardController?,
+    focusManager: FocusManager
+) {
+    var selectedCountry by remember { mutableStateOf("Please Select") }
+    var isSheetOpened by remember { mutableStateOf(false) }
+
+    TextField(
+        value = selectedCountry,
+        onValueChange = {},
+        textStyle = MaterialTheme.typography.displayMedium.copy(
+            color = if (selectedCountry == "Please Select") colorResource(id = R.color.gray_border_textfield)
+            else colorResource(id = R.color.gray_splash)
+        ),
+        readOnly = true,
+        label = {
+            Text(
+            stringResource(id = labelText),
+            style = MaterialTheme.typography.titleSmall.copy(
+                color = colorResource(id = R.color.gray_text)
+            )
+        ) },
+        modifier = Modifier
+            .align(Alignment.Start)
+            .fillMaxWidth()
+            .defaultMinSize(minHeight = 60.dp)
+            .wrapContentHeight()
+            .border(
+                1.dp,
+                color = colorResource(id = R.color.gray_border_textfield),
+                shape = RoundedCornerShape(16.dp)
+            )
+            .background(color = colorResource(id = R.color.transparent))
+            .clickable {
+                isSheetOpened = true
+            },
+        shape = RoundedCornerShape(16.dp),
+        enabled = false,
+        colors = TextFieldDefaults.colors(
+            disabledContainerColor = colorResource(id = R.color.transparent),
+            focusedLabelColor = colorResource(id = R.color.gray_splash),
+            unfocusedContainerColor = colorResource(id = R.color.transparent),
+            focusedContainerColor = colorResource(id = R.color.transparent),
+            focusedIndicatorColor = colorResource(id = R.color.transparent),
+            disabledIndicatorColor = colorResource(id = R.color.transparent),
+            unfocusedIndicatorColor = colorResource(id = R.color.transparent),
+            cursorColor = colorResource(id = R.color.gray_splash),
+        ),
+        keyboardOptions = KeyboardOptions(
+            keyboardType = KeyboardType.Password
+        )
+    )
+
+    if (isSheetOpened) {
+        OpenModalBottomSheet(
+            keyboardController,
+            focusManager,
+            isSheetOpened = {isSheetOpened = false},
+            onSelectedCountry = { countryName ->
+                selectedCountry = countryName
+            }
+        )
+//        isSheetOpened = false
+    }
+}

+ 14 - 0
app/src/main/java/com/fastest/pass/home/utils/GetDrawable.kt

@@ -0,0 +1,14 @@
+package com.fastest.pass.home.utils
+
+import android.content.Context
+import android.util.Log
+
+class GetDrawable {
+    companion object {
+        fun getDrawable(context: Context, name: String?): Int {
+            val iso = name?.toLowerCase().toString()
+            Log.d("image_logo", "iso => $iso")
+            return context.resources.getIdentifier(iso, "drawable", context.packageName)
+        }
+    }
+}

二进制
app/src/main/res/drawable/ad.png


二进制
app/src/main/res/drawable/ae.png


二进制
app/src/main/res/drawable/af.png


二进制
app/src/main/res/drawable/ag.png


二进制
app/src/main/res/drawable/ai.png


二进制
app/src/main/res/drawable/al.png


二进制
app/src/main/res/drawable/am.png


二进制
app/src/main/res/drawable/ao.png


二进制
app/src/main/res/drawable/aq.png


二进制
app/src/main/res/drawable/ar.png


二进制
app/src/main/res/drawable/as.png


二进制
app/src/main/res/drawable/at.png


二进制
app/src/main/res/drawable/au.png


二进制
app/src/main/res/drawable/aw.png


二进制
app/src/main/res/drawable/ax.png


二进制
app/src/main/res/drawable/az.png


二进制
app/src/main/res/drawable/ba.png


二进制
app/src/main/res/drawable/bb.png


二进制
app/src/main/res/drawable/bd.png


二进制
app/src/main/res/drawable/be.png


二进制
app/src/main/res/drawable/bf.png


二进制
app/src/main/res/drawable/bg.png


二进制
app/src/main/res/drawable/bh.png


二进制
app/src/main/res/drawable/bi.png


二进制
app/src/main/res/drawable/bj.png


二进制
app/src/main/res/drawable/bl.png


二进制
app/src/main/res/drawable/bm.png


二进制
app/src/main/res/drawable/bn.png


二进制
app/src/main/res/drawable/bo.png


二进制
app/src/main/res/drawable/bq.png


二进制
app/src/main/res/drawable/br.png


二进制
app/src/main/res/drawable/brl.png


二进制
app/src/main/res/drawable/bs.png


二进制
app/src/main/res/drawable/bt.png


二进制
app/src/main/res/drawable/bv.png


二进制
app/src/main/res/drawable/bw.png


二进制
app/src/main/res/drawable/by.png


二进制
app/src/main/res/drawable/bz.png


二进制
app/src/main/res/drawable/ca.png


二进制
app/src/main/res/drawable/cc.png


二进制
app/src/main/res/drawable/cd.png


二进制
app/src/main/res/drawable/cf.png


二进制
app/src/main/res/drawable/cg.png


二进制
app/src/main/res/drawable/ch.png


二进制
app/src/main/res/drawable/ci.png


二进制
app/src/main/res/drawable/ck.png


二进制
app/src/main/res/drawable/cl.png


二进制
app/src/main/res/drawable/cm.png


二进制
app/src/main/res/drawable/cn.png


二进制
app/src/main/res/drawable/co.png


二进制
app/src/main/res/drawable/cr.png


二进制
app/src/main/res/drawable/cu.png


二进制
app/src/main/res/drawable/cv.png


二进制
app/src/main/res/drawable/cw.png


二进制
app/src/main/res/drawable/cx.png


二进制
app/src/main/res/drawable/cy.png


二进制
app/src/main/res/drawable/cz.png


二进制
app/src/main/res/drawable/de.png


二进制
app/src/main/res/drawable/dj.png


二进制
app/src/main/res/drawable/dk.png


二进制
app/src/main/res/drawable/dm.png


二进制
app/src/main/res/drawable/dor.png


二进制
app/src/main/res/drawable/dz.png


二进制
app/src/main/res/drawable/ec.png


二进制
app/src/main/res/drawable/ee.png


二进制
app/src/main/res/drawable/eg.png


二进制
app/src/main/res/drawable/eh.png


二进制
app/src/main/res/drawable/eo.png


二进制
app/src/main/res/drawable/er.png


二进制
app/src/main/res/drawable/es.png


二进制
app/src/main/res/drawable/et.png


二进制
app/src/main/res/drawable/eu.png


二进制
app/src/main/res/drawable/fi.png


二进制
app/src/main/res/drawable/fj.png


二进制
app/src/main/res/drawable/fk.png


二进制
app/src/main/res/drawable/fm.png


二进制
app/src/main/res/drawable/fo.png


二进制
app/src/main/res/drawable/fr.png


二进制
app/src/main/res/drawable/ga.png


二进制
app/src/main/res/drawable/gb.png


二进制
app/src/main/res/drawable/gd.png


二进制
app/src/main/res/drawable/ge.png


二进制
app/src/main/res/drawable/gf.png


二进制
app/src/main/res/drawable/gg.png


二进制
app/src/main/res/drawable/gh.png


二进制
app/src/main/res/drawable/gi.png


二进制
app/src/main/res/drawable/gl.png


二进制
app/src/main/res/drawable/gm.png


二进制
app/src/main/res/drawable/gn.png


二进制
app/src/main/res/drawable/gp.png


二进制
app/src/main/res/drawable/gq.png


二进制
app/src/main/res/drawable/gr.png


二进制
app/src/main/res/drawable/gs.png


+ 0 - 0
app/src/main/res/drawable/gt.png


部分文件因为文件数量过多而无法显示