diff --git a/app/src/main/java/com/nmc/android/utils/DialogThemeUtils.kt b/app/src/main/java/com/nmc/android/utils/DialogThemeUtils.kt new file mode 100644 index 000000000000..0898f2b46ca2 --- /dev/null +++ b/app/src/main/java/com/nmc/android/utils/DialogThemeUtils.kt @@ -0,0 +1,30 @@ +package com.nmc.android.utils + +import android.content.Context +import android.content.res.ColorStateList +import android.os.Build +import com.google.android.material.dialog.MaterialAlertDialogBuilder +import com.google.android.material.shape.MaterialShapeDrawable +import com.owncloud.android.R + +object DialogThemeUtils { + fun colorMaterialAlertDialogBackground(context: Context, dialogBuilder: MaterialAlertDialogBuilder) { + val materialShapeDrawable = MaterialShapeDrawable( + context, + null, + androidx.appcompat.R.attr.alertDialogStyle, + com.google.android.material.R.style.MaterialAlertDialog_MaterialComponents + ) + materialShapeDrawable.initializeElevationOverlay(context) + materialShapeDrawable.fillColor = + ColorStateList.valueOf(context.resources.getColor(R.color.alert_bg_color, null)) + + // dialogCornerRadius first appeared in Android Pie + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + val radius: Float = + context.resources.getDimension(com.nextcloud.android.common.ui.R.dimen.dialogBorderRadius) + materialShapeDrawable.setCornerSize(radius) + } + dialogBuilder.background = materialShapeDrawable + } +} \ No newline at end of file diff --git a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt index 96a853af2a40..6091df7cc981 100644 --- a/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt +++ b/app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt @@ -36,6 +36,7 @@ import com.nextcloud.client.jobs.MediaFoldersDetectionWork import com.nextcloud.client.jobs.NotificationWork import com.nextcloud.client.jobs.upload.FileUploadWorker import com.nextcloud.client.preferences.SubFolderRule +import com.nmc.android.utils.DialogThemeUtils import com.nextcloud.utils.extensions.getParcelableArgument import com.nextcloud.utils.extensions.isDialogFragmentReady import com.nextcloud.utils.extensions.setVisibleIf @@ -223,7 +224,8 @@ class SyncedFoldersActivity : .setTitle(R.string.autoupload_disable_power_save_check) .setMessage(getString(R.string.power_save_check_dialog_message)) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(this, builder) + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(this, builder) return builder.create() } @@ -836,7 +838,7 @@ class SyncedFoldersActivity : private fun showBatteryOptimizationInfo() { if (checkIfBatteryOptimizationEnabled()) { - val alertDialogBuilder = MaterialAlertDialogBuilder(this, R.style.Theme_ownCloud_Dialog) + val alertDialogBuilder = MaterialAlertDialogBuilder(this) .setTitle(getString(R.string.battery_optimization_title)) .setMessage(getString(R.string.battery_optimization_message)) .setPositiveButton(getString(R.string.battery_optimization_disable)) { _, _ -> @@ -852,12 +854,13 @@ class SyncedFoldersActivity : } .setNeutralButton(getString(R.string.battery_optimization_close)) { dialog, _ -> dialog.dismiss() } .setIcon(R.drawable.ic_battery_alert) + + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(this, alertDialogBuilder) + if (lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) { - val alertDialog = alertDialogBuilder.show() - viewThemeUtils.platform.colorTextButtons( - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE), - alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) - ) + //NMC Customization + alertDialogBuilder.show() } } } diff --git a/app/src/main/java/com/owncloud/android/ui/adapter/StoragePathAdapter.kt b/app/src/main/java/com/owncloud/android/ui/adapter/StoragePathAdapter.kt index 6b23d5098ba7..80da68bad25f 100644 --- a/app/src/main/java/com/owncloud/android/ui/adapter/StoragePathAdapter.kt +++ b/app/src/main/java/com/owncloud/android/ui/adapter/StoragePathAdapter.kt @@ -29,7 +29,6 @@ class StoragePathAdapter( val storagePathItem = pathList[position] holder.binding.btnStoragePath.setIconResource(storagePathItem.icon) holder.binding.btnStoragePath.text = storagePathItem.name - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(holder.binding.btnStoragePath) } } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalDialog.kt index 3516bf4564ce..595a0f2696ab 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalDialog.kt @@ -9,30 +9,21 @@ package com.owncloud.android.ui.dialog import android.app.Dialog -import android.graphics.drawable.Drawable +import android.content.DialogInterface import android.os.Bundle -import android.view.View -import androidx.appcompat.app.AlertDialog import androidx.fragment.app.DialogFragment -import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.account.User -import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.di.Injectable import com.nextcloud.client.jobs.BackgroundJobManager import com.nextcloud.utils.extensions.getParcelableArgument +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R -import com.owncloud.android.databinding.AccountRemovalDialogBinding -import com.owncloud.android.datamodel.FileDataStorageManager -import com.owncloud.android.utils.DisplayUtils -import com.owncloud.android.utils.DisplayUtils.AvatarGenerationListener import com.owncloud.android.utils.theme.ViewThemeUtils import javax.inject.Inject -class AccountRemovalDialog : - DialogFragment(), - AvatarGenerationListener, - Injectable { +// NMC Customization: We don't need two option for logout. On logout directly logout the user locally from the app +class AccountRemovalDialog : DialogFragment(), Injectable { @Inject lateinit var backgroundJobManager: BackgroundJobManager @@ -41,134 +32,33 @@ class AccountRemovalDialog : lateinit var viewThemeUtils: ViewThemeUtils private var user: User? = null - private lateinit var alertDialog: AlertDialog - private var _binding: AccountRemovalDialogBinding? = null - val binding get() = _binding!! override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) user = requireArguments().getParcelableArgument(KEY_USER, User::class.java) } - override fun onStart() { - super.onStart() - - // disable positive button and apply theming - alertDialog = dialog as AlertDialog - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).isEnabled = false - - viewThemeUtils.platform.themeRadioButton(binding.radioLocalRemove) - viewThemeUtils.platform.themeRadioButton(binding.radioRequestDeletion) - viewThemeUtils.material.colorMaterialButtonPrimaryTonal( - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton - ) - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless( - alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton - ) - - binding.userName.text = UserAccountManager.getDisplayName(user) - binding.account.text = user?.let { DisplayUtils.convertIdn(it.accountName, false) } - } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { - _binding = AccountRemovalDialogBinding.inflate(layoutInflater) - - // start avatar generation - setAvatar() - - // hide second option when plug-in isn't installed - if (hasDropAccount()) { - binding.requestDeletion.visibility = View.VISIBLE - } - - val builder = - MaterialAlertDialogBuilder(requireActivity()) - .setTitle(R.string.delete_account) - .setView(binding.root) - .setNegativeButton(R.string.common_cancel) { _, _ -> } - .setPositiveButton(R.string.delete_account) { _, _ -> removeAccount() } - - // allow selection by clicking on list element - binding.localRemove.setOnClickListener { - binding.radioLocalRemove.performClick() - } - binding.requestDeletion.setOnClickListener { - binding.radioRequestDeletion.performClick() - } - - // set listeners for custom radio button list - binding.radioLocalRemove.setOnClickListener { - binding.radioRequestDeletion.isChecked = false - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).apply { - text = getText(R.string.delete_account) - isEnabled = true - } - } - binding.radioRequestDeletion.setOnClickListener { - binding.radioLocalRemove.isChecked = false - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE).apply { - text = getString(R.string.request_account_deletion_button) - isEnabled = true + val builder = MaterialAlertDialogBuilder(requireActivity()) + .setTitle(R.string.delete_account) + .setMessage(resources.getString(R.string.delete_account_warning, user!!.accountName)) + .setIcon(R.drawable.ic_warning) + .setPositiveButton(R.string.common_ok) { _: DialogInterface?, _: Int -> + backgroundJobManager.startAccountRemovalJob( + user!!.accountName, + false + ) } - } + .setNegativeButton(R.string.common_cancel, null) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(requireActivity(), builder) + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireActivity(), builder) return builder.create() } - /** - * Get value of `drop-account` capability. - */ - private fun hasDropAccount(): Boolean { - val capability = FileDataStorageManager(user, context?.contentResolver).getCapability(user) - return capability.dropAccount.isTrue - } - - /** - * Start removal of account. Depending on which option is checked, either a browser will open to request deletion, - * or the local account will be removed immediately. - */ - private fun removeAccount() { - user?.let { user -> - if (binding.radioRequestDeletion.isChecked) { - DisplayUtils.startLinkIntent(activity, user.server.uri.toString() + DROP_ACCOUNT_URI) - } else { - backgroundJobManager.startAccountRemovalJob(user.accountName, false) - } - } - } - - /** - * Start avatar generation. - */ - private fun setAvatar() { - try { - val imageView = binding.userIcon - imageView.tag = user!!.accountName - DisplayUtils.setAvatar( - user!!, - this, - resources.getDimension(R.dimen.list_item_avatar_icon_radius), - resources, - imageView, - context - ) - } catch (_: Exception) { - } - } - - override fun avatarGenerated(avatarDrawable: Drawable?, callContext: Any?) { - avatarDrawable?.let { - binding.userIcon.setImageDrawable(it) - } - } - - override fun shouldCallGeneratedCallback(tag: String?, callContext: Any?): Boolean = binding.userIcon.tag == tag - companion object { private const val KEY_USER = "USER" - private const val DROP_ACCOUNT_URI = "/settings/user/drop_account" @JvmStatic fun newInstance(user: User) = AccountRemovalDialog().apply { diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.kt index dedef04d701e..0cf55614c23f 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.kt @@ -28,6 +28,7 @@ import com.nextcloud.client.network.ClientFactory import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.utils.extensions.getParcelableArgument import com.nextcloud.utils.fileNameValidator.FileNameValidator +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.MainApp import com.owncloud.android.R import com.owncloud.android.databinding.ChooseTemplateBinding @@ -99,15 +100,9 @@ class ChooseRichDocumentsTemplateDialogFragment : alertDialog?.let { positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton positiveButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(it) it.setOnClickListener(this) it.isEnabled = false } - - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton - negativeButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton) - } } checkEnablingCreateButton() @@ -131,7 +126,6 @@ class ChooseRichDocumentsTemplateDialogFragment : initClient() initFilenames(arguments) - viewThemeUtils.material.colorTextInputLayout(binding.filenameContainer) val type = Type.valueOf(arguments.getString(ARG_TYPE) ?: "") FetchTemplateTask(this, client).execute(type) @@ -193,8 +187,8 @@ class ChooseRichDocumentsTemplateDialogFragment : .setNegativeButton(R.string.common_cancel, null) .setTitle(titleTextId) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(activity, builder) - + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(activity, builder) return builder } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt index a9f4e32e0f68..634c8d81fd22 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt @@ -33,6 +33,7 @@ import com.nextcloud.client.network.ClientFactory import com.nextcloud.client.network.ClientFactory.CreationException import com.nextcloud.utils.extensions.getParcelableArgument import com.nextcloud.utils.fileNameValidator.FileNameValidator +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.MainApp import com.owncloud.android.R import com.owncloud.android.databinding.ChooseTemplateBinding @@ -94,14 +95,8 @@ class ChooseTemplateDialogFragment : super.onStart() val alertDialog = dialog as AlertDialog - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton - negativeButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton) - } - val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton positiveButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton) positiveButton.setOnClickListener(this) positiveButton.isEnabled = false positiveButton.isClickable = false @@ -134,10 +129,6 @@ class ChooseTemplateDialogFragment : val inflater = requireActivity().layoutInflater _binding = ChooseTemplateBinding.inflate(inflater, null, false) - viewThemeUtils.material.colorTextInputLayout( - binding.filenameContainer - ) - binding.filename.addTextChangedListener(object : TextWatcher { override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) = Unit @@ -166,7 +157,8 @@ class ChooseTemplateDialogFragment : .setNegativeButton(R.string.common_cancel, null) .setTitle(title) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.list.context, builder) + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(binding.list.context, builder) return builder.create() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.kt index 02667163efa7..053979648922 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.kt @@ -14,12 +14,11 @@ import android.R import android.app.Dialog import android.content.DialogInterface import android.os.Bundle -import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.fragment.app.DialogFragment -import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.di.Injectable +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.utils.theme.ViewThemeUtils import javax.inject.Inject @@ -33,29 +32,6 @@ open class ConfirmationDialogFragment : private var mListener: ConfirmationDialogFragmentListener? = null - override fun onStart() { - super.onStart() - - val alertDialog = dialog as AlertDialog? - - if (alertDialog != null) { - val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton? - if (positiveButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton) - } - - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton? - if (negativeButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton) - } - - val neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) as MaterialButton? - if (neutralButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(neutralButton) - } - } - } - fun setOnConfirmationListener(listener: ConfirmationDialogFragmentListener?) { mListener = listener } @@ -116,7 +92,8 @@ open class ConfirmationDialogFragment : } } - viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireActivity(), builder) + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireActivity(), builder) return builder.create() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt index f3078dce73cb..a33a21490a3b 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt @@ -29,6 +29,7 @@ import com.nextcloud.utils.autoRename.AutoRename import com.nextcloud.utils.extensions.getParcelableArgument import com.nextcloud.utils.extensions.typedActivity import com.nextcloud.utils.fileNameValidator.FileNameValidator +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.EditBoxDialogBinding import com.owncloud.android.datamodel.FileDataStorageManager @@ -85,12 +86,6 @@ class CreateFolderDialogFragment : positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton positiveButton?.let { it.isEnabled = false - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(it) - } - - val negativeButton = dialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton - negativeButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(it) } } } @@ -109,7 +104,6 @@ class CreateFolderDialogFragment : binding = EditBoxDialogBinding.inflate(inflater, null, false) binding.userInput.setText(R.string.empty) - viewThemeUtils.material.colorTextInputLayout(binding.userInputContainer) val parentFolder = requireArguments().getParcelableArgument(ARG_PARENT_FOLDER, OCFile::class.java) @@ -128,7 +122,8 @@ class CreateFolderDialogFragment : }) val builder = buildMaterialAlertDialog(binding.root) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.userInputContainer.context, builder) + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(binding.userInputContainer.context, builder) return builder.create() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.kt index 261b3a9515a5..81398a451b76 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.kt @@ -53,18 +53,25 @@ class ExpirationDatePickerDialogFragment : if (currentDialog != null) { val dialog = currentDialog as DatePickerDialog - val positiveButton = dialog.getButton(DatePickerDialog.BUTTON_POSITIVE) as MaterialButton? - if (positiveButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton) - } - val negativeButton = dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE) as MaterialButton? - if (negativeButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton) - } - val neutralButton = dialog.getButton(DatePickerDialog.BUTTON_NEUTRAL) as MaterialButton? - if (neutralButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(neutralButton) - } + // NMC Customization + (dialog.getButton(DatePickerDialog.BUTTON_POSITIVE) as MaterialButton?)?.setTextColor( + resources.getColor( + R.color.primary, + null + ) + ) + (dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE) as MaterialButton?)?.setTextColor( + resources.getColor( + R.color.text_color, + null + ) + ) + (dialog.getButton(DatePickerDialog.BUTTON_NEUTRAL) as MaterialButton?)?.setTextColor( + resources.getColor( + R.color.text_color, + null + ) + ) } } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.kt index 5b4a996e8c7c..83d8bd973ca3 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.kt @@ -39,7 +39,11 @@ class IndeterminateProgressDialog : progressDialog.isIndeterminate = true progressDialog.setOnShowListener { val v = progressDialog.findViewById(android.R.id.progress) - viewThemeUtils?.platform?.tintDrawable(requireContext(), v.indeterminateDrawable) + // NMC Customization + viewThemeUtils?.platform?.colorDrawable( + v.indeterminateDrawable, + requireContext().resources.getColor(R.color.white, null) + ) } // / set message diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.kt index 226da7768e36..bacaf63cfc5f 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/LoadingDialog.kt @@ -8,13 +8,15 @@ */ package com.owncloud.android.ui.dialog +import android.graphics.PorterDuff +import android.graphics.PorterDuffColorFilter import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.fragment.app.DialogFragment -import com.nextcloud.android.common.ui.theme.utils.ColorRole import com.nextcloud.client.di.Injectable +import com.owncloud.android.R import com.owncloud.android.databinding.LoadingDialogBinding import com.owncloud.android.utils.theme.ViewThemeUtils import javax.inject.Inject @@ -41,11 +43,11 @@ class LoadingDialog : val loadingDrawable = binding.loadingBar.indeterminateDrawable if (loadingDrawable != null) { - viewThemeUtils.platform.tintDrawable(requireContext(), loadingDrawable) + // NMC Customisation + loadingDrawable.colorFilter = + PorterDuffColorFilter(resources.getColor(R.color.primary, null), PorterDuff.Mode.SRC_IN) } - viewThemeUtils.platform.colorViewBackground(binding.loadingLayout, ColorRole.SURFACE) - return binding.root } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.kt index ae5d0f86adbe..f596c8b13531 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/LocalStoragePathPickerDialogFragment.kt @@ -13,9 +13,9 @@ import android.os.Environment import androidx.appcompat.app.AlertDialog import androidx.fragment.app.DialogFragment import androidx.recyclerview.widget.LinearLayoutManager -import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.di.Injectable +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.StoragePathDialogBinding import com.owncloud.android.ui.adapter.StoragePathAdapter @@ -38,17 +38,6 @@ class LocalStoragePathPickerDialogFragment : private lateinit var binding: StoragePathDialogBinding - override fun onStart() { - super.onStart() - - val alertDialog = dialog as AlertDialog? - - val positiveButton = alertDialog?.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton? - positiveButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton) - } - } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { require(activity is StoragePathAdapterListener) { "Calling activity must implement " + @@ -70,7 +59,8 @@ class LocalStoragePathPickerDialogFragment : .setPositiveButton(R.string.common_cancel, this) .setTitle(R.string.storage_choose_location) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(requireContext(), builder) + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), builder) return builder.create() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt index c27956afe82e..5b18f6f025c1 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/RemoveFilesDialogFragment.kt @@ -14,8 +14,6 @@ package com.owncloud.android.ui.dialog import android.app.Dialog import android.os.Bundle import android.view.ActionMode -import androidx.appcompat.app.AlertDialog -import com.google.android.material.button.MaterialButton import com.nextcloud.client.di.Injectable import com.nextcloud.utils.extensions.getTypedActivity import com.owncloud.android.R @@ -40,29 +38,6 @@ class RemoveFilesDialogFragment : @Inject lateinit var fileDataStorageManager: FileDataStorageManager - private var positiveButton: MaterialButton? = null - - override fun onStart() { - super.onStart() - - val alertDialog = dialog as AlertDialog? ?: return - - positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton - positiveButton?.let { - viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(it) - } - - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton - negativeButton?.let { - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton) - } - - val neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) as? MaterialButton - neutralButton?.let { - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(neutralButton) - } - } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { val dialog = super.onCreateDialog(savedInstanceState) val arguments = arguments ?: return dialog diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.kt index 0a1981c11300..8554962ce065 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/RenameFileDialogFragment.kt @@ -27,6 +27,7 @@ import com.nextcloud.utils.extensions.getParcelableArgument import com.nextcloud.utils.extensions.typedActivity import com.nextcloud.utils.fileNameValidator.FileNameValidator.checkFileName import com.nextcloud.utils.fileNameValidator.FileNameValidator.isFileHidden +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.EditBoxDialogBinding import com.owncloud.android.datamodel.FileDataStorageManager @@ -84,7 +85,6 @@ class RenameFileDialogFragment : val currentName = mTargetFile?.fileName binding.userInput.setText(currentName) - viewThemeUtils.material.colorTextInputLayout(binding.userInputContainer) val extensionStart = if (mTargetFile?.isFolder == true) -1 else currentName?.lastIndexOf('.') val selectionEnd = if ((extensionStart ?: -1) >= 0) extensionStart else currentName?.length if (selectionEnd != null) { @@ -103,7 +103,8 @@ class RenameFileDialogFragment : val builder = buildMaterialAlertDialog(binding.root) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.userInputContainer.context, builder) + // NMC Customization + DialogThemeUtils.colorMaterialAlertDialogBackground(binding.userInputContainer.context, builder) return builder.create() } @@ -125,12 +126,6 @@ class RenameFileDialogFragment : if (alertDialog != null) { positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton - - positiveButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(it) - } - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton) } } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.kt index a13bc6e341a7..cb7cd7e49dc9 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ShareLinkToDialog.kt @@ -27,6 +27,7 @@ import androidx.appcompat.app.AlertDialog import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.utils.extensions.getParcelableArgument +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.lib.common.utils.Log_OC import com.owncloud.android.ui.activity.CopyToClipboardActivity @@ -85,7 +86,7 @@ class ShareLinkToDialog : DialogFragment() { R.string.activity_chooser_title } - return MaterialAlertDialogBuilder(requireActivity()) + val builder = MaterialAlertDialogBuilder(requireActivity()) .setTitle(titleId) .setAdapter(mAdapter) { _, which -> // Add the information of the chosen activity to the intent to send @@ -98,7 +99,9 @@ class ShareLinkToDialog : DialogFragment() { mIntent?.setComponent(name) activity?.startActivity(mIntent) } - .create() + // NMC Customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), builder) + return builder.create() } internal inner class ActivityAdapter( diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.kt index 9eb12a7a0d2b..1962d3ca2f96 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/SharePasswordDialogFragment.kt @@ -15,12 +15,12 @@ import android.app.Dialog import android.content.DialogInterface import android.os.Bundle import androidx.appcompat.app.AlertDialog -import androidx.core.content.ContextCompat import androidx.fragment.app.DialogFragment import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.di.Injectable import com.nextcloud.utils.extensions.getParcelableArgument +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.PasswordDialogBinding import com.owncloud.android.datamodel.OCFile @@ -60,11 +60,8 @@ class SharePasswordDialogFragment : val alertDialog = dialog as AlertDialog? if (alertDialog != null) { - val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton? - if (positiveButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton) - positiveButton.setOnClickListener { - val sharePassword = binding?.sharePassword?.text + (alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton?)?.setOnClickListener { + val sharePassword = binding?.sharePassword?.text if (sharePassword != null) { val password = sharePassword.toString() @@ -79,19 +76,7 @@ class SharePasswordDialogFragment : } } - alertDialog.dismiss() - } - } - - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton? - if (negativeButton != null) { - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton) - } - - val neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) as MaterialButton? - if (neutralButton != null) { - val warningColorId = ContextCompat.getColor(requireContext(), R.color.highlight_textColor_Warning) - viewThemeUtils?.platform?.colorTextButtons(warningColorId, neutralButton) + alertDialog.dismiss() } } } @@ -114,7 +99,6 @@ class SharePasswordDialogFragment : // Setup layout binding?.sharePassword?.setText(R.string.empty) - viewThemeUtils?.material?.colorTextInputLayout(binding!!.sharePasswordContainer) val neutralButtonTextId: Int val title: Int @@ -138,7 +122,8 @@ class SharePasswordDialogFragment : } .setTitle(title) - viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireContext(), builder) + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), builder) return builder.create() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.kt index 246b7b906241..df8c3cd089ad 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/SortingOrderDialogFragment.kt @@ -15,6 +15,7 @@ import android.view.View import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.di.Injectable +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.SortingOrderFragmentBinding import com.owncloud.android.lib.common.utils.Log_OC @@ -80,7 +81,8 @@ class SortingOrderDialogFragment : val builder = MaterialAlertDialogBuilder(requireContext()) builder.setView(binding?.root) - viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireContext(), builder) + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), builder) return builder.create() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.kt index 75ddaecced48..c277b0e58167 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/SslUntrustedCertDialog.kt @@ -24,6 +24,7 @@ import androidx.core.view.isVisible import androidx.fragment.app.DialogFragment import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.di.Injectable +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.SslUntrustedCertLayoutBinding import com.owncloud.android.lib.common.network.CertificateCombinedException @@ -106,7 +107,8 @@ open class SslUntrustedCertDialog : setView(layoutBinding.getRoot()) } - viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireContext(), builder) + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), builder) return builder.create().apply { requestWindowFeature(Window.FEATURE_NO_TITLE) diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/StoragePermissionDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/StoragePermissionDialogFragment.kt index 32424b7e1e8c..78170bde70e5 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/StoragePermissionDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/StoragePermissionDialogFragment.kt @@ -12,12 +12,12 @@ import android.app.Dialog import android.os.Build import android.os.Bundle import androidx.annotation.RequiresApi -import androidx.appcompat.app.AlertDialog import androidx.fragment.app.DialogFragment import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.di.Injectable import com.nextcloud.client.preferences.AppPreferences +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.utils.PermissionUtil import com.owncloud.android.utils.theme.ViewThemeUtils @@ -47,18 +47,6 @@ class StoragePermissionDialogFragment : override fun onStart() { super.onStart() dialog?.setCanceledOnTouchOutside(false) - dialog?.let { - val alertDialog = it as AlertDialog - - val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton) - - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton) - - val neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) as MaterialButton - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(neutralButton) - } } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { @@ -83,7 +71,8 @@ class StoragePermissionDialogFragment : dismiss() } - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(requireContext(), dialogBuilder) + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), dialogBuilder) return dialogBuilder.create() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.kt index 6656d0beb144..12e13abbccbf 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/SyncedFolderPreferencesDialogFragment.kt @@ -19,6 +19,7 @@ import android.view.View import android.widget.AdapterView import androidx.appcompat.app.AlertDialog import androidx.fragment.app.DialogFragment +import com.nmc.android.utils.DialogThemeUtils import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.nextcloud.client.di.Injectable import com.nextcloud.client.preferences.SubFolderRule @@ -97,7 +98,8 @@ class SyncedFolderPreferencesDialogFragment : val builder = MaterialAlertDialogBuilder(requireContext()) builder.setView(binding!!.getRoot()) - viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireContext(), builder) + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), builder) return builder.create() } @@ -156,10 +158,6 @@ class SyncedFolderPreferencesDialogFragment : binding.settingInstantUploadPathUseSubfoldersCheckbox, binding.settingInstantUploadExcludeHiddenCheckbox ) - - viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(binding.btnPositive) - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(binding.btnNegative) - viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(binding.btnNeutral) } private fun setButtonOrder(binding: SyncedFoldersSettingsLayoutBinding) { @@ -420,7 +418,8 @@ class SyncedFolderPreferencesDialogFragment : } behaviourDialogShown = true - viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireActivity(), builder) + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireActivity(), builder) behaviourDialog = builder.create() behaviourDialog?.show() @@ -439,7 +438,8 @@ class SyncedFolderPreferencesDialogFragment : nameCollisionPolicyDialogShown = true - viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireActivity(), builder) + //NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireActivity(), builder) behaviourDialog = builder.create() behaviourDialog?.show() } diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/setupEncryption/SetupEncryptionDialogFragment.kt b/app/src/main/java/com/owncloud/android/ui/dialog/setupEncryption/SetupEncryptionDialogFragment.kt index 427d2c9b75e2..a6a35ad9a19a 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/setupEncryption/SetupEncryptionDialogFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/setupEncryption/SetupEncryptionDialogFragment.kt @@ -22,6 +22,7 @@ import com.nextcloud.client.account.User import com.nextcloud.client.di.Injectable import com.nextcloud.client.network.ClientFactory import com.nextcloud.utils.extensions.getParcelableArgument +import com.nmc.android.utils.DialogThemeUtils import com.owncloud.android.R import com.owncloud.android.databinding.SetupEncryptionDialogBinding import com.owncloud.android.datamodel.ArbitraryDataProvider @@ -88,15 +89,8 @@ class SetupEncryptionDialogFragment : val alertDialog = dialog as AlertDialog? if (alertDialog != null) { - positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton? - positiveButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(it) - } - - negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton? - negativeButton?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(it) - } + positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton? + negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton? } } @@ -115,11 +109,9 @@ class SetupEncryptionDialogFragment : val inflater = requireActivity().layoutInflater binding = SetupEncryptionDialogBinding.inflate(inflater, null, false) - // Setup layout - viewThemeUtils.material.colorTextInputLayout(binding.encryptionPasswordInputContainer) - val builder = buildMaterialAlertDialog(binding.root) - viewThemeUtils.dialog.colorMaterialAlertDialogBackground(requireContext(), builder) + // NMC customization + DialogThemeUtils.colorMaterialAlertDialogBackground(requireContext(), builder) return builder.create().apply { setCanceledOnTouchOutside(false) setOnShowListener { dialog1: DialogInterface -> @@ -500,7 +492,6 @@ class SetupEncryptionDialogFragment : } requireDialog().setTitle(R.string.end_to_end_encryption_passphrase_title) binding.encryptionStatus.setText(R.string.end_to_end_encryption_keywords_description) - viewThemeUtils.material.colorTextInputLayout(binding.encryptionPasswordInputContainer) binding.encryptionPassphrase.text = generateMnemonicString(true) binding.encryptionPassphrase.visibility = View.VISIBLE @@ -508,12 +499,6 @@ class SetupEncryptionDialogFragment : positiveButton?.visibility = View.VISIBLE negativeButton?.visibility = View.VISIBLE - positiveButton?.let { positiveButton -> - negativeButton?.let { negativeButton -> - viewThemeUtils.platform.colorTextButtons(positiveButton, negativeButton) - } - } - keyResult = KEY_GENERATE } @@ -531,9 +516,6 @@ class SetupEncryptionDialogFragment : positiveButton?.setText(R.string.end_to_end_encryption_dialog_close) positiveButton?.visibility = View.VISIBLE - positiveButton?.let { - viewThemeUtils.platform.colorTextButtons(it) - } } @VisibleForTesting diff --git a/app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.kt b/app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.kt index 957cec7b0d0b..9a7721bb6488 100644 --- a/app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.kt +++ b/app/src/main/java/com/owncloud/android/ui/fragment/contactsbackup/BackupFragment.kt @@ -534,6 +534,7 @@ class BackupFragment : datePickerDialog = DatePickerDialog( contactsPreferenceActivity, + R.style.FallbackDatePickerDialogTheme, this, cal.get(Calendar.YEAR), cal.get(Calendar.MONTH), diff --git a/app/src/main/res/color/dialog_positive_btn_color.xml b/app/src/main/res/color/dialog_positive_btn_color.xml new file mode 100644 index 000000000000..5913e0da1a1d --- /dev/null +++ b/app/src/main/res/color/dialog_positive_btn_color.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/choose_template.xml b/app/src/main/res/layout/choose_template.xml index 524b1912bde4..6746603f29da 100644 --- a/app/src/main/res/layout/choose_template.xml +++ b/app/src/main/res/layout/choose_template.xml @@ -36,6 +36,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="@string/filename_hint" + android:theme="@style/TextInputLayoutInputWarning" android:paddingTop="@dimen/standard_padding"> diff --git a/app/src/main/res/layout/passcodelock.xml b/app/src/main/res/layout/passcodelock.xml index e0aa3bf2d378..685f95601f65 100644 --- a/app/src/main/res/layout/passcodelock.xml +++ b/app/src/main/res/layout/passcodelock.xml @@ -22,6 +22,7 @@ android:layout_gravity="center" android:layout_margin="@dimen/standard_double_margin" card_view:strokeWidth="0dp" + card_view:cardBackgroundColor="@color/alert_bg_color" card_view:cardCornerRadius="16dp" card_view:cardElevation="@dimen/dialog_elevation"> diff --git a/app/src/main/res/layout/password_dialog.xml b/app/src/main/res/layout/password_dialog.xml index 81721b41455b..cf874782cb10 100644 --- a/app/src/main/res/layout/password_dialog.xml +++ b/app/src/main/res/layout/password_dialog.xml @@ -22,7 +22,10 @@ android:layout_height="wrap_content" android:autofillHints="password" android:ems="10" + android:backgroundTint="@color/secondary_text_color" android:gravity="top" + android:textColorHint="@color/bg_fallback_highlight" + android:textColorHighlight="@color/et_highlight_color" android:inputType="textPassword"> diff --git a/app/src/main/res/layout/setup_encryption_dialog.xml b/app/src/main/res/layout/setup_encryption_dialog.xml index 61702a8fb5df..5d0484c1f4c9 100644 --- a/app/src/main/res/layout/setup_encryption_dialog.xml +++ b/app/src/main/res/layout/setup_encryption_dialog.xml @@ -49,6 +49,8 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:autofillHints="password" + android:backgroundTint="@color/secondary_text_color" + android:textColorHighlight="@color/et_highlight_color" android:ems="10" android:inputType="textPassword" android:textCursorDrawable="@null" /> diff --git a/app/src/main/res/layout/storage_path_item.xml b/app/src/main/res/layout/storage_path_item.xml index 44180c9acb64..76dfcfae9041 100644 --- a/app/src/main/res/layout/storage_path_item.xml +++ b/app/src/main/res/layout/storage_path_item.xml @@ -15,6 +15,8 @@ android:gravity="center|start" android:paddingBottom="@dimen/standard_half_padding" android:text="@string/menu_item_sort_by_name_z_a" + android:textColor="@color/text_color" app:icon="@drawable/ic_user_outline" app:iconPadding="@dimen/standard_padding" + app:iconTint="@color/text_color" tools:text="@string/placeholder_file_path" /> diff --git a/app/src/main/res/layout/upload_file_dialog.xml b/app/src/main/res/layout/upload_file_dialog.xml index aeeb38074be0..4b5475961bfb 100755 --- a/app/src/main/res/layout/upload_file_dialog.xml +++ b/app/src/main/res/layout/upload_file_dialog.xml @@ -34,6 +34,8 @@ android:layout_height="wrap_content" android:ems="10" android:gravity="top" + android:backgroundTint="@color/secondary_text_color" + android:textColorHighlight="@color/et_highlight_color" android:importantForAutofill="no" android:inputType="textNoSuggestions|textCapSentences" android:scrollbars="vertical"> diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 63e97d1a9c78..e2a6f1ee50b2 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -243,8 +243,9 @@ Tägliche Sicherung Zu sichernde Daten Zugangsdaten falsch - Konto entfernen + Benutzer abmelden Einträge löschen + Benutzer %s auf diesem Gerät abmelden und lokale Daten löschen? Link löschen Auswahl aufheben Ziel-Dateiname diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index db1e1d218038..e51fe9edd7db 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -39,4 +39,69 @@ @android:color/white #101418 + + + #FFFFFF + @color/grey_30 + @color/grey_30 + #CCCCCC + @color/grey_70 + @color/grey_80 + #2D2D2D + @color/grey_70 + @color/grey_70 + + + @color/grey_80 + @color/grey_0 + + + @color/grey_80 + @color/grey_0 + + + @color/grey_60 + @color/grey_0 + @color/grey_0 + @color/grey_30 + #FFFFFF + @color/grey_30 + @color/grey_80 + #FFFFFF + + + @color/grey_80 + @color/grey_30 + @color/grey_0 + + + @color/grey_80 + @color/grey_0 + @color/grey_80 + + + @color/grey_70 + @color/grey_60 + + + @color/grey_70 + @color/grey_70 + + + #FFFFFF + @color/grey_30 + @color/grey_0 + @color/grey_0 + @color/grey_0 + @color/grey_0 + @color/grey_60 + @color/grey_0 + #FFFFFF + #7d94f9 + + + #121212 + @color/grey_0 + @color/grey_80 + @color/grey_80 diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 19b3ce692520..a35b19c79d66 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -10,6 +10,8 @@ + + + + + + +