1 How to Add a New Theme
BBQQYT edited this page 2025-08-10 18:59:56 +03:00

Руководство: Как добавить новую тему

Архитектура Chaos Alice позволяет легко добавлять новые темы, полностью меняющие интерфейс приложения. Вот пошаговое руководство.

1. Создайте Enum для новой темы

Откройте файл app/src/main/java/chaos/alice/pro/data/models/AppTheme.kt и добавьте свою тему.

enum class AppTheme(val displayName: String) {
    DEFAULT("Стандартная"),
    TELEGRAM("Telegram"),
    CHAT_GPT("ChatGPT"),
    YOUTUBE("YouTube"),
    MY_COOL_THEME("Моя крутая тема") // Ваша новая тема
}

2. Создайте файлы для экранов темы

  1. Создайте новую директорию в app/src/main/java/chaos/alice/pro/ui/theme/theming/. Например: mycooltheme.
  2. Внутри этой папки создайте Kotlin-файлы для экранов, которые вы хотите переопределить. Как минимум, это MyCoolThemeChatListScreen.kt и MyCoolThemeChatScreen.kt.
  3. Вы можете скопировать код из /ui/chatlist/ChatListScreen.kt и /ui/chat/ChatScreen.kt в качестве основы и начать вносить изменения в @Composable-функции.

3. (Опционально) Создайте цветовую схему

Если ваша тема требует уникальных цветов:

  1. Добавьте свои цвета в app/src/main/java/chaos/alice/pro/ui/theme/Color.kt.

  2. Создайте lightColorScheme и darkColorScheme для вашей темы в app/src/main/java/chaos/alice/pro/ui/theme/Theme.kt.

  3. Добавьте обработку вашей темы в основной функции ChaosAliceProTheme в файле Theme.kt:

    @Composable
    fun ChaosAliceProTheme(
        //...
        appTheme: AppTheme = AppTheme.DEFAULT,
        content: @Composable () -> Unit
    ) {
        val colorScheme = when {
            // ...
            appTheme == AppTheme.MY_COOL_THEME -> { // Добавьте ваш блок
                if (darkTheme) MyCoolThemeDarkScheme else MyCoolThemeLightScheme
            }
            // ...
        }
        // ...
    }
    

4. Зарегистрируйте тему в ThemeManager

Это самый важный шаг. Откройте app/src/main/java/chaos/alice/pro/ui/theme/theming/ThemeManager.kt.

  1. Импортируйте ваши новые экраны.
  2. Создайте новую конфигурацию ThemeConfig для вашей темы.
  3. Добавьте обработку вашего AppTheme в when-блоке.
// ... (импорты)
import chaos.alice.pro.ui.theme.theming.mycooltheme.MyCoolThemeChatListScreen
import chaos.alice.pro.ui.theme.theming.mycooltheme.MyCoolThemeChatScreen

// ... (data class ThemeConfig)

object ThemeManager {
    fun getThemeConfig(theme: AppTheme): ThemeConfig {
        return when (theme) {
            // ...
            AppTheme.MY_COOL_THEME -> myCoolTheme // Добавьте вашу тему
            else -> defaultTheme
        }
    }
}

// ... (существующие конфигурации)

// Создайте свою конфигурацию
private val myCoolTheme = ThemeConfig(
    chatListScreen = { onChatClicked, onSettingsClicked ->
        MyCoolThemeChatListScreen(onChatClicked, onSettingsClicked)
    },
    chatScreen = { navController ->
        MyCoolThemeChatScreen(navController)
    }
)

5. Выберите тему в настройках

После пересборки проекта ваша новая тема появится в выпадающем списке в настройках приложения. Выберите её, сохраните и перезапустите приложение, чтобы увидеть изменения.