Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a8efaa19 authored by moezbhatti's avatar moezbhatti Committed by Moez Bhatti
Browse files

Update contact list stype to show indices

parent 1e5f8485
Loading
Loading
Loading
Loading
+14 −14
Original line number Diff line number Diff line
@@ -20,10 +20,12 @@ package com.moez.QKSMS.feature.compose

import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.view.isVisible
import androidx.recyclerview.widget.RecyclerView
import com.moez.QKSMS.R
import com.moez.QKSMS.common.base.QkAdapter
import com.moez.QKSMS.common.base.QkViewHolder
import com.moez.QKSMS.common.util.extensions.forwardTouches
import com.moez.QKSMS.common.util.extensions.setVisible
import com.moez.QKSMS.model.Contact
import io.reactivex.subjects.PublishSubject
@@ -42,32 +44,34 @@ class ContactAdapter @Inject constructor() : QkAdapter<Contact>() {
        val view = layoutInflater.inflate(R.layout.contact_list_item, parent, false)

        view.addresses.setRecycledViewPool(numbersViewPool)
        view.addresses.adapter = PhoneNumberAdapter()
        view.addresses.forwardTouches(view)

        return QkViewHolder(view).apply {
            view.primary.setOnClickListener {
            view.setOnClickListener {
                val contact = getItem(adapterPosition)
                contactSelected.onNext(copyContact(contact, 0))
            }

            view.addresses.adapter = PhoneNumberAdapter { contact, index ->
                contactSelected.onNext(copyContact(contact, index + 1))
                contactSelected.onNext(contact)
            }
        }
    }

    override fun onBindViewHolder(holder: QkViewHolder, position: Int) {
        val prevContact = if (position > 0) getItem(position - 1) else null
        val contact = getItem(position)
        val view = holder.containerView

        view.index.text = if (contact.name[0].isLetter()) contact.name[0].toString() else "#"
        view.index.isVisible = prevContact == null ||
                (contact.name[0].isLetter() && contact.name[0] != prevContact.name[0]) ||
                (!contact.name[0].isLetter() && prevContact.name[0].isLetter())

        view.avatar.setContact(contact)
        view.name.text = contact.name
        view.name.setVisible(view.name.text.isNotEmpty())
        view.address.text = contact.numbers.firstOrNull()?.address ?: ""
        view.type.text = contact.numbers.firstOrNull()?.type ?: ""

        val adapter = view.addresses.adapter as PhoneNumberAdapter
        adapter.contact = contact
        adapter.data = contact.numbers.drop(Math.min(contact.numbers.size, 1))
        adapter.data = contact.numbers
    }

    /**
@@ -80,8 +84,4 @@ class ContactAdapter @Inject constructor() : QkAdapter<Contact>() {
        numbers.add(contact.numbers[numberIndex])
    }

    override fun areItemsTheSame(old: Contact, new: Contact): Boolean {
        return old.lookupKey == new.lookupKey
    }

}
+2 −8
Original line number Diff line number Diff line
@@ -25,11 +25,9 @@ import com.moez.QKSMS.common.base.QkAdapter
import com.moez.QKSMS.common.base.QkViewHolder
import com.moez.QKSMS.model.Contact
import com.moez.QKSMS.model.PhoneNumber
import kotlinx.android.synthetic.main.contact_list_item.view.*
import kotlinx.android.synthetic.main.contact_number_list_item.view.*

class PhoneNumberAdapter(
    private val numberClicked: (Contact, Int) -> Unit
) : QkAdapter<PhoneNumber>() {
class PhoneNumberAdapter : QkAdapter<PhoneNumber>() {

    lateinit var contact: Contact

@@ -43,10 +41,6 @@ class PhoneNumberAdapter(
        val number = getItem(position)
        val view = holder.containerView

        // Setting this in onCreateViewHolder causes a crash sometimes. [contact] returns the
        // contact from a different row, I'm not sure why
        view.setOnClickListener { numberClicked(contact, position) }

        view.address.text = number.address
        view.type.text = number.type
    }
+39 −45
Original line number Diff line number Diff line
@@ -21,16 +21,45 @@
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">
    android:layout_height="wrap_content"
    android:background="?attr/selectableItemBackground"
    android:paddingTop="8dp"
    android:paddingBottom="8dp">

    <com.moez.QKSMS.common.widget.QkTextView
        android:id="@+id/index"
        android:layout_width="24dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="12dp"
        android:gravity="center_horizontal"
        android:maxLength="1"
        android:textStyle="bold"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="@id/avatar"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@id/avatar"
        app:textColor="theme"
        app:textSize="primary"
        tools:text="M"
        tools:visibility="visible" />

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/icon"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_marginStart="12dp"
        android:visibility="invisible"
        app:layout_constraintBottom_toBottomOf="@id/avatar"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@id/avatar" />

    <com.moez.QKSMS.common.widget.AvatarView
        android:id="@+id/avatar"
        android:layout_width="40dp"
        android:layout_height="40dp"
        android:layout_marginStart="16dp"
        android:layout_marginTop="8dp"
        android:layout_marginStart="24dp"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintStart_toEndOf="@id/icon"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_bias="0" />

@@ -41,59 +70,24 @@
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginEnd="16dp"
        app:layout_constraintBottom_toTopOf="@id/address"
        android:textStyle="bold"
        app:layout_constraintBottom_toTopOf="@id/addresses"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0"
        app:layout_constraintStart_toEndOf="@id/avatar"
        app:layout_constraintTop_toTopOf="@id/avatar"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintVertical_chainStyle="packed"
        tools:text="Moez Bhatti" />

    <com.moez.QKSMS.common.widget.QkTextView
        android:id="@+id/address"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="2dp"
        android:layout_marginEnd="16dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        android:textColor="?android:attr/textColorSecondary"
        app:layout_constraintBottom_toBottomOf="@id/avatar"
        app:layout_constraintEnd_toStartOf="@id/type"
        app:layout_constraintStart_toEndOf="@id/avatar"
        app:layout_constraintTop_toBottomOf="@id/name"
        app:textSize="secondary"
        tools:text="(123) 456-7890"
        tools:textColor="@color/textSecondary" />

    <com.moez.QKSMS.common.widget.QkTextView
        android:id="@+id/type"
        style="@style/TextSecondary"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="16dp"
        android:gravity="center_vertical"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintTop_toTopOf="@id/address"
        tools:text="Mobile"
        tools:textColor="@color/textTertiary" />

    <View
        android:id="@+id/primary"
        android:layout_width="match_parent"
        android:layout_height="56dp"
        android:background="?attr/selectableItemBackground" />

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/addresses"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="8dp"
        app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
        app:layout_constraintEnd_toEndOf="@id/type"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="@id/name"
        app:layout_constraintTop_toBottomOf="@id/address"
        app:layout_constraintTop_toBottomOf="@id/name"
        tools:listitem="@layout/contact_number_list_item" />

</androidx.constraintlayout.widget.ConstraintLayout>
 No newline at end of file
+15 −14
Original line number Diff line number Diff line
@@ -22,26 +22,27 @@
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/selectableItemBackground">
    android:paddingTop="2dp">

    <com.moez.QKSMS.common.widget.QkTextView
        android:id="@+id/address"
        android:layout_width="0dp"
        android:layout_height="40dp"
        android:layout_weight="1"
        android:id="@+id/type"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:gravity="center_vertical"
        android:textColor="?android:attr/textColorSecondary"
        android:textColor="?android:attr/textColorTertiary"
        android:textStyle="bold"
        app:textSize="secondary"
        tools:text="(123) 456-7890"
        tools:textColor="@color/textSecondary" />
        tools:text="Mobile" />

    <com.moez.QKSMS.common.widget.QkTextView
        android:id="@+id/type"
        style="@style/TextSecondary"
        android:layout_width="wrap_content"
        android:layout_height="40dp"
        android:id="@+id/address"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_weight="1"
        android:gravity="center_vertical"
        tools:text="Mobile"
        tools:textColor="@color/textTertiary" />
        android:textColor="?android:attr/textColorTertiary"
        app:textSize="secondary"
        tools:text="(123) 456-7890" />

</LinearLayout>
 No newline at end of file