Browse Source

Merge pull request #8001 from nextcloud/containerizedTextfields

Containerized textfield theme
Andy Scherzinger 4 years ago
parent
commit
a07a5fa8e7
93 changed files with 325 additions and 285 deletions
  1. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check.png
  2. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check_dark_blue.png
  3. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check_dark_white.png
  4. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check_light_white.png
  5. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete.png
  6. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete_dark_blue.png
  7. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete_dark_white.png
  8. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete_light_white.png
  9. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request.png
  10. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request_dark_blue.png
  11. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request_dark_white.png
  12. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request_light_white.png
  13. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog.png
  14. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog_dark_blue.png
  15. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog_dark_white.png
  16. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog_light_white.png
  17. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog.png
  18. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog_dark_blue.png
  19. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog_dark_white.png
  20. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog_light_white.png
  21. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities.png
  22. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError.png
  23. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError_dark_blue.png
  24. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError_dark_white.png
  25. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError_light_white.png
  26. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone.png
  27. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone_dark_blue.png
  28. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone_dark_white.png
  29. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone_light_white.png
  30. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities_dark_blue.png
  31. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities_dark_white.png
  32. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities_light_white.png
  33. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing.png
  34. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing_dark_blue.png
  35. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing_dark_white.png
  36. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing_light_white.png
  37. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment.png
  38. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment_dark_blue.png
  39. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment_dark_white.png
  40. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment_light_white.png
  41. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment.png
  42. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment_dark_blue.png
  43. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment_dark_white.png
  44. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment_light_white.png
  45. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes.png
  46. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes_dark_blue.png
  47. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes_dark_white.png
  48. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes_light_white.png
  49. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone.png
  50. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone_dark_blue.png
  51. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone_dark_white.png
  52. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone_light_white.png
  53. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed.png
  54. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed_dark_blue.png
  55. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed_dark_white.png
  56. BIN
      screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed_light_white.png
  57. 10 10
      src/main/java/com/nextcloud/ui/SetStatusDialogFragment.kt
  58. 0 6
      src/main/java/com/owncloud/android/datastorage/DataStorageProvider.java
  59. 0 2
      src/main/java/com/owncloud/android/operations/CheckCurrentCredentialsOperation.java
  60. 0 1
      src/main/java/com/owncloud/android/ui/TextDrawable.java
  61. 1 1
      src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java
  62. 5 2
      src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java
  63. 0 1
      src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.java
  64. 0 2
      src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java
  65. 9 12
      src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java
  66. 2 3
      src/main/java/com/owncloud/android/ui/dialog/NoteDialogFragment.java
  67. 6 8
      src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.java
  68. 2 1
      src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java
  69. 4 0
      src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java
  70. 10 12
      src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java
  71. 23 7
      src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java
  72. 3 4
      src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java
  73. 0 1
      src/main/java/com/owncloud/android/ui/preview/PreviewTextStringFragment.java
  74. 38 115
      src/main/java/com/owncloud/android/utils/ThemeUtils.java
  75. 3 0
      src/main/res/layout/activity_list_item.xml
  76. 24 10
      src/main/res/layout/dialog_set_status.xml
  77. 26 16
      src/main/res/layout/edit_box_dialog.xml
  78. 27 6
      src/main/res/layout/file_details_activities_fragment.xml
  79. 10 4
      src/main/res/layout/file_details_fragment.xml
  80. 6 4
      src/main/res/layout/file_details_share_group.xml
  81. 6 4
      src/main/res/layout/file_details_share_internal_share_link.xml
  82. 1 1
      src/main/res/layout/file_details_share_link_share_item.xml
  83. 2 1
      src/main/res/layout/file_details_share_public_link_add_new_item.xml
  84. 1 1
      src/main/res/layout/file_details_share_share_item.xml
  85. 34 14
      src/main/res/layout/file_details_sharing_fragment.xml
  86. 0 1
      src/main/res/layout/note_dialog.xml
  87. 6 5
      src/main/res/layout/passcodelock.xml
  88. 25 17
      src/main/res/layout/password_dialog.xml
  89. 1 1
      src/main/res/layout/storage_path_item.xml
  90. 18 6
      src/main/res/layout/upload_file_dialog.xml
  91. 1 1
      src/main/res/layout/user_info_layout.xml
  92. 1 1
      src/main/res/values/dims.xml
  93. 20 4
      src/main/res/values/styles.xml

BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_check_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_delete_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.activity.PassCodeActivityIT_request_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testNewFolderDialog_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.dialog.DialogFragmentIT_testRenameFileDialog_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesError_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivitiesNone_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsActivities_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showDetailsSharing_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailActivitiesFragment_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailFragmentStaticServerIT_showFileDetailSharingFragment_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileAllShareTypes_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileNone_light_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed_dark_blue.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed_dark_white.png


BIN
screenshots/gplay/debug/com.owncloud.android.ui.fragment.FileDetailSharingFragmentIT_listSharesFileResharingNotAllowed_light_white.png


+ 10 - 10
src/main/java/com/nextcloud/ui/SetStatusDialogFragment.kt

@@ -23,8 +23,6 @@ package com.nextcloud.ui
 import android.annotation.SuppressLint
 import android.annotation.SuppressLint
 import android.app.Dialog
 import android.app.Dialog
 import android.content.Context
 import android.content.Context
-import android.graphics.PorterDuff
-import android.graphics.PorterDuffColorFilter
 import android.os.Bundle
 import android.os.Bundle
 import android.view.LayoutInflater
 import android.view.LayoutInflater
 import android.view.View
 import android.view.View
@@ -141,8 +139,8 @@ class SetStatusDialogFragment :
 
 
         currentStatus?.let {
         currentStatus?.let {
             emoji.setText(it.icon)
             emoji.setText(it.icon)
-            customStatusInput.text.clear()
-            customStatusInput.setText(it.message)
+            binding.customStatusInput.text?.clear()
+            binding.customStatusInput.setText(it.message)
             visualizeStatus(it.status)
             visualizeStatus(it.status)
 
 
             if (it.clearAt > 0) {
             if (it.clearAt > 0) {
@@ -215,9 +213,11 @@ class SetStatusDialogFragment :
 
 
         clearStatus.setTextColor(ThemeUtils.primaryColor(context, true))
         clearStatus.setTextColor(ThemeUtils.primaryColor(context, true))
         ThemeUtils.colorPrimaryButton(setStatus, context)
         ThemeUtils.colorPrimaryButton(setStatus, context)
-        customStatusInput.background.colorFilter =
-            PorterDuffColorFilter(ThemeUtils.primaryAccentColor(context), PorterDuff.Mode.SRC_ATOP)
-        customStatusInput.highlightColor = ThemeUtils.primaryColor(activity)
+        ThemeUtils.colorTextInput(
+            binding.customStatusInputContainer,
+            binding.customStatusInput,
+            ThemeUtils.primaryColor(activity)
+        )
     }
     }
 
 
     private fun setClearStatusAfterValue(item: Int) {
     private fun setClearStatusAfterValue(item: Int) {
@@ -400,7 +400,7 @@ class SetStatusDialogFragment :
         }
         }
     }
     }
 
 
-    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View {
         return binding.root
         return binding.root
     }
     }
 
 
@@ -408,8 +408,8 @@ class SetStatusDialogFragment :
         selectedPredefinedMessageId = predefinedStatus.id
         selectedPredefinedMessageId = predefinedStatus.id
         clearAt = clearAtToUnixTime(predefinedStatus.clearAt)
         clearAt = clearAtToUnixTime(predefinedStatus.clearAt)
         emoji.setText(predefinedStatus.icon)
         emoji.setText(predefinedStatus.icon)
-        customStatusInput.text.clear()
-        customStatusInput.text.append(predefinedStatus.message)
+        binding.customStatusInput.text?.clear()
+        binding.customStatusInput.text?.append(predefinedStatus.message)
 
 
         remainingClearTime.visibility = View.GONE
         remainingClearTime.visibility = View.GONE
         clearStatusAfterSpinner.visibility = View.VISIBLE
         clearStatusAfterSpinner.visibility = View.VISIBLE

+ 0 - 6
src/main/java/com/owncloud/android/datastorage/DataStorageProvider.java

@@ -24,12 +24,6 @@ package com.owncloud.android.datastorage;
 import android.os.Environment;
 import android.os.Environment;
 
 
 import com.owncloud.android.MainApp;
 import com.owncloud.android.MainApp;
-import com.owncloud.android.datastorage.providers.EnvironmentStoragePointProvider;
-import com.owncloud.android.datastorage.providers.HardcodedStoragePointProvider;
-import com.owncloud.android.datastorage.providers.IStoragePointProvider;
-import com.owncloud.android.datastorage.providers.MountCommandStoragePointProvider;
-import com.owncloud.android.datastorage.providers.SystemDefaultStoragePointProvider;
-import com.owncloud.android.datastorage.providers.VDCStoragePointProvider;
 
 
 import java.io.File;
 import java.io.File;
 import java.util.ArrayList;
 import java.util.ArrayList;

+ 0 - 2
src/main/java/com/owncloud/android/operations/CheckCurrentCredentialsOperation.java

@@ -20,8 +20,6 @@
 
 
 package com.owncloud.android.operations;
 package com.owncloud.android.operations;
 
 
-import android.accounts.Account;
-
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.User;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.common.OwnCloudClient;
 import com.owncloud.android.lib.common.OwnCloudClient;

+ 0 - 1
src/main/java/com/owncloud/android/ui/TextDrawable.java

@@ -33,7 +33,6 @@ import android.graphics.drawable.Drawable;
 
 
 import com.nextcloud.client.account.UserAccountManager;
 import com.nextcloud.client.account.UserAccountManager;
 import com.owncloud.android.utils.BitmapUtils;
 import com.owncloud.android.utils.BitmapUtils;
-import com.owncloud.android.utils.NextcloudServer;
 
 
 import java.util.Locale;
 import java.util.Locale;
 
 

+ 1 - 1
src/main/java/com/owncloud/android/ui/activity/PassCodeActivity.java

@@ -91,7 +91,7 @@ public class PassCodeActivity extends AppCompatActivity implements Injectable {
         binding = PasscodelockBinding.inflate(getLayoutInflater());
         binding = PasscodelockBinding.inflate(getLayoutInflater());
         setContentView(binding.getRoot());
         setContentView(binding.getRoot());
 
 
-        int elementColor = ThemeUtils.primaryColor(this);
+        int elementColor = ThemeUtils.primaryColor(this, true);
 
 
         ThemeUtils.themeDialogActionButton(binding.cancel);
         ThemeUtils.themeDialogActionButton(binding.cancel);
 
 

+ 5 - 2
src/main/java/com/owncloud/android/ui/activity/ReceiveExternalFilesActivity.java

@@ -61,6 +61,8 @@ import android.widget.TextView;
 import android.widget.Toast;
 import android.widget.Toast;
 
 
 import com.google.android.material.button.MaterialButton;
 import com.google.android.material.button.MaterialButton;
+import com.google.android.material.textfield.TextInputEditText;
+import com.google.android.material.textfield.TextInputLayout;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.di.Injectable;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.nextcloud.client.preferences.AppPreferences;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.MainApp;
@@ -408,10 +410,11 @@ public class ReceiveExternalFilesActivity extends FileActivity
                 mFileCategory = CATEGORY_MAPS_URL;
                 mFileCategory = CATEGORY_MAPS_URL;
             }
             }
 
 
-            final EditText userInput = view.findViewById(R.id.user_input);
+            final TextInputEditText userInput = view.findViewById(R.id.user_input);
+            final TextInputLayout userInputContainer = view.findViewById(R.id.user_input_container);
             setFilename(userInput, selectPos);
             setFilename(userInput, selectPos);
-            userInput.setHighlightColor(ThemeUtils.primaryColor(getContext()));
             userInput.requestFocus();
             userInput.requestFocus();
+            ThemeUtils.colorTextInput(userInputContainer, userInput, ThemeUtils.primaryColor(getContext()));
 
 
             final Spinner spinner = view.findViewById(R.id.file_type);
             final Spinner spinner = view.findViewById(R.id.file_type);
             setupSpinner(adapter, selectPos, userInput, spinner);
             setupSpinner(adapter, selectPos, userInput, spinner);

+ 0 - 1
src/main/java/com/owncloud/android/ui/activity/RichDocumentsEditorWebView.java

@@ -24,7 +24,6 @@
 
 
 package com.owncloud.android.ui.activity;
 package com.owncloud.android.ui.activity;
 
 
-import android.annotation.SuppressLint;
 import android.content.ActivityNotFoundException;
 import android.content.ActivityNotFoundException;
 import android.content.Intent;
 import android.content.Intent;
 import android.net.Uri;
 import android.net.Uri;

+ 0 - 2
src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.java

@@ -28,7 +28,6 @@ import android.app.NotificationManager;
 import android.content.Context;
 import android.content.Context;
 import android.content.Intent;
 import android.content.Intent;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager;
-import android.graphics.drawable.Drawable;
 import android.net.Uri;
 import android.net.Uri;
 import android.os.Build;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Bundle;
@@ -83,7 +82,6 @@ import javax.inject.Inject;
 
 
 import androidx.annotation.NonNull;
 import androidx.annotation.NonNull;
 import androidx.appcompat.app.AlertDialog;
 import androidx.appcompat.app.AlertDialog;
-import androidx.core.content.res.ResourcesCompat;
 import androidx.drawerlayout.widget.DrawerLayout;
 import androidx.drawerlayout.widget.DrawerLayout;
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentManager;
 import androidx.fragment.app.FragmentTransaction;
 import androidx.fragment.app.FragmentTransaction;

+ 9 - 12
src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.java

@@ -22,17 +22,16 @@ package com.owncloud.android.ui.dialog;
 
 
 import android.app.Dialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.content.DialogInterface;
-import android.graphics.PorterDuff;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View;
 import android.view.Window;
 import android.view.Window;
 import android.view.WindowManager.LayoutParams;
 import android.view.WindowManager.LayoutParams;
-import android.widget.EditText;
 import android.widget.TextView;
 import android.widget.TextView;
 
 
 import com.owncloud.android.R;
 import com.owncloud.android.R;
+import com.owncloud.android.databinding.EditBoxDialogBinding;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.datamodel.OCFile;
 import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.lib.resources.files.FileUtils;
 import com.owncloud.android.ui.activity.ComponentsGetter;
 import com.owncloud.android.ui.activity.ComponentsGetter;
@@ -87,23 +86,22 @@ public class CreateFolderDialogFragment
     @NonNull
     @NonNull
     @Override
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        int accentColor = ThemeUtils.primaryAccentColor(getContext());
+        int primaryColor = ThemeUtils.primaryColor(getActivity());
         mParentFolder = getArguments().getParcelable(ARG_PARENT_FOLDER);
         mParentFolder = getArguments().getParcelable(ARG_PARENT_FOLDER);
 
 
         // Inflate the layout for the dialog
         // Inflate the layout for the dialog
-        LayoutInflater inflater = getActivity().getLayoutInflater();
-        View v = inflater.inflate(R.layout.edit_box_dialog, null);
+        LayoutInflater inflater = requireActivity().getLayoutInflater();
+        EditBoxDialogBinding binding = EditBoxDialogBinding.inflate(inflater, null, false);
+        View view = binding.getRoot();
 
 
         // Setup layout
         // Setup layout
-        EditText inputText = v.findViewById(R.id.user_input);
-        inputText.setText("");
-        inputText.requestFocus();
-        inputText.getBackground().setColorFilter(accentColor, PorterDuff.Mode.SRC_ATOP);
-        inputText.setHighlightColor(ThemeUtils.primaryColor(getActivity()));
+        binding.userInput.setText("");
+        binding.userInput.requestFocus();
+        ThemeUtils.colorTextInput(binding.userInputContainer, binding.userInput, primaryColor);
 
 
         // Build the dialog
         // Build the dialog
         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
         AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
-        builder.setView(v)
+        builder.setView(view)
                 .setPositiveButton(R.string.folder_confirm_create, this)
                 .setPositiveButton(R.string.folder_confirm_create, this)
                 .setNegativeButton(R.string.common_cancel, this)
                 .setNegativeButton(R.string.common_cancel, this)
                 .setTitle(R.string.uploader_info_dirname);
                 .setTitle(R.string.uploader_info_dirname);
@@ -117,7 +115,6 @@ public class CreateFolderDialogFragment
         return d;
         return d;
     }
     }
 
 
-
     @Override
     @Override
     public void onClick(DialogInterface dialog, int which) {
     public void onClick(DialogInterface dialog, int which) {
         if (which == AlertDialog.BUTTON_POSITIVE) {
         if (which == AlertDialog.BUTTON_POSITIVE) {

+ 2 - 3
src/main/java/com/owncloud/android/ui/dialog/NoteDialogFragment.java

@@ -88,7 +88,7 @@ public class NoteDialogFragment extends DialogFragment implements DialogInterfac
     @NonNull
     @NonNull
     @Override
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        int accentColor = ThemeUtils.primaryAccentColor(getContext());
+        int primaryColor = ThemeUtils.primaryColor(getContext());
 
 
         // Inflate the layout for the dialog
         // Inflate the layout for the dialog
         LayoutInflater inflater = requireActivity().getLayoutInflater();
         LayoutInflater inflater = requireActivity().getLayoutInflater();
@@ -97,9 +97,8 @@ public class NoteDialogFragment extends DialogFragment implements DialogInterfac
 
 
         // Setup layout
         // Setup layout
         binding.noteText.setText(share.getNote());
         binding.noteText.setText(share.getNote());
-        binding.noteText.setHighlightColor(ThemeUtils.primaryColor(getActivity()));
         binding.noteText.requestFocus();
         binding.noteText.requestFocus();
-        ThemeUtils.colorTextInputLayout(binding.noteContainer, accentColor);
+        ThemeUtils.colorTextInput(binding.noteContainer, binding.noteText, primaryColor);
 
 
         // Build the dialog
         // Build the dialog
         AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
         AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());

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

@@ -95,7 +95,6 @@ public class RenameFileDialogFragment
     @NonNull
     @NonNull
     @Override
     @Override
     public Dialog onCreateDialog(Bundle savedInstanceState) {
     public Dialog onCreateDialog(Bundle savedInstanceState) {
-        int accentColor = ThemeUtils.primaryAccentColor(getContext());
         mTargetFile = requireArguments().getParcelable(ARG_TARGET_FILE);
         mTargetFile = requireArguments().getParcelable(ARG_TARGET_FILE);
 
 
         // Inflate the layout for the dialog
         // Inflate the layout for the dialog
@@ -105,16 +104,15 @@ public class RenameFileDialogFragment
 
 
         // Setup layout
         // Setup layout
         String currentName = mTargetFile.getFileName();
         String currentName = mTargetFile.getFileName();
-        EditText inputText = binding.userInput;
-        inputText.setHighlightColor(ThemeUtils.primaryColor(getActivity()));
-        inputText.setText(currentName);
-        ThemeUtils.themeEditText(getContext(), inputText, false);
+        binding.userInput.setText(currentName);
+        ThemeUtils.colorTextInput(binding.userInputContainer,
+                                  binding.userInput,
+                                  ThemeUtils.primaryColor(getActivity()));
         int selectionStart = 0;
         int selectionStart = 0;
         int extensionStart = mTargetFile.isFolder() ? -1 : currentName.lastIndexOf('.');
         int extensionStart = mTargetFile.isFolder() ? -1 : currentName.lastIndexOf('.');
         int selectionEnd = extensionStart >= 0 ? extensionStart : currentName.length();
         int selectionEnd = extensionStart >= 0 ? extensionStart : currentName.length();
-        inputText.setSelection(Math.min(selectionStart, selectionEnd), Math.max(selectionStart, selectionEnd));
-        inputText.requestFocus();
-        inputText.getBackground().setColorFilter(accentColor, PorterDuff.Mode.SRC_ATOP);
+        binding.userInput.setSelection(Math.min(selectionStart, selectionEnd), Math.max(selectionStart, selectionEnd));
+        binding.userInput.requestFocus();
 
 
         // Build the dialog
         // Build the dialog
         AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());
         AlertDialog.Builder builder = new AlertDialog.Builder(requireActivity());

+ 2 - 1
src/main/java/com/owncloud/android/ui/dialog/SendShareDialog.java

@@ -194,7 +194,8 @@ public class SendShareDialog extends BottomSheetDialogFragment {
     }
     }
 
 
     private void themeShareButtonImage(ImageView shareImageView) {
     private void themeShareButtonImage(ImageView shareImageView) {
-        shareImageView.getBackground().setColorFilter(ThemeUtils.primaryColor(getContext()), PorterDuff.Mode.SRC_IN);
+        shareImageView.getBackground().setColorFilter(ThemeUtils.primaryColor(getContext(), true),
+                                                      PorterDuff.Mode.SRC_IN);
         shareImageView.getDrawable().mutate().setColorFilter(ThemeUtils.fontColor(getContext()),
         shareImageView.getDrawable().mutate().setColorFilter(ThemeUtils.fontColor(getContext()),
                 PorterDuff.Mode.SRC_IN);
                 PorterDuff.Mode.SRC_IN);
     }
     }

+ 4 - 0
src/main/java/com/owncloud/android/ui/dialog/SetupEncryptionDialogFragment.java

@@ -402,6 +402,7 @@ public class SetupEncryptionDialogFragment extends DialogFragment {
 
 
     @VisibleForTesting
     @VisibleForTesting
     public void showMnemonicInfo() {
     public void showMnemonicInfo() {
+        int color = ThemeUtils.primaryAccentColor(getContext());
         requireDialog().setTitle(R.string.end_to_end_encryption_passphrase_title);
         requireDialog().setTitle(R.string.end_to_end_encryption_passphrase_title);
 
 
         textView.setText(R.string.end_to_end_encryption_keywords_description);
         textView.setText(R.string.end_to_end_encryption_keywords_description);
@@ -413,6 +414,8 @@ public class SetupEncryptionDialogFragment extends DialogFragment {
         positiveButton.setVisibility(View.VISIBLE);
         positiveButton.setVisibility(View.VISIBLE);
 
 
         negativeButton.setVisibility(View.VISIBLE);
         negativeButton.setVisibility(View.VISIBLE);
+        positiveButton.setTextColor(color);
+        negativeButton.setTextColor(color);
 
 
         keyResult = KEY_GENERATE;
         keyResult = KEY_GENERATE;
     }
     }
@@ -425,6 +428,7 @@ public class SetupEncryptionDialogFragment extends DialogFragment {
         textView.setText(R.string.end_to_end_encryption_unsuccessful);
         textView.setText(R.string.end_to_end_encryption_unsuccessful);
         positiveButton.setText(R.string.end_to_end_encryption_dialog_close);
         positiveButton.setText(R.string.end_to_end_encryption_dialog_close);
         positiveButton.setVisibility(View.VISIBLE);
         positiveButton.setVisibility(View.VISIBLE);
+        positiveButton.setTextColor(ThemeUtils.primaryAccentColor(getContext()));
     }
     }
 
 
     @VisibleForTesting
     @VisibleForTesting

+ 10 - 12
src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.java

@@ -22,14 +22,12 @@ package com.owncloud.android.ui.dialog;
 
 
 import android.app.Dialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
 import android.content.DialogInterface;
-import android.graphics.PorterDuff;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.text.TextUtils;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.View;
 import android.view.Window;
 import android.view.Window;
 import android.view.WindowManager;
 import android.view.WindowManager;
-import android.widget.EditText;
 
 
 import com.owncloud.android.R;
 import com.owncloud.android.R;
 import com.owncloud.android.databinding.PasswordDialogBinding;
 import com.owncloud.android.databinding.PasswordDialogBinding;
@@ -67,10 +65,12 @@ public class SharePasswordDialogFragment extends DialogFragment implements Dialo
         super.onStart();
         super.onStart();
 
 
         AlertDialog alertDialog = (AlertDialog) getDialog();
         AlertDialog alertDialog = (AlertDialog) getDialog();
-        alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ThemeUtils.primaryAccentColor(getContext()));
-        alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(ThemeUtils.primaryAccentColor(getContext()));
-        alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL)
+        if (alertDialog != null) {
+            alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(ThemeUtils.primaryAccentColor(getContext()));
+            alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(ThemeUtils.primaryAccentColor(getContext()));
+            alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL)
                 .setTextColor(getResources().getColor(R.color.highlight_textColor_Warning));
                 .setTextColor(getResources().getColor(R.color.highlight_textColor_Warning));
+        }
     }
     }
 
 
     /**
     /**
@@ -135,13 +135,11 @@ public class SharePasswordDialogFragment extends DialogFragment implements Dialo
         View view = binding.getRoot();
         View view = binding.getRoot();
 
 
         // Setup layout
         // Setup layout
-        EditText inputText = binding.sharePassword;
-        inputText.setHighlightColor(ThemeUtils.primaryColor(getActivity()));
-        inputText.setText("");
-        ThemeUtils.themeEditText(getContext(), inputText, false);
-        inputText.requestFocus();
-        inputText.getBackground().setColorFilter(ThemeUtils.primaryAccentColor(getContext()),
-                                                 PorterDuff.Mode.SRC_ATOP);
+        binding.sharePassword.setText("");
+        ThemeUtils.colorTextInput(binding.sharePasswordContainer,
+                                  binding.sharePassword,
+                                  ThemeUtils.primaryColor(getActivity()));
+        binding.sharePassword.requestFocus();
 
 
         int title;
         int title;
         if (askForPassword) {
         if (askForPassword) {

+ 23 - 7
src/main/java/com/owncloud/android/ui/fragment/FileDetailActivitiesFragment.java

@@ -24,7 +24,7 @@
 package com.owncloud.android.ui.fragment;
 package com.owncloud.android.ui.fragment;
 
 
 import android.content.ContentResolver;
 import android.content.ContentResolver;
-import android.graphics.PorterDuff;
+import android.graphics.drawable.Drawable;
 import android.os.AsyncTask;
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.text.Editable;
 import android.text.Editable;
@@ -58,6 +58,7 @@ import com.owncloud.android.ui.events.CommentsEvent;
 import com.owncloud.android.ui.helpers.FileOperationsHelper;
 import com.owncloud.android.ui.helpers.FileOperationsHelper;
 import com.owncloud.android.ui.interfaces.ActivityListInterface;
 import com.owncloud.android.ui.interfaces.ActivityListInterface;
 import com.owncloud.android.ui.interfaces.VersionListInterface;
 import com.owncloud.android.ui.interfaces.VersionListInterface;
+import com.owncloud.android.utils.DisplayUtils;
 import com.owncloud.android.utils.ThemeUtils;
 import com.owncloud.android.utils.ThemeUtils;
 
 
 import org.apache.commons.httpclient.HttpStatus;
 import org.apache.commons.httpclient.HttpStatus;
@@ -80,6 +81,7 @@ import androidx.recyclerview.widget.RecyclerView;
 
 
 public class FileDetailActivitiesFragment extends Fragment implements
 public class FileDetailActivitiesFragment extends Fragment implements
     ActivityListInterface,
     ActivityListInterface,
+    DisplayUtils.AvatarGenerationListener,
     VersionListInterface.View,
     VersionListInterface.View,
     Injectable {
     Injectable {
 
 
@@ -170,14 +172,18 @@ public class FileDetailActivitiesFragment extends Fragment implements
             }
             }
         };
         };
 
 
-        binding.commentInputField.getBackground().setColorFilter(
-                ThemeUtils.primaryAccentColor(getContext()),
-                PorterDuff.Mode.SRC_ATOP
-        );
-
         binding.submitComment.setOnClickListener(v -> submitComment());
         binding.submitComment.setOnClickListener(v -> submitComment());
 
 
-        ThemeUtils.themeEditText(getContext(), binding.commentInputField, false);
+        ThemeUtils.colorTextInput(binding.commentInputFieldContainer,
+                                  binding.commentInputField,
+                                  ThemeUtils.primaryColor(getContext()));
+
+        DisplayUtils.setAvatar(user,
+                               this,
+                               getResources().getDimension(R.dimen.activity_icon_radius),
+                               getResources(),
+                               binding.avatar,
+                               getContext());
 
 
         return view;
         return view;
     }
     }
@@ -439,6 +445,16 @@ public class FileDetailActivitiesFragment extends Fragment implements
         operationsHelper.restoreFileVersion(fileVersion);
         operationsHelper.restoreFileVersion(fileVersion);
     }
     }
 
 
+    @Override
+    public void avatarGenerated(Drawable avatarDrawable, Object callContext) {
+        binding.avatar.setImageDrawable(avatarDrawable);
+    }
+
+    @Override
+    public boolean shouldCallGeneratedCallback(String tag, Object callContext) {
+        return false;
+    }
+
     private static class SubmitCommentTask extends AsyncTask<Void, Void, Boolean> {
     private static class SubmitCommentTask extends AsyncTask<Void, Void, Boolean> {
 
 
         private String message;
         private String message;

+ 3 - 4
src/main/java/com/owncloud/android/ui/fragment/FileDetailFragment.java

@@ -227,11 +227,10 @@ public class FileDetailFragment extends FileFragment implements OnClickListener,
     private void setupViewPager() {
     private void setupViewPager() {
         binding.tabLayout.removeAllTabs();
         binding.tabLayout.removeAllTabs();
 
 
-        binding.tabLayout.addTab(binding.tabLayout.newTab().setText(R.string.drawer_item_activities));
-        binding.tabLayout.addTab(binding.tabLayout.newTab().setText(R.string.share_dialog_title));
+        binding.tabLayout.addTab(binding.tabLayout.newTab().setText(R.string.drawer_item_activities).setIcon(R.drawable.ic_activity));
+        binding.tabLayout.addTab(binding.tabLayout.newTab().setText(R.string.share_dialog_title).setIcon(R.drawable.shared_via_users));
 
 
-        binding.tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
-        binding.tabLayout.setSelectedTabIndicatorColor(ThemeUtils.primaryAccentColor(getContext()));
+        ThemeUtils.colorTabLayout(getContext(), binding.tabLayout);
 
 
         final FileDetailTabAdapter adapter = new FileDetailTabAdapter(getFragmentManager(), getFile(), user);
         final FileDetailTabAdapter adapter = new FileDetailTabAdapter(getFragmentManager(), getFile(), user);
         binding.pager.setAdapter(adapter);
         binding.pager.setAdapter(adapter);

+ 0 - 1
src/main/java/com/owncloud/android/ui/preview/PreviewTextStringFragment.java

@@ -23,7 +23,6 @@
 package com.owncloud.android.ui.preview;
 package com.owncloud.android.ui.preview;
 
 
 import android.accounts.Account;
 import android.accounts.Account;
-import android.os.Build;
 import android.os.Bundle;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Handler;
 import android.view.LayoutInflater;
 import android.view.LayoutInflater;

+ 38 - 115
src/main/java/com/owncloud/android/utils/ThemeUtils.java

@@ -44,23 +44,21 @@ import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.ImageView;
 import android.widget.ProgressBar;
 import android.widget.ProgressBar;
 import android.widget.SeekBar;
 import android.widget.SeekBar;
-import android.widget.TextView;
 
 
 import com.google.android.material.button.MaterialButton;
 import com.google.android.material.button.MaterialButton;
 import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.google.android.material.floatingactionbutton.FloatingActionButton;
 import com.google.android.material.snackbar.Snackbar;
 import com.google.android.material.snackbar.Snackbar;
+import com.google.android.material.tabs.TabLayout;
+import com.google.android.material.textfield.TextInputEditText;
 import com.google.android.material.textfield.TextInputLayout;
 import com.google.android.material.textfield.TextInputLayout;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.User;
 import com.nextcloud.client.account.UserAccountManagerImpl;
 import com.nextcloud.client.account.UserAccountManagerImpl;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.MainApp;
 import com.owncloud.android.R;
 import com.owncloud.android.R;
 import com.owncloud.android.datamodel.FileDataStorageManager;
 import com.owncloud.android.datamodel.FileDataStorageManager;
-import com.owncloud.android.lib.common.utils.Log_OC;
 import com.owncloud.android.lib.resources.shares.ShareType;
 import com.owncloud.android.lib.resources.shares.ShareType;
 import com.owncloud.android.lib.resources.status.OCCapability;
 import com.owncloud.android.lib.resources.status.OCCapability;
 
 
-import java.lang.reflect.Field;
-
 import androidx.annotation.ColorInt;
 import androidx.annotation.ColorInt;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.DrawableRes;
 import androidx.annotation.Nullable;
 import androidx.annotation.Nullable;
@@ -82,8 +80,6 @@ import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
  */
  */
 public final class ThemeUtils {
 public final class ThemeUtils {
 
 
-    private static final String TAG = ThemeUtils.class.getSimpleName();
-
     private static final int INDEX_LUMINATION = 2;
     private static final int INDEX_LUMINATION = 2;
     private static final double MAX_LIGHTNESS = 0.92;
     private static final double MAX_LIGHTNESS = 0.92;
     public static final double LUMINATION_THRESHOLD = 0.8;
     public static final double LUMINATION_THRESHOLD = 0.8;
@@ -323,7 +319,7 @@ public final class ThemeUtils {
      * For activities that do not use drawer, e.g. Settings, this can be used to correctly tint back button based on
      * For activities that do not use drawer, e.g. Settings, this can be used to correctly tint back button based on
      * theme
      * theme
      *
      *
-     * @param supportActionBar
+     * @param supportActionBar the back button's action bar
      */
      */
     public static void tintBackButton(@Nullable ActionBar supportActionBar, Context context) {
     public static void tintBackButton(@Nullable ActionBar supportActionBar, Context context) {
         tintBackButton(supportActionBar, context, ThemeUtils.appBarPrimaryFontColor(context));
         tintBackButton(supportActionBar, context, ThemeUtils.appBarPrimaryFontColor(context));
@@ -520,13 +516,46 @@ public final class ThemeUtils {
         colorStatusBar(fragmentActivity, primaryAppbarColor(fragmentActivity));
         colorStatusBar(fragmentActivity, primaryAppbarColor(fragmentActivity));
     }
     }
 
 
+    public static void colorTabLayout(Context context, TabLayout tabLayout) {
+        int primaryColor = primaryColor(context);
+        int textColor = context.getResources().getColor(R.color.text_color);
+        tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
+        tabLayout.setSelectedTabIndicatorColor(primaryColor);
+        tabLayout.setTabTextColors(textColor, primaryColor);
+        tabLayout.setTabIconTint(new ColorStateList(
+            new int[][]{
+                new int[]{android.R.attr.state_selected},
+                new int[]{android.R.attr.state_enabled},
+                new int[]{-android.R.attr.state_enabled}
+            },
+            new int[]{
+                primaryColor,
+                textColor,
+                Color.GRAY
+            }
+        ));
+    }
+
+    /**
+     * Sets the color of the (containerized) text input TextInputLayout to {@code color} for hint text, box stroke and
+     * highlight color.
+     *
+     * @param textInputLayout   the TextInputLayout instance
+     * @param textInputEditText the TextInputEditText child element
+     * @param color             the color to be used for the hint text and box stroke
+     */
+    public static void colorTextInput(TextInputLayout textInputLayout, TextInputEditText textInputEditText, int color) {
+        textInputEditText.setHighlightColor(color);
+        colorTextInputLayout(textInputLayout, color);
+    }
+
     /**
     /**
      * Sets the color of the  TextInputLayout to {@code color} for hint text and box stroke.
      * Sets the color of the  TextInputLayout to {@code color} for hint text and box stroke.
      *
      *
      * @param textInputLayout the TextInputLayout instance
      * @param textInputLayout the TextInputLayout instance
      * @param color           the color to be used for the hint text and box stroke
      * @param color           the color to be used for the hint text and box stroke
      */
      */
-    public static void colorTextInputLayout(TextInputLayout textInputLayout, int color) {
+    private static void colorTextInputLayout(TextInputLayout textInputLayout, int color) {
         textInputLayout.setBoxStrokeColor(color);
         textInputLayout.setBoxStrokeColor(color);
         textInputLayout.setDefaultHintTextColor(new ColorStateList(
         textInputLayout.setDefaultHintTextColor(new ColorStateList(
             new int[][]{
             new int[][]{
@@ -581,8 +610,6 @@ public final class ThemeUtils {
     private static void setEditTextColor(Context context, EditText editText, int color) {
     private static void setEditTextColor(Context context, EditText editText, int color) {
         editText.setTextColor(color);
         editText.setTextColor(color);
         editText.setHighlightColor(context.getResources().getColor(R.color.fg_contrast));
         editText.setHighlightColor(context.getResources().getColor(R.color.fg_contrast));
-        setEditTextCursorColor(editText, color);
-        setTextViewHandlesColor(context, editText, color);
     }
     }
 
 
     /**
     /**
@@ -595,6 +622,7 @@ public final class ThemeUtils {
         // hacky as no default way is provided
         // hacky as no default way is provided
         int fontColor = appBarPrimaryFontColor(context);
         int fontColor = appBarPrimaryFontColor(context);
         SearchView.SearchAutoComplete editText = searchView.findViewById(R.id.search_src_text);
         SearchView.SearchAutoComplete editText = searchView.findViewById(R.id.search_src_text);
+        editText.setTextSize(16);
         setEditTextColor(context, editText, fontColor);
         setEditTextColor(context, editText, fontColor);
         editText.setHintTextColor(appBarSecondaryFontColor(context));
         editText.setHintTextColor(appBarSecondaryFontColor(context));
 
 
@@ -755,111 +783,6 @@ public final class ThemeUtils {
         return tintDrawable(drawable, color);
         return tintDrawable(drawable, color);
     }
     }
 
 
-    /**
-     * Lifted from SO. FindBugs surpressed because of lack of public API to alter the cursor color.
-     *
-     * @param editText TextView to be styled
-     * @param color    The desired cursor colour
-     * @see <a href="https://stackoverflow.com/a/52564925">StackOverflow url</a>
-     */
-    @SuppressFBWarnings
-    public static void setEditTextCursorColor(EditText editText, int color) {
-        try {
-            // Get the cursor resource id
-            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {//set differently in Android P (API 28)
-                Field field = TextView.class.getDeclaredField("mCursorDrawableRes");
-                field.setAccessible(true);
-                int drawableResId = field.getInt(editText);
-
-                // Get the editor
-                field = TextView.class.getDeclaredField("mEditor");
-                field.setAccessible(true);
-                Object editor = field.get(editText);
-
-                // Get the drawable and set a color filter
-                Drawable drawable = ContextCompat.getDrawable(editText.getContext(), drawableResId);
-                drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
-
-                // Set the drawables
-                field = editor.getClass().getDeclaredField("mDrawableForCursor");
-                field.setAccessible(true);
-                field.set(editor, drawable);
-            } else {
-                Field field = TextView.class.getDeclaredField("mCursorDrawableRes");
-                field.setAccessible(true);
-                int drawableResId = field.getInt(editText);
-
-                // Get the editor
-                field = TextView.class.getDeclaredField("mEditor");
-                field.setAccessible(true);
-                Object editor = field.get(editText);
-
-                // Get the drawable and set a color filter
-                Drawable drawable = ContextCompat.getDrawable(editText.getContext(), drawableResId);
-                drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
-                Drawable[] drawables = {drawable, drawable};
-
-                // Set the drawables
-                field = editor.getClass().getDeclaredField("mCursorDrawable");
-                field.setAccessible(true);
-                field.set(editor, drawables);
-            }
-        } catch (Exception exception) {
-            // we do not log this
-        }
-    }
-
-
-    /**
-     * Set the color of the handles when you select text in a {@link android.widget.EditText} or other view that extends
-     * {@link TextView}. FindBugs surpressed because of lack of public API to alter the {@link TextView} handles color.
-     *
-     * @param view  The {@link TextView} or a {@link View} that extends {@link TextView}.
-     * @param color The color to set for the text handles
-     * @see <a href="https://gist.github.com/jaredrummler/2317620559d10ac39b8218a1152ec9d4">External reference</a>
-     */
-    @SuppressFBWarnings
-    private static void setTextViewHandlesColor(Context context, TextView view, int color) {
-        try {
-            Field editorField = TextView.class.getDeclaredField("mEditor");
-            if (!editorField.isAccessible()) {
-                editorField.setAccessible(true);
-            }
-
-            Object editor = editorField.get(view);
-            Class<?> editorClass = editor.getClass();
-
-            String[] handleNames = {"mSelectHandleLeft", "mSelectHandleRight", "mSelectHandleCenter"};
-            String[] resNames = {"mTextSelectHandleLeftRes", "mTextSelectHandleRightRes", "mTextSelectHandleRes"};
-
-            for (int i = 0; i < handleNames.length; i++) {
-                Field handleField = editorClass.getDeclaredField(handleNames[i]);
-                if (!handleField.isAccessible()) {
-                    handleField.setAccessible(true);
-                }
-
-                Drawable handleDrawable = (Drawable) handleField.get(editor);
-
-                if (handleDrawable == null) {
-                    Field resField = TextView.class.getDeclaredField(resNames[i]);
-                    if (!resField.isAccessible()) {
-                        resField.setAccessible(true);
-                    }
-                    int resId = resField.getInt(view);
-                    handleDrawable = ContextCompat.getDrawable(context, resId);
-                }
-
-                if (handleDrawable != null) {
-                    Drawable drawable = handleDrawable.mutate();
-                    drawable.setColorFilter(color, PorterDuff.Mode.SRC_IN);
-                    handleField.set(editor, drawable);
-                }
-            }
-        } catch (Exception e) {
-            Log_OC.e(TAG, "Error setting TextView handles color", e);
-        }
-    }
-
     public static boolean isDarkModeActive(Context context) {
     public static boolean isDarkModeActive(Context context) {
         int nightModeFlag = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
         int nightModeFlag = context.getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
 
 

+ 3 - 0
src/main/res/layout/activity_list_item.xml

@@ -53,6 +53,7 @@
             android:paddingTop="@dimen/standard_padding"
             android:paddingTop="@dimen/standard_padding"
             android:paddingEnd="@dimen/zero"
             android:paddingEnd="@dimen/zero"
             android:textAppearance="?android:attr/textAppearanceListItem"
             android:textAppearance="?android:attr/textAppearanceListItem"
+            android:textSize="@dimen/two_line_primary_text_size"
             tools:text="@string/placeholder_filename" />
             tools:text="@string/placeholder_filename" />
 
 
         <TextView
         <TextView
@@ -63,6 +64,7 @@
             android:paddingStart="@dimen/activity_icon_layout_right_end_margin"
             android:paddingStart="@dimen/activity_icon_layout_right_end_margin"
             android:paddingEnd="@dimen/zero"
             android:paddingEnd="@dimen/zero"
             android:textAppearance="?android:attr/textAppearanceListItem"
             android:textAppearance="?android:attr/textAppearanceListItem"
+            android:textSize="@dimen/two_line_primary_text_size"
             tools:text="@string/placeholder_sentence" />
             tools:text="@string/placeholder_sentence" />
 
 
         <GridLayout
         <GridLayout
@@ -84,6 +86,7 @@
             android:paddingStart="@dimen/activity_icon_layout_right_end_margin"
             android:paddingStart="@dimen/activity_icon_layout_right_end_margin"
             android:paddingEnd="@dimen/zero"
             android:paddingEnd="@dimen/zero"
             android:textColor="?android:attr/textColorSecondary"
             android:textColor="?android:attr/textColorSecondary"
+            android:textSize="@dimen/two_line_primary_text_size"
             tools:text="@string/placeholder_sentence" />
             tools:text="@string/placeholder_sentence" />
 
 
     </LinearLayout>
     </LinearLayout>

+ 24 - 10
src/main/res/layout/dialog_set_status.xml

@@ -338,17 +338,19 @@
 
 
         <LinearLayout
         <LinearLayout
             android:layout_width="match_parent"
             android:layout_width="match_parent"
-            android:layout_height="@dimen/activity_row_layout_height"
+            android:layout_height="wrap_content"
             android:orientation="horizontal">
             android:orientation="horizontal">
 
 
             <com.google.android.material.card.MaterialCardView
             <com.google.android.material.card.MaterialCardView
                 android:id="@+id/emojiCard"
                 android:id="@+id/emojiCard"
                 android:layout_width="@dimen/activity_row_layout_height"
                 android:layout_width="@dimen/activity_row_layout_height"
                 android:layout_height="@dimen/activity_row_layout_height"
                 android:layout_height="@dimen/activity_row_layout_height"
-                android:layout_gravity="center_vertical"
-                android:layout_marginEnd="@dimen/standard_half_margin"
+                android:layout_gravity="center"
+                android:layout_marginTop="@dimen/standard_eighth_margin"
+                android:layout_marginEnd="@dimen/standard_margin"
                 android:orientation="horizontal"
                 android:orientation="horizontal"
                 app:cardBackgroundColor="@color/grey_200"
                 app:cardBackgroundColor="@color/grey_200"
+                app:cardCornerRadius="24dp"
                 app:cardElevation="0dp">
                 app:cardElevation="0dp">
 
 
                 <com.vanniktech.emoji.EmojiEditText
                 <com.vanniktech.emoji.EmojiEditText
@@ -359,18 +361,30 @@
                     android:cursorVisible="false"
                     android:cursorVisible="false"
                     android:gravity="center"
                     android:gravity="center"
                     android:text="@string/default_emoji"
                     android:text="@string/default_emoji"
-                    android:textSize="25sp" />
+                    android:textSize="24sp" />
 
 
             </com.google.android.material.card.MaterialCardView>
             </com.google.android.material.card.MaterialCardView>
 
 
-            <EditText
-                android:id="@+id/customStatusInput"
+            <com.google.android.material.textfield.TextInputLayout
+                android:id="@+id/customStatusInput_container"
                 android:layout_width="0dp"
                 android:layout_width="0dp"
-                android:layout_height="match_parent"
+                android:layout_height="wrap_content"
                 android:layout_weight="1"
                 android:layout_weight="1"
-                android:hint="@string/whats_your_status"
-                android:importantForAutofill="no"
-                android:inputType="textAutoCorrect" />
+                android:hint="@string/whats_your_status">
+
+                <com.google.android.material.textfield.TextInputEditText
+                    android:id="@+id/customStatusInput"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:ems="10"
+                    android:importantForAutofill="no"
+                    android:inputType="textAutoCorrect"
+                    android:scrollbars="vertical">
+
+                </com.google.android.material.textfield.TextInputEditText>
+
+            </com.google.android.material.textfield.TextInputLayout>
+
         </LinearLayout>
         </LinearLayout>
 
 
         <androidx.recyclerview.widget.RecyclerView
         <androidx.recyclerview.widget.RecyclerView

+ 26 - 16
src/main/res/layout/edit_box_dialog.xml

@@ -1,36 +1,46 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 <!--
-    ownCloud Android client application
+    Nextcloud Android client application
 
 
-    Copyright (C) 2012  Bartek Przybylski
-    Copyright (C) 2015 ownCloud Inc.
+    @author Andy Scherzinger
+    Copyright (C) 2021 Andy Scherzinger
 
 
     This program is free software: you can redistribute it and/or modify
     This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License version 2,
-    as published by the Free Software Foundation.
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
 
 
     This program is distributed in the hope that it will be useful,
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    GNU Affero General Public License for more details.
 
 
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+    You should have received a copy of the GNU Affero General Public License
+    along with this program. If not, see <http://www.gnu.org/licenses/>.
 -->
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_height="match_parent"
-    android:gravity="clip_horizontal"
-    android:orientation="vertical"
     android:padding="@dimen/standard_padding">
     android:padding="@dimen/standard_padding">
 
 
-    <com.google.android.material.textfield.TextInputEditText
-        android:id="@+id/user_input"
+    <com.google.android.material.textfield.TextInputLayout
+        android:id="@+id/user_input_container"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:ems="10"
-        android:hint="@string/hint_name"
-        android:importantForAutofill="no"
-        android:inputType="textNoSuggestions|textCapSentences"/>
+        android:hint="@string/hint_name">
+
+        <com.google.android.material.textfield.TextInputEditText
+            android:id="@+id/user_input"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:ems="10"
+            android:gravity="top"
+            android:importantForAutofill="no"
+            android:inputType="textNoSuggestions|textCapSentences"
+            android:scrollbars="vertical">
+
+        </com.google.android.material.textfield.TextInputEditText>
+
+    </com.google.android.material.textfield.TextInputLayout>
 
 
 </LinearLayout>
 </LinearLayout>

+ 27 - 6
src/main/res/layout/file_details_activities_fragment.xml

@@ -31,14 +31,35 @@
         android:layout_marginEnd="@dimen/zero"
         android:layout_marginEnd="@dimen/zero"
         android:orientation="horizontal">
         android:orientation="horizontal">
 
 
-        <com.google.android.material.textfield.TextInputEditText
-            android:id="@+id/commentInputField"
+        <ImageView
+            android:id="@+id/avatar"
+            android:layout_width="@dimen/activity_icon_width"
+            android:layout_height="@dimen/activity_icon_height"
+            android:layout_gravity="center_vertical"
+            android:layout_marginStart="@dimen/zero"
+            android:layout_marginTop="10dp"
+            android:layout_marginEnd="@dimen/standard_half_margin"
+            android:contentDescription="@null"
+            tools:src="@drawable/ic_user" />
+
+        <com.google.android.material.textfield.TextInputLayout
+            android:id="@+id/commentInputField_container"
             android:layout_width="0dp"
             android:layout_width="0dp"
-            android:layout_height="@dimen/minimum_size_for_touchable_area"
+            android:layout_height="wrap_content"
             android:layout_weight="1"
             android:layout_weight="1"
-            android:hint="@string/new_comment"
-            android:layout_marginTop="@dimen/standard_half_margin"
-            android:textColorHint="@color/secondary_text_color" />
+            android:paddingTop="@dimen/standard_padding"
+            android:hint="@string/new_comment">
+
+            <com.google.android.material.textfield.TextInputEditText
+                android:id="@+id/commentInputField"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:inputType="textNoSuggestions|textCapSentences"
+                android:scrollbars="vertical">
+
+            </com.google.android.material.textfield.TextInputEditText>
+
+        </com.google.android.material.textfield.TextInputLayout>
 
 
         <com.google.android.material.button.MaterialButton
         <com.google.android.material.button.MaterialButton
             android:id="@+id/submitComment"
             android:id="@+id/submitComment"

+ 10 - 4
src/main/res/layout/file_details_fragment.xml

@@ -68,7 +68,8 @@
                     android:id="@+id/size"
                     android:id="@+id/size"
                     android:layout_width="wrap_content"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_height="wrap_content"
-                    android:textSize="16sp"
+                    android:textSize="@dimen/two_line_primary_text_size"
+                    android:textColor="@color/list_item_lastmod_and_filesize_text"
                     tools:text="@string/placeholder_fileSize" />
                     tools:text="@string/placeholder_fileSize" />
 
 
                 <TextView
                 <TextView
@@ -80,14 +81,15 @@
                     android:paddingEnd="@dimen/standard_quarter_padding"
                     android:paddingEnd="@dimen/standard_quarter_padding"
                     android:text="@string/info_separator"
                     android:text="@string/info_separator"
                     android:textColor="@color/list_item_lastmod_and_filesize_text"
                     android:textColor="@color/list_item_lastmod_and_filesize_text"
-                    android:textSize="@dimen/two_line_secondary_text_size" />
+                    android:textSize="@dimen/two_line_primary_text_size" />
 
 
                 <TextView
                 <TextView
                     android:id="@+id/last_modification_timestamp"
                     android:id="@+id/last_modification_timestamp"
                     android:layout_width="wrap_content"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
                     android:layout_height="wrap_content"
                     android:gravity="end"
                     android:gravity="end"
-                    android:textSize="16sp"
+                    android:textSize="@dimen/two_line_primary_text_size"
+                    android:textColor="@color/list_item_lastmod_and_filesize_text"
                     tools:text="@string/placeholder_media_time" />
                     tools:text="@string/placeholder_media_time" />
 
 
                 <ImageView
                 <ImageView
@@ -112,6 +114,7 @@
         <com.google.android.material.button.MaterialButton
         <com.google.android.material.button.MaterialButton
             android:id="@+id/overflow_menu"
             android:id="@+id/overflow_menu"
             style="@style/Widget.AppTheme.Button.IconButton"
             style="@style/Widget.AppTheme.Button.IconButton"
+            android:layout_marginTop="@dimen/standard_quarter_margin"
             android:layout_width="@dimen/minimum_size_for_touchable_area"
             android:layout_width="@dimen/minimum_size_for_touchable_area"
             android:layout_height="@dimen/minimum_size_for_touchable_area"
             android:layout_height="@dimen/minimum_size_for_touchable_area"
             android:contentDescription="@string/overflow_menu"
             android:contentDescription="@string/overflow_menu"
@@ -140,6 +143,8 @@
                 android:id="@+id/progressText"
                 android:id="@+id/progressText"
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
+                android:textSize="@dimen/two_line_primary_text_size"
+                android:textColor="@color/list_item_lastmod_and_filesize_text"
                 android:text="@string/downloader_download_in_progress_ticker" />
                 android:text="@string/downloader_download_in_progress_ticker" />
 
 
             <ProgressBar
             <ProgressBar
@@ -178,7 +183,8 @@
         app:tabGravity="center"
         app:tabGravity="center"
         app:tabMode="fixed"
         app:tabMode="fixed"
         app:tabTextAppearance="@style/AppTabTextAppearance"
         app:tabTextAppearance="@style/AppTabTextAppearance"
-        app:tabTextColor="@color/text_color" />
+        app:tabTextColor="@color/text_color"
+        app:tabInlineLabel="true" />
 
 
     <androidx.viewpager.widget.ViewPager
     <androidx.viewpager.widget.ViewPager
         android:id="@+id/pager"
         android:id="@+id/pager"

+ 6 - 4
src/main/res/layout/file_details_share_group.xml

@@ -44,22 +44,24 @@
         android:src="@drawable/ic_external" />
         android:src="@drawable/ic_external" />
 
 
     <LinearLayout
     <LinearLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/standard_half_margin"
         android:layout_marginTop="@dimen/standard_half_margin"
-        android:layout_width="match_parent"
         android:orientation="vertical">
         android:orientation="vertical">
 
 
         <TextView
         <TextView
             android:id="@+id/shareInternalLink"
             android:id="@+id/shareInternalLink"
-            android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
             android:text="@string/share_internal_link"
             android:text="@string/share_internal_link"
-            android:textColor="@color/text_color" />
+            android:textColor="@color/text_color"
+            android:textSize="@dimen/two_line_primary_text_size" />
 
 
         <TextView
         <TextView
             android:id="@+id/shareInternalLinkText"
             android:id="@+id/shareInternalLinkText"
-            android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="@dimen/two_line_primary_text_size"
             tools:text="@string/share_internal_link_to_folder_text" />
             tools:text="@string/share_internal_link_to_folder_text" />
     </LinearLayout>
     </LinearLayout>
 
 

+ 6 - 4
src/main/res/layout/file_details_share_internal_share_link.xml

@@ -45,22 +45,24 @@
         android:src="@drawable/ic_external" />
         android:src="@drawable/ic_external" />
 
 
     <LinearLayout
     <LinearLayout
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         android:layout_marginTop="@dimen/standard_half_margin"
         android:layout_marginTop="@dimen/standard_half_margin"
-        android:layout_width="match_parent"
         android:orientation="vertical">
         android:orientation="vertical">
 
 
         <TextView
         <TextView
             android:id="@+id/shareInternalLink"
             android:id="@+id/shareInternalLink"
-            android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
             android:text="@string/share_internal_link"
             android:text="@string/share_internal_link"
-            android:textColor="@color/text_color" />
+            android:textColor="@color/text_color"
+            android:textSize="@dimen/two_line_primary_text_size" />
 
 
         <TextView
         <TextView
             android:id="@+id/shareInternalLinkText"
             android:id="@+id/shareInternalLinkText"
-            android:layout_height="wrap_content"
             android:layout_width="wrap_content"
             android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="@dimen/two_line_primary_text_size"
             tools:text="@string/share_internal_link_to_folder_text" />
             tools:text="@string/share_internal_link_to_folder_text" />
     </LinearLayout>
     </LinearLayout>
 
 

+ 1 - 1
src/main/res/layout/file_details_share_link_share_item.xml

@@ -50,7 +50,7 @@
         android:singleLine="true"
         android:singleLine="true"
         android:layout_weight="1"
         android:layout_weight="1"
         android:gravity="center_vertical"
         android:gravity="center_vertical"
-        android:textSize="@dimen/file_details_username_text_size"
+        android:textSize="@dimen/two_line_primary_text_size"
         android:text="@string/share_via_link_section_title" />
         android:text="@string/share_via_link_section_title" />
 
 
     <ImageView
     <ImageView

+ 2 - 1
src/main/res/layout/file_details_share_public_link_add_new_item.xml

@@ -44,7 +44,8 @@
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center_vertical"
         android:layout_gravity="center_vertical"
         android:layout_weight="1"
         android:layout_weight="1"
-        android:text="@string/share_via_link_section_title" />
+        android:text="@string/share_via_link_section_title"
+        android:textSize="@dimen/two_line_primary_text_size" />
 
 
     <ImageView
     <ImageView
         android:id="@+id/add_new_public_share_link"
         android:id="@+id/add_new_public_share_link"

+ 1 - 1
src/main/res/layout/file_details_share_share_item.xml

@@ -49,7 +49,7 @@
         android:singleLine="true"
         android:singleLine="true"
         android:layout_weight="1"
         android:layout_weight="1"
         android:gravity="center_vertical"
         android:gravity="center_vertical"
-        android:textSize="@dimen/file_details_username_text_size"
+        android:textSize="@dimen/two_line_primary_text_size"
         android:text="@string/username" />
         android:text="@string/username" />
 
 
     <ImageView
     <ImageView

+ 34 - 14
src/main/res/layout/file_details_sharing_fragment.xml

@@ -16,22 +16,42 @@
   You should have received a copy of the GNU Affero General Public
   You should have received a copy of the GNU Affero General Public
   License along with this program.  If not, see <http://www.gnu.org/licenses/>.
   License along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 -->
-<LinearLayout android:id="@+id/shareContainer"
-    android:layout_height="match_parent"
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/shareContainer"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
+    android:layout_height="match_parent"
     android:orientation="vertical"
     android:orientation="vertical"
-    android:paddingTop="@dimen/standard_eight_padding"
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:tools="http://schemas.android.com/tools">
-
-    <androidx.appcompat.widget.SearchView
-        style="@style/ownCloud.SearchView"
-        android:hint="@string/share_search"
-        android:id="@+id/searchView"
+    android:paddingTop="@dimen/standard_eight_padding">
+
+    <LinearLayout
+        android:id="@+id/search_container"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:layout_marginEnd="@dimen/standard_margin"
-        android:layout_marginStart="@dimen/standard_quarter_margin"
-        android:layout_width="match_parent" />
+        android:paddingStart="@dimen/standard_padding"
+        android:paddingEnd="@dimen/zero">
+
+        <ImageView
+            android:id="@+id/searchViewIcon"
+            android:layout_height="@dimen/user_icon_size"
+            android:layout_width="@dimen/user_icon_size"
+            android:padding="@dimen/standard_half_padding"
+            android:contentDescription="@string/avatar"
+            android:layout_gravity="center_vertical"
+            android:src="@drawable/ic_search_grey" />
+
+        <androidx.appcompat.widget.SearchView
+            android:id="@+id/searchView"
+            style="@style/ownCloud.SearchView"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginStart="@dimen/zero"
+            android:layout_marginEnd="@dimen/standard_quarter_margin"
+            android:hint="@string/share_search"
+            app:searchIcon="@null" />
+
+    </LinearLayout>
 
 
     <LinearLayout
     <LinearLayout
         android:id="@+id/shared_with_you_container"
         android:id="@+id/shared_with_you_container"
@@ -63,7 +83,7 @@
                 android:layout_height="wrap_content"
                 android:layout_height="wrap_content"
                 android:layout_width="match_parent"
                 android:layout_width="match_parent"
                 android:text="@string/shared_with_you_by"
                 android:text="@string/shared_with_you_by"
-                android:textSize="16sp" />
+                android:textSize="@dimen/two_line_primary_text_size" />
 
 
             <LinearLayout
             <LinearLayout
                 android:id="@+id/shared_with_you_note_container"
                 android:id="@+id/shared_with_you_note_container"

+ 0 - 1
src/main/res/layout/note_dialog.xml

@@ -30,7 +30,6 @@
         android:id="@+id/note_container"
         android:id="@+id/note_container"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        style="@style/TextInputLayout"
         android:hint="@string/hint_note">
         android:hint="@string/hint_note">
 
 
         <com.google.android.material.textfield.TextInputEditText
         <com.google.android.material.textfield.TextInputEditText

+ 6 - 5
src/main/res/layout/passcodelock.xml

@@ -18,6 +18,7 @@
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
   along with this program.  If not, see <http://www.gnu.org/licenses/>.
 -->
 -->
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
 <ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_height="match_parent"
     android:gravity="center_horizontal">
     android:gravity="center_horizontal">
@@ -71,12 +72,12 @@
                     <com.google.android.material.textfield.TextInputEditText
                     <com.google.android.material.textfield.TextInputEditText
                         android:id="@+id/txt0"
                         android:id="@+id/txt0"
                         style="@style/PassCodeStyle"
                         style="@style/PassCodeStyle"
-                        android:cursorVisible="true"
+                        android:cursorVisible="false"
                         android:focusable="true"
                         android:focusable="true"
                         android:hint="@string/hidden_character"
                         android:hint="@string/hidden_character"
                         android:imeOptions="flagNoExtractUi"
                         android:imeOptions="flagNoExtractUi"
                         android:importantForAutofill="no"
                         android:importantForAutofill="no"
-                        android:textCursorDrawable="@color/primary">
+                        tools:text="123">
 
 
                         <requestFocus />
                         <requestFocus />
                     </com.google.android.material.textfield.TextInputEditText>
                     </com.google.android.material.textfield.TextInputEditText>
@@ -84,7 +85,7 @@
                     <com.google.android.material.textfield.TextInputEditText
                     <com.google.android.material.textfield.TextInputEditText
                         android:id="@+id/txt1"
                         android:id="@+id/txt1"
                         style="@style/PassCodeStyle"
                         style="@style/PassCodeStyle"
-                        android:cursorVisible="true"
+                        android:cursorVisible="false"
                         android:hint="@string/hidden_character"
                         android:hint="@string/hidden_character"
                         android:imeOptions="flagNoExtractUi"
                         android:imeOptions="flagNoExtractUi"
                         android:importantForAutofill="no" />
                         android:importantForAutofill="no" />
@@ -92,7 +93,7 @@
                     <com.google.android.material.textfield.TextInputEditText
                     <com.google.android.material.textfield.TextInputEditText
                         android:id="@+id/txt2"
                         android:id="@+id/txt2"
                         style="@style/PassCodeStyle"
                         style="@style/PassCodeStyle"
-                        android:cursorVisible="true"
+                        android:cursorVisible="false"
                         android:hint="@string/hidden_character"
                         android:hint="@string/hidden_character"
                         android:imeOptions="flagNoExtractUi"
                         android:imeOptions="flagNoExtractUi"
                         android:importantForAutofill="no" />
                         android:importantForAutofill="no" />
@@ -100,7 +101,7 @@
                     <com.google.android.material.textfield.TextInputEditText
                     <com.google.android.material.textfield.TextInputEditText
                         android:id="@+id/txt3"
                         android:id="@+id/txt3"
                         style="@style/PassCodeStyle"
                         style="@style/PassCodeStyle"
-                        android:cursorVisible="true"
+                        android:cursorVisible="false"
                         android:hint="@string/hidden_character"
                         android:hint="@string/hidden_character"
                         android:imeOptions="flagNoExtractUi"
                         android:imeOptions="flagNoExtractUi"
                         android:importantForAutofill="no" />
                         android:importantForAutofill="no" />

+ 25 - 17
src/main/res/layout/password_dialog.xml

@@ -1,37 +1,45 @@
 <?xml version="1.0" encoding="utf-8"?>
 <?xml version="1.0" encoding="utf-8"?>
 <!--
 <!--
-    ownCloud Android client application
+    Nextcloud Android client application
 
 
-    Copyright (C) 2015 ownCloud Inc.
+    @author Andy Scherzinger
+    Copyright (C) 2021 Andy Scherzinger
 
 
     This program is free software: you can redistribute it and/or modify
     This program is free software: you can redistribute it and/or modify
-    it under the terms of the GNU General Public License version 2,
-    as published by the Free Software Foundation.
+    it under the terms of the GNU Affero General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
 
 
     This program is distributed in the hope that it will be useful,
     This program is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-    GNU General Public License for more details.
+    GNU Affero General Public License for more details.
 
 
-    You should have received a copy of the GNU General Public License
-    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+    You should have received a copy of the GNU Affero General Public License
+    along with this program. If not, see <http://www.gnu.org/licenses/>.
 -->
 -->
-
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:layout_height="match_parent"
-    android:gravity="clip_horizontal"
-    android:orientation="vertical"
     android:padding="@dimen/standard_padding">
     android:padding="@dimen/standard_padding">
 
 
-    <com.google.android.material.textfield.TextInputEditText
-        android:id="@+id/share_password"
+    <com.google.android.material.textfield.TextInputLayout
+        android:id="@+id/share_password_container"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:ems="10"
-        android:hint="@string/hint_password"
-        android:inputType="textPassword"
-        android:autofillHints="password"
-        android:textColorHint="@color/bg_fallback_highlight"></com.google.android.material.textfield.TextInputEditText>
+        android:hint="@string/hint_password">
+
+        <com.google.android.material.textfield.TextInputEditText
+            android:id="@+id/share_password"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:autofillHints="password"
+            android:ems="10"
+            android:gravity="top"
+            android:inputType="textPassword">
+
+        </com.google.android.material.textfield.TextInputEditText>
+
+    </com.google.android.material.textfield.TextInputLayout>
 
 
 </LinearLayout>
 </LinearLayout>

+ 1 - 1
src/main/res/layout/storage_path_item.xml

@@ -50,6 +50,6 @@
         android:gravity="center_vertical"
         android:gravity="center_vertical"
         android:singleLine="true"
         android:singleLine="true"
         android:textColor="@color/text_color"
         android:textColor="@color/text_color"
-        android:textSize="@dimen/file_details_username_text_size"
+        android:textSize="@dimen/two_line_primary_text_size"
         tools:text="DCIM" />
         tools:text="DCIM" />
 </LinearLayout>
 </LinearLayout>

+ 18 - 6
src/main/res/layout/upload_file_dialog.xml

@@ -33,19 +33,31 @@
         android:text="@string/upload_file_dialog_filename"
         android:text="@string/upload_file_dialog_filename"
         tools:text="@string/upload_file_dialog_filename"/>
         tools:text="@string/upload_file_dialog_filename"/>
 
 
-    <com.google.android.material.textfield.TextInputEditText
-        android:id="@+id/user_input"
+    <com.google.android.material.textfield.TextInputLayout
+        android:id="@+id/user_input_container"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
-        android:ems="10"
-        android:hint="@string/hint_name"
-        android:importantForAutofill="no"
-        android:inputType="textNoSuggestions|textCapSentences"/>
+        android:hint="@string/hint_name">
+
+        <com.google.android.material.textfield.TextInputEditText
+            android:id="@+id/user_input"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:ems="10"
+            android:gravity="top"
+            android:importantForAutofill="no"
+            android:inputType="textNoSuggestions|textCapSentences"
+            android:scrollbars="vertical">
+
+        </com.google.android.material.textfield.TextInputEditText>
+
+    </com.google.android.material.textfield.TextInputLayout>
 
 
     <TextView
     <TextView
         android:id="@+id/label_file_type"
         android:id="@+id/label_file_type"
         android:layout_width="match_parent"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/standard_margin"
         android:text="@string/upload_file_dialog_filetype"
         android:text="@string/upload_file_dialog_filetype"
         tools:text="@string/upload_file_dialog_filetype"/>
         tools:text="@string/upload_file_dialog_filetype"/>
 
 

+ 1 - 1
src/main/res/layout/user_info_layout.xml

@@ -68,7 +68,7 @@
             android:shadowDy="0"
             android:shadowDy="0"
             android:shadowRadius="2"
             android:shadowRadius="2"
             android:textColor="@color/white"
             android:textColor="@color/white"
-            android:textSize="@dimen/file_details_username_text_size"
+            android:textSize="@dimen/two_line_primary_text_size"
             android:textStyle="bold"
             android:textStyle="bold"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintEnd_toEndOf="parent"
             app:layout_constraintStart_toEndOf="@id/userinfo_icon"
             app:layout_constraintStart_toEndOf="@id/userinfo_icon"

+ 1 - 1
src/main/res/values/dims.xml

@@ -87,6 +87,7 @@
     <dimen name="restore_icon_layout_right_end_margin">24dp</dimen>
     <dimen name="restore_icon_layout_right_end_margin">24dp</dimen>
     <dimen name="activity_icon_width">32dp</dimen>
     <dimen name="activity_icon_width">32dp</dimen>
     <dimen name="activity_icon_height">32dp</dimen>
     <dimen name="activity_icon_height">32dp</dimen>
+    <dimen name="activity_icon_radius">16dp</dimen>
     <dimen name="activity_icon_layout_right_end_margin">24dp</dimen>
     <dimen name="activity_icon_layout_right_end_margin">24dp</dimen>
     <dimen name="activity_list_item_grid_layout_left_start_margin">-3dp</dimen>
     <dimen name="activity_list_item_grid_layout_left_start_margin">-3dp</dimen>
     <dimen name="activity_list_item_title_header_text_size">16sp</dimen>
     <dimen name="activity_list_item_title_header_text_size">16sp</dimen>
@@ -101,7 +102,6 @@
     <dimen name="contactlist_item_icon_layout_height">40dp</dimen>
     <dimen name="contactlist_item_icon_layout_height">40dp</dimen>
     <dimen name="empty_list_icon_layout_width">72dp</dimen>
     <dimen name="empty_list_icon_layout_width">72dp</dimen>
     <dimen name="empty_list_icon_layout_height">72dp</dimen>
     <dimen name="empty_list_icon_layout_height">72dp</dimen>
-    <dimen name="file_details_username_text_size">16sp</dimen>
     <dimen name="grid_image_shared_icon_layout_top_margin">24dp</dimen>
     <dimen name="grid_image_shared_icon_layout_top_margin">24dp</dimen>
     <dimen name="grid_image_local_file_indicator_layout_width">16dp</dimen>
     <dimen name="grid_image_local_file_indicator_layout_width">16dp</dimen>
     <dimen name="grid_image_local_file_indicator_layout_height">16dp</dimen>
     <dimen name="grid_image_local_file_indicator_layout_height">16dp</dimen>

+ 20 - 4
src/main/res/values/styles.xml

@@ -38,6 +38,7 @@
         <item name="android:actionModeBackground">@color/action_mode_background</item>
         <item name="android:actionModeBackground">@color/action_mode_background</item>
         <item name="android:datePickerDialogTheme">@style/FallbackDatePickerDialogTheme</item>
         <item name="android:datePickerDialogTheme">@style/FallbackDatePickerDialogTheme</item>
         <item name="android:navigationBarColor">@color/bg_default</item>
         <item name="android:navigationBarColor">@color/bg_default</item>
+        <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
     </style>
     </style>
 
 
     <style name="Theme.ownCloud" parent="BaseTheme.ownCloud" />
     <style name="Theme.ownCloud" parent="BaseTheme.ownCloud" />
@@ -54,10 +55,23 @@
         <item name="android:actionModeBackground">@color/action_mode_background</item>
         <item name="android:actionModeBackground">@color/action_mode_background</item>
         <item name="android:datePickerDialogTheme">@style/FallbackDatePickerDialogTheme</item>
         <item name="android:datePickerDialogTheme">@style/FallbackDatePickerDialogTheme</item>
         <item name="android:navigationBarColor">@color/bg_default</item>
         <item name="android:navigationBarColor">@color/bg_default</item>
+        <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
     </style>
     </style>
 
 
     <style name="FallbackThemingTheme" parent="FallbackThemingThemeBase" />
     <style name="FallbackThemingTheme" parent="FallbackThemingThemeBase" />
 
 
+    <style name="Widget.App.TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
+        <item name="materialThemeOverlay">@style/ThemeOverlay.App.TextInputLayout</item>
+        <item name="hintTextColor">?attr/colorOnSurface</item>
+    </style>
+
+    <style name="ThemeOverlay.App.TextInputLayout" parent="ThemeOverlay.MaterialComponents.TextInputEditText.OutlinedBox">
+        <item name="colorPrimary">@color/text_color</item>
+        <item name="colorOnSurface">@color/text_color</item>
+        <item name="colorError">@color/hwSecurityRed</item>
+        <item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox</item>
+    </style>
+
 	<style name="FallbackDatePickerDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
 	<style name="FallbackDatePickerDialogTheme" parent="Theme.MaterialComponents.DayNight.Dialog.Alert">
         <item name="colorPrimary">@color/bg_default</item>
         <item name="colorPrimary">@color/bg_default</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:textAllCaps">false</item>
@@ -80,7 +94,7 @@
         <item name="windowNoTitle">false</item>
         <item name="windowNoTitle">false</item>
         <item name="android:windowBackground">@color/bg_default</item>
         <item name="android:windowBackground">@color/bg_default</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:textAllCaps">false</item>
-
+        <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
         <item name="android:buttonBarButtonStyle">@style/FallbackTheming.Dialog.ButtonStyle</item>
         <item name="android:buttonBarButtonStyle">@style/FallbackTheming.Dialog.ButtonStyle</item>
 	</style>
 	</style>
 
 
@@ -103,6 +117,7 @@
         <item name="windowActionBar">false</item>
         <item name="windowActionBar">false</item>
         <item name="windowActionModeOverlay">true</item>
         <item name="windowActionModeOverlay">true</item>
         <item name="windowNoTitle">true</item>
         <item name="windowNoTitle">true</item>
+        <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
     </style>
     </style>
 
 
     <style name="Theme.ownCloud.ToolbarBase" parent="BaseTheme.ownCloud.Toolbar">
     <style name="Theme.ownCloud.ToolbarBase" parent="BaseTheme.ownCloud.Toolbar">
@@ -138,11 +153,13 @@
 		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
 		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:windowBackground">@color/bg_default</item>
         <item name="android:windowBackground">@color/bg_default</item>
+        <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
     </style>
     </style>
 
 
 	<style name="ownCloud.Dialog" parent="Theme.MaterialComponents.DayNight.Dialog">
 	<style name="ownCloud.Dialog" parent="Theme.MaterialComponents.DayNight.Dialog">
 		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
 		<item name="searchViewStyle">@style/ownCloud.SearchView</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:textAllCaps">false</item>
+        <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
 	</style>
 	</style>
 
 
 	<style name="ProgressDialogTheme" parent="ownCloud.Dialog">
 	<style name="ProgressDialogTheme" parent="ownCloud.Dialog">
@@ -273,6 +290,7 @@
 		<item name="colorAccent">@color/color_accent</item>
 		<item name="colorAccent">@color/color_accent</item>
         <item name="android:windowBackground">@color/bg_default</item>
         <item name="android:windowBackground">@color/bg_default</item>
         <item name="android:textAllCaps">false</item>
         <item name="android:textAllCaps">false</item>
+        <item name="textInputStyle">@style/Widget.App.TextInputLayout</item>
     </style>
     </style>
 
 
 	<style name="Theme.ownCloud.Dialog.NoTitle" parent="@style/Theme.ownCloud.Dialog">
 	<style name="Theme.ownCloud.Dialog.NoTitle" parent="@style/Theme.ownCloud.Dialog">
@@ -298,6 +316,7 @@
 		<item name="android:maxLength">1</item>
 		<item name="android:maxLength">1</item>
 		<item name="android:password">true</item>
 		<item name="android:password">true</item>
 		<item name="android:maxLines">1</item>
 		<item name="android:maxLines">1</item>
+        <item name="colorPrimary">@color/text_color</item>
     </style>
     </style>
 
 
     <style name="Theme.ownCloud.NoActionBar">
     <style name="Theme.ownCloud.NoActionBar">
@@ -328,9 +347,6 @@
         <item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox</item>
         <item name="editTextStyle">@style/Widget.MaterialComponents.TextInputEditText.OutlinedBox</item>
     </style>
     </style>
 
 
-	<style name="TextInputLayout" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
-    </style>
-
     <style name="TextInputLayoutLogin" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
     <style name="TextInputLayoutLogin" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox">
         <item name="boxStrokeColor">@color/white</item>
         <item name="boxStrokeColor">@color/white</item>
         <item name="boxStrokeErrorColor">@color/white</item>
         <item name="boxStrokeErrorColor">@color/white</item>