Improve alert dialogs

This commit is contained in:
sim 2024-11-04 13:20:44 +00:00
parent 4c65a1d40f
commit 66a8a7a660
5 changed files with 39 additions and 25 deletions

View File

@ -57,9 +57,9 @@ ext {
dependencies {
implementation("org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version")
implementation("androidx.appcompat:appcompat:1.6.1")
implementation('com.google.android.material:material:1.11.0')
implementation("androidx.constraintlayout:constraintlayout:2.1.4")
implementation("androidx.appcompat:appcompat:1.7.0")
implementation('com.google.android.material:material:1.12.0')
implementation("androidx.constraintlayout:constraintlayout:2.2.0")
implementation("androidx.coordinatorlayout:coordinatorlayout:1.2.0")
implementation('com.squareup.okhttp3:okhttp-sse:5.0.0.SSEPATCH1-SNAPSHOT')
implementation("com.github.nextcloud:Android-SingleSignOn:0.8.1")

View File

@ -10,7 +10,7 @@ import android.text.method.LinkMovementMethod
import android.text.util.Linkify
import android.util.Log
import android.widget.TextView
import androidx.appcompat.app.AlertDialog
import com.google.android.material.dialog.MaterialAlertDialogBuilder
import com.nextcloud.android.sso.AccountImporter
import com.nextcloud.android.sso.exceptions.* // ktlint-disable no-wildcard-imports
import com.nextcloud.android.sso.helper.SingleAccountHelper
@ -94,8 +94,7 @@ class SSOAccount(val context: Context) : Account<SingleSignOnAccount> {
}
private fun nextcloudAppNotInstalledDialog(context: Context) {
val message = TextView(context)
val builder = AlertDialog.Builder(context)
val builder = MaterialAlertDialogBuilder(context)
var messageContent = context.getString(R.string.message_missing_nextcloud_app)
val installIntent =
Intent(
@ -122,13 +121,17 @@ class SSOAccount(val context: Context) : Account<SingleSignOnAccount> {
} else {
": " + context.getString(R.string.uri_fdroid_nextcloud_app)
}
val s = SpannableString(messageContent)
Linkify.addLinks(s, Linkify.WEB_URLS)
message.text = s
message.movementMethod = LinkMovementMethod.getInstance()
message.setPadding(32, 32, 32, 32)
builder.setTitle(context.getString(R.string.nextcloud_files_not_found_title))
builder.setView(message)
builder.show()
val msg = SpannableString(messageContent)
Linkify.addLinks(msg, Linkify.WEB_URLS)
val dialog = builder.setTitle(context.getString(R.string.nextcloud_files_not_found_title))
.setMessage(msg)
.create()
dialog.setOnShowListener {
dialog.findViewById<TextView>(android.R.id.message)?.let {
it.movementMethod = LinkMovementMethod.getInstance()
}
}
dialog.show()
}
}

View File

@ -12,6 +12,7 @@ import android.os.PowerManager
import android.provider.Settings
import android.text.Html
import android.text.InputType
import android.text.SpannableStringBuilder
import android.util.Log
import android.util.TypedValue
import android.view.ActionMode
@ -39,6 +40,7 @@ import org.unifiedpush.distributor.nextpush.services.FailureHandler
import org.unifiedpush.distributor.nextpush.services.RestartWorker
import org.unifiedpush.distributor.nextpush.services.StartService
import org.unifiedpush.distributor.nextpush.utils.TAG
import org.unifiedpush.distributor.nextpush.utils.copyToClipboard
import org.unifiedpush.distributor.nextpush.utils.getDebugInfo
import java.lang.String.format
@ -323,19 +325,16 @@ class MainActivity : AppCompatActivity() {
if (currentTime - lastClickTime < 500) {
clickCount++
if (clickCount == 5) {
val scale = resources.displayMetrics.density
val dpAsPixels = (16 * scale + 0.5f)
val showText = TextView(this)
.apply {
setTextIsSelectable(true)
text = getDebugInfo()
setPadding(dpAsPixels.toInt())
}
val msg = SpannableStringBuilder(getDebugInfo())
MaterialAlertDialogBuilder(this)
.setTitle("Debug information")
.setView(showText)
.setMessage(msg)
.setCancelable(false)
.setPositiveButton("Ok") { dialog, _ ->
.setPositiveButton(android.R.string.ok) { dialog, _ ->
dialog.dismiss()
}
.setNeutralButton(android.R.string.copy) { dialog, _ ->
copyToClipboard(this, "Debug Information", msg.toString())
dialog.dismiss()
}
.show()

View File

@ -0,0 +1,12 @@
package org.unifiedpush.distributor.nextpush.utils
import android.content.ClipData
import android.content.ClipboardManager
import android.content.Context
import androidx.core.content.ContextCompat.getSystemService
fun copyToClipboard(context: Context, label: String, text: String) {
val clipboard: ClipboardManager? = getSystemService(context, ClipboardManager::class.java)
val clip = ClipData.newPlainText(label, text)
clipboard?.setPrimaryClip(clip)
}

View File

@ -25,7 +25,7 @@
<string name="low_keepalive_notif_content">The server app is configured with a low keepalive: %ss. It will drain your battery. We recommend using a higher keepalive.</string>
<string name="no_ping_notif_content">NextPush was disconnected 5 times before receiving the ping. You probably have a problem with your server configuration. Your reverse proxy timeout is probably too low.</string>
<string name="foreground_notif_ticker">Foreground</string>
<string name="message_missing_nextcloud_app">Nextcloud Files is not installed on your device.\nPlease install it</string>
<string name="message_missing_nextcloud_app">Nextcloud Files is not installed on your device.\n\nPlease install it</string>
<string name="uri_market_nextcloud_app">market://details?id=com.nextcloud.client</string>
<string name="market_chooser_title">Market</string>
<string name="install">Install</string>