From af115c996627f7f5000f8036be4e0769c7ed0436 Mon Sep 17 00:00:00 2001 From: agnostic-apollo Date: Thu, 13 May 2021 17:37:01 +0500 Subject: [PATCH] Add generic functions to show a message in dialog and exit app with an error message --- .../java/com/termux/app/TermuxInstaller.java | 6 ++- termux-shared/build.gradle | 1 + .../termux/shared/interact/DialogUtils.java | 38 ++++++++++++++- .../main/res/layout/dialog_show_message.xml | 48 +++++++++++++++++++ termux-shared/src/main/res/values/colors.xml | 1 + 5 files changed, 91 insertions(+), 3 deletions(-) create mode 100644 termux-shared/src/main/res/layout/dialog_show_message.xml diff --git a/app/src/main/java/com/termux/app/TermuxInstaller.java b/app/src/main/java/com/termux/app/TermuxInstaller.java index a600e534..0bcff56f 100644 --- a/app/src/main/java/com/termux/app/TermuxInstaller.java +++ b/app/src/main/java/com/termux/app/TermuxInstaller.java @@ -12,6 +12,7 @@ import android.view.WindowManager; import com.termux.R; import com.termux.shared.file.FileUtils; +import com.termux.shared.interact.DialogUtils; import com.termux.shared.logger.Logger; import com.termux.shared.termux.TermuxConstants; @@ -57,8 +58,9 @@ final class TermuxInstaller { if (!isPrimaryUser) { String bootstrapErrorMessage = activity.getString(R.string.bootstrap_error_not_primary_user_message, TermuxConstants.TERMUX_PREFIX_DIR_PATH); Logger.logError(LOG_TAG, bootstrapErrorMessage); - new AlertDialog.Builder(activity).setTitle(R.string.bootstrap_error_title).setMessage(bootstrapErrorMessage) - .setOnDismissListener(dialog -> System.exit(0)).setPositiveButton(android.R.string.ok, null).show(); + DialogUtils.exitAppWithErrorMessage(activity, + activity.getString(R.string.bootstrap_error_title), + bootstrapErrorMessage); return; } diff --git a/termux-shared/build.gradle b/termux-shared/build.gradle index cc49fb91..06238e98 100644 --- a/termux-shared/build.gradle +++ b/termux-shared/build.gradle @@ -5,6 +5,7 @@ android { compileSdkVersion project.properties.compileSdkVersion.toInteger() dependencies { + implementation 'androidx.appcompat:appcompat:1.2.0' implementation "androidx.annotation:annotation:1.2.0" implementation "androidx.core:core:1.5.0-rc01" implementation "com.google.guava:guava:24.1-jre" diff --git a/termux-shared/src/main/java/com/termux/shared/interact/DialogUtils.java b/termux-shared/src/main/java/com/termux/shared/interact/DialogUtils.java index 1a5fa834..d6e81741 100644 --- a/termux-shared/src/main/java/com/termux/shared/interact/DialogUtils.java +++ b/termux-shared/src/main/java/com/termux/shared/interact/DialogUtils.java @@ -2,13 +2,19 @@ package com.termux.shared.interact; import android.app.Activity; import android.app.AlertDialog; +import android.content.Context; import android.content.DialogInterface; import android.text.Selection; import android.util.TypedValue; import android.view.KeyEvent; +import android.view.LayoutInflater; +import android.view.View; import android.view.ViewGroup.LayoutParams; import android.widget.EditText; import android.widget.LinearLayout; +import android.widget.TextView; + +import com.termux.shared.R; public final class DialogUtils { @@ -61,11 +67,41 @@ public final class DialogUtils { builder.setNegativeButton(negativeButtonText, (dialog, which) -> onNegative.onTextSet(input.getText().toString())); } - if (onDismiss != null) builder.setOnDismissListener(onDismiss); + if (onDismiss != null) + builder.setOnDismissListener(onDismiss); dialogHolder[0] = builder.create(); dialogHolder[0].setCanceledOnTouchOutside(false); dialogHolder[0].show(); } + public static void showMessage(Context context, String titleText, String messageText, final DialogInterface.OnDismissListener onDismiss) { + + AlertDialog.Builder builder = new AlertDialog.Builder(context, R.style.Theme_AppCompat_Light_Dialog) + .setPositiveButton(android.R.string.ok, null); + + LayoutInflater inflater = (LayoutInflater) context.getSystemService( Context.LAYOUT_INFLATER_SERVICE ); + View view = inflater.inflate(R.layout.dialog_show_message, null); + if (view != null) { + builder.setView(view); + + TextView titleView = view.findViewById(R.id.dialog_title); + if (titleView != null) + titleView.setText(titleText); + + TextView messageView = view.findViewById(R.id.dialog_message); + if (messageView != null) + messageView.setText(messageText); + } + + if (onDismiss != null) + builder.setOnDismissListener(onDismiss); + + builder.show(); + } + + public static void exitAppWithErrorMessage(Context context, String titleText, String messageText) { + showMessage(context, titleText, messageText, dialog -> System.exit(0)); + } + } diff --git a/termux-shared/src/main/res/layout/dialog_show_message.xml b/termux-shared/src/main/res/layout/dialog_show_message.xml new file mode 100644 index 00000000..f074d08c --- /dev/null +++ b/termux-shared/src/main/res/layout/dialog_show_message.xml @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + diff --git a/termux-shared/src/main/res/values/colors.xml b/termux-shared/src/main/res/values/colors.xml index cc83b56d..1b54c295 100644 --- a/termux-shared/src/main/res/values/colors.xml +++ b/termux-shared/src/main/res/values/colors.xml @@ -2,4 +2,5 @@ #1F000000 #0F000000 + #FF0000