diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 16879efa..7496edb7 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -38,6 +38,10 @@
android:name=".activities.UnitConverterActivity"
android:exported="false" />
+
+
- binding.viewUnitConverter.unitsTabLayout.newTab()
- .setId(index)
- .setText(converter.nameResId)
- .apply { binding.viewUnitConverter.unitsTabLayout.addTab(this) }
- }
- binding.viewUnitConverter.viewConverter.root.setConverter(Converter.ALL.first())
+ binding.viewUnitConverter.viewConverter.root.setConverter(converter)
}
override fun onResume() {
super.onResume()
setupToolbar(binding.unitConverterToolbar, NavigationIcon.Cross)
- binding.viewUnitConverter.unitsTabLayout.setBackgroundColor(getProperBackgroundColor())
binding.viewUnitConverter.viewConverter.root.updateColors()
- if (storedTextColor != config.textColor) {
- binding.viewUnitConverter.converterHolder.let { updateViewColors(it, getProperTextColor()) }
- }
+ binding.viewUnitConverter.converterHolder.let { updateViewColors(it, getProperTextColor()) }
if (config.preventPhoneFromSleeping) {
window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
- if (storedUseCommaAsDecimalMark != config.useCommaAsDecimalMark) {
- setupDecimalSeparator()
- }
+ setupDecimalSeparator()
vibrateOnButtonPress = config.vibrateOnButtonPress
@@ -90,19 +84,11 @@ class UnitConverterActivity : SimpleActivity() {
override fun onPause() {
super.onPause()
- storeStateVariables()
if (config.preventPhoneFromSleeping) {
window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
}
}
- private fun storeStateVariables() {
- config.apply {
- storedTextColor = textColor
- storedUseCommaAsDecimalMark = useCommaAsDecimalMark
- }
- }
-
private fun checkHaptic(view: View) {
if (vibrateOnButtonPress) {
view.performHapticFeedback()
@@ -121,10 +107,9 @@ class UnitConverterActivity : SimpleActivity() {
}
private fun setupDecimalSeparator() {
- var decimalSeparator = DOT
- var groupingSeparator = COMMA
- storedUseCommaAsDecimalMark = config.useCommaAsDecimalMark
- if (storedUseCommaAsDecimalMark) {
+ val decimalSeparator: String
+ val groupingSeparator: String
+ if (config.useCommaAsDecimalMark) {
decimalSeparator = COMMA
groupingSeparator = DOT
} else {
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/activities/UnitConverterPickerActivity.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/UnitConverterPickerActivity.kt
new file mode 100644
index 00000000..09306eff
--- /dev/null
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/activities/UnitConverterPickerActivity.kt
@@ -0,0 +1,53 @@
+package com.simplemobiletools.calculator.activities
+
+import android.content.Intent
+import android.os.Bundle
+import android.view.WindowManager
+import com.simplemobiletools.calculator.BuildConfig
+import com.simplemobiletools.calculator.R
+import com.simplemobiletools.calculator.adapters.UnitTypesAdapter
+import com.simplemobiletools.calculator.databinding.ActivityUnitConverterPickerBinding
+import com.simplemobiletools.calculator.extensions.config
+import com.simplemobiletools.calculator.helpers.converters.Converter
+import com.simplemobiletools.commons.extensions.appLaunched
+import com.simplemobiletools.commons.extensions.viewBinding
+import com.simplemobiletools.commons.helpers.NavigationIcon
+import com.simplemobiletools.commons.views.AutoGridLayoutManager
+
+class UnitConverterPickerActivity : SimpleActivity() {
+ private val binding by viewBinding(ActivityUnitConverterPickerBinding::inflate)
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ isMaterialActivity = true
+ super.onCreate(savedInstanceState)
+ setContentView(binding.root)
+ appLaunched(BuildConfig.APPLICATION_ID)
+ updateMaterialActivityViews(binding.unitConverterPickerCoordinator, null, useTransparentNavigation = false, useTopSearchMenu = false)
+ setupMaterialScrollListener(binding.unitTypesGrid, binding.unitConverterPickerToolbar)
+
+ binding.unitTypesGrid.layoutManager = AutoGridLayoutManager(this, resources.getDimensionPixelSize(R.dimen.unit_type_size))
+ binding.unitTypesGrid.adapter = UnitTypesAdapter(this, Converter.ALL) {
+ Intent(this, UnitConverterActivity::class.java).apply {
+ putExtra(UnitConverterActivity.EXTRA_CONVERTER_ID, it)
+ startActivity(this)
+ }
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+
+ setupToolbar(binding.unitConverterPickerToolbar, NavigationIcon.Cross)
+
+ if (config.preventPhoneFromSleeping) {
+ window.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+ }
+ }
+
+ override fun onPause() {
+ super.onPause()
+ if (config.preventPhoneFromSleeping) {
+ window.clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON)
+ }
+ }
+}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/adapters/UnitTypesAdapter.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/adapters/UnitTypesAdapter.kt
new file mode 100644
index 00000000..bc71b1f6
--- /dev/null
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/adapters/UnitTypesAdapter.kt
@@ -0,0 +1,42 @@
+package com.simplemobiletools.calculator.adapters
+
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import com.simplemobiletools.calculator.activities.SimpleActivity
+import com.simplemobiletools.calculator.databinding.ItemUnitTypeBinding
+import com.simplemobiletools.calculator.helpers.converters.Converter
+import com.simplemobiletools.commons.extensions.applyColorFilter
+import com.simplemobiletools.commons.extensions.getProperPrimaryColor
+import com.simplemobiletools.commons.extensions.getProperTextColor
+
+class UnitTypesAdapter (val activity: SimpleActivity, val items: List, val itemClick: (id: Int) -> Unit) : RecyclerView.Adapter() {
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder =
+ ViewHolder(ItemUnitTypeBinding.inflate(activity.layoutInflater, parent, false))
+
+
+ override fun onBindViewHolder(holder: ViewHolder, position: Int) {
+ val item = items[position]
+ holder.bindView(item, position)
+ }
+
+ override fun getItemCount() = items.size
+
+ inner class ViewHolder(private val binding: ItemUnitTypeBinding) : RecyclerView.ViewHolder(binding.root) {
+ fun bindView(item: Converter, id: Int): View {
+ itemView.apply {
+ binding.unitImage.setImageResource(item.imageResId)
+ binding.unitLabel.setText(item.nameResId)
+
+ binding.unitLabel.setTextColor(activity.getProperTextColor())
+ binding.unitImage.applyColorFilter(activity.getProperPrimaryColor())
+
+ setOnClickListener {
+ itemClick(id)
+ }
+ }
+
+ return itemView
+ }
+ }
+}
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/AreaConverter.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/AreaConverter.kt
index 4876c78c..f66b809f 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/AreaConverter.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/AreaConverter.kt
@@ -4,6 +4,7 @@ import com.simplemobiletools.calculator.R
object AreaConverter : Converter {
override val nameResId: Int = R.string.unit_area
+ override val imageResId: Int = R.drawable.ic_box_vector
sealed class Unit(nameResId: Int, factor: Double) : Converter.Unit(nameResId, factor) {
data object SquareKilometer : Unit(
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/Base.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/Base.kt
index 8623bb48..d234c9c8 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/Base.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/Base.kt
@@ -10,6 +10,7 @@ interface Converter {
}
val nameResId: Int
+ val imageResId: Int
val units: List
val defaultTopUnit: Unit
val defaultBottomUnit: Unit
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/LengthConverter.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/LengthConverter.kt
index ef59ba5b..a8e30c6b 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/LengthConverter.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/LengthConverter.kt
@@ -3,8 +3,8 @@ package com.simplemobiletools.calculator.helpers.converters
import com.simplemobiletools.calculator.R
object LengthConverter : Converter {
-
override val nameResId: Int = R.string.unit_length
+ override val imageResId: Int = R.drawable.ic_height_vector
sealed class Unit(nameResId: Int, factor: Double) : Converter.Unit(nameResId, factor) {
data object Kilometer : Unit(
diff --git a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/VolumeConverter.kt b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/VolumeConverter.kt
index b7473df4..fec7ebf0 100644
--- a/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/VolumeConverter.kt
+++ b/app/src/main/kotlin/com/simplemobiletools/calculator/helpers/converters/VolumeConverter.kt
@@ -4,6 +4,7 @@ import com.simplemobiletools.calculator.R
object VolumeConverter : Converter {
override val nameResId: Int = R.string.unit_volume
+ override val imageResId: Int = R.drawable.ic_drop_vector
sealed class Unit(nameResId: Int, factor: Double) : Converter.Unit(nameResId, factor) {
data object SquareKilometer : Unit(
diff --git a/app/src/main/res/drawable/ic_box_vector.xml b/app/src/main/res/drawable/ic_box_vector.xml
new file mode 100644
index 00000000..b1bf0ac5
--- /dev/null
+++ b/app/src/main/res/drawable/ic_box_vector.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_drop_vector.xml b/app/src/main/res/drawable/ic_drop_vector.xml
new file mode 100644
index 00000000..f141fb3a
--- /dev/null
+++ b/app/src/main/res/drawable/ic_drop_vector.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_height_vector.xml b/app/src/main/res/drawable/ic_height_vector.xml
new file mode 100644
index 00000000..0392a75e
--- /dev/null
+++ b/app/src/main/res/drawable/ic_height_vector.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/ic_thermostat_vector.xml b/app/src/main/res/drawable/ic_thermostat_vector.xml
new file mode 100644
index 00000000..13c773a6
--- /dev/null
+++ b/app/src/main/res/drawable/ic_thermostat_vector.xml
@@ -0,0 +1,5 @@
+
+
+
diff --git a/app/src/main/res/drawable/unit_type_background.xml b/app/src/main/res/drawable/unit_type_background.xml
new file mode 100644
index 00000000..7d03375e
--- /dev/null
+++ b/app/src/main/res/drawable/unit_type_background.xml
@@ -0,0 +1,23 @@
+
+
+ -
+
+
-
+
+
+
+
+
+ -
+
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_unit_converter_picker.xml b/app/src/main/res/layout/activity_unit_converter_picker.xml
new file mode 100644
index 00000000..eb4fd3fb
--- /dev/null
+++ b/app/src/main/res/layout/activity_unit_converter_picker.xml
@@ -0,0 +1,29 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/item_unit_type.xml b/app/src/main/res/layout/item_unit_type.xml
new file mode 100644
index 00000000..cfc9bd7d
--- /dev/null
+++ b/app/src/main/res/layout/item_unit_type.xml
@@ -0,0 +1,30 @@
+
+
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/view_unit_converter.xml b/app/src/main/res/layout/view_unit_converter.xml
index d353f968..b3a40b9a 100644
--- a/app/src/main/res/layout/view_unit_converter.xml
+++ b/app/src/main/res/layout/view_unit_converter.xml
@@ -1,7 +1,6 @@
-
-
34sp
20sp
40sp
+
+ 128dp