Răsfoiți Sursa

theme sharing fragment

Signed-off-by: Andy Scherzinger <info@andy-scherzinger.de>
Andy Scherzinger 2 ani în urmă
părinte
comite
6dbd434d0c

+ 4 - 0
app/src/main/java/com/nextcloud/client/di/ComponentsModule.java

@@ -103,6 +103,7 @@ import com.owncloud.android.ui.fragment.FeatureFragment;
 import com.owncloud.android.ui.fragment.FileDetailActivitiesFragment;
 import com.owncloud.android.ui.fragment.FileDetailFragment;
 import com.owncloud.android.ui.fragment.FileDetailSharingFragment;
+import com.owncloud.android.ui.fragment.FileDetailsSharingProcessFragment;
 import com.owncloud.android.ui.fragment.GalleryFragment;
 import com.owncloud.android.ui.fragment.LocalFileListFragment;
 import com.owncloud.android.ui.fragment.OCFileListBottomSheetDialog;
@@ -254,6 +255,9 @@ abstract class ComponentsModule {
     @ContributesAndroidInjector
     abstract FileDetailActivitiesFragment fileDetailActivitiesFragment();
 
+    @ContributesAndroidInjector
+    abstract FileDetailsSharingProcessFragment fileDetailsSharingProcessFragment();
+
     @ContributesAndroidInjector
     abstract FileDetailSharingFragment fileDetailSharingFragment();
 

+ 44 - 10
app/src/main/java/com/owncloud/android/ui/fragment/FileDetailsSharingProcessFragment.kt

@@ -29,6 +29,7 @@ import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import androidx.fragment.app.Fragment
+import com.nextcloud.client.di.Injectable
 import com.owncloud.android.R
 import com.owncloud.android.databinding.FileDetailsSharingProcessFragmentBinding
 import com.owncloud.android.datamodel.OCFile
@@ -41,8 +42,10 @@ import com.owncloud.android.ui.fragment.util.SharingMenuHelper
 import com.owncloud.android.ui.helpers.FileOperationsHelper
 import com.owncloud.android.utils.ClipboardUtil
 import com.owncloud.android.utils.DisplayUtils
+import com.owncloud.android.utils.theme.newm3.ViewThemeUtils
 import java.text.SimpleDateFormat
 import java.util.Date
+import javax.inject.Inject
 
 /**
  * Fragment class to show share permission options, set expiration date, change label, set password, send note
@@ -53,7 +56,10 @@ import java.util.Date
  * 2. This will handle both Advanced Permissions and Send New Email functionality for existing shares to modify them.
  */
 @Suppress("TooManyFunctions")
-class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialogFragment.OnExpiryDateListener {
+class FileDetailsSharingProcessFragment :
+    Fragment(),
+    Injectable,
+    ExpirationDatePickerDialogFragment.OnExpiryDateListener {
 
     companion object {
         const val TAG = "FileDetailsSharingProcessFragment"
@@ -100,6 +106,9 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
         }
     }
 
+    @Inject
+    lateinit var viewThemeUtils: ViewThemeUtils
+
     private lateinit var onEditShareListener: FileDetailSharingFragment.OnEditShareListener
 
     private lateinit var binding: FileDetailsSharingProcessFragmentBinding
@@ -164,6 +173,31 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
             showShareProcessSecond()
         }
         implementClickEvents()
+
+        themeView()
+    }
+
+    private fun themeView() {
+        viewThemeUtils.platform.colorPrimaryTextViewElement(binding.shareProcessEditShareLink)
+        viewThemeUtils.platform.colorPrimaryTextViewElement(binding.shareProcessAdvancePermissionTitle)
+
+        viewThemeUtils.platform.themeRadioButton(binding.shareProcessPermissionReadOnly)
+        viewThemeUtils.platform.themeRadioButton(binding.shareProcessPermissionUploadEditing)
+        viewThemeUtils.platform.themeRadioButton(binding.shareProcessPermissionFileDrop)
+
+        viewThemeUtils.platform.themeCheckbox(binding.shareProcessAllowResharingCheckbox)
+
+        viewThemeUtils.androidx.colorSwitchCompat(binding.shareProcessSetPasswordSwitch)
+        viewThemeUtils.androidx.colorSwitchCompat(binding.shareProcessSetExpDateSwitch)
+        viewThemeUtils.androidx.colorSwitchCompat(binding.shareProcessHideDownloadCheckbox)
+        viewThemeUtils.androidx.colorSwitchCompat(binding.shareProcessChangeNameSwitch)
+
+        viewThemeUtils.material.colorTextInputLayout(binding.shareProcessEnterPasswordContainer)
+        viewThemeUtils.material.colorTextInputLayout(binding.shareProcessChangeNameContainer)
+        viewThemeUtils.material.colorTextInputLayout(binding.noteContainer)
+
+        viewThemeUtils.material.colorMaterialButtonPrimaryFilled(binding.shareProcessBtnNext)
+        viewThemeUtils.material.colorMaterialButtonPrimaryOutlined(binding.shareProcessBtnCancel)
     }
 
     override fun onConfigurationChanged(newConfig: Configuration) {
@@ -251,7 +285,7 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
         // external share
         if (shareType == ShareType.EMAIL) {
             binding.shareProcessChangeNameSwitch.visibility = View.GONE
-            binding.shareProcessChangeNameEt.visibility = View.GONE
+            binding.shareProcessChangeNameContainer.visibility = View.GONE
             updateViewForExternalAndLinkShare()
         }
         // link share
@@ -259,7 +293,7 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
             updateViewForExternalAndLinkShare()
             binding.shareProcessChangeNameSwitch.visibility = View.VISIBLE
             if (share != null) {
-                binding.shareProcessChangeNameEt.setText(share?.label)
+                binding.shareProcessChangeName.setText(share?.label)
                 binding.shareProcessChangeNameSwitch.isChecked = !TextUtils.isEmpty(share?.label)
             }
             showChangeNameInput(binding.shareProcessChangeNameSwitch.isChecked)
@@ -267,7 +301,7 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
         // internal share
         else {
             binding.shareProcessChangeNameSwitch.visibility = View.GONE
-            binding.shareProcessChangeNameEt.visibility = View.GONE
+            binding.shareProcessChangeNameContainer.visibility = View.GONE
             binding.shareProcessHideDownloadCheckbox.visibility = View.GONE
             binding.shareProcessAllowResharingCheckbox.visibility = View.VISIBLE
             binding.shareProcessSetPasswordSwitch.visibility = View.GONE
@@ -383,9 +417,9 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
     }
 
     private fun showChangeNameInput(isChecked: Boolean) {
-        binding.shareProcessChangeNameEt.visibility = if (isChecked) View.VISIBLE else View.GONE
+        binding.shareProcessChangeNameContainer.visibility = if (isChecked) View.VISIBLE else View.GONE
         if (!isChecked) {
-            binding.shareProcessChangeNameEt.setText("")
+            binding.shareProcessChangeName.setText("")
         }
     }
 
@@ -417,7 +451,7 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
     }
 
     private fun showPasswordInput(isChecked: Boolean) {
-        binding.shareProcessEnterPassword.visibility = if (isChecked) View.VISIBLE else View.GONE
+        binding.shareProcessEnterPasswordContainer.visibility = if (isChecked) View.VISIBLE else View.GONE
 
         // reset the password if switch is unchecked
         if (!isChecked) {
@@ -462,7 +496,7 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
         }
 
         if (binding.shareProcessChangeNameSwitch.isChecked &&
-            binding.shareProcessChangeNameEt.text?.trim().isNullOrEmpty()
+            binding.shareProcessChangeName.text?.trim().isNullOrEmpty()
         ) {
             DisplayUtils.showSnackMessage(binding.root, R.string.label_empty)
             return
@@ -499,7 +533,7 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
             binding.shareProcessHideDownloadCheckbox.isChecked,
             binding.shareProcessEnterPassword.text.toString().trim(),
             chosenExpDateInMills,
-            binding.shareProcessChangeNameEt.text.toString().trim()
+            binding.shareProcessChangeName.text.toString().trim()
         )
         // copy the share link if available
         if (!TextUtils.isEmpty(share?.shareLink)) {
@@ -527,7 +561,7 @@ class FileDetailsSharingProcessFragment : Fragment(), ExpirationDatePickerDialog
                 binding.shareProcessEnterPassword.text.toString().trim(),
                 chosenExpDateInMills,
                 noteText,
-                binding.shareProcessChangeNameEt.text.toString().trim()
+                binding.shareProcessChangeName.text.toString().trim()
             )
         }
         removeCurrentFragment()

+ 56 - 21
app/src/main/res/layout/file_details_sharing_process_fragment.xml

@@ -24,9 +24,9 @@
     xmlns:tools="http://schemas.android.com/tools"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:minHeight="400dp"
     android:focusable="true"
-    android:focusableInTouchMode="true">
+    android:focusableInTouchMode="true"
+    android:minHeight="400dp">
 
     <androidx.core.widget.NestedScrollView
         android:layout_width="match_parent"
@@ -46,9 +46,9 @@
                 android:id="@+id/share_process_edit_share_link"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
-                android:layout_marginTop="@dimen/standard_margin"
                 android:text="@string/share_permissions"
-                android:textColor="@color/secondary_text_color"
+                android:textColor="@color/primary"
+                android:textStyle="bold"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toTopOf="parent" />
@@ -66,18 +66,21 @@
                     android:id="@+id/share_process_permission_read_only"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:minHeight="@dimen/minimum_size_for_touchable_area"
                     android:text="@string/link_share_view_only" />
 
                 <androidx.appcompat.widget.AppCompatRadioButton
                     android:id="@+id/share_process_permission_upload_editing"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:minHeight="@dimen/minimum_size_for_touchable_area"
                     android:text="@string/link_share_allow_upload_and_editing" />
 
                 <androidx.appcompat.widget.AppCompatRadioButton
                     android:id="@+id/share_process_permission_file_drop"
                     android:layout_width="wrap_content"
                     android:layout_height="wrap_content"
+                    android:minHeight="@dimen/minimum_size_for_touchable_area"
                     android:text="@string/link_share_file_drop" />
 
             </RadioGroup>
@@ -88,7 +91,8 @@
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/standard_margin"
                 android:text="@string/advanced_settings"
-                android:textColor="@color/secondary_text_color"
+                android:textColor="@color/primary"
+                android:textStyle="bold"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/share_process_permission_radio_group" />
@@ -97,6 +101,7 @@
                 android:id="@+id/share_process_allow_resharing_checkbox"
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:text="@string/allow_resharing"
                 android:visibility="gone"
                 app:layout_constraintEnd_toEndOf="parent"
@@ -108,39 +113,54 @@
                 android:id="@+id/share_process_set_password_switch"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:text="@string/share_no_password_title"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/share_process_allow_resharing_checkbox" />
 
-            <androidx.appcompat.widget.AppCompatEditText
-                android:id="@+id/share_process_enter_password"
+            <com.google.android.material.textfield.TextInputLayout
+                android:id="@+id/share_process_enter_password_container"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
-                android:autofillHints="password"
                 android:hint="@string/hint_password"
-                android:inputType="textPassword"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:visibility="gone"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/share_process_set_password_switch"
-                tools:visibility="visible" />
+                tools:visibility="visible">
+
+                <com.google.android.material.textfield.TextInputEditText
+                    android:id="@+id/share_process_enter_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>
 
             <androidx.appcompat.widget.SwitchCompat
                 android:id="@+id/share_process_set_exp_date_switch"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/standard_half_margin"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:text="@string/share_no_expiration_date_label"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
-                app:layout_constraintTop_toBottomOf="@+id/share_process_enter_password" />
+                app:layout_constraintTop_toBottomOf="@+id/share_process_enter_password_container" />
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/share_process_select_exp_date"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:gravity="center_vertical"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:padding="@dimen/standard_half_padding"
                 android:visibility="gone"
                 app:drawableEndCompat="@drawable/file_calendar"
@@ -153,7 +173,7 @@
                 android:id="@+id/share_process_exp_date_divider"
                 android:layout_width="match_parent"
                 android:layout_height="0.5dp"
-                android:background="@color/black"
+                android:background="@color/text_color"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/share_process_select_exp_date" />
@@ -163,6 +183,7 @@
                 android:layout_width="0dp"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/standard_half_margin"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:text="@string/share_via_link_hide_download"
                 android:visibility="gone"
                 app:layout_constraintEnd_toEndOf="parent"
@@ -175,23 +196,36 @@
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:layout_marginTop="@dimen/standard_half_margin"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:text="@string/link_name"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/share_process_hide_download_checkbox" />
 
-            <androidx.appcompat.widget.AppCompatEditText
-                android:id="@+id/share_process_change_name_et"
+            <com.google.android.material.textfield.TextInputLayout
+                android:id="@+id/share_process_change_name_container"
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
                 android:hint="@string/hint_name"
-                android:importantForAutofill="no"
-                android:inputType="textNoSuggestions|textCapSentences"
+                android:minHeight="@dimen/minimum_size_for_touchable_area"
                 android:visibility="gone"
                 app:layout_constraintEnd_toEndOf="parent"
                 app:layout_constraintStart_toStartOf="parent"
                 app:layout_constraintTop_toBottomOf="@+id/share_process_change_name_switch"
-                tools:visibility="visible" />
+                tools:visibility="visible">
+
+                <com.google.android.material.textfield.TextInputEditText
+                    android:id="@+id/share_process_change_name"
+                    android:layout_width="match_parent"
+                    android:layout_height="wrap_content"
+                    android:ems="10"
+                    android:gravity="top"
+                    android:importantForAutofill="no"
+                    android:inputType="textNoSuggestions|textCapSentences">
+
+                </com.google.android.material.textfield.TextInputEditText>
+
+            </com.google.android.material.textfield.TextInputLayout>
 
             <androidx.constraintlayout.widget.Group
                 android:id="@+id/share_process_group_one"
@@ -202,9 +236,9 @@
                 share_process_permission_radio_group,
                 share_process_advance_permission_title, share_process_hide_download_checkbox,
                 share_process_allow_resharing_checkbox, share_process_set_password_switch,
-                share_process_set_exp_date_switch, share_process_enter_password,
+                share_process_set_exp_date_switch, share_process_enter_password_container,
                 share_process_select_exp_date, share_process_change_name_switch,
-                share_process_change_name_et" />
+                share_process_change_name_container" />
 
             <androidx.appcompat.widget.AppCompatTextView
                 android:id="@+id/share_process_message_title"
@@ -259,10 +293,10 @@
         android:layout_marginBottom="@dimen/standard_margin"
         android:text="@string/common_cancel"
         app:cornerRadius="@dimen/button_corner_radius"
-        app:layout_constraintTop_toTopOf="@+id/share_process_btn_next"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toStartOf="@+id/share_process_btn_next"
-        app:layout_constraintStart_toStartOf="parent" />
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="@+id/share_process_btn_next" />
 
     <com.google.android.material.button.MaterialButton
         android:id="@+id/share_process_btn_next"
@@ -277,4 +311,5 @@
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintEnd_toEndOf="parent"
         app:layout_constraintStart_toEndOf="@+id/share_process_btn_cancel" />
+
 </androidx.constraintlayout.widget.ConstraintLayout>