SIDPreferencesELK
SIDPreferencesELK — глобальная модель настроек приложения для ЕЛК (ELK) SDK. Хранит все визуальные, текстовые и сетевые параметры, влияющие на отображение и поведение SDK по всей системе. Класс используется для централизованного управления настройками интерфейса ЕЛК. Разработан как стабильная (Stable) сущность для использования в Compose-архитектуре.
Конструктор
SIDPreferencesELK(
texts: SIDTextsELK,
themeColor: SIDColorELK,
primaryColor: SIDColorELK,
secondaryColor: SIDColorELK,
warningColor: SIDColorELK,
widgetBackgroundColor: SIDColorELK,
fonts: SIDFontsELK,
network: SIDNetworkELK,
elkErrorType: SIDErrorTypesELK
)
Поля
| Поле | Тип | Описание | Доступ |
|---|---|---|---|
texts | SIDTextsELK | Текстовые сообщения для ошибок | Только чтение |
themeColor | SIDColorELK | Основной цвет темы интерфейса | Только чтение |
primaryColor | SIDColorELK | Первичный цвет для кнопок и акцентов | Только чтение |
secondaryColor | SIDColorELK | Вторичный цвет для дополнительных элементов | Только чтение |
warningColor | SIDColorELK | Цвет для предупреждений и ошибок | Только чтение |
widgetBackgroundColor | SIDColorELK | Цвет фона виджетов | Только чтение |
fonts | SIDFontsELK | Настройки шрифтов приложения | Только чтение |
network | SIDErrorTypesELK | Сетевые заголовки для запросов | Только чтение |
elkErrorType | SIDNetworkELK | Стратегия обработки ошибок ELK | Только чтение |
Методы
copyNotNull()
fun copyNotNull(
texts: SIDTextsELK? = null,
themeColor: SIDColorELK? = null,
primaryColor: SIDColorELK? = null,
secondaryColor: SIDColorELK? = null,
widgetBackgroundColor: SIDColorELK? = null,
warningColor: SIDColorELK? = null,
fonts: SIDFontsELK? = null,
elkErrorType: SIDErrorTypesELK? = null,
network: SIDNetworkELK? = null
): SIDPreferencesELK
Создает глубокую копию текущего объекта с обновленными полями. Если значения совпадают с текущими, возвращает исходный объект.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| texts | Нет | SIDTextsELK | Новые текстовые настройки ошибок |
| themeColor | Нет | SIDColorELK | Новый основной цвет темы |
| primaryColor | Нет | SIDColorELK | Новый первичный цвет |
| secondaryColor | Нет | SIDColorELK | Новый вторичный цвет |
| widgetBackgroundColor | Нет | SIDColorELK | Новый цвет фона виджетов |
| warningColor | Нет | SIDColorELK | Новый цвет предупреждений |
| fonts | Нет | SIDFontsELK | Новые настройки шрифтов |
| elkErrorType | Нет | SIDErrorTypesELK | Новый тип обработки ошибок |
| network | Нет | SIDNetworkELK | Новые сетевые настройки |
Возвращаемое значение: SIDPreferencesELK — новый объект с обновленными полями или текущий, если изменения не требуются.
Пример использования:
val baseConfig = SIDPreferencesELK()
// Обновление то лько цветов предупреждений
val updatedConfig = baseConfig.copyNotNull(
warningColor = SIDColorELK(light = Color.RED, dark = Color.DARK_RED)
)
// Обновление нескольких параметров
val fullConfig = baseConfig.copyNotNull(
themeColor = SIDColorELK(light = Color.BLUE, dark = Color.DARK_BLUE),
fonts = SIDFontsELK(semiBoldResID = R.font.roboto_bold),
network = SIDNetworkELK(mapOf("Authorization" to "Bearer token123"))
)
merge()
fun merge(newPreferences: SIDPreferencesELK): SIDPreferencesELK
Объединяет текущие настройки с новыми, перезаписывая только измененные параметры. Используется для постепенного обновления конфигурации.
| Параметр | Обязательный | Тип | Описание |
|---|---|---|---|
| newPreferences | Да | SIDPreferencesELK | Объект с новыми настройками |
Возвращаемое значение: SIDPreferencesELK — объединенный объект настроек.
Пример использования:
val baseConfig = SIDPreferencesELK(
themeColor = SIDColorELK(light = Color.BLUE),
fonts = SIDFontsELK(semiBoldResID = R.font.default_bold)
)
// Новые настройки для объединения
val newConfig = SIDPreferencesELK(
themeColor = SIDColorELK(light = Color.GREEN), // Заменит синий на зеленый
network = SIDNetworkELK(mapOf("Custom-Header" to "Value")) // Добавит новый заголовок
)
// Объединение настроек
val mergedConfig = baseConfig.merge(newConfig)
// mergedConfig содержит:
// - themeColor: GREEN (обновлено)
// - fonts: остался default_bold (не изменилось)
// - network: добавлен Custom-Header