From 7e896b53d3cea0f44aed1d5c80cd48a897c6eea1 Mon Sep 17 00:00:00 2001
From: Taras <tarassmakula@gmail.com>
Date: Wed, 14 Sep 2022 20:20:48 +0300
Subject: [PATCH] Create poll option view

---
 .../org/futo/circles/view/PollOptionView.kt   | 27 ++++---
 .../main/res/drawable/bg_border_selected.xml  |  8 ++
 app/src/main/res/drawable/ic_winner.xml       |  5 ++
 app/src/main/res/layout/view_poll_option.xml  | 81 ++++++++++++-------
 app/src/main/res/layout/view_poll_post.xml    | 12 +++
 5 files changed, 93 insertions(+), 40 deletions(-)
 create mode 100644 app/src/main/res/drawable/bg_border_selected.xml
 create mode 100644 app/src/main/res/drawable/ic_winner.xml
 create mode 100644 app/src/main/res/layout/view_poll_post.xml

diff --git a/app/src/main/java/org/futo/circles/view/PollOptionView.kt b/app/src/main/java/org/futo/circles/view/PollOptionView.kt
index 31fe21057..8a0689107 100644
--- a/app/src/main/java/org/futo/circles/view/PollOptionView.kt
+++ b/app/src/main/java/org/futo/circles/view/PollOptionView.kt
@@ -4,10 +4,10 @@ import android.content.Context
 import android.util.AttributeSet
 import android.view.LayoutInflater
 import androidx.constraintlayout.widget.ConstraintLayout
-import androidx.core.widget.doAfterTextChanged
 import org.futo.circles.R
 import org.futo.circles.databinding.ViewPollOptionBinding
-import org.futo.circles.extensions.getText
+import org.futo.circles.extensions.setIsVisible
+import org.futo.circles.model.PollOption
 
 class PollOptionView(
     context: Context,
@@ -17,18 +17,21 @@ class PollOptionView(
     private val binding =
         ViewPollOptionBinding.inflate(LayoutInflater.from(context), this)
 
-    fun setup(position: Int, onRemove: (PollOptionView) -> Unit, textChanged: (String) -> Unit) {
-        setHint(position)
-        binding.ivRemove.setOnClickListener { onRemove.invoke(this) }
-        binding.tilOption.editText?.doAfterTextChanged {
-            textChanged(binding.tilOption.getText())
+    fun setup(option: PollOption) {
+        with(binding) {
+            tvOptionQuestion.text = option.optionAnswer
+            ivWinner.setIsVisible(option.isWinner)
+            tvVotesCount.text = context.resources.getQuantityString(
+                R.plurals.votes, option.voteCount, option.voteCount
+            )
+            horizontalProgress.progress = option.votePercentage
+            if(option.isMyVote){
+
+            }else{
+
+            }
         }
-    }
 
-    fun setHint(position: Int) {
-        binding.tilOption.hint = context.getString(R.string.option_format, position)
     }
 
-    fun getText() = binding.tilOption.getText()
-
 }
\ No newline at end of file
diff --git a/app/src/main/res/drawable/bg_border_selected.xml b/app/src/main/res/drawable/bg_border_selected.xml
new file mode 100644
index 000000000..ffce82823
--- /dev/null
+++ b/app/src/main/res/drawable/bg_border_selected.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <corners android:radius="5dp" />
+    <stroke
+        android:width="1dp"
+        android:color="@color/blue" />
+</shape>
\ No newline at end of file
diff --git a/app/src/main/res/drawable/ic_winner.xml b/app/src/main/res/drawable/ic_winner.xml
new file mode 100644
index 000000000..16c485804
--- /dev/null
+++ b/app/src/main/res/drawable/ic_winner.xml
@@ -0,0 +1,5 @@
+<vector android:height="24dp" android:tint="#FFFFFF"
+    android:viewportHeight="24" android:viewportWidth="24"
+    android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@android:color/white" android:pathData="M9.68,13.69L12,11.93l2.31,1.76l-0.88,-2.85L15.75,9h-2.84L12,6.19L11.09,9H8.25l2.31,1.84L9.68,13.69zM20,10c0,-4.42 -3.58,-8 -8,-8s-8,3.58 -8,8c0,2.03 0.76,3.87 2,5.28V23l6,-2l6,2v-7.72C19.24,13.87 20,12.03 20,10zM12,4c3.31,0 6,2.69 6,6s-2.69,6 -6,6s-6,-2.69 -6,-6S8.69,4 12,4z"/>
+</vector>
diff --git a/app/src/main/res/layout/view_poll_option.xml b/app/src/main/res/layout/view_poll_option.xml
index b96fe63c2..57915f357 100644
--- a/app/src/main/res/layout/view_poll_option.xml
+++ b/app/src/main/res/layout/view_poll_option.xml
@@ -4,44 +4,69 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
+    android:clickable="true"
+    android:focusable="true"
+    android:foreground="?attr/selectableItemBackground"
+    android:padding="8dp"
+    tools:background="@drawable/bg_border"
     tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
 
 
-    <com.google.android.material.textfield.TextInputLayout
-        android:id="@+id/tilOption"
-        style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox"
-        android:layout_width="0dp"
+    <ImageView
+        android:id="@+id/ivCheck"
+        android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintEnd_toStartOf="@+id/ivRemove"
         app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent">
+        app:layout_constraintTop_toTopOf="@id/tvOptionQuestion"
+        tools:src="@drawable/ic_check_circle" />
 
-        <com.google.android.material.textfield.TextInputEditText
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:imeOptions="actionNext"
-            android:inputType="text"
-            android:maxLines="1"
-            android:padding="12dp" />
 
-    </com.google.android.material.textfield.TextInputLayout>
+    <TextView
+        android:id="@+id/tvOptionQuestion"
+        style="@style/body"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginHorizontal="4dp"
+        android:ellipsize="end"
+        android:maxLines="2"
+        app:layout_constraintEnd_toStartOf="@id/ivWinner"
+        app:layout_constraintStart_toEndOf="@id/ivCheck"
+        app:layout_constraintTop_toTopOf="parent"
+        tools:text="Some Question" />
 
+    <ImageView
+        android:id="@+id/ivWinner"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:src="@drawable/ic_winner"
+        android:visibility="gone"
+        app:layout_constraintBottom_toBottomOf="@id/tvOptionQuestion"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toTopOf="@id/tvOptionQuestion"
+        app:tint="@color/blue"
+        tools:visibility="visible" />
 
-    <com.google.android.material.imageview.ShapeableImageView
-        android:id="@+id/ivRemove"
+    <com.google.android.material.progressindicator.LinearProgressIndicator
+        android:id="@+id/horizontalProgress"
         android:layout_width="0dp"
-        android:layout_height="0dp"
-        android:background="@color/highlight_color"
-        android:clickable="true"
-        android:focusable="true"
-        android:foreground="?attr/selectableItemBackgroundBorderless"
-        android:padding="14dp"
-        android:src="@drawable/ic_close"
-        app:layout_constraintBottom_toBottomOf="@id/tilOption"
-        app:layout_constraintDimensionRatio="w,1:1"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="4dp"
+        android:layout_marginTop="9dp"
+        android:layout_marginEnd="8dp"
+        app:layout_constraintEnd_toStartOf="@id/tvVotesCount"
+        app:layout_constraintStart_toStartOf="@id/ivCheck"
+        app:layout_constraintTop_toBottomOf="@id/tvOptionQuestion"
+        app:trackCornerRadius="6dp" />
+
+    <TextView
+        android:id="@+id/tvVotesCount"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:lines="1"
+        android:visibility="gone"
         app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="@id/tilOption"
-        app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent" />
+        app:layout_constraintTop_toBottomOf="@id/tvOptionQuestion"
+        tools:text="Some votes"
+        tools:visibility="visible" />
 
 </merge>
\ No newline at end of file
diff --git a/app/src/main/res/layout/view_poll_post.xml b/app/src/main/res/layout/view_poll_post.xml
new file mode 100644
index 000000000..b60b57431
--- /dev/null
+++ b/app/src/main/res/layout/view_poll_post.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="utf-8"?>
+<org.futo.circles.view.PostLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/lPollPost"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content">
+
+    <org.futo.circles.view.PollContentView
+        android:id="@+id/pollContentView"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" />
+
+</org.futo.circles.view.PostLayout>
\ No newline at end of file
-- 
GitLab