diff --git a/controller/app/src/main/java/org/appdevforall/k2go/redesign/BackupRestoreFragment.java b/controller/app/src/main/java/org/appdevforall/k2go/redesign/BackupRestoreFragment.java
index 6e8240566..01430bbcb 100644
--- a/controller/app/src/main/java/org/appdevforall/k2go/redesign/BackupRestoreFragment.java
+++ b/controller/app/src/main/java/org/appdevforall/k2go/redesign/BackupRestoreFragment.java
@@ -207,15 +207,16 @@ private View hairline() {
/** ADFA-5023: strong confirm before a from-scratch reinstall (wipes everything), then the wizard. */
private void confirmReinstall() {
- new com.google.android.material.dialog.MaterialAlertDialogBuilder(requireContext())
+ // K2GO-385: destructive from-scratch reinstall confirm -> the shared BrandDialog (clay destructive).
+ new org.appdevforall.k2go.ui.dialog.BrandDialog(requireContext())
.setTitle(R.string.k2go_reinstall_confirm_title)
.setMessage(R.string.k2go_reinstall_confirm_msg)
- .setNegativeButton(android.R.string.cancel, null)
- .setPositiveButton(R.string.k2go_reinstall_confirm_yes, (d, w) -> {
+ .setDestructive(R.string.k2go_reinstall_confirm_yes, () -> {
if (getActivity() instanceof SetupLibraryActivity) {
((SetupLibraryActivity) getActivity()).openReinstallWizard();
}
})
+ .setNegative(android.R.string.cancel, null)
.show();
}
diff --git a/controller/app/src/main/java/org/appdevforall/k2go/redesign/LibraryActivity.java b/controller/app/src/main/java/org/appdevforall/k2go/redesign/LibraryActivity.java
index 5214767d9..9d6852e6f 100644
--- a/controller/app/src/main/java/org/appdevforall/k2go/redesign/LibraryActivity.java
+++ b/controller/app/src/main/java/org/appdevforall/k2go/redesign/LibraryActivity.java
@@ -728,13 +728,14 @@ private void onDownloadToggle() {
* second copy of it here would be a second place formatting the same fact.
*/
private void confirmCancelDownload() {
- new com.google.android.material.dialog.MaterialAlertDialogBuilder(this)
+ // K2GO-385: cancel-the-download confirm -> the shared BrandDialog (destructive: it stops + starts over).
+ new org.appdevforall.k2go.ui.dialog.BrandDialog(this)
.setTitle(R.string.k2go_dl_cancel_title)
.setMessage(R.string.k2go_dl_cancel_body)
- .setNegativeButton(R.string.k2go_dl_cancel_keep, null)
- .setPositiveButton(R.string.k2go_dl_cancel_confirm, (d, w) ->
+ .setDestructive(R.string.k2go_dl_cancel_confirm, () ->
sendToInstallService(
org.appdevforall.k2go.install.presentation.InstallService.ACTION_CANCEL))
+ .setNegative(R.string.k2go_dl_cancel_keep, null)
.show();
}
diff --git a/controller/app/src/main/java/org/appdevforall/k2go/redesign/SettingsFragment.java b/controller/app/src/main/java/org/appdevforall/k2go/redesign/SettingsFragment.java
index df74be000..1c269e5bc 100644
--- a/controller/app/src/main/java/org/appdevforall/k2go/redesign/SettingsFragment.java
+++ b/controller/app/src/main/java/org/appdevforall/k2go/redesign/SettingsFragment.java
@@ -11,7 +11,6 @@
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
-import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatDelegate;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.Fragment;
@@ -107,11 +106,17 @@ private void chooseTheme() {
AppCompatDelegate.MODE_NIGHT_NO,
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM,
AppCompatDelegate.MODE_NIGHT_YES};
- new AlertDialog.Builder(requireContext())
+ int cur = prefs().getInt("k2go_theme", AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM);
+ int checked = cur == AppCompatDelegate.MODE_NIGHT_NO ? 0 : (cur == AppCompatDelegate.MODE_NIGHT_YES ? 2 : 1);
+ // K2GO-385 (pill roles Q3): a single-choice list picker -- a themed M3 dialog with a leading
+ // filled radio on the current theme, not a bare setItems list. Tap applies and closes, as before.
+ new com.google.android.material.dialog.MaterialAlertDialogBuilder(
+ new android.view.ContextThemeWrapper(requireContext(), R.style.Theme_K2Go))
.setTitle(getString(R.string.k2go_settings_theme))
- .setItems(labels, (d, w) -> {
+ .setSingleChoiceItems(labels, checked, (d, w) -> {
prefs().edit().putInt("k2go_theme", modes[w]).apply();
AppCompatDelegate.setDefaultNightMode(modes[w]);
+ d.dismiss();
})
.show();
}
@@ -143,15 +148,16 @@ private void buildFooter(Context ctx, LinearLayout footer) {
}
private void confirmTurnOff() {
- new AlertDialog.Builder(requireContext())
- .setTitle(getString(R.string.k2go_settings_turnoff_title))
- .setMessage(getString(R.string.k2go_settings_turnoff_msg))
- .setNegativeButton(getString(R.string.k2go_cancel), null)
- .setPositiveButton(getString(R.string.k2go_settings_turnoff_confirm), (d, w) -> {
+ // K2GO-385: turn-off confirm -> the shared BrandDialog (destructive, matching the clay "Turn off" button).
+ new org.appdevforall.k2go.ui.dialog.BrandDialog(requireContext())
+ .setTitle(R.string.k2go_settings_turnoff_title)
+ .setMessage(R.string.k2go_settings_turnoff_msg)
+ .setDestructive(R.string.k2go_settings_turnoff_confirm, () -> {
if (getActivity() instanceof LibraryActivity) {
((LibraryActivity) getActivity()).turnOffK2Go();
}
})
+ .setNegative(R.string.k2go_cancel, null)
.show();
}
diff --git a/controller/app/src/main/java/org/appdevforall/k2go/redesign/SetupProgressActivity.java b/controller/app/src/main/java/org/appdevforall/k2go/redesign/SetupProgressActivity.java
index 3984f5e82..c4ebde5ec 100644
--- a/controller/app/src/main/java/org/appdevforall/k2go/redesign/SetupProgressActivity.java
+++ b/controller/app/src/main/java/org/appdevforall/k2go/redesign/SetupProgressActivity.java
@@ -1389,13 +1389,14 @@ private void configureDetailBar() {
* flag and marks the module failed; the base system is untouched and the server restarts.
*/
private void confirmCancelModule() {
- new com.google.android.material.dialog.MaterialAlertDialogBuilder(this)
+ // K2GO-385: cancel-running-install confirm -> the shared BrandDialog (destructive).
+ new org.appdevforall.k2go.ui.dialog.BrandDialog(this)
.setTitle(R.string.k2go_mod_cancel_title)
.setMessage(R.string.k2go_mod_cancel_body)
- .setNegativeButton(R.string.k2go_mod_cancel_dismiss, null)
- .setPositiveButton(R.string.k2go_mod_cancel_confirm, (d, w) ->
+ .setDestructive(R.string.k2go_mod_cancel_confirm, () ->
startService(new android.content.Intent(this, org.appdevforall.k2go.install.presentation.InstallService.class)
.setAction(org.appdevforall.k2go.install.presentation.InstallService.ACTION_CANCEL)))
+ .setNegative(R.string.k2go_mod_cancel_dismiss, null)
.show();
}
diff --git a/controller/app/src/main/res/drawable/ic_language.xml b/controller/app/src/main/res/drawable/ic_language.xml
new file mode 100644
index 000000000..8d572675a
--- /dev/null
+++ b/controller/app/src/main/res/drawable/ic_language.xml
@@ -0,0 +1,7 @@
+
+
+
+
diff --git a/controller/app/src/main/res/layout/fragment_k2go_books_landing.xml b/controller/app/src/main/res/layout/fragment_k2go_books_landing.xml
index f6c78de6e..ee80484c2 100644
--- a/controller/app/src/main/res/layout/fragment_k2go_books_landing.xml
+++ b/controller/app/src/main/res/layout/fragment_k2go_books_landing.xml
@@ -46,6 +46,9 @@
android:textColor="@color/k2go_ink"
android:textColorHint="@color/k2go_muted" />
+
diff --git a/controller/app/src/main/res/values/themes_k2go.xml b/controller/app/src/main/res/values/themes_k2go.xml
index a1b91341f..537e81bb0 100644
--- a/controller/app/src/main/res/values/themes_k2go.xml
+++ b/controller/app/src/main/res/values/themes_k2go.xml
@@ -10,6 +10,19 @@
- @color/k2go_paper
- @color/k2go_paper
- @color/k2go_surface
+
+ - @color/k2go_paper
+ - @color/k2go_paper
+ - @color/k2go_surface
+ - @color/k2go_surface
+
+ - @color/k2go_teal
+ - @color/k2go_teal
- @color/k2go_ink
- @color/k2go_ink
- @color/k2go_muted