diff --git a/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionViewHolder.kt b/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionViewHolder.kt index 6d40969dc..91afdd16c 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionViewHolder.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionViewHolder.kt @@ -24,6 +24,7 @@ import android.annotation.SuppressLint import android.text.Editable import android.text.TextWatcher import androidx.recyclerview.widget.RecyclerView +import com.nextcloud.talk.R import com.nextcloud.talk.databinding.PollCreateOptionsItemBinding import com.nextcloud.talk.utils.EmojiTextInputEditText @@ -43,13 +44,13 @@ class PollCreateOptionViewHolder( ) { textListener?.let { - binding.pollOptionText.removeTextChangedListener(it) + binding.pollOptionTextEdit.removeTextChangedListener(it) } - binding.pollOptionText.setText(pollCreateOptionItem.pollOption) + binding.pollOptionTextEdit.setText(pollCreateOptionItem.pollOption) if (focus) { - itemsListener.requestFocus(binding.pollOptionText) + itemsListener.requestFocus(binding.pollOptionTextEdit) } binding.pollOptionDelete.setOnClickListener { @@ -57,7 +58,16 @@ class PollCreateOptionViewHolder( } textListener = getTextWatcher(pollCreateOptionItem, itemsListener) - binding.pollOptionText.addTextChangedListener(textListener) + binding.pollOptionTextEdit.addTextChangedListener(textListener) + binding.pollOptionTextInputLayout.hint = String.format( + binding.pollOptionTextInputLayout.resources.getString(R.string.polls_option_hint), + position + 1 + ) + + binding.pollOptionDelete.contentDescription = String.format( + binding.pollOptionTextInputLayout.resources.getString(R.string.polls_option_delete), + position + 1 + ) } private fun getTextWatcher( diff --git a/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionsAdapter.kt b/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionsAdapter.kt index 39c8f7d7f..e827a56a6 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionsAdapter.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/adapters/PollCreateOptionsAdapter.kt @@ -29,7 +29,7 @@ class PollCreateOptionsAdapter( private val clickListener: PollCreateOptionsItemListener ) : RecyclerView.Adapter<PollCreateOptionViewHolder>() { - internal var list: ArrayList<PollCreateOptionItem> = ArrayList<PollCreateOptionItem>() + internal var list: ArrayList<PollCreateOptionItem> = ArrayList() override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PollCreateOptionViewHolder { val itemBinding = PollCreateOptionsItemBinding.inflate(LayoutInflater.from(parent.context), parent, false) diff --git a/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt b/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt index cdaa8fa58..e94f1e750 100644 --- a/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/talk/polls/ui/PollCreateDialogFragment.kt @@ -102,7 +102,7 @@ class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener dismiss() } - binding.pollCreateQuestion.addTextChangedListener(object : TextWatcher { + binding.pollCreateQuestionTextEdit.addTextChangedListener(object : TextWatcher { override fun afterTextChanged(s: Editable) { // unused atm } @@ -161,8 +161,8 @@ class PollCreateDialogFragment : DialogFragment(), PollCreateOptionsItemListener } override fun requestFocus(textField: EditText) { - if (binding.pollCreateQuestion.text.isBlank()) { - binding.pollCreateQuestion.requestFocus() + if (binding.pollCreateQuestionTextEdit.text?.isBlank() == true) { + binding.pollCreateQuestionTextEdit.requestFocus() } else { textField.requestFocus() } diff --git a/app/src/main/res/layout/dialog_poll_create.xml b/app/src/main/res/layout/dialog_poll_create.xml index f48baaa2a..da0fe5f7f 100644 --- a/app/src/main/res/layout/dialog_poll_create.xml +++ b/app/src/main/res/layout/dialog_poll_create.xml @@ -32,33 +32,51 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical" - android:paddingTop="@dimen/dialog_padding"> + android:paddingTop="@dimen/dialog_padding_top_bottom"> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingStart="@dimen/dialog_padding" android:paddingEnd="@dimen/dialog_padding" + android:paddingBottom="@dimen/standard_half_padding" android:text="@string/polls_question" android:textColor="@color/colorPrimary" android:textStyle="bold" /> - <EditText - android:id="@+id/poll_create_question" + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/poll_create_question_text_input_layout" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dialog_padding" android:layout_marginEnd="@dimen/dialog_padding" - android:inputType="textMultiLine" - tools:ignore="Autofill,LabelFor"> + android:hint="@string/polls_question_hint" + android:minHeight="@dimen/min_size_clickable_area" + app:boxStrokeColor="@color/colorPrimary" + app:errorTextAppearance="@style/ErrorAppearance" + app:hintTextColor="@color/colorPrimary"> - <requestFocus /> - </EditText> + <com.nextcloud.talk.utils.EmojiTextInputEditText + android:id="@+id/poll_create_question_text_edit" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:imeOptions="actionNext" + android:inputType="textMultiLine" + android:singleLine="true" + android:textAlignment="viewStart"> + + <requestFocus /> + + </com.nextcloud.talk.utils.EmojiTextInputEditText> + + </com.google.android.material.textfield.TextInputLayout> <TextView android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/standard_margin" + android:paddingTop="@dimen/standard_padding" + android:paddingBottom="@dimen/standard_half_padding" android:paddingStart="@dimen/dialog_padding" android:paddingEnd="@dimen/dialog_padding" android:text="@string/polls_options" @@ -77,19 +95,16 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="@dimen/dialog_padding" - android:layout_marginTop="@dimen/standard_half_margin" android:layout_marginEnd="@dimen/dialog_padding" android:minHeight="@dimen/min_size_clickable_area" android:text="@string/polls_add_option" app:cornerRadius="@dimen/button_corner_radius" - app:icon="@drawable/ic_add_grey600_24px" - app:layout_constraintEnd_toEndOf="parent" /> + app:icon="@drawable/ic_add_grey600_24px" /> <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/standard_margin" - android:layout_marginBottom="@dimen/standard_half_margin" android:paddingStart="@dimen/dialog_padding" android:paddingEnd="@dimen/dialog_padding" android:text="@string/polls_settings" @@ -119,12 +134,12 @@ <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="@dimen/standard_margin" + android:layout_marginTop="@dimen/standard_half_margin" android:gravity="end" android:orientation="horizontal" android:paddingStart="@dimen/dialog_padding" android:paddingEnd="@dimen/dialog_padding" - android:paddingBottom="@dimen/standard_padding"> + android:paddingBottom="@dimen/dialog_padding_top_bottom"> <com.google.android.material.button.MaterialButton android:id="@+id/poll_dismiss" diff --git a/app/src/main/res/layout/poll_create_options_item.xml b/app/src/main/res/layout/poll_create_options_item.xml index e9c3dae49..e0d71edba 100644 --- a/app/src/main/res/layout/poll_create_options_item.xml +++ b/app/src/main/res/layout/poll_create_options_item.xml @@ -28,17 +28,32 @@ android:minHeight="@dimen/min_size_clickable_area" android:orientation="horizontal" android:paddingStart="@dimen/dialog_padding" + android:paddingBottom="@dimen/standard_half_margin" android:paddingEnd="@dimen/zero" tools:background="@color/white"> - <EditText - android:id="@+id/poll_option_text" + <com.google.android.material.textfield.TextInputLayout + android:id="@+id/poll_option_text_input_layout" + style="@style/Widget.MaterialComponents.TextInputLayout.OutlinedBox" android:layout_width="0dp" android:layout_height="wrap_content" + android:minHeight="@dimen/min_size_clickable_area" + android:layout_marginEnd="@dimen/standard_half_margin" android:layout_weight="1" - android:inputType="text" - android:singleLine="true" - tools:ignore="Autofill,LabelFor" /> + app:boxStrokeColor="@color/colorPrimary" + app:errorTextAppearance="@style/ErrorAppearance" + app:hintTextColor="@color/colorPrimary"> + + <com.nextcloud.talk.utils.EmojiTextInputEditText + android:id="@+id/poll_option_text_edit" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:imeOptions="actionNext" + android:inputType="text" + android:singleLine="true" + android:textAlignment="viewStart" /> + + </com.google.android.material.textfield.TextInputLayout> <com.google.android.material.button.MaterialButton android:id="@+id/poll_option_delete" @@ -46,7 +61,7 @@ android:layout_width="@dimen/min_size_clickable_area" android:layout_height="@dimen/min_size_clickable_area" android:layout_marginEnd="@dimen/standard_half_margin" - android:contentDescription="@string/nc_action_open_main_menu" + android:contentDescription="@string/polls_option_delete" app:cornerRadius="@dimen/button_corner_radius" app:icon="@drawable/ic_baseline_close_24" app:iconTint="@color/fontAppbar" /> diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index 9962226da..9f4ad1f17 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -60,6 +60,7 @@ <dimen name="standard_half_margin">8dp</dimen> <dimen name="default_login_width">400dp</dimen> <dimen name="dialog_padding">24dp</dimen> + <dimen name="dialog_padding_top_bottom">18dp</dimen> <dimen name="call_grid_item_min_height">180dp</dimen> <dimen name="call_controls_height">110dp</dimen> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ec961c518..bffdd4c13 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -543,7 +543,10 @@ <string name="polls_max_votes_reached">You can\'t vote with more options for this poll.</string> <string name="polls_results_subtitle">Results</string> <string name="polls_question">Question</string> + <string name="polls_question_hint">Your question</string> <string name="polls_options">Options</string> + <string name="polls_option_hint">Option %1$s</string> + <string name="polls_option_delete">Delete option %1$s</string> <string name="polls_settings">Settings</string> <string name="polls_private_poll">Private poll</string> <string name="polls_multiple_answers">Multiple answers</string>