Restructure code

This commit is contained in:
Naveen 2022-08-29 16:32:04 +05:30
parent 93848b1894
commit b6e21507c1
3 changed files with 27 additions and 22 deletions

View File

@ -76,6 +76,6 @@ class VCardViewerActivity : SimpleActivity() {
}
private fun prepareData(vCards: List<VCard>): List<VCardWrapper> {
return vCards.map { VCardWrapper(it) }
return vCards.map { vCard -> VCardWrapper.from(this, vCard) }
}
}

View File

@ -20,7 +20,7 @@ import kotlinx.android.synthetic.main.item_vcard_contact.view.*
import kotlinx.android.synthetic.main.item_vcard_contact_property.view.*
class VCardViewerAdapter(
private val activity: SimpleActivity, private var items: MutableList<Any>, private val itemClick: (Any) -> Unit
activity: SimpleActivity, private var items: MutableList<Any>, private val itemClick: (Any) -> Unit
) : RecyclerView.Adapter<VCardViewerAdapter.VCardViewHolder>() {
private var fontSize = activity.getTextSize()
@ -53,7 +53,7 @@ class VCardViewerAdapter(
}
private fun setupVCardView(view: View, item: VCardWrapper) {
val name = item.getFullName()
val name = item.fullName
view.apply {
item_contact_name.apply {
text = name
@ -121,7 +121,7 @@ class VCardViewerAdapter(
}
private fun expandOrCollapseRow(view: View, item: VCardWrapper) {
val properties = item.getVCardProperties(context = activity)
val properties = item.properties
if (item.expanded) {
collapseRow(view, properties, item)
} else {

View File

@ -12,28 +12,33 @@ 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) {
data class VCardWrapper(val vCard: VCard, val fullName: String?, val properties: List<VCardPropertyWrapper>, var expanded: Boolean = false) {
fun getFullName(): String? {
var formattedName = vCard.formattedName?.value
if (formattedName.isNullOrEmpty()) {
val structured = vCard.structuredName
val given = structured?.given
val family = structured.family
formattedName = if (family != null) {
given?.plus(" ")?.plus(family)
} else {
given
companion object {
private fun VCard.extractFullName(): String? {
var fullName = formattedName?.value
if (fullName.isNullOrEmpty()) {
val structured = structuredName
val given = structured?.given
val family = structured.family
fullName = if (family != null) {
given?.plus(" ")?.plus(family)
} else {
given
}
}
return fullName
}
return formattedName
}
fun getVCardProperties(context: Context): List<VCardPropertyWrapper> {
return vCard.properties
.filter { displayedPropertyClasses.contains(it::class.java) }
.map { VCardPropertyWrapper.from(context, it) }
.distinctBy { it.value }
fun from(context: Context, vCard: VCard): VCardWrapper {
val properties = vCard.properties
.filter { displayedPropertyClasses.contains(it::class.java) }
.map { VCardPropertyWrapper.from(context, it) }
.distinctBy { it.value }
val fullName = vCard.extractFullName()
return VCardWrapper(vCard, fullName, properties, expanded = false)
}
}
}