Use more features of the TextInputLayout

Stephen Paul Weber created

Change summary

src/cheogram/res/layout/command_checkbox_field.xml              |  3 
src/cheogram/res/layout/command_radio_edit_field.xml            |  2 
src/cheogram/res/layout/command_result_field.xml                |  2 
src/cheogram/res/layout/command_spinner_field.xml               |  2 
src/cheogram/res/layout/command_text_field.xml                  | 22 --
src/main/java/eu/siacs/conversations/entities/Conversation.java | 15 +
6 files changed, 19 insertions(+), 27 deletions(-)

Detailed changes

src/cheogram/res/layout/command_checkbox_field.xml 🔗

@@ -31,7 +31,8 @@
                 android:layout_width="wrap_content"
                 android:layout_height="wrap_content"
                 android:paddingLeft="16dp"
-                android:textAppearance="@style/TextAppearance.Conversations.Status" />
+                android:textAppearance="@style/TextAppearance.Conversations.Status"
+                android:textColor="?android:textColorSecondary" />
 
         </LinearLayout>
 

src/cheogram/res/layout/command_radio_edit_field.xml 🔗

@@ -47,7 +47,7 @@
             android:paddingLeft="16dp"
             android:paddingRight="8dp"
             android:textAppearance="@style/TextAppearance.Conversations.Status"
-            android:textColor="?attr/edit_text_color" />
+            android:textColor="?android:textColorSecondary" />
 
     </LinearLayout>
 </layout>

src/cheogram/res/layout/command_result_field.xml 🔗

@@ -36,7 +36,7 @@
             android:paddingLeft="8dp"
             android:paddingRight="8dp"
             android:textAppearance="@style/TextAppearance.Conversations.Status"
-            android:textColor="?attr/edit_text_color" />
+            android:textColor="?android:textColorSecondary" />
 
     </LinearLayout>
 </layout>

src/cheogram/res/layout/command_spinner_field.xml 🔗

@@ -32,7 +32,7 @@
             android:paddingLeft="16dp"
             android:paddingRight="8dp"
             android:textAppearance="@style/TextAppearance.Conversations.Status"
-            android:textColor="?attr/edit_text_color" />
+            android:textColor="?android:textColorSecondary" />
 
     </LinearLayout>
 </layout>

src/cheogram/res/layout/command_text_field.xml 🔗

@@ -1,11 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
 <layout xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
-    <LinearLayout
-        android:layout_width="fill_parent"
-        android:layout_height="wrap_content"
-        android:paddingBottom="16dp"
-        android:orientation="vertical">
 
         <com.google.android.material.textfield.TextInputLayout
             android:id="@+id/textinput_layout"
@@ -13,10 +8,13 @@
             android:layout_height="wrap_content"
             android:paddingLeft="8dp"
             android:paddingRight="8dp"
+            android:paddingBottom="16dp"
             app:errorTextAppearance="@style/TextAppearance.Conversations.Design.Error"
-            app:hintTextAppearance="@style/TextAppearance.Conversations.Design.Hint">
+            app:hintTextAppearance="@style/TextAppearance.Conversations.Design.Hint"
+            app:helperTextTextAppearance="@style/TextAppearance.Conversations.Status"
+            app:helperTextTextColor="?android:textColorSecondary">
 
-            <EditText
+            <com.google.android.material.textfield.TextInputEditText
                 android:id="@+id/textinput"
                 style="@style/Widget.Conversations.EditText"
                 android:layout_width="match_parent"
@@ -28,14 +26,4 @@
 
         </com.google.android.material.textfield.TextInputLayout>
 
-        <TextView
-            android:id="@+id/desc"
-            android:layout_width="match_parent"
-            android:layout_height="wrap_content"
-            android:paddingLeft="16dp"
-            android:paddingRight="8dp"
-            android:textAppearance="@style/TextAppearance.Conversations.Status"
-            android:textColor="?attr/edit_text_color" />
-
-    </LinearLayout>
 </layout>

src/main/java/eu/siacs/conversations/entities/Conversation.java 🔗

@@ -37,6 +37,7 @@ import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.viewpager.widget.ViewPager;
 
 import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.textfield.TextInputLayout;
 import com.google.common.collect.ComparisonChain;
 import com.google.common.collect.Lists;
 
@@ -1342,8 +1343,9 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
 
                 abstract public void bind(Element el);
 
-                protected void setupInputType(Element field, TextView textinput) {
+                protected void setupInputType(Element field, TextView textinput, TextInputLayout layout) {
                     int flags = 0;
+                    if (layout != null) layout.setEndIconMode(TextInputLayout.END_ICON_NONE);
                     textinput.setInputType(flags | InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT);
 
                     String type = field.getAttribute("type");
@@ -1360,6 +1362,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
 
                         if (type.equals("text-private")) {
                             textinput.setInputType(flags | InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_VARIATION_PASSWORD);
+                            if (layout != null) layout.setEndIconMode(TextInputLayout.END_ICON_PASSWORD_TOGGLE);
                         }
                     }
 
@@ -1576,7 +1579,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
                     Element validate = field.findChild("validate", "http://jabber.org/protocol/xdata-validate");
                     binding.open.setVisibility((validate != null && validate.findChild("open", "http://jabber.org/protocol/xdata-validate") != null) ? View.VISIBLE : View.GONE);
                     binding.open.setText(mValue.getContent());
-                    setupInputType(field, binding.open);
+                    setupInputType(field, binding.open, null);
 
                     options.clear();
                     List<Option> theOptions = Option.forField(field);
@@ -1693,10 +1696,10 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
 
                     String desc = field.findChildContent("desc", "jabber:x:data");
                     if (desc == null) {
-                        binding.desc.setVisibility(View.GONE);
+                        binding.textinputLayout.setHelperTextEnabled(false);
                     } else {
-                        binding.desc.setVisibility(View.VISIBLE);
-                        binding.desc.setText(desc);
+                        binding.textinputLayout.setHelperTextEnabled(true);
+                        binding.textinputLayout.setHelperText(desc);
                     }
 
                     mValue = field.findChild("value", "jabber:x:data");
@@ -1704,7 +1707,7 @@ public class Conversation extends AbstractEntity implements Blockable, Comparabl
                         mValue = field.addChild("value", "jabber:x:data");
                     }
                     binding.textinput.setText(mValue.getContent());
-                    setupInputType(field, binding.textinput);
+                    setupInputType(field, binding.textinput, binding.textinputLayout);
                 }
 
                 @Override