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