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