Browse Source

Changed input warning to use TextInputLayout setError

Signed-off-by: Liam P <89549210+liam-p-23@users.noreply.github.com>
Liam P 3 years ago
parent
commit
b0cf10b88a

+ 6 - 8
src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java

@@ -113,19 +113,15 @@ public class RenameFileDialogFragment
         int selectionEnd = extensionStart >= 0 ? extensionStart : currentName.length();
         binding.userInput.setSelection(0, selectionEnd);
         binding.userInput.requestFocus();
-
-        // Set the proper input warning message
-        binding.inputWarningMessage.setText(R.string.hidden_file_name_warning);
+        
         // Add TextChangedListener to handle showing/hiding the input warning message
         binding.userInput.addTextChangedListener(new TextWatcher() {
             @Override
             public void afterTextChanged(Editable s) {
-
             }
 
             @Override
             public void beforeTextChanged(CharSequence s, int start, int count, int after) {
-
             }
 
             /**
@@ -140,10 +136,12 @@ public class RenameFileDialogFragment
                 }
 
                 if (!TextUtils.isEmpty(newFileName) && newFileName.charAt(0) == '.') {
-                    binding.inputWarningMessage.setVisibility(View.VISIBLE);
+                    binding.userInputContainer.setError(getText(R.string.hidden_file_name_warning));
                 }
-                else if(binding.inputWarningMessage.getVisibility() == View.VISIBLE) {
-                    binding.inputWarningMessage.setVisibility(View.GONE);
+                else if(binding.userInputContainer.getError() != null) {
+                    binding.userInputContainer.setError(null);
+                    // Called to remove extra padding
+                    binding.userInputContainer.setErrorEnabled(false);
                 }
             }
         });

+ 3 - 12
src/main/res/layout/edit_box_dialog.xml

@@ -21,13 +21,13 @@
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:padding="@dimen/standard_padding"
-    android:orientation="vertical">
+    android:padding="@dimen/standard_padding">
 
     <com.google.android.material.textfield.TextInputLayout
         android:id="@+id/user_input_container"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
+        android:theme="@style/TextInputLayoutInputWarning"
         android:hint="@string/hint_name">
 
         <com.google.android.material.textfield.TextInputEditText
@@ -44,13 +44,4 @@
 
     </com.google.android.material.textfield.TextInputLayout>
 
-    <TextView
-        android:id="@+id/input_warning_message"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:text=""
-        android:textColor="@color/list_item_lastmod_and_filesize_text"
-        android:textSize="@dimen/two_line_secondary_text_size"
-        android:visibility="gone"/>
-
-</LinearLayout>
+</LinearLayout>

+ 105 - 101
src/main/res/values/styles.xml

@@ -19,10 +19,10 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android">
-	<!-- General ownCloud app style -->
-	<style name="BaseTheme.ownCloud" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
-    	<item name="actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
-    	<item name="android:actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
+    <!-- General ownCloud app style -->
+    <style name="BaseTheme.ownCloud" parent="Theme.MaterialComponents.DayNight.DarkActionBar">
+        <item name="actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
+        <item name="android:actionBarStyle">@style/Theme.ownCloud.Widget.ActionBar</item>
         <item name="actionBarPopupTheme">@style/ThemeOverlay.AppTheme.PopupMenu</item>
         <item name="actionModeBackground">@color/action_mode_background</item>
         <item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
@@ -72,7 +72,11 @@
         <item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox</item>
     </style>
 
-	<style name="FallbackDatePickerDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
+    <style name="TextInputLayoutInputWarning" parent="Widget.App.TextInputLayout">
+        <item name="colorError">@color/text_color</item>
+    </style>
+
+    <style name="FallbackDatePickerDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
         <item name="colorPrimary">@color/bg_default</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:windowBackground">@color/bg_default</item>
@@ -96,14 +100,14 @@
         <item name="android:textAllCaps">false</item>
         <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
         <item name="android:buttonBarButtonStyle">@style/FallbackTheming.Dialog.ButtonStyle</item>
-	</style>
+    </style>
 
     <style name="FallbackTheming.Dialog.ButtonStyle"
         parent="Widget.MaterialComponents.Button.TextButton.Dialog">
         <item name="android:textColor">@color/text_color</item>
     </style>
 
-	<!-- separate action bar style for activities without an action bar -->
+    <!-- separate action bar style for activities without an action bar -->
     <style name="BaseTheme.ownCloud.Toolbar" parent="Theme.MaterialComponents.DayNight.NoActionBar">
         <item name="actionModeBackground">@color/action_mode_background</item>
         <item name="alertDialogTheme">@style/ownCloud.AlertDialog</item>
@@ -137,48 +141,48 @@
     </style>
 
     <style name="Theme.ownCloud.noActionBar.LoginBase" parent="Theme.ownCloud.Toolbar">
-		<item name="android:windowBackground">@color/primary</item>
+        <item name="android:windowBackground">@color/primary</item>
         <item name="colorControlNormal">@color/login_text_color</item>
         <item name="colorControlActivated">@color/login_text_color</item>
         <item name="colorControlHighlight">@color/login_text_color</item>
-		<item name="colorAccent">@color/login_text_hint_color</item>
-		<item name="android:textColorHint">@color/login_text_hint_color</item>
+        <item name="colorAccent">@color/login_text_hint_color</item>
+        <item name="android:textColorHint">@color/login_text_hint_color</item>
         <item name="android:navigationBarColor">@color/primary</item>
-	</style>
+    </style>
 
     <style name="Theme.ownCloud.noActionBar.Login" parent="Theme.ownCloud.noActionBar.LoginBase" />
 
-	<style name="ownCloud.AlertDialog" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
-		<item name="colorAccent">@color/color_accent</item>
-		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
+    <style name="ownCloud.AlertDialog" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
+        <item name="colorAccent">@color/color_accent</item>
+        <item name="searchViewStyle">@style/ownCloud.SearchView</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:windowBackground">@color/bg_default</item>
         <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
     </style>
 
-	<style name="ownCloud.Dialog" parent="Theme.MaterialComponents.DayNight.Dialog">
-		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
+    <style name="ownCloud.Dialog" parent="Theme.MaterialComponents.DayNight.Dialog">
+        <item name="searchViewStyle">@style/ownCloud.SearchView</item>
         <item name="android:textAllCaps">false</item>
         <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
-	</style>
-
-	<style name="ProgressDialogTheme" parent="ownCloud.Dialog">
-		<item name="colorAccent">@color/color_accent</item>
-		<item name="android:windowFrame">@color/transparent</item>
-		<item name="android:windowBackground">@color/transparent</item>
-		<item name="android:windowTitleBackgroundStyle">@drawable/process_dialog_background</item>
-	</style>
-
-	<style name="ownCloud.SearchView" parent="Widget.AppCompat.SearchView">
-		<!-- Close button icon -->
-		<item name="closeIcon">@drawable/ic_close</item>
-		<!-- Search button icon -->
-		<item name="searchIcon">@drawable/ic_search_grey</item>
-		<!-- Layout for query suggestion rows // unused for now, staying with the standard layout -->
-		<!--<item name="suggestionRowLayout">...</item>-->
-	</style>
-
-	<style name="Button" parent="Widget.MaterialComponents.Button.UnelevatedButton">
+    </style>
+
+    <style name="ProgressDialogTheme" parent="ownCloud.Dialog">
+        <item name="colorAccent">@color/color_accent</item>
+        <item name="android:windowFrame">@color/transparent</item>
+        <item name="android:windowBackground">@color/transparent</item>
+        <item name="android:windowTitleBackgroundStyle">@drawable/process_dialog_background</item>
+    </style>
+
+    <style name="ownCloud.SearchView" parent="Widget.AppCompat.SearchView">
+        <!-- Close button icon -->
+        <item name="closeIcon">@drawable/ic_close</item>
+        <!-- Search button icon -->
+        <item name="searchIcon">@drawable/ic_search_grey</item>
+        <!-- Layout for query suggestion rows // unused for now, staying with the standard layout -->
+        <!--<item name="suggestionRowLayout">...</item>-->
+    </style>
+
+    <style name="Button" parent="Widget.MaterialComponents.Button.UnelevatedButton">
         <item name="colorButtonNormal">@color/secondary_button_background_color</item>
         <item name="android:textColor">@color/secondary_button_text_color</item>
         <item name="android:textAllCaps">false</item>
@@ -237,85 +241,85 @@
         <item name="android:textStyle">bold</item>
     </style>
 
-	<!-- separat translucent action bar style -->
-	<style name="Theme.ownCloud.OverlayBase" parent="Theme.ownCloud">
-		<item name="android:actionBarStyle">@style/Theme.ownCloud.Overlay.ActionBar</item>
-		<item name="android:windowActionBarOverlay">true</item>
-		<item name="android:windowFullscreen">true</item>
-		<!-- Support library compatibility -->
-		<item name="actionBarStyle">@style/Theme.ownCloud.Overlay.ActionBar</item>
-		<item name="windowActionBarOverlay">true</item>
-	</style>
+    <!-- separate translucent action bar style -->
+    <style name="Theme.ownCloud.OverlayBase" parent="Theme.ownCloud">
+        <item name="android:actionBarStyle">@style/Theme.ownCloud.Overlay.ActionBar</item>
+        <item name="android:windowActionBarOverlay">true</item>
+        <item name="android:windowFullscreen">true</item>
+        <!-- Support library compatibility -->
+        <item name="actionBarStyle">@style/Theme.ownCloud.Overlay.ActionBar</item>
+        <item name="windowActionBarOverlay">true</item>
+    </style>
 
     <style name="Theme.ownCloud.Overlay" parent="Theme.ownCloud.OverlayBase">
         <item name="android:navigationBarColor">@color/black</item>
     </style>
 
-	<!-- ACTION BAR STYLES -->
-	<style name="Theme.ownCloud.Overlay.ActionBar" parent="@style/Widget.MaterialComponents.Toolbar">
-		<item name="android:background">@color/color_transparent</item>
-		<item name="android:windowActionBarOverlay">true</item>
-		<!-- Support library compatibility -->
-		<item name="background">@color/color_transparent</item>
-		<item name="windowActionBarOverlay">true</item>
-	</style>
+    <!-- ACTION BAR STYLES -->
+    <style name="Theme.ownCloud.Overlay.ActionBar" parent="@style/Widget.MaterialComponents.Toolbar">
+        <item name="android:background">@color/color_transparent</item>
+        <item name="android:windowActionBarOverlay">true</item>
+        <!-- Support library compatibility -->
+        <item name="background">@color/color_transparent</item>
+        <item name="windowActionBarOverlay">true</item>
+    </style>
 
-	<!-- Launch screen -->
-	<style name="Theme.ownCloud.Launcher">
+    <!-- Launch screen -->
+    <style name="Theme.ownCloud.Launcher">
         <item name="android:statusBarColor">@color/primary</item>
         <item name="android:navigationBarColor">@color/primary</item>
         <item name="android:windowBackground">@drawable/launch_screen</item>
         <item name="android:textColorHint">@color/secondary_text_color</item>
-	</style>
+    </style>
 
-	<style name="Theme.ownCloud.Fullscreen" parent="@style/Theme.MaterialComponents.DayNight">
+    <style name="Theme.ownCloud.Fullscreen" parent="@style/Theme.MaterialComponents.DayNight">
         <item name="android:windowFullscreen">true</item>
-		<item name="colorAccent">@color/color_accent</item>
-    </style>
-
-	<style name="Theme.ownCloud.Widget.ActionBar"
-		parent="@style/Theme.MaterialComponents.Light.DarkActionBar.Bridge">
-		<item name="android:background">@color/primary</item>
-		<item name="background">@color/primary</item>
-    	<item name="android:textColor">@color/text_color</item>
-    	<item name="android:shadowColor">@color/actionbar_shadow</item>
-    	<item name="android:shadowRadius">1</item>
-    	<item name="android:shadowDy">1</item>
-    	<item name="android:backgroundSplit">@drawable/split_action_bg</item>
-	</style>
-
-	<!-- Dialogs -->
-	<style name="Theme.ownCloud.Dialog" parent="@style/Theme.MaterialComponents.DayNight.Dialog.Alert">
-		<item name="windowNoTitle">false</item>
-		<item name="colorAccent">@color/color_accent</item>
+        <item name="colorAccent">@color/color_accent</item>
+    </style>
+
+    <style name="Theme.ownCloud.Widget.ActionBar"
+        parent="@style/Theme.MaterialComponents.Light.DarkActionBar.Bridge">
+        <item name="android:background">@color/primary</item>
+        <item name="background">@color/primary</item>
+        <item name="android:textColor">@color/text_color</item>
+        <item name="android:shadowColor">@color/actionbar_shadow</item>
+        <item name="android:shadowRadius">1</item>
+        <item name="android:shadowDy">1</item>
+        <item name="android:backgroundSplit">@drawable/split_action_bg</item>
+    </style>
+
+    <!-- Dialogs -->
+    <style name="Theme.ownCloud.Dialog" parent="@style/Theme.MaterialComponents.DayNight.Dialog.Alert">
+        <item name="windowNoTitle">false</item>
+        <item name="colorAccent">@color/color_accent</item>
         <item name="android:windowBackground">@color/bg_default</item>
         <item name="android:textAllCaps">false</item>
         <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
     </style>
 
-	<style name="Theme.ownCloud.Dialog.NoTitle" parent="@style/Theme.ownCloud.Dialog">
-		<item name="windowNoTitle">true</item>
-		<item name="colorAccent">@color/color_accent</item>
-	</style>
+    <style name="Theme.ownCloud.Dialog.NoTitle" parent="@style/Theme.ownCloud.Dialog">
+        <item name="windowNoTitle">true</item>
+        <item name="colorAccent">@color/color_accent</item>
+    </style>
 
-	<style name="NavigationView_ItemTextAppearance">
-		<item name="android:ellipsize">end</item>
-		<item name="android:listDivider">@color/transparent</item>
+    <style name="NavigationView_ItemTextAppearance">
+        <item name="android:ellipsize">end</item>
+        <item name="android:listDivider">@color/transparent</item>
         <!-- Color of text and icon when selected -->
         <item name="colorPrimary">@color/drawer_active_item_background</item>
-	</style>
+    </style>
 
     <style name="PassCodeStyle">
         <item name="android:layout_width">50dp</item>
         <item name="android:layout_height">50dp</item>
-  		<item name="android:gravity">center</item>
-  		<item name="android:layout_margin">10dp</item>
-  		<item name="android:inputType">numberDecimal</item>
-  		<item name="android:numeric">decimal</item>
-		<item name="android:digits">1234567890</item>
-		<item name="android:maxLength">1</item>
-		<item name="android:password">true</item>
-		<item name="android:maxLines">1</item>
+        <item name="android:gravity">center</item>
+        <item name="android:layout_margin">10dp</item>
+        <item name="android:inputType">numberDecimal</item>
+        <item name="android:numeric">decimal</item>
+        <item name="android:digits">1234567890</item>
+        <item name="android:maxLength">1</item>
+        <item name="android:password">true</item>
+        <item name="android:maxLines">1</item>
         <item name="colorPrimary">@color/text_color</item>
     </style>
 
@@ -324,13 +328,13 @@
         <item name="windowNoTitle">true</item>
     </style>
 
-	<!-- Text styles -->
-	<style name="NextcloudTextAppearanceHeadline" parent="@style/TextAppearance.AppCompat.Headline">
-		<item name="android:textSize">26sp</item>
-		<item name="android:textColor">@color/text_color</item>
-	</style>
-	<style name="NextcloudTextAppearanceMedium" parent="@style/TextAppearance.AppCompat.Medium">
-	</style>
+    <!-- Text styles -->
+    <style name="NextcloudTextAppearanceHeadline" parent="@style/TextAppearance.AppCompat.Headline">
+        <item name="android:textSize">26sp</item>
+        <item name="android:textColor">@color/text_color</item>
+    </style>
+    <style name="NextcloudTextAppearanceMedium" parent="@style/TextAppearance.AppCompat.Medium">
+    </style>
 
     <style name="Widget.App.Login.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
         <item name="materialThemeOverlay">@style/ThemeOverlay.App.Login.TextInputLayout</item>
@@ -363,9 +367,9 @@
         <item name="android:textColor">@color/white</item>
     </style>
 
-	<style name="AppTabTextAppearance" parent="@style/TextAppearance.Design.Tab">
-		<item name="android:textSize">16sp</item>
-		<item name="textAllCaps">false</item>
+    <style name="AppTabTextAppearance" parent="@style/TextAppearance.Design.Tab">
+        <item name="android:textSize">16sp</item>
+        <item name="textAllCaps">false</item>
         <item name="android:textColor">@color/text_color</item>
     </style>
 
@@ -424,4 +428,4 @@
         <item name="android:typeface">sans</item>
         <item name="android:textStyle">bold</item>
     </style>
-</resources>
+</resources>