# User Handbook - Adding Boolean Settings Toggles > [!WARNING] > This guide is intended for developers ONLY. If you are not a developer, this likely irrelevant to yourself. > > If you want to add temporary toggles, please refer to **[Adding Debug Knobs](AddingDebugKnobs.md)** This guide will walk you through adding a new boolean toggle setting to Eden's configuration across both Qt's (PC) and Kotlin's (Android) UIs. ## Index 1. [Step 1 - src/common/settings](#step-1-src-common-settings) 2. [Qt's (PC) Steps](#qt-pc-steps) * [Step 2 - src/qt_common/config/shared_translation.cpp](#step-2-src-qt_common-config-shared_translation-cpp) 3. [ Kotlin's (Android) Steps](#android-steps) * [Step 3 - BooleanSetting.kt](#step-3-src-android-app-src-main-java-org-yuzu-yuzu_emu-features-settings-model-booleansetting-kt) * [Step 4 - SettingsItem.kt](#step-4-src-android-app-src-main-java-org-yuzu-yuzu_emu-features-settings-model-view-settingsitem-kt) * [Step 5 - SettingsFragmentPresenter.kt](#step-5-src-android-app-src-main-java-org-yuzu-yuzu_emu-features-settings-ui-settingsfragmentpresenter-kt) * [Step 6 - strings.xml](#step-6-src-android-app-src-main-res-values-strings-xml) 4. [Step 7 - Use Your Toggle](#step-7-use-your-toggle) 5. [Best Practices](#best-practices) --- ## Step 1 - src/common/settings. Firstly add your desired toggle inside `setting.h`, Example: ``` SwitchableSetting your_setting_name{linkage, false, "your_setting_name", Category::RendererExtensions}; ``` NOTE - If you wish for your toggle to be on by default then change `false` to `true` after `linkage,`. ### Remember to add your toggle to the appropriate category, for example: Common Categories: * Category::Renderer * Category::RendererAdvanced * Category::RendererExtensions * Category::System * Category::Core --- ## Qt (PC) Steps ### Step 2 - src/qt_common/config/shared_translation.cpp Now you can add the toggle to the QT (PC) UI inside `shared_translation.cpp`, Find where you wish for it to appear and place it there. Example: ``` INSERT(Settings, your_setting_name, tr("Your Setting Display Name"), tr("Detailed description of what this setting does.\n" "You can use multiple lines.\n" "Explain any caveats or requirements.")); ``` ### Make sure to: * Keep display naming consistant * Put detailed info in the description * Use `\n` for line breaks in descriptions --- ## Android Steps ### Step 3 - src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/BooleanSetting.kt Now add it inside `BooleanSetting.kt` where it should be in the settings. Example: ``` RENDERER_YOUR_SETTING_NAME("your_setting_name"), ``` Remember to make sure the naming of the prefix matches the desired category. ### Step 4 - src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/model/view/SettingsItem.kt Now you may add the toggle to the Kotlin (Android) UI inside `SettingsItem.kt`. Example: ``` put( SwitchSetting( BooleanSetting.RENDERER_YOUR_SETTING_NAME, titleId = R.string.your_setting_name, descriptionId = R.string.your_setting_name_description ) ) ``` ### Step 5 - src/android/app/src/main/java/org/yuzu/yuzu_emu/features/settings/ui/SettingsFragmentPresenter.kt Now add your setting to the correct location inside `SettingsFragmentPresenter.kt` within the right category. Example: ``` add(BooleanSetting.RENDERER_YOUR_SETTING_NAME.key) ``` Remember, placing matters! Settings appear in the order of where you add them. ### Step 6 - src/android/app/src/main/res/values/strings.xml Now add your setting and description to `strings.xml` in the appropriate place. Example: ``` Your Setting Display Name Detailed description of what this setting does. Explain any caveats, requirements, or warnings here. ``` --- ## Step 7 - Use Your Toggle! Now the UI part is done find a place in the code for the toggle, And use it to your heart's desire! Example: ``` const bool your_value = Settings::values.your_setting_name.GetValue(); if (your_value) { // Do something when enabled } ``` If you wish to do something only when the toggle is disabled, Use `if (!your_value) {` instead of `if (your_value) {`. --- ## Best Practices * Naming - Use clear, descriptive names. Something for both the devs and the users. * Defaults - Choose safe default values (usually false for new features). * Documentation - Write clear descriptions explaining when and why to use the setting. * Categories - Put settings in the appropriate category. * Order - Place related settings near each other. * Testing - Always test on both PC and Android before committing when possible. ### Thank you for reading, I hope this guide helped you making your toggle!