diff --git a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java index 97aa69d6..667dec1c 100644 --- a/app/src/main/java/helium314/keyboard/latin/settings/Settings.java +++ b/app/src/main/java/helium314/keyboard/latin/settings/Settings.java @@ -16,11 +16,13 @@ import android.graphics.Typeface; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.view.ContextThemeWrapper; +import android.view.inputmethod.EditorInfo; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.StringRes; +import helium314.keyboard.compat.ConfigurationCompatKt; import helium314.keyboard.keyboard.KeyboardActionListener; import helium314.keyboard.latin.AudioAndHapticFeedbackManager; import helium314.keyboard.latin.InputAttributes; @@ -239,6 +241,14 @@ public final class Settings implements SharedPreferences.OnSharedPreferenceChang } } + /** convenience function for the rare situations where we need to load settings but may not have a keyboard */ + public void loadSettings(final Context context) { + if (mSettingsValues != null) return; + final Locale locale = ConfigurationCompatKt.locale(context.getResources().getConfiguration()); + final InputAttributes inputAttributes = new InputAttributes(new EditorInfo(), false, context.getPackageName()); + loadSettings(context, locale, inputAttributes); + } + public void loadSettings(final Context context, final Locale locale, @NonNull final InputAttributes inputAttributes) { mSettingsValuesLock.lock(); diff --git a/app/src/main/java/helium314/keyboard/latin/utils/DeviceProtectedUtils.java b/app/src/main/java/helium314/keyboard/latin/utils/DeviceProtectedUtils.java index 8a3da20c..3d5a1d47 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/DeviceProtectedUtils.java +++ b/app/src/main/java/helium314/keyboard/latin/utils/DeviceProtectedUtils.java @@ -26,12 +26,10 @@ public final class DeviceProtectedUtils { prefs = PreferenceManager.getDefaultSharedPreferences(context); return prefs; } - Context deviceProtectedContext = getDeviceProtectedContext(context); - if (deviceProtectedContext == null) { // not relevant in practice, but happens when compose previews access shared preferences - prefs = PreferenceManager.getDefaultSharedPreferences(context); - return prefs; - } + final Context deviceProtectedContext = getDeviceProtectedContext(context); prefs = PreferenceManager.getDefaultSharedPreferences(deviceProtectedContext); + if (prefs.getAll() == null) + return prefs; // happens for compose previews if (prefs.getAll().isEmpty()) { Log.i(TAG, "Device encrypted storage is empty, copying values from credential encrypted storage"); deviceProtectedContext.moveSharedPreferencesFrom(context, android.preference.PreferenceManager.getDefaultSharedPreferencesName(context)); @@ -42,7 +40,9 @@ public final class DeviceProtectedUtils { // keep this private to avoid accidental use of device protected context anywhere in the app private static Context getDeviceProtectedContext(final Context context) { if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) return context; - return context.isDeviceProtectedStorage() ? context : context.createDeviceProtectedStorageContext(); + final Context ctx = context.isDeviceProtectedStorage() ? context : context.createDeviceProtectedStorageContext(); + if (ctx == null) return context; // happens for compose previews + else return ctx; } public static File getFilesDir(final Context context) { diff --git a/app/src/main/java/helium314/keyboard/latin/utils/LayoutUtilsCustom.kt b/app/src/main/java/helium314/keyboard/latin/utils/LayoutUtilsCustom.kt index a8edf1fa..fb8191f4 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/LayoutUtilsCustom.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/LayoutUtilsCustom.kt @@ -20,6 +20,7 @@ import helium314.keyboard.latin.R import helium314.keyboard.latin.common.FileUtils import helium314.keyboard.latin.common.decodeBase36 import helium314.keyboard.latin.common.encodeBase36 +import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.utils.LayoutType.Companion.folder import helium314.keyboard.latin.utils.ScriptUtils.script import helium314.keyboard.settings.keyboardNeedsReload @@ -84,6 +85,8 @@ object LayoutUtilsCustom { } fun checkLayout(layoutContent: String, context: Context): Boolean { + if (Settings.getValues() == null) + Settings.getInstance().loadSettings(context) val params = KeyboardParams() params.mId = KeyboardLayoutSet.getFakeKeyboardId(KeyboardId.ELEMENT_ALPHABET) params.mPopupKeyTypes.add(POPUP_KEYS_LAYOUT) diff --git a/app/src/main/java/helium314/keyboard/latin/utils/RunInLocale.kt b/app/src/main/java/helium314/keyboard/latin/utils/RunInLocale.kt index 476e4697..47c60461 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/RunInLocale.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/RunInLocale.kt @@ -9,7 +9,7 @@ import java.util.Locale fun runInLocale(context: Context, locale: Locale, run: (Context) -> T): T { val config = Configuration(context.resources.configuration) config.setLocale(locale) - val localeContext = context.createConfigurationContext(config) + val localeContext = context.createConfigurationContext(config) ?: context return run(localeContext) } diff --git a/app/src/main/java/helium314/keyboard/latin/utils/SubtypeSettings.kt b/app/src/main/java/helium314/keyboard/latin/utils/SubtypeSettings.kt index 7471f615..16935dfc 100644 --- a/app/src/main/java/helium314/keyboard/latin/utils/SubtypeSettings.kt +++ b/app/src/main/java/helium314/keyboard/latin/utils/SubtypeSettings.kt @@ -9,6 +9,7 @@ import android.view.inputmethod.InputMethodSubtype import android.widget.Toast import androidx.core.app.LocaleManagerCompat import androidx.core.content.edit +import helium314.keyboard.compat.locale import helium314.keyboard.keyboard.KeyboardSwitcher import helium314.keyboard.latin.RichInputMethodManager import helium314.keyboard.latin.common.Constants.Separators @@ -104,10 +105,14 @@ object SubtypeSettings { fun reloadSystemLocales(context: Context) { systemLocales.clear() - val localeList = LocaleManagerCompat.getSystemLocales(context) - (0 until localeList.size()).forEach { - val locale = localeList[it] - if (locale != null) systemLocales.add(locale) + try { + val localeList = LocaleManagerCompat.getSystemLocales(context) + (0 until localeList.size()).forEach { + val locale = localeList[it] + if (locale != null) systemLocales.add(locale) + } + } catch (_: Throwable) { + systemLocales.add(context.resources.configuration.locale()) } systemSubtypes.clear() } diff --git a/app/src/main/java/helium314/keyboard/settings/FilePicker.kt b/app/src/main/java/helium314/keyboard/settings/FilePicker.kt index 214cccc2..9fd5d0a5 100644 --- a/app/src/main/java/helium314/keyboard/settings/FilePicker.kt +++ b/app/src/main/java/helium314/keyboard/settings/FilePicker.kt @@ -67,7 +67,7 @@ fun layoutFilePicker( @Composable fun dictionaryFilePicker(mainLocale: Locale?): ManagedActivityResultLauncher { val ctx = LocalContext.current - val cachedDictionaryFile = File(ctx.cacheDir.path + File.separator + "temp_dict") + val cachedDictionaryFile = File(ctx.cacheDir?.path + File.separator + "temp_dict") var done by remember { mutableStateOf(false) } val picker = filePicker { uri -> cachedDictionaryFile.delete() diff --git a/app/src/main/java/helium314/keyboard/settings/Icons.kt b/app/src/main/java/helium314/keyboard/settings/Icons.kt index 965cf488..3040b774 100644 --- a/app/src/main/java/helium314/keyboard/settings/Icons.kt +++ b/app/src/main/java/helium314/keyboard/settings/Icons.kt @@ -5,6 +5,7 @@ import androidx.annotation.StringRes import androidx.compose.foundation.layout.Column import androidx.compose.material3.Icon import androidx.compose.material3.IconButton +import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier @@ -49,12 +50,16 @@ fun DefaultButton(isDefault: Boolean, onClick: () -> Unit) { @Preview @Composable private fun Preview() { - Column(horizontalAlignment = Alignment.CenterHorizontally) { - NextScreenIcon() - SearchIcon() - CloseIcon(R.string.dialog_close) - EditButton { } - DeleteButton { } - DefaultButton(false) { } + Theme(previewDark) { + Surface { + Column(horizontalAlignment = Alignment.CenterHorizontally) { + NextScreenIcon() + SearchIcon() + CloseIcon(R.string.dialog_close) + EditButton { } + DeleteButton { } + DefaultButton(false) { } + } + } } } diff --git a/app/src/main/java/helium314/keyboard/settings/Preview.kt b/app/src/main/java/helium314/keyboard/settings/Preview.kt new file mode 100644 index 00000000..d2b0edae --- /dev/null +++ b/app/src/main/java/helium314/keyboard/settings/Preview.kt @@ -0,0 +1,18 @@ +// SPDX-License-Identifier: GPL-3.0-only +package helium314.keyboard.settings + +import android.content.Context +import helium314.keyboard.keyboard.internal.KeyboardIconsSet +import helium314.keyboard.latin.settings.Settings +import helium314.keyboard.latin.utils.SubtypeSettings + +// file is meant for making compose previews work + +fun initPreview(context: Context) { + Settings.init(context) + SubtypeSettings.init(context) + SettingsActivity.settingsContainer = SettingsContainer(context) + KeyboardIconsSet.instance.loadIcons(context) +} + +const val previewDark = true diff --git a/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt b/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt index e5cbbb4d..ae296678 100644 --- a/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt +++ b/app/src/main/java/helium314/keyboard/settings/WelcomeWizard.kt @@ -1,3 +1,4 @@ +// SPDX-License-Identifier: GPL-3.0-only package helium314.keyboard.settings import android.content.Context @@ -202,13 +203,23 @@ fun WelcomeWizard( } } -@Preview( - // content cut off on real device, but not here... great? - device = "spec:orientation=landscape,width=400dp,height=780dp" -) +@Preview @Composable private fun Preview() { - Theme(true) { + Theme(previewDark) { + Surface { + WelcomeWizard({}) { } + } + } +} + +@Preview( + // content cut off on real device, but not here... great? + device = "spec:orientation=landscape,width=400dp,height=780dp" +) +@Composable +private fun WidePreview() { + Theme(previewDark) { Surface { WelcomeWizard({}) { } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ColorPickerDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ColorPickerDialog.kt index b05dde1b..15e926ac 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ColorPickerDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ColorPickerDialog.kt @@ -33,6 +33,8 @@ import com.github.skydoves.colorpicker.compose.AlphaSlider import com.github.skydoves.colorpicker.compose.BrightnessSlider import com.github.skydoves.colorpicker.compose.HsvColorPicker import com.github.skydoves.colorpicker.compose.rememberColorPickerController +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark @Composable fun ColorPickerDialog( @@ -144,5 +146,16 @@ fun ColorPickerDialog( @Preview @Composable private fun Preview() { - ColorPickerDialog({}, -0x0f4488aa, "color name", {}) + Theme(previewDark) { + ColorPickerDialog({}, -0x0f4488aa, "color name", {}) + } +} + +// for some reason this is cut of while both previews are shown +@Preview(device = "spec:orientation=landscape,width=400dp,height=780dp") +@Composable +private fun WidePreview() { + Theme(previewDark) { + ColorPickerDialog({}, -0x0f4488aa, "color name", {}) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ColorThemePickerDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ColorThemePickerDialog.kt index d9c5a6d9..541d357a 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ColorThemePickerDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ColorThemePickerDialog.kt @@ -54,8 +54,10 @@ import helium314.keyboard.settings.EditButton import helium314.keyboard.settings.Setting import helium314.keyboard.settings.SettingsActivity import helium314.keyboard.settings.SettingsDestination +import helium314.keyboard.settings.Theme import helium314.keyboard.settings.filePicker import helium314.keyboard.settings.keyboardNeedsReload +import helium314.keyboard.settings.previewDark import helium314.keyboard.settings.screens.SaveThoseColors import kotlinx.coroutines.launch import kotlinx.serialization.SerializationException @@ -277,10 +279,12 @@ private fun loadColorString(colorString: String, prefs: SharedPreferences): Bool @Preview @Composable private fun Preview() { - ColorThemePickerDialog( - onDismissRequest = {}, - setting = Setting(LocalContext.current, "", R.string.settings) {}, - default = "dark", - isNight = true - ) + Theme(previewDark) { + ColorThemePickerDialog( + onDismissRequest = {}, + setting = Setting(LocalContext.current, "", R.string.settings) {}, + default = "dark", + isNight = true + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ConfirmationDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ConfirmationDialog.kt index 3e3e0d0d..e8ac238b 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ConfirmationDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ConfirmationDialog.kt @@ -7,6 +7,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import helium314.keyboard.latin.R +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark // taken from StreetComplete /** Slight specialization of an alert dialog: AlertDialog with OK and Cancel button. Both buttons @@ -39,11 +41,13 @@ fun ConfirmationDialog( @Preview @Composable private fun PreviewConfirmDialog() { - ConfirmationDialog( - onDismissRequest = { }, - onConfirmed = {}, - neutralButtonText = "hi", - confirmButtonText = "I don't care", - content = { Text(stringResource(R.string.disable_personalized_dicts_message)) } - ) + Theme(previewDark) { + ConfirmationDialog( + onDismissRequest = { }, + onConfirmed = {}, + neutralButtonText = "hi", + confirmButtonText = "I don't care", + content = { Text(stringResource(R.string.disable_personalized_dicts_message)) } + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/CustomizeIconsDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/CustomizeIconsDialog.kt index c9b66690..87639fc5 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/CustomizeIconsDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/CustomizeIconsDialog.kt @@ -42,6 +42,9 @@ import helium314.keyboard.latin.R import helium314.keyboard.latin.customIconNames import helium314.keyboard.latin.utils.getStringResourceOrName import helium314.keyboard.latin.utils.prefs +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview +import helium314.keyboard.settings.previewDark import helium314.keyboard.settings.screens.GetIcon import kotlinx.serialization.json.Json @@ -178,9 +181,11 @@ fun CustomizeIconsDialog( @Preview @Composable private fun Preview() { - KeyboardIconsSet.instance.loadIcons(LocalContext.current) - CustomizeIconsDialog( - prefKey = "", - onDismissRequest = { }, - ) + initPreview(LocalContext.current) + Theme(previewDark) { + CustomizeIconsDialog( + prefKey = "", + onDismissRequest = { }, + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/DictionaryDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/DictionaryDialog.kt index 38b4e170..5010a3c7 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/DictionaryDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/DictionaryDialog.kt @@ -22,6 +22,7 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.em import helium314.keyboard.compat.locale @@ -31,7 +32,9 @@ import helium314.keyboard.latin.common.LocaleUtils.localizedDisplayName import helium314.keyboard.latin.utils.DictionaryInfoUtils import helium314.keyboard.latin.utils.createDictionaryTextAnnotated import helium314.keyboard.settings.DeleteButton +import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dictionaryFilePicker +import helium314.keyboard.settings.previewDark import helium314.keyboard.settings.screens.getUserAndInternalDictionaries import java.util.Locale @@ -97,3 +100,11 @@ fun DictionaryDialog( } ) } + +@Preview +@Composable +private fun Preview() { + Theme(previewDark) { + DictionaryDialog({}, Locale.ENGLISH) + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/InfoDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/InfoDialog.kt index 0ff87bbe..c7a8e03e 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/InfoDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/InfoDialog.kt @@ -4,6 +4,9 @@ package helium314.keyboard.settings.dialogs import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark @Composable fun InfoDialog( @@ -18,3 +21,11 @@ fun InfoDialog( confirmButtonText = null ) } + +@Preview +@Composable +private fun Preview() { + Theme(previewDark) { + InfoDialog("message") { } + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutEditDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutEditDialog.kt index 9335a84f..ea9b35f1 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutEditDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutEditDialog.kt @@ -17,16 +17,21 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalDensity import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.input.TextFieldValue +import androidx.compose.ui.tooling.preview.Preview import helium314.keyboard.latin.R import helium314.keyboard.latin.utils.LayoutType import helium314.keyboard.latin.utils.LayoutUtilsCustom import helium314.keyboard.latin.utils.Log +import helium314.keyboard.latin.utils.SettingsSubtype import helium314.keyboard.latin.utils.SubtypeSettings import helium314.keyboard.latin.utils.getActivity import helium314.keyboard.latin.utils.getStringResourceOrName import helium314.keyboard.settings.CloseIcon import helium314.keyboard.settings.SettingsActivity +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.keyboardNeedsReload +import helium314.keyboard.settings.previewDark import kotlinx.coroutines.Job import kotlinx.coroutines.delay import kotlinx.coroutines.launch @@ -114,3 +119,13 @@ fun LayoutEditDialog( // the job is here (outside the composable to make sure old jobs are canceled private var errorJob: Job? = null + +@Preview +@Composable +private fun Preview() { + val content = LocalContext.current.assets.open("layouts/main/dvorak.json").reader().readText() + initPreview(LocalContext.current) + Theme(previewDark) { + LayoutEditDialog({}, LayoutType.MAIN, "qwerty", locale = Locale.ENGLISH, startContent = content) { true } + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutPickerDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutPickerDialog.kt index 3b897468..a69908f4 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutPickerDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/LayoutPickerDialog.kt @@ -48,9 +48,11 @@ import helium314.keyboard.settings.DeleteButton import helium314.keyboard.settings.EditButton import helium314.keyboard.settings.Setting import helium314.keyboard.settings.SettingsActivity +import helium314.keyboard.settings.Theme import helium314.keyboard.settings.keyboardNeedsReload import helium314.keyboard.settings.layoutFilePicker import helium314.keyboard.settings.layoutIntent +import helium314.keyboard.settings.previewDark @Composable fun LayoutPickerDialog( @@ -211,9 +213,11 @@ private fun LayoutItemRow( @Preview @Composable private fun Preview() { - LayoutPickerDialog( - onDismissRequest = {}, - setting = Setting(LocalContext.current, "", R.string.settings) {}, - layoutType = LayoutType.SYMBOLS - ) + Theme(previewDark) { + LayoutPickerDialog( + onDismissRequest = {}, + setting = Setting(LocalContext.current, "", R.string.settings) {}, + layoutType = LayoutType.SYMBOLS + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ListPickerDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ListPickerDialog.kt index a205b100..c7bcb7a0 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ListPickerDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ListPickerDialog.kt @@ -25,6 +25,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark // taken from StreetComplete @Composable @@ -100,12 +102,14 @@ fun ListPickerDialog( @Composable private fun PreviewListPickerDialog() { val items = remember { (0..<5).toList() } - ListPickerDialog( - onDismissRequest = {}, - items = items, - onItemSelected = {}, - title = { Text("Select something") }, - selectedItem = 2, - getItemName = { "Item $it" }, - ) + Theme(previewDark) { + ListPickerDialog( + onDismissRequest = {}, + items = items, + onItemSelected = {}, + title = { Text("Select something") }, + selectedItem = 2, + getItemName = { "Item $it" }, + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/MultiListPickerDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/MultiListPickerDialog.kt index 621bfdfb..554c0fda 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/MultiListPickerDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/MultiListPickerDialog.kt @@ -24,6 +24,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark // modified version of ListPickerDialog for selecting multiple items @Composable @@ -83,12 +85,14 @@ fun MultiListPickerDialog( @Composable private fun Preview() { val items = remember { (0..<5).toList() } - MultiListPickerDialog( - onDismissRequest = {}, - items = items, - onConfirmed = {}, - title = { Text("Select something") }, - initialSelection = listOf(2, 4), - getItemName = { "Item $it" }, - ) + Theme(previewDark) { + MultiListPickerDialog( + onDismissRequest = {}, + items = items, + onConfirmed = {}, + title = { Text("Select something") }, + initialSelection = listOf(2, 4), + getItemName = { "Item $it" }, + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt index 07e56039..015f0f1a 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/NewDictionaryDialog.kt @@ -29,7 +29,6 @@ import helium314.keyboard.latin.utils.DictionaryInfoUtils import helium314.keyboard.latin.utils.ScriptUtils.script import helium314.keyboard.latin.utils.SubtypeSettings import helium314.keyboard.latin.utils.locale -import helium314.keyboard.latin.utils.prefs import java.io.File import java.util.Locale diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ReorderDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ReorderDialog.kt index ed125ee8..a1c304a0 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ReorderDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ReorderDialog.kt @@ -26,6 +26,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import helium314.keyboard.latin.R +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark import sh.calvin.reorderable.ReorderableItem import sh.calvin.reorderable.rememberReorderableLazyListState @@ -93,11 +95,13 @@ fun ReorderDialog( @Preview @Composable private fun Preview() { - ReorderDialog( - onConfirmed = {}, - onDismissRequest = {}, - items = listOf(1, 2, 3), - displayItem = { Text(it.toString(), Modifier.fillMaxWidth(), textAlign = TextAlign.Center) }, - getKey = { it.toString() } - ) + Theme(previewDark) { + ReorderDialog( + onConfirmed = {}, + onDismissRequest = {}, + items = listOf(1, 2, 3), + displayItem = { Text(it.toString(), Modifier.fillMaxWidth(), textAlign = TextAlign.Center) }, + getKey = { it.toString() } + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/SliderDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/SliderDialog.kt index 5cb22b02..75e9e812 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/SliderDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/SliderDialog.kt @@ -16,6 +16,8 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.res.stringResource import androidx.compose.ui.tooling.preview.Preview import helium314.keyboard.latin.R +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark @Composable fun SliderDialog( @@ -70,12 +72,14 @@ fun SliderDialog( @Preview @Composable private fun PreviewSliderDialog() { - SliderDialog( - onDismissRequest = { }, - onDone = { }, - initialValue = 100f, - range = 0f..500f, - title = { Text("move it") }, - showDefault = true - ) + Theme(previewDark) { + SliderDialog( + onDismissRequest = { }, + onDone = { }, + initialValue = 100f, + range = 0f..500f, + title = { Text("move it") }, + showDefault = true + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt index 9aa4b9ce..85cc086d 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/SubtypeDialog.kt @@ -35,6 +35,7 @@ import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import helium314.keyboard.keyboard.internal.KeyboardIconsSet import helium314.keyboard.keyboard.internal.keyboard_parser.POPUP_KEYS_ALL @@ -72,8 +73,11 @@ import helium314.keyboard.latin.utils.mainLayoutName import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.DefaultButton import helium314.keyboard.settings.SettingsActivity +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.layoutFilePicker import helium314.keyboard.settings.layoutIntent +import helium314.keyboard.settings.previewDark import helium314.keyboard.settings.screens.GetIcon import java.util.Locale @@ -496,3 +500,12 @@ fun DropDownField( private fun getAvailableSecondaryLocales(context: Context, mainLocale: Locale): List = getDictionaryLocales(context).filter { it != mainLocale && it.script() == mainLocale.script() } + +@Preview +@Composable +private fun Preview() { + initPreview(LocalContext.current) + Theme(previewDark) { + SubtypeDialog({}, SettingsSubtype(Locale.ENGLISH, "")) { } + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/TextInputDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/TextInputDialog.kt index 16aeeda9..d23f76da 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/TextInputDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/TextInputDialog.kt @@ -21,6 +21,8 @@ import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.TextFieldValue import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.window.DialogProperties +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark // mostly taken from StreetComplete / SCEE /** Dialog with which to input text. OK button is only clickable if [checkTextValid] returns true. */ @@ -85,12 +87,14 @@ fun TextInputDialog( @Preview @Composable private fun Preview() { - TextInputDialog( - onDismissRequest = {}, - onConfirmed = {}, - title = { Text("Title") }, - initialText = "some text\nand another line", - singleLine = false, - textInputLabel = { Text("fill it") } - ) + Theme(previewDark) { + TextInputDialog( + onDismissRequest = {}, + onConfirmed = {}, + title = { Text("Title") }, + initialText = "some text\nand another line", + singleLine = false, + textInputLabel = { Text("fill it") } + ) + } } diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ThreeButtonAlertDialog.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ThreeButtonAlertDialog.kt index 5c7a2456..2b34bcd8 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ThreeButtonAlertDialog.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ThreeButtonAlertDialog.kt @@ -27,6 +27,7 @@ import androidx.compose.ui.unit.dp import androidx.compose.ui.window.Dialog import androidx.compose.ui.window.DialogProperties import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark @Composable fun ThreeButtonAlertDialog( @@ -98,7 +99,7 @@ fun ThreeButtonAlertDialog( @Preview @Composable private fun Preview() { - Theme { + Theme(previewDark) { ThreeButtonAlertDialog( onDismissRequest = {}, onConfirmed = { }, diff --git a/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt b/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt index f1dcee37..01df5c3b 100644 --- a/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt +++ b/app/src/main/java/helium314/keyboard/settings/dialogs/ToolbarKeysCustomizer.kt @@ -26,7 +26,6 @@ import androidx.compose.ui.unit.dp import helium314.keyboard.keyboard.internal.KeyboardIconsSet import helium314.keyboard.keyboard.internal.keyboard_parser.floris.KeyCode.checkAndConvertCode import helium314.keyboard.latin.R -import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.utils.ToolbarKey import helium314.keyboard.latin.utils.getCodeForToolbarKey import helium314.keyboard.latin.utils.getCodeForToolbarKeyLongClick @@ -34,6 +33,9 @@ import helium314.keyboard.latin.utils.getStringResourceOrName import helium314.keyboard.latin.utils.prefs import helium314.keyboard.latin.utils.readCustomKeyCodes import helium314.keyboard.latin.utils.writeCustomKeyCodes +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview +import helium314.keyboard.settings.previewDark import helium314.keyboard.settings.screens.GetIcon @Composable @@ -138,21 +140,22 @@ private fun ToolbarKeyCustomizer( ) } +private fun checkCode(code: TextFieldValue) = runCatching { + code.text.toIntOrNull()?.takeIf { it.checkAndConvertCode() <= Char.MAX_VALUE.code } +}.getOrNull() + @Preview @Composable -fun PreviewToolbarKeyCustomizer() { - Settings.init(LocalContext.current) +private fun PreviewToolbarKeyCustomizer() { + initPreview(LocalContext.current) ToolbarKeyCustomizer(ToolbarKey.CUT) { } } @Preview @Composable -fun PreviewToolbarKeysCustomizer() { - Settings.init(LocalContext.current) - KeyboardIconsSet.instance.loadIcons(LocalContext.current) - ToolbarKeysCustomizer("") { } +private fun PreviewToolbarKeysCustomizer() { + initPreview(LocalContext.current) + Theme(previewDark) { + ToolbarKeysCustomizer("") { } + } } - -private fun checkCode(code: TextFieldValue) = runCatching { - code.text.toIntOrNull()?.takeIf { it.checkAndConvertCode() <= Char.MAX_VALUE.code } -}.getOrNull() diff --git a/app/src/main/java/helium314/keyboard/settings/preferences/LoadGestureLibPreference.kt b/app/src/main/java/helium314/keyboard/settings/preferences/LoadGestureLibPreference.kt index 6475f2a5..d18f8914 100644 --- a/app/src/main/java/helium314/keyboard/settings/preferences/LoadGestureLibPreference.kt +++ b/app/src/main/java/helium314/keyboard/settings/preferences/LoadGestureLibPreference.kt @@ -32,7 +32,7 @@ fun LoadGestureLibPreference(setting: Setting) { val ctx = LocalContext.current val prefs = ctx.protectedPrefs() val abi = Build.SUPPORTED_ABIS[0] - val libFile = File(ctx.filesDir.absolutePath + File.separator + JniUtils.JNI_LIB_IMPORT_FILE_NAME) + val libFile = File(ctx.filesDir?.absolutePath + File.separator + JniUtils.JNI_LIB_IMPORT_FILE_NAME) fun renameToLibFileAndRestart(file: File, checksum: String) { libFile.delete() // store checksum in default preferences (soo JniUtils) diff --git a/app/src/main/java/helium314/keyboard/settings/preferences/Preference.kt b/app/src/main/java/helium314/keyboard/settings/preferences/Preference.kt index 7eaab76e..d13a82d7 100644 --- a/app/src/main/java/helium314/keyboard/settings/preferences/Preference.kt +++ b/app/src/main/java/helium314/keyboard/settings/preferences/Preference.kt @@ -29,6 +29,8 @@ import androidx.compose.ui.text.style.TextAlign import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import helium314.keyboard.latin.R +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark // partially taken from StreetComplete / SCEE @@ -105,61 +107,63 @@ fun Preference( @Preview @Composable private fun PreferencePreview() { - Surface { - Column { - PreferenceCategory("Preference Category") - Preference( - name = "Preference", - onClick = {}, - ) - Preference( - name = "Preference with icon", - onClick = {}, - icon = R.drawable.ic_settings_about_foreground - ) - SliderPreference( - name = "SliderPreference", - key = "", - default = 1, - description = { it.toString() }, - range = -5f..5f - ) - Preference( - name = "Preference with icon and description", - description = "some text", - onClick = {}, - icon = R.drawable.ic_settings_about_foreground - ) - Preference( - name = "Preference with switch", - onClick = {} - ) { - Switch(checked = true, onCheckedChange = {}) - } - SwitchPreference( - name = "SwitchPreference", - key = "none", - default = true - ) - Preference( - name = "Preference", - onClick = {}, - description = "A long description which may actually be several lines long, so it should wrap." - ) { - Icon(painterResource(R.drawable.ic_arrow_left), null) - } - Preference( - name = "Long preference name that wraps", - onClick = {}, - ) { - Text("Long preference value") - } - Preference( - name = "Long preference name 2", - onClick = {}, - description = "hello I am description" - ) { - Text("Long preference value") + Theme(previewDark) { + Surface { + Column { + PreferenceCategory("Preference Category") + Preference( + name = "Preference", + onClick = {}, + ) + Preference( + name = "Preference with icon", + onClick = {}, + icon = R.drawable.ic_settings_about_foreground + ) + SliderPreference( + name = "SliderPreference", + key = "", + default = 1, + description = { it.toString() }, + range = -5f..5f + ) + Preference( + name = "Preference with icon and description", + description = "some text", + onClick = {}, + icon = R.drawable.ic_settings_about_foreground + ) + Preference( + name = "Preference with switch", + onClick = {} + ) { + Switch(checked = true, onCheckedChange = {}) + } + SwitchPreference( + name = "SwitchPreference", + key = "none", + default = true + ) + Preference( + name = "Preference", + onClick = {}, + description = "A long description which may actually be several lines long, so it should wrap." + ) { + Icon(painterResource(R.drawable.ic_arrow_left), null) + } + Preference( + name = "Long preference name that wraps", + onClick = {}, + ) { + Text("Long preference value") + } + Preference( + name = "Long preference name 2", + onClick = {}, + description = "hello I am description" + ) { + Text("Long preference value") + } } } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt index 7e88d3e6..681fcefe 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AboutScreen.kt @@ -38,6 +38,7 @@ import helium314.keyboard.settings.preferences.Preference import helium314.keyboard.settings.SearchSettingsScreen import helium314.keyboard.settings.SettingsActivity import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.previewDark import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import java.text.SimpleDateFormat @@ -177,7 +178,7 @@ fun createAboutSettings(context: Context) = listOf( @Composable private fun Preview() { SettingsActivity.settingsContainer = SettingsContainer(LocalContext.current) - Theme(true) { + Theme(previewDark) { Surface { AboutScreen { } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt index 56f4e132..ec900432 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AdvancedScreen.kt @@ -45,6 +45,7 @@ import helium314.keyboard.settings.dialogs.TextInputDialog import helium314.keyboard.settings.keyboardNeedsReload import helium314.keyboard.settings.preferences.BackupRestorePreference import helium314.keyboard.settings.preferences.LoadGestureLibPreference +import helium314.keyboard.settings.previewDark @Composable fun AdvancedSettingsScreen( @@ -235,7 +236,7 @@ fun createAdvancedSettings(context: Context) = listOf( @Composable private fun Preview() { SettingsActivity.settingsContainer = SettingsContainer(LocalContext.current) - Theme(true) { + Theme(previewDark) { Surface { AdvancedSettingsScreen { } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt index 65fe9828..347ac526 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/AppearanceScreen.kt @@ -23,7 +23,6 @@ import helium314.keyboard.latin.utils.Log import helium314.keyboard.latin.utils.getActivity import helium314.keyboard.latin.utils.getStringResourceOrName import helium314.keyboard.latin.utils.prefs -import helium314.keyboard.settings.SettingsContainer import helium314.keyboard.settings.preferences.ListPreference import helium314.keyboard.settings.SettingsWithoutKey import helium314.keyboard.settings.Setting @@ -36,9 +35,11 @@ import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.ColorThemePickerDialog import helium314.keyboard.settings.dialogs.CustomizeIconsDialog import helium314.keyboard.settings.dialogs.TextInputDialog +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.keyboardNeedsReload import helium314.keyboard.settings.preferences.BackgroundImagePref import helium314.keyboard.settings.preferences.CustomFontPreference +import helium314.keyboard.settings.previewDark @Composable fun AppearanceScreen( @@ -307,8 +308,8 @@ fun createAppearanceSettings(context: Context) = listOf( @Preview @Composable private fun Preview() { - SettingsActivity.settingsContainer = SettingsContainer(LocalContext.current) - Theme(true) { + initPreview(LocalContext.current) + Theme(previewDark) { Surface { AppearanceScreen { } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/ColorsScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/ColorsScreen.kt index 0db49066..b218c946 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/ColorsScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/ColorsScreen.kt @@ -61,6 +61,7 @@ import helium314.keyboard.settings.SearchScreen import helium314.keyboard.settings.SettingsActivity import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.ColorPickerDialog +import helium314.keyboard.settings.previewDark import kotlinx.serialization.Serializable import kotlinx.serialization.json.Json @@ -239,7 +240,7 @@ data class SaveThoseColors(val name: String? = null, val moreColors: Int, val co @Preview @Composable private fun Preview() { - Theme(true) { + Theme(previewDark) { Surface { ColorsScreen(false, null) { } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt index 80d4837f..8207a110 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/DebugScreen.kt @@ -18,15 +18,15 @@ import helium314.keyboard.latin.settings.DebugSettings import helium314.keyboard.latin.settings.DebugSettingsFragment import helium314.keyboard.latin.settings.Defaults import helium314.keyboard.latin.utils.prefs -import helium314.keyboard.settings.SettingsContainer import helium314.keyboard.settings.Setting import helium314.keyboard.settings.preferences.Preference import helium314.keyboard.settings.SearchSettingsScreen -import helium314.keyboard.settings.SettingsActivity import helium314.keyboard.settings.preferences.SwitchPreference import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.keyboardNeedsReload import helium314.keyboard.settings.preferences.PreferenceCategory +import helium314.keyboard.settings.previewDark @Composable fun DebugScreen( @@ -111,8 +111,8 @@ private fun createDebugSettings(context: Context) = listOf( @Preview @Composable private fun Preview() { - SettingsActivity.settingsContainer = SettingsContainer(LocalContext.current) - Theme(true) { + initPreview(LocalContext.current) + Theme(previewDark) { Surface { DebugScreen { } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/DictionaryScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/DictionaryScreen.kt index 14c19e06..c4140bda 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/DictionaryScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/DictionaryScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.Column import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.runtime.getValue @@ -18,6 +19,7 @@ import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.buildAnnotatedString +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import helium314.keyboard.latin.Dictionary import helium314.keyboard.latin.R @@ -34,9 +36,12 @@ import helium314.keyboard.latin.utils.appendLink import helium314.keyboard.latin.utils.getDictionaryLocales import helium314.keyboard.latin.utils.locale import helium314.keyboard.settings.SearchScreen +import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.ConfirmationDialog import helium314.keyboard.settings.dialogs.DictionaryDialog import helium314.keyboard.settings.dictionaryFilePicker +import helium314.keyboard.settings.initPreview +import helium314.keyboard.settings.previewDark import java.io.File import java.util.Locale @@ -138,3 +143,14 @@ fun getUserAndInternalDictionaries(context: Context, locale: Locale): Pair { ) return SubtypeSettings.getAllAvailableSubtypes().sortedWith(subtypeSortComparator) } + +@Preview +@Composable +private fun Preview() { + initPreview(LocalContext.current) + Theme(previewDark) { + Surface { + LanguageScreen { } + } + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt index 8dd13597..82c41183 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/MainSettingsScreen.kt @@ -23,13 +23,14 @@ import helium314.keyboard.latin.utils.JniUtils import helium314.keyboard.latin.utils.SubtypeSettings import helium314.keyboard.latin.utils.displayName import helium314.keyboard.latin.utils.getActivity -import helium314.keyboard.latin.utils.prefs import helium314.keyboard.latin.utils.switchTo import helium314.keyboard.settings.NextScreenIcon import helium314.keyboard.settings.preferences.Preference import helium314.keyboard.settings.preferences.PreferenceCategory import helium314.keyboard.settings.SearchSettingsScreen import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview +import helium314.keyboard.settings.previewDark @Composable fun MainSettingsScreen( @@ -146,7 +147,8 @@ fun MainSettingsScreen( @Preview @Composable private fun PreviewScreen() { - Theme(true) { + initPreview(LocalContext.current) + Theme(previewDark) { Surface { MainSettingsScreen({}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}) } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionariesScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionariesScreen.kt index 4016d2c2..92b9f96a 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionariesScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionariesScreen.kt @@ -8,12 +8,14 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.material3.MaterialTheme +import androidx.compose.material3.Surface import androidx.compose.material3.Text import androidx.compose.runtime.Composable import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import androidx.compose.ui.unit.dp import helium314.keyboard.latin.R import helium314.keyboard.latin.common.splitOnWhitespace @@ -25,6 +27,9 @@ import helium314.keyboard.latin.utils.locale import helium314.keyboard.settings.NextScreenIcon import helium314.keyboard.settings.SearchScreen import helium314.keyboard.settings.SettingsDestination +import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview +import helium314.keyboard.settings.previewDark import java.util.Locale import java.util.TreeSet @@ -83,3 +88,14 @@ fun getSortedDictionaryLocales(): TreeSet { sortedLocales.addAll(getSystemLocales()) return sortedLocales } + +@Preview +@Composable +private fun Preview() { + initPreview(LocalContext.current) + Theme(previewDark) { + Surface { + PersonalDictionariesScreen { } + } + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt index 21aa8c35..3abba03c 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/PersonalDictionaryScreen.kt @@ -326,4 +326,4 @@ private const val DELETE_SELECTION_WITHOUT_SHORTCUT_AND_WITH_ALL_LOCALES = (User + UserDictionary.Words.FREQUENCY + "=? AND " + UserDictionary.Words.LOCALE + " is null") -private const val WEIGHT_FOR_USER_DICTIONARY_ADDS = 250 \ No newline at end of file +private const val WEIGHT_FOR_USER_DICTIONARY_ADDS = 250 diff --git a/app/src/main/java/helium314/keyboard/settings/screens/PreferencesScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/PreferencesScreen.kt index 047e910f..b2306b17 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/PreferencesScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/PreferencesScreen.kt @@ -19,7 +19,6 @@ import helium314.keyboard.latin.utils.SubtypeSettings import helium314.keyboard.latin.utils.getActivity import helium314.keyboard.latin.utils.locale import helium314.keyboard.latin.utils.prefs -import helium314.keyboard.settings.SettingsContainer import helium314.keyboard.settings.preferences.ListPreference import helium314.keyboard.settings.Setting import helium314.keyboard.settings.preferences.ReorderSwitchPreference @@ -28,7 +27,9 @@ import helium314.keyboard.settings.SettingsActivity import helium314.keyboard.settings.preferences.SliderPreference import helium314.keyboard.settings.preferences.SwitchPreference import helium314.keyboard.settings.Theme +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.keyboardNeedsReload +import helium314.keyboard.settings.previewDark @Composable fun PreferencesScreen( @@ -186,8 +187,8 @@ private val localesWithLocalizedNumberRow = listOf("ar", "bn", "fa", "gu", "hi", @Preview @Composable private fun Preview() { - SettingsActivity.settingsContainer = SettingsContainer(LocalContext.current) - Theme(true) { + initPreview(LocalContext.current) + Theme(previewDark) { Surface { PreferencesScreen { } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/SecondaryLayoutScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/SecondaryLayoutScreen.kt index 37b4ac9d..13acd948 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/SecondaryLayoutScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/SecondaryLayoutScreen.kt @@ -2,6 +2,7 @@ package helium314.keyboard.settings.screens import android.content.Context +import androidx.compose.material3.Surface import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -10,6 +11,7 @@ import androidx.compose.runtime.saveable.rememberSaveable import androidx.compose.runtime.setValue import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.res.stringResource +import androidx.compose.ui.tooling.preview.Preview import helium314.keyboard.latin.R import helium314.keyboard.latin.settings.Settings import helium314.keyboard.latin.utils.LayoutType @@ -22,8 +24,11 @@ import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.SearchSettingsScreen import helium314.keyboard.settings.Setting import helium314.keyboard.settings.SettingsActivity +import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.LayoutPickerDialog +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.preferences.Preference +import helium314.keyboard.settings.previewDark @Composable fun SecondaryLayoutScreen( @@ -62,3 +67,14 @@ fun createLayoutSettings(context: Context) = LayoutType.entries.filter { it != L ) } } + +@Preview +@Composable +private fun Preview() { + initPreview(LocalContext.current) + Theme(previewDark) { + Surface { + SecondaryLayoutScreen { } + } + } +} diff --git a/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt index 71e6bd90..67000ba4 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/TextCorrectionScreen.kt @@ -25,7 +25,6 @@ import helium314.keyboard.latin.utils.Log import helium314.keyboard.latin.utils.getActivity import helium314.keyboard.latin.utils.prefs import helium314.keyboard.settings.NextScreenIcon -import helium314.keyboard.settings.SettingsContainer import helium314.keyboard.settings.preferences.ListPreference import helium314.keyboard.settings.SettingsWithoutKey import helium314.keyboard.settings.Setting @@ -36,7 +35,9 @@ import helium314.keyboard.settings.SettingsDestination import helium314.keyboard.settings.preferences.SwitchPreference import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.ConfirmationDialog +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.keyboardNeedsReload +import helium314.keyboard.settings.previewDark @Composable fun TextCorrectionScreen( @@ -203,8 +204,8 @@ fun createCorrectionSettings(context: Context) = listOf( @Preview @Composable private fun PreferencePreview() { - SettingsActivity.settingsContainer = SettingsContainer(LocalContext.current) - Theme(true) { + initPreview(LocalContext.current) + Theme(previewDark) { Surface { TextCorrectionScreen { } } diff --git a/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt b/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt index 1c5f3f8b..01de6e4c 100644 --- a/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt +++ b/app/src/main/java/helium314/keyboard/settings/screens/ToolbarScreen.kt @@ -27,17 +27,16 @@ import helium314.keyboard.keyboard.internal.KeyboardIconsSet import helium314.keyboard.latin.R import helium314.keyboard.latin.settings.Defaults import helium314.keyboard.latin.settings.Settings -import helium314.keyboard.settings.SettingsContainer -import helium314.keyboard.settings.SettingsWithoutKey import helium314.keyboard.settings.Setting import helium314.keyboard.settings.preferences.Preference import helium314.keyboard.settings.preferences.ReorderSwitchPreference import helium314.keyboard.settings.SearchSettingsScreen -import helium314.keyboard.settings.SettingsActivity import helium314.keyboard.settings.preferences.SwitchPreference import helium314.keyboard.settings.Theme import helium314.keyboard.settings.dialogs.ToolbarKeysCustomizer +import helium314.keyboard.settings.initPreview import helium314.keyboard.settings.keyboardNeedsReload +import helium314.keyboard.settings.previewDark @Composable fun ToolbarScreen( @@ -102,18 +101,6 @@ fun createToolbarSettings(context: Context) = listOf( } ) -@Preview -@Composable -private fun Preview() { - SettingsActivity.settingsContainer = SettingsContainer(LocalContext.current) - KeyboardIconsSet.instance.loadIcons(LocalContext.current) - Theme(true) { - Surface { - ToolbarScreen { } - } - } -} - @Composable fun KeyboardIconsSet.GetIcon(name: String?) { val ctx = LocalContext.current @@ -127,3 +114,14 @@ fun KeyboardIconsSet.GetIcon(name: String?) { } } } + +@Preview +@Composable +private fun Preview() { + initPreview(LocalContext.current) + Theme(previewDark) { + Surface { + ToolbarScreen { } + } + } +}