Skip to content

Commit a5d076a

Browse files
committed
Adding total votes status for ended poll items
1 parent 05363dc commit a5d076a

3 files changed

Lines changed: 24 additions & 0 deletions

File tree

vector/src/main/java/im/vector/app/features/roomprofile/polls/list/RoomPollItem.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,15 @@ package im.vector.app.features.roomprofile.polls.list
1818

1919
import android.widget.LinearLayout
2020
import android.widget.TextView
21+
import androidx.core.view.isVisible
2122
import com.airbnb.epoxy.EpoxyAttribute
2223
import com.airbnb.epoxy.EpoxyModelClass
2324
import im.vector.app.R
2425
import im.vector.app.core.epoxy.ClickListener
2526
import im.vector.app.core.epoxy.VectorEpoxyHolder
2627
import im.vector.app.core.epoxy.VectorEpoxyModel
2728
import im.vector.app.core.epoxy.onClick
29+
import im.vector.app.core.extensions.setTextOrHide
2830
import im.vector.app.features.home.room.detail.timeline.item.PollOptionView
2931
import im.vector.app.features.home.room.detail.timeline.item.PollOptionViewState
3032

@@ -40,6 +42,9 @@ abstract class RoomPollItem : VectorEpoxyModel<RoomPollItem.Holder>(R.layout.ite
4042
@EpoxyAttribute
4143
var winnerOptions: List<PollOptionViewState.PollEnded> = emptyList()
4244

45+
@EpoxyAttribute
46+
var totalVotesStatus: String? = null
47+
4348
@EpoxyAttribute(EpoxyAttribute.Option.DoNotHash)
4449
var clickListener: ClickListener? = null
4550

@@ -49,16 +54,19 @@ abstract class RoomPollItem : VectorEpoxyModel<RoomPollItem.Holder>(R.layout.ite
4954
holder.date.text = formattedDate
5055
holder.title.text = title
5156
holder.winnerOptions.removeAllViews()
57+
holder.winnerOptions.isVisible = winnerOptions.isNotEmpty()
5258
for (winnerOption in winnerOptions) {
5359
val optionView = PollOptionView(holder.view.context)
5460
holder.winnerOptions.addView(optionView)
5561
optionView.render(winnerOption)
5662
}
63+
holder.totalVotes.setTextOrHide(totalVotesStatus)
5764
}
5865

5966
class Holder : VectorEpoxyHolder() {
6067
val date by bind<TextView>(R.id.pollDate)
6168
val title by bind<TextView>(R.id.pollTitle)
6269
val winnerOptions by bind<LinearLayout>(R.id.pollWinnerOptionsContainer)
70+
val totalVotes by bind<TextView>(R.id.pollTotalVotes)
6371
}
6472
}

vector/src/main/java/im/vector/app/features/roomprofile/polls/list/RoomPollsController.kt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,16 @@
1717
package im.vector.app.features.roomprofile.polls.list
1818

1919
import com.airbnb.epoxy.TypedEpoxyController
20+
import im.vector.app.R
2021
import im.vector.app.core.date.DateFormatKind
2122
import im.vector.app.core.date.VectorDateFormatter
23+
import im.vector.app.core.resources.StringProvider
2224
import im.vector.app.features.roomprofile.polls.PollSummary
2325
import javax.inject.Inject
2426

2527
class RoomPollsController @Inject constructor(
2628
val dateFormatter: VectorDateFormatter,
29+
val stringProvider: StringProvider,
2730
) : TypedEpoxyController<List<PollSummary>>() {
2831

2932
interface Listener {
@@ -64,6 +67,7 @@ class RoomPollsController @Inject constructor(
6467
formattedDate(host.dateFormatter.format(poll.creationTimestamp, DateFormatKind.TIMELINE_DAY_DIVIDER))
6568
title(poll.title)
6669
winnerOptions(poll.winnerOptions)
70+
totalVotesStatus(host.stringProvider.getQuantityString(R.plurals.poll_total_vote_count_after_ended, poll.totalVotes, poll.totalVotes))
6771
clickListener {
6872
host.listener?.onPollClicked(poll.id)
6973
}

vector/src/main/res/layout/item_poll.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,4 +54,16 @@
5454
app:layout_constraintStart_toStartOf="parent"
5555
app:layout_constraintTop_toBottomOf="@id/pollTitle" />
5656

57+
<TextView
58+
android:id="@+id/pollTotalVotes"
59+
style="@style/Widget.Vector.TextView.Caption"
60+
android:layout_width="wrap_content"
61+
android:layout_height="wrap_content"
62+
android:layout_marginTop="12dp"
63+
app:layout_constraintEnd_toEndOf="parent"
64+
app:layout_constraintHorizontal_bias="0"
65+
app:layout_constraintStart_toStartOf="parent"
66+
app:layout_constraintTop_toBottomOf="@id/pollWinnerOptionsContainer"
67+
tools:text="@sample/poll.json/totalVotes" />
68+
5769
</androidx.constraintlayout.widget.ConstraintLayout>

0 commit comments

Comments
 (0)