Skip to content

Commit 7f73d08

Browse files
committed
Customized dialog theme.
1 parent 760fdcd commit 7f73d08

32 files changed

+328
-225
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
package com.nmc.android.utils
2+
3+
import android.content.Context
4+
import android.content.res.ColorStateList
5+
import android.os.Build
6+
import com.google.android.material.dialog.MaterialAlertDialogBuilder
7+
import com.google.android.material.shape.MaterialShapeDrawable
8+
import com.owncloud.android.R
9+
10+
object DialogThemeUtils {
11+
fun colorMaterialAlertDialogBackground(context: Context, dialogBuilder: MaterialAlertDialogBuilder) {
12+
val materialShapeDrawable = MaterialShapeDrawable(
13+
context,
14+
null,
15+
R.attr.alertDialogStyle,
16+
R.style.MaterialAlertDialog_MaterialComponents
17+
)
18+
materialShapeDrawable.initializeElevationOverlay(context)
19+
materialShapeDrawable.fillColor =
20+
ColorStateList.valueOf(context.resources.getColor(R.color.alert_bg_color, null))
21+
22+
// dialogCornerRadius first appeared in Android Pie
23+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
24+
val radius: Float =
25+
context.resources.getDimension(com.nextcloud.android.common.ui.R.dimen.dialogBorderRadius)
26+
materialShapeDrawable.setCornerSize(radius)
27+
}
28+
dialogBuilder.background = materialShapeDrawable
29+
}
30+
}

app/src/main/java/com/owncloud/android/ui/activity/SyncedFoldersActivity.kt

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -824,11 +824,8 @@ class SyncedFoldersActivity :
824824
.setNeutralButton(getString(R.string.battery_optimization_close)) { dialog, _ -> dialog.dismiss() }
825825
.setIcon(R.drawable.ic_battery_alert)
826826
if (lifecycle.currentState.isAtLeast(Lifecycle.State.RESUMED)) {
827-
val alertDialog = alertDialogBuilder.show()
828-
viewThemeUtils.platform.colorTextButtons(
829-
alertDialog.getButton(AlertDialog.BUTTON_POSITIVE),
830-
alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL)
831-
)
827+
//NMC Customization
828+
alertDialogBuilder.show()
832829
}
833830
}
834831
}

app/src/main/java/com/owncloud/android/ui/adapter/StoragePathAdapter.kt

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ class StoragePathAdapter(
4444
val storagePathItem = pathList[position]
4545
holder.binding.btnStoragePath.setIconResource(storagePathItem.icon)
4646
holder.binding.btnStoragePath.text = storagePathItem.name
47-
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(holder.binding.btnStoragePath)
4847
}
4948
}
5049

app/src/main/java/com/owncloud/android/ui/dialog/AccountRemovalConfirmationDialog.kt

Lines changed: 3 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,12 @@ import android.app.Dialog
2424
import android.content.DialogInterface
2525
import android.os.Build
2626
import android.os.Bundle
27-
import androidx.appcompat.app.AlertDialog
2827
import androidx.fragment.app.DialogFragment
29-
import com.google.android.material.button.MaterialButton
3028
import com.google.android.material.dialog.MaterialAlertDialogBuilder
3129
import com.nextcloud.client.account.User
3230
import com.nextcloud.client.di.Injectable
3331
import com.nextcloud.client.jobs.BackgroundJobManager
32+
import com.nmc.android.utils.DialogThemeUtils
3433
import com.owncloud.android.R
3534
import com.owncloud.android.utils.theme.ViewThemeUtils
3635
import javax.inject.Inject
@@ -57,20 +56,6 @@ class AccountRemovalConfirmationDialog : DialogFragment(), Injectable {
5756
}
5857
}
5958

60-
override fun onStart() {
61-
super.onStart()
62-
63-
val alertDialog = dialog as AlertDialog?
64-
65-
if (alertDialog != null) {
66-
val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton
67-
viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton)
68-
69-
val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton
70-
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton)
71-
}
72-
}
73-
7459
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
7560
val builder = MaterialAlertDialogBuilder(requireActivity())
7661
.setTitle(R.string.delete_account)
@@ -84,7 +69,8 @@ class AccountRemovalConfirmationDialog : DialogFragment(), Injectable {
8469
}
8570
.setNegativeButton(R.string.common_cancel, null)
8671

87-
viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireActivity(), builder)
72+
// NMC customization
73+
DialogThemeUtils.colorMaterialAlertDialogBackground(requireActivity(), builder)
8874

8975
return builder.create()
9076
}

app/src/main/java/com/owncloud/android/ui/dialog/ChooseRichDocumentsTemplateDialogFragment.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
import com.nextcloud.client.account.User;
4343
import com.nextcloud.client.di.Injectable;
4444
import com.nextcloud.client.network.ClientFactory;
45+
import com.nmc.android.utils.DialogThemeUtils;
4546
import com.owncloud.android.MainApp;
4647
import com.owncloud.android.R;
4748
import com.owncloud.android.databinding.ChooseTemplateBinding;
@@ -129,17 +130,9 @@ public void onStart() {
129130

130131
if (alertDialog != null) {
131132
positiveButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
132-
viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton);
133-
134-
MaterialButton negativeButton = (MaterialButton) alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE);
135-
if (negativeButton != null) {
136-
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton);
137-
}
138-
139133
positiveButton.setOnClickListener(this);
140134
positiveButton.setEnabled(false);
141135
}
142-
143136
checkEnablingCreateButton();
144137
}
145138

@@ -181,8 +174,6 @@ public Dialog onCreateDialog(Bundle savedInstanceState) {
181174
binding = ChooseTemplateBinding.inflate(inflater, null, false);
182175
View view = binding.getRoot();
183176

184-
viewThemeUtils.material.colorTextInputLayout(binding.filenameContainer);
185-
186177
Type type = Type.valueOf(arguments.getString(ARG_TYPE));
187178
new FetchTemplateTask(this, client).execute(type);
188179

@@ -222,7 +213,8 @@ public void afterTextChanged(Editable s) {
222213
.setNegativeButton(R.string.common_cancel, null)
223214
.setTitle(titleTextId);
224215

225-
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(activity, builder);
216+
//NMC customization
217+
DialogThemeUtils.INSTANCE.colorMaterialAlertDialogBackground(activity, builder);
226218

227219
return builder.create();
228220
}

app/src/main/java/com/owncloud/android/ui/dialog/ChooseTemplateDialogFragment.kt

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import com.nextcloud.client.account.User
4444
import com.nextcloud.client.di.Injectable
4545
import com.nextcloud.client.network.ClientFactory
4646
import com.nextcloud.client.network.ClientFactory.CreationException
47+
import com.nmc.android.utils.DialogThemeUtils
4748
import com.owncloud.android.MainApp
4849
import com.owncloud.android.R
4950
import com.owncloud.android.databinding.ChooseTemplateBinding
@@ -105,10 +106,6 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
105106
val alertDialog = dialog as AlertDialog
106107

107108
val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton
108-
viewThemeUtils.material.colorMaterialButtonPrimaryTonal(positiveButton)
109-
110-
val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton
111-
viewThemeUtils.material.colorMaterialButtonPrimaryBorderless(negativeButton)
112109

113110
positiveButton.setOnClickListener(this)
114111
positiveButton.isEnabled = false
@@ -143,10 +140,6 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
143140
_binding = ChooseTemplateBinding.inflate(inflater, null, false)
144141
val view: View = binding.root
145142

146-
viewThemeUtils.material.colorTextInputLayout(
147-
binding.filenameContainer
148-
)
149-
150143
binding.filename.addTextChangedListener(object : TextWatcher {
151144
override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) = Unit
152145

@@ -180,7 +173,8 @@ class ChooseTemplateDialogFragment : DialogFragment(), View.OnClickListener, Tem
180173
.setNegativeButton(R.string.common_cancel, null)
181174
.setTitle(title)
182175

183-
viewThemeUtils.dialog.colorMaterialAlertDialogBackground(binding.list.context, builder)
176+
//NMC customization
177+
DialogThemeUtils.colorMaterialAlertDialogBackground(binding.list.context, builder)
184178

185179
return builder.create()
186180
}

app/src/main/java/com/owncloud/android/ui/dialog/ConfirmationDialogFragment.kt

Lines changed: 3 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,10 @@ import android.R
2020
import android.app.Dialog
2121
import android.content.DialogInterface
2222
import android.os.Bundle
23-
import androidx.appcompat.app.AlertDialog
2423
import androidx.fragment.app.DialogFragment
25-
import com.google.android.material.button.MaterialButton
2624
import com.google.android.material.dialog.MaterialAlertDialogBuilder
2725
import com.nextcloud.client.di.Injectable
26+
import com.nmc.android.utils.DialogThemeUtils
2827
import com.owncloud.android.utils.theme.ViewThemeUtils
2928
import javax.inject.Inject
3029

@@ -36,29 +35,6 @@ open class ConfirmationDialogFragment : DialogFragment(), Injectable {
3635

3736
private var mListener: ConfirmationDialogFragmentListener? = null
3837

39-
override fun onStart() {
40-
super.onStart()
41-
42-
val alertDialog = dialog as AlertDialog?
43-
44-
if (alertDialog != null) {
45-
val positiveButton = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton?
46-
if (positiveButton != null) {
47-
viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton)
48-
}
49-
50-
val negativeButton = alertDialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton?
51-
if (negativeButton != null) {
52-
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton)
53-
}
54-
55-
val neutralButton = alertDialog.getButton(AlertDialog.BUTTON_NEUTRAL) as MaterialButton?
56-
if (neutralButton != null) {
57-
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(neutralButton)
58-
}
59-
}
60-
}
61-
6238
fun setOnConfirmationListener(listener: ConfirmationDialogFragmentListener?) {
6339
mListener = listener
6440
}
@@ -104,7 +80,8 @@ open class ConfirmationDialogFragment : DialogFragment(), Injectable {
10480
}
10581
}
10682

107-
viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(requireActivity(), builder)
83+
// NMC customization
84+
DialogThemeUtils.colorMaterialAlertDialogBackground(requireActivity(), builder)
10885

10986
return builder.create()
11087
}

app/src/main/java/com/owncloud/android/ui/dialog/CreateFolderDialogFragment.kt

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ import com.google.android.material.button.MaterialButton
3333
import com.google.android.material.dialog.MaterialAlertDialogBuilder
3434
import com.google.common.collect.Sets
3535
import com.nextcloud.client.di.Injectable
36+
import com.nmc.android.utils.DialogThemeUtils
3637
import com.owncloud.android.R
3738
import com.owncloud.android.databinding.EditBoxDialogBinding
3839
import com.owncloud.android.datamodel.FileDataStorageManager
@@ -77,10 +78,6 @@ class CreateFolderDialogFragment : DialogFragment(), DialogInterface.OnClickList
7778

7879
if (dialog is AlertDialog) {
7980
positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE) as MaterialButton
80-
val negativeButton = dialog.getButton(AlertDialog.BUTTON_NEGATIVE) as MaterialButton
81-
82-
viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton!!)
83-
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton)
8481
}
8582
}
8683

@@ -101,7 +98,6 @@ class CreateFolderDialogFragment : DialogFragment(), DialogInterface.OnClickList
10198

10299
// Setup layout
103100
binding.userInput.setText("")
104-
viewThemeUtils?.material?.colorTextInputLayout(binding.userInputContainer)
105101

106102
val parentFolder = requireArguments().getParcelable<OCFile>(ARG_PARENT_FOLDER)
107103

@@ -150,7 +146,8 @@ class CreateFolderDialogFragment : DialogFragment(), DialogInterface.OnClickList
150146

151147
// Build the dialog
152148
val builder = buildMaterialAlertDialog(view)
153-
viewThemeUtils?.dialog?.colorMaterialAlertDialogBackground(binding.userInputContainer.context, builder)
149+
// NMC customization
150+
DialogThemeUtils.colorMaterialAlertDialogBackground(binding.userInputContainer.context, builder)
154151
return builder.create()
155152
}
156153

app/src/main/java/com/owncloud/android/ui/dialog/ExpirationDatePickerDialogFragment.kt

Lines changed: 19 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,18 +60,25 @@ class ExpirationDatePickerDialogFragment : DialogFragment(), OnDateSetListener,
6060
if (currentDialog != null) {
6161
val dialog = currentDialog as DatePickerDialog
6262

63-
val positiveButton = dialog.getButton(DatePickerDialog.BUTTON_POSITIVE) as MaterialButton?
64-
if (positiveButton != null) {
65-
viewThemeUtils?.material?.colorMaterialButtonPrimaryTonal(positiveButton)
66-
}
67-
val negativeButton = dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE) as MaterialButton?
68-
if (negativeButton != null) {
69-
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(negativeButton)
70-
}
71-
val neutralButton = dialog.getButton(DatePickerDialog.BUTTON_NEUTRAL) as MaterialButton?
72-
if (neutralButton != null) {
73-
viewThemeUtils?.material?.colorMaterialButtonPrimaryBorderless(neutralButton)
74-
}
63+
// NMC Customization
64+
(dialog.getButton(DatePickerDialog.BUTTON_POSITIVE) as MaterialButton?)?.setTextColor(
65+
resources.getColor(
66+
R.color.primary,
67+
null
68+
)
69+
)
70+
(dialog.getButton(DatePickerDialog.BUTTON_NEGATIVE) as MaterialButton?)?.setTextColor(
71+
resources.getColor(
72+
R.color.text_color,
73+
null
74+
)
75+
)
76+
(dialog.getButton(DatePickerDialog.BUTTON_NEUTRAL) as MaterialButton?)?.setTextColor(
77+
resources.getColor(
78+
R.color.text_color,
79+
null
80+
)
81+
)
7582
}
7683
}
7784

app/src/main/java/com/owncloud/android/ui/dialog/IndeterminateProgressDialog.kt

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,11 @@ class IndeterminateProgressDialog : DialogFragment(), Injectable {
4848
progressDialog.isIndeterminate = true
4949
progressDialog.setOnShowListener {
5050
val v = progressDialog.findViewById<ProgressBar>(android.R.id.progress)
51-
viewThemeUtils?.platform?.tintDrawable(requireContext(), v.indeterminateDrawable)
51+
// NMC Customization
52+
viewThemeUtils?.platform?.colorDrawable(
53+
v.indeterminateDrawable,
54+
requireContext().resources.getColor(R.color.white, null)
55+
)
5256
}
5357

5458
// / set message

0 commit comments

Comments
 (0)