sms-translate/app/src/main/kotlin/com/simplemobiletools/smsmessenger/models/VCard.kt
2022-08-29 03:19:50 +05:30

54 lines
2.4 KiB
Kotlin

package com.simplemobiletools.smsmessenger.models
import android.content.Context
import com.simplemobiletools.commons.extensions.normalizePhoneNumber
import com.simplemobiletools.smsmessenger.R
import com.simplemobiletools.smsmessenger.extensions.config
import com.simplemobiletools.smsmessenger.extensions.format
import ezvcard.VCard
import ezvcard.property.*
private val displayedPropertyClasses = arrayOf(
Telephone::class.java, Email::class.java, Organization::class.java, Birthday::class.java, Anniversary::class.java, Note::class.java
)
data class VCardWrapper(val vCard: VCard, var expanded: Boolean = false) {
fun getVCardProperties(context: Context): List<VCardPropertyWrapper> {
return vCard.properties
.filter { displayedPropertyClasses.contains(it::class.java) }
.map { VCardPropertyWrapper.from(context, it) }
}
}
data class VCardPropertyWrapper(val value: String, val type: String, val property: VCardProperty) {
companion object {
private const val CELL = "CELL"
private const val HOME = "HOME"
private const val WORK = "WORK"
private fun VCardProperty.getPropertyTypeString(context: Context): String {
return when (parameters.type) {
CELL -> context.getString(R.string.mobile)
HOME -> context.getString(R.string.home)
WORK -> context.getString(R.string.work)
else -> ""
}
}
fun from(context: Context, property: VCardProperty): VCardPropertyWrapper {
return property.run {
when (this) {
is Telephone -> VCardPropertyWrapper(text.normalizePhoneNumber(), getPropertyTypeString(context), property)
is Email -> VCardPropertyWrapper(value, getPropertyTypeString(context), property)
is Organization -> VCardPropertyWrapper(values.joinToString(), context.getString(R.string.work), property)
is Birthday -> VCardPropertyWrapper(date.format(context.config.dateFormat), context.getString(R.string.birthday), property)
is Anniversary -> VCardPropertyWrapper(date.format(context.config.dateFormat), context.getString(R.string.anniversary), property)
is Note -> VCardPropertyWrapper(value, context.getString(R.string.notes), property)
else -> VCardPropertyWrapper("", "", property)
}
}
}
}
}