From 51cae822248a89ec1b9ccfa71bdc4b88241c05f1 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Wed, 5 Aug 2026 10:47:56 +0200 Subject: [PATCH 1/3] unify alert dialog button theming logic Signed-off-by: alperozturk96 --- .../ui/ChooseStorageLocationDialogFragment.kt | 8 ++----- .../ui/fileInfo/GovernanceDetailInfo.kt | 13 ++++------- .../ui/activity/SyncedFoldersActivity.kt | 7 ++---- .../android/ui/dialog/AccountRemovalDialog.kt | 10 ++------ .../ui/dialog/ConfirmationDialogFragment.kt | 23 ++----------------- .../LocalStoragePathPickerDialogFragment.kt | 10 ++------ .../ui/dialog/RemoveFilesDialogFragment.kt | 23 ++----------------- .../ui/dialog/RenameFileDialogFragment.kt | 17 ++------------ .../dialog/StoragePermissionDialogFragment.kt | 16 ++----------- .../android/ui/dialog/ThemeSelectionDialog.kt | 10 ++------ .../ui/dialog/extensions/DialogExtensions.kt | 3 ++- .../SetupEncryptionDialogFragment.kt | 20 ++-------------- 12 files changed, 27 insertions(+), 133 deletions(-) diff --git a/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt b/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt index 6a67415c0168..aad6bdb2fcb1 100644 --- a/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt @@ -27,6 +27,7 @@ import com.owncloud.android.datastorage.DataStorageProvider import com.owncloud.android.datastorage.StoragePoint import com.owncloud.android.datastorage.StoragePoint.PrivacyType import com.owncloud.android.datastorage.StoragePoint.StorageType +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.ui.model.ExtendedSettingsActivityDialog import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.theme.ViewThemeUtils @@ -51,12 +52,7 @@ class ChooseStorageLocationDialogFragment : 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) - } + dialog?.themeButtons(viewThemeUtils) } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { diff --git a/app/src/main/java/com/nextcloud/ui/fileInfo/GovernanceDetailInfo.kt b/app/src/main/java/com/nextcloud/ui/fileInfo/GovernanceDetailInfo.kt index 2dc6b2a4ea57..c03dff07f9ea 100644 --- a/app/src/main/java/com/nextcloud/ui/fileInfo/GovernanceDetailInfo.kt +++ b/app/src/main/java/com/nextcloud/ui/fileInfo/GovernanceDetailInfo.kt @@ -10,19 +10,17 @@ package com.nextcloud.ui.fileInfo import android.graphics.drawable.Drawable import android.graphics.drawable.GradientDrawable import android.os.Build -import android.view.View -import android.view.ViewGroup -import android.widget.ArrayAdapter import android.text.Spannable import android.text.SpannableString import android.text.SpannableStringBuilder import android.text.style.ImageSpan +import android.view.View +import android.view.ViewGroup +import android.widget.ArrayAdapter import android.widget.TextView -import androidx.appcompat.app.AlertDialog import androidx.core.content.ContextCompat import androidx.core.graphics.toColorInt import androidx.lifecycle.lifecycleScope -import com.google.android.material.button.MaterialButton import com.google.android.material.dialog.MaterialAlertDialogBuilder import com.google.android.material.textfield.MaterialAutoCompleteTextView import com.google.android.material.textfield.TextInputEditText @@ -33,6 +31,7 @@ import com.nextcloud.ui.fileInfo.model.GovernanceUiState import com.owncloud.android.R import com.owncloud.android.databinding.FileInfoFragmentBinding import com.owncloud.android.lib.common.utils.Log_OC +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.theme.ViewThemeUtils import kotlinx.coroutines.flow.filterIsInstance @@ -168,9 +167,7 @@ class GovernanceDetailInfo( .setNegativeButton(android.R.string.cancel, null) .show() - (dialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton)?.let { - viewThemeUtils.material.colorMaterialButtonPrimaryTonal(it) - } + dialog.themeButtons(viewThemeUtils) } private fun buildLabelSpannable(label: GovernanceLabel): CharSequence { 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 662b879f0bce..967c1995390d 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 @@ -58,6 +58,7 @@ import com.owncloud.android.ui.decoration.MediaGridItemDecoration import com.owncloud.android.ui.dialog.ConfirmationDialogFragment import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment import com.owncloud.android.ui.dialog.SyncedFolderPreferencesDialogFragment.OnSyncedFolderPreferenceListener +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.ui.dialog.parcel.SyncedFolderParcelable import com.owncloud.android.utils.PermissionUtil import com.owncloud.android.utils.SyncedFolderUtils @@ -898,10 +899,6 @@ class SyncedFoldersActivity : .setIcon(R.drawable.ic_battery_alert) val alertDialog = dialog.show() - - viewThemeUtils.platform.colorTextButtons( - alertDialog.getButton(AlertDialog.BUTTON_POSITIVE), - alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) - ) + alertDialog.themeButtons(viewThemeUtils) } } 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..595e092e0de8 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 @@ -14,7 +14,6 @@ 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 @@ -24,6 +23,7 @@ import com.nextcloud.utils.extensions.getParcelableArgument import com.owncloud.android.R import com.owncloud.android.databinding.AccountRemovalDialogBinding import com.owncloud.android.datamodel.FileDataStorageManager +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.DisplayUtils.AvatarGenerationListener import com.owncloud.android.utils.theme.ViewThemeUtils @@ -59,13 +59,7 @@ class AccountRemovalDialog : 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 - ) - + alertDialog.themeButtons(viewThemeUtils) binding.userName.text = UserAccountManager.getDisplayName(user) binding.account.text = user?.let { DisplayUtils.convertIdn(it.accountName, false) } } 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..f823cdc23830 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.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.utils.theme.ViewThemeUtils import javax.inject.Inject @@ -35,25 +34,7 @@ open class ConfirmationDialogFragment : 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) - } - } + dialog?.themeButtons(viewThemeUtils) } fun setOnConfirmationListener(listener: ConfirmationDialogFragmentListener?) { 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..a186f0c3c435 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,7 +13,6 @@ 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.owncloud.android.R @@ -21,6 +20,7 @@ import com.owncloud.android.databinding.StoragePathDialogBinding import com.owncloud.android.ui.adapter.StoragePathAdapter import com.owncloud.android.ui.adapter.StoragePathAdapter.StoragePathAdapterListener import com.owncloud.android.ui.adapter.StoragePathItem +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.utils.FileStorageUtils import com.owncloud.android.utils.FileStorageUtils.StandardDirectory import com.owncloud.android.utils.theme.ViewThemeUtils @@ -40,13 +40,7 @@ class LocalStoragePathPickerDialogFragment : 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) - } + dialog?.themeButtons(viewThemeUtils) } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { 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 fba168e67560..7f08c9b88b20 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 @@ -15,9 +15,7 @@ package com.owncloud.android.ui.dialog import android.app.Dialog import android.os.Bundle import android.view.ActionMode -import androidx.appcompat.app.AlertDialog import androidx.lifecycle.lifecycleScope -import com.google.android.material.button.MaterialButton import com.nextcloud.client.account.UserAccountManager import com.nextcloud.client.di.Injectable import com.nextcloud.client.jobs.upload.FileUploadHelper @@ -30,6 +28,7 @@ import com.owncloud.android.datamodel.OCFile import com.owncloud.android.ui.activity.FileActivity import com.owncloud.android.ui.activity.OnFilesRemovedListener import com.owncloud.android.ui.dialog.ConfirmationDialogFragment.ConfirmationDialogFragmentListener +import com.owncloud.android.ui.dialog.extensions.themeButtons import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -51,27 +50,9 @@ class RemoveFilesDialogFragment : @Inject lateinit var userAccountManager: UserAccountManager - 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) - } + dialog?.themeButtons(viewThemeUtils) } override fun onCreateDialog(savedInstanceState: Bundle?): 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 37875db7ac28..fee629bf78dc 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 @@ -32,6 +32,7 @@ import com.owncloud.android.datamodel.OCFile import com.owncloud.android.lib.resources.status.OCCapability import com.owncloud.android.ui.activity.ComponentsGetter import com.owncloud.android.ui.activity.FileDisplayActivity +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.utils.DisplayUtils import com.owncloud.android.utils.KeyboardUtils import com.owncloud.android.utils.theme.ViewThemeUtils @@ -60,7 +61,7 @@ class RenameFileDialogFragment : override fun onStart() { super.onStart() - initAlertDialog() + dialog?.themeButtons(viewThemeUtils) } override fun onResume() { @@ -133,20 +134,6 @@ class RenameFileDialogFragment : return builder } - private fun initAlertDialog() { - val alertDialog = dialog as AlertDialog? - - 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) - } - } - private val oCCapability: OCCapability get() = fileDataStorageManager.getCapability(currentAccount.user.accountName) 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..bddda058c000 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,13 +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.owncloud.android.R +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.utils.PermissionUtil import com.owncloud.android.utils.theme.ViewThemeUtils import javax.inject.Inject @@ -47,18 +46,7 @@ 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) - } + dialog?.themeButtons(viewThemeUtils) } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/ThemeSelectionDialog.kt b/app/src/main/java/com/owncloud/android/ui/dialog/ThemeSelectionDialog.kt index 063a04f49ada..3e8216df7474 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/ThemeSelectionDialog.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/ThemeSelectionDialog.kt @@ -9,11 +9,9 @@ package com.owncloud.android.ui.dialog import android.app.Dialog import android.os.Bundle -import androidx.appcompat.app.AlertDialog import androidx.core.os.bundleOf import androidx.fragment.app.DialogFragment import androidx.fragment.app.setFragmentResult -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 @@ -21,6 +19,7 @@ import com.nextcloud.client.preferences.DarkMode import com.owncloud.android.MainApp import com.owncloud.android.R import com.owncloud.android.databinding.DialogThemeSelectionBinding +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.ui.model.ExtendedSettingsActivityDialog import com.owncloud.android.utils.theme.ViewThemeUtils import javax.inject.Inject @@ -41,12 +40,7 @@ class ThemeSelectionDialog : 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) - } + dialog?.themeButtons(viewThemeUtils) } override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt b/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt index 4984a394592e..bb7da612fe4d 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt @@ -12,8 +12,9 @@ import androidx.appcompat.app.AlertDialog import com.google.android.material.button.MaterialButton import com.owncloud.android.utils.theme.ViewThemeUtils -fun Dialog.themeButtons(util: ViewThemeUtils) { +fun Dialog.themeButtons(util: ViewThemeUtils?) { val dialog = (this as? AlertDialog) ?: return + val util = util ?: return val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton positiveButton?.let { util.material.colorMaterialButtonPrimaryTonal(it) 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 8232980d97c2..1034a7d4fe2a 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 @@ -36,6 +36,7 @@ import com.owncloud.android.lib.resources.users.GetPublicKeyRemoteOperation import com.owncloud.android.lib.resources.users.GetServerPublicKeyRemoteOperation import com.owncloud.android.lib.resources.users.SendCSRRemoteOperation import com.owncloud.android.lib.resources.users.StorePrivateKeyRemoteOperation +import com.owncloud.android.ui.dialog.extensions.themeButtons import com.owncloud.android.ui.dialog.setupEncryption.model.DownloadKeyResult import com.owncloud.android.utils.ClipboardUtil import com.owncloud.android.utils.DisplayUtils @@ -77,29 +78,12 @@ class SetupEncryptionDialogFragment : override fun onStart() { super.onStart() - - setupAlertDialog() + dialog?.themeButtons(viewThemeUtils) lifecycleScope.launch { downloadKeys() } } - private fun setupAlertDialog() { - 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) - } - } - } - override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { checkNotNull(arguments) { "Arguments may not be null" } From 8ed4653925d1dc21aeb95d0c421b3a3f84f7f144 Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Wed, 5 Aug 2026 10:50:49 +0200 Subject: [PATCH 2/3] cover nullable dialog as well Signed-off-by: alperozturk96 --- .../android/ui/dialog/extensions/DialogExtensions.kt | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt b/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt index bb7da612fe4d..f76f877c591b 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt @@ -12,20 +12,21 @@ import androidx.appcompat.app.AlertDialog import com.google.android.material.button.MaterialButton import com.owncloud.android.utils.theme.ViewThemeUtils -fun Dialog.themeButtons(util: ViewThemeUtils?) { - val dialog = (this as? AlertDialog) ?: return +fun Dialog?.themeButtons(util: ViewThemeUtils?) { + val dialog = this ?: return + val alertDialog = (dialog as? AlertDialog) ?: return val util = util ?: return - val positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton + val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton positiveButton?.let { util.material.colorMaterialButtonPrimaryTonal(it) } - val negativeButton = dialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton + val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton negativeButton?.let { util.material.colorMaterialButtonPrimaryBorderless(it) } - val neutralButton = dialog.getButton(AlertDialog.BUTTON_NEUTRAL) as? MaterialButton + val neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) as? MaterialButton neutralButton?.let { util.material.colorMaterialButtonPrimaryBorderless(neutralButton) } From 924bc28e4b6c78990c377fbc235ce2e8c4d56deb Mon Sep 17 00:00:00 2001 From: alperozturk96 Date: Wed, 5 Aug 2026 10:56:26 +0200 Subject: [PATCH 3/3] simplify Signed-off-by: alperozturk96 --- .../ui/ChooseStorageLocationDialogFragment.kt | 2 -- .../ui/dialog/extensions/DialogExtensions.kt | 27 +++++++++---------- 2 files changed, 12 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt b/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt index aad6bdb2fcb1..3361e5dab7c9 100644 --- a/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt +++ b/app/src/main/java/com/nextcloud/ui/ChooseStorageLocationDialogFragment.kt @@ -14,9 +14,7 @@ import android.preference.PreferenceManager import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -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.AppPreferencesImpl diff --git a/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt b/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt index f76f877c591b..fd159e8ef471 100644 --- a/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt +++ b/app/src/main/java/com/owncloud/android/ui/dialog/extensions/DialogExtensions.kt @@ -13,21 +13,18 @@ import com.google.android.material.button.MaterialButton import com.owncloud.android.utils.theme.ViewThemeUtils fun Dialog?.themeButtons(util: ViewThemeUtils?) { - val dialog = this ?: return - val alertDialog = (dialog as? AlertDialog) ?: return - val util = util ?: return - val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton - positiveButton?.let { - util.material.colorMaterialButtonPrimaryTonal(it) - } - - val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton - negativeButton?.let { - util.material.colorMaterialButtonPrimaryBorderless(it) - } + val alertDialog = this as? AlertDialog ?: return + val material = util?.material ?: return - val neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) as? MaterialButton - neutralButton?.let { - util.material.colorMaterialButtonPrimaryBorderless(neutralButton) + with(alertDialog) { + (getButton(AlertDialog.BUTTON_POSITIVE) as? MaterialButton)?.let { + material.colorMaterialButtonPrimaryTonal(it) + } + (getButton(AlertDialog.BUTTON_NEGATIVE) as? MaterialButton)?.let { + material.colorMaterialButtonPrimaryBorderless(it) + } + (getButton(AlertDialog.BUTTON_NEUTRAL) as? MaterialButton)?.let { + material.colorMaterialButtonPrimaryBorderless(it) + } } }