diff --git a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt
index 22b27ab90..5b737ff1d 100644
--- a/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt
+++ b/app/src/main/java/com/nextcloud/talk/controllers/ChatController.kt
@@ -35,11 +35,9 @@ import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.content.res.AssetFileDescriptor
-import android.content.res.ColorStateList
import android.content.res.Resources
import android.database.Cursor
import android.graphics.Bitmap
-import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.media.MediaPlayer
import android.media.MediaRecorder
@@ -74,6 +72,7 @@ import android.widget.ImageView
import android.widget.PopupMenu
import android.widget.RelativeLayout
import android.widget.Toast
+import androidx.appcompat.app.AlertDialog
import androidx.appcompat.view.ContextThemeWrapper
import androidx.core.content.ContextCompat
import androidx.core.content.FileProvider
@@ -100,6 +99,7 @@ import com.facebook.drawee.backends.pipeline.Fresco
import com.facebook.imagepipeline.datasource.BaseBitmapDataSubscriber
import com.facebook.imagepipeline.image.CloseableImage
import com.google.android.flexbox.FlexboxLayout
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.nextcloud.talk.BuildConfig
import com.nextcloud.talk.R
import com.nextcloud.talk.activities.CallActivity
@@ -189,7 +189,6 @@ import com.stfalcon.chatkit.messages.MessageHolders.ContentChecker
import com.stfalcon.chatkit.messages.MessagesListAdapter
import com.stfalcon.chatkit.utils.DateFormatter
import com.vanniktech.emoji.EmojiPopup
-import com.yarolegovich.lovelydialog.LovelyStandardDialog
import io.reactivex.Observer
import io.reactivex.android.schedulers.AndroidSchedulers
import io.reactivex.disposables.Disposable
@@ -1410,28 +1409,37 @@ class ChatController(args: Bundle) :
val confirmationQuestion = when (filesToUpload.size) {
1 -> context?.resources?.getString(R.string.nc_upload_confirm_send_single)?.let {
- String.format(it, title)
+ String.format(it, title.trim())
}
else -> context?.resources?.getString(R.string.nc_upload_confirm_send_multiple)?.let {
- String.format(it, title)
+ String.format(it, title.trim())
}
}
- LovelyStandardDialog(activity)
- .setPositiveButtonColorRes(R.color.nc_darkGreen)
+ val materialAlertDialogBuilder = MaterialAlertDialogBuilder(binding.messageInputView.context)
.setTitle(confirmationQuestion)
.setMessage(filenamesWithLinebreaks.toString())
- .setPositiveButton(R.string.nc_yes) { v ->
- if (UploadAndShareFilesWorker.isStoragePermissionGranted(context!!)) {
+ .setPositiveButton(R.string.nc_yes) { _, _ ->
+ if (UploadAndShareFilesWorker.isStoragePermissionGranted(context)) {
uploadFiles(filesToUpload, false)
} else {
UploadAndShareFilesWorker.requestStoragePermission(this)
}
}
- .setNegativeButton(R.string.nc_no) {
+ .setNegativeButton(R.string.nc_no) { _, _ ->
// unused atm
}
- .show()
+
+ viewThemeUtils.colorMaterialAlertDialogBackground(
+ binding.messageInputView.context,
+ materialAlertDialogBuilder
+ )
+
+ val dialog = materialAlertDialogBuilder.show()
+
+ val primary = viewThemeUtils.getScheme(binding.messageInputView.context).primary
+ dialog.getButton(AlertDialog.BUTTON_POSITIVE).setTextColor(primary)
+ dialog.getButton(AlertDialog.BUTTON_NEGATIVE).setTextColor(primary)
} catch (e: IllegalStateException) {
Toast.makeText(context, context?.resources?.getString(R.string.nc_upload_failed), Toast.LENGTH_LONG)
.show()
diff --git a/app/src/main/java/com/nextcloud/talk/ui/theme/ViewThemeUtils.kt b/app/src/main/java/com/nextcloud/talk/ui/theme/ViewThemeUtils.kt
index 97e5f07df..cf2be7269 100644
--- a/app/src/main/java/com/nextcloud/talk/ui/theme/ViewThemeUtils.kt
+++ b/app/src/main/java/com/nextcloud/talk/ui/theme/ViewThemeUtils.kt
@@ -33,6 +33,7 @@ import android.os.Build
import android.view.MenuItem
import android.view.View
import android.view.ViewGroup
+import android.widget.Button
import android.widget.CheckBox
import android.widget.EditText
import android.widget.ImageButton
@@ -60,8 +61,10 @@ import com.google.android.material.button.MaterialButton
import com.google.android.material.card.MaterialCardView
import com.google.android.material.chip.Chip
import com.google.android.material.chip.ChipDrawable
+import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.google.android.material.floatingactionbutton.FloatingActionButton
import com.google.android.material.progressindicator.LinearProgressIndicator
+import com.google.android.material.shape.MaterialShapeDrawable
import com.google.android.material.tabs.TabLayout
import com.google.android.material.textfield.TextInputLayout
import com.google.android.material.textview.MaterialTextView
@@ -300,6 +303,20 @@ class ViewThemeUtils @Inject constructor(private val theme: ServerTheme, private
}
}
+ fun colorButtonText(button: Button) {
+ withScheme(button) { scheme ->
+ val disabledColor = ContextCompat.getColor(button.context, R.color.disabled_text)
+ val colorStateList = ColorStateList(
+ arrayOf(
+ intArrayOf(android.R.attr.state_enabled),
+ intArrayOf(-android.R.attr.state_enabled)
+ ),
+ intArrayOf(scheme.primary, disabledColor)
+ )
+ button.setTextColor(colorStateList)
+ }
+ }
+
fun colorMaterialButtonPrimaryFilled(button: MaterialButton) {
withScheme(button) { scheme ->
button.backgroundTintList =
@@ -709,6 +726,27 @@ class ViewThemeUtils @Inject constructor(private val theme: ServerTheme, private
}
}
+ fun colorMaterialAlertDialogBackground(context: Context, dialogBuilder: MaterialAlertDialogBuilder) {
+ withScheme(dialogBuilder.context) { scheme ->
+ val materialShapeDrawable = MaterialShapeDrawable(
+ context,
+ null,
+ com.google.android.material.R.attr.alertDialogStyle,
+ com.google.android.material.R.style.MaterialAlertDialog_MaterialComponents
+ )
+ materialShapeDrawable.initializeElevationOverlay(context)
+ materialShapeDrawable.fillColor = ColorStateList.valueOf(scheme.surface)
+
+ // dialogCornerRadius first appeared in Android Pie
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
+ val radius = context.resources.getDimension(R.dimen.dialogBorderRadius)
+ materialShapeDrawable.setCornerSize(radius)
+ }
+
+ dialogBuilder.background = materialShapeDrawable
+ }
+ }
+
companion object {
private val THEMEABLE_PLACEHOLDER_IDS = listOf(
R.drawable.ic_mimetype_package_x_generic,
diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml
index 7e63618e5..5d2115c9e 100644
--- a/app/src/main/res/values/dimens.xml
+++ b/app/src/main/res/values/dimens.xml
@@ -74,6 +74,8 @@
2dp
12dp
+ 28dp
+
18dp
50dp
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 8fc005a26..0823b6b61 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -42,6 +42,7 @@
- @style/Nextcloud.Material.Incoming.SeekBar
- @style/ThemeOverlay.App.BottomSheetDialog
- @style/ChatSendButtonMenu
+ - @dimen/dialogBorderRadius