| /* |
| * Copyright (C) 2023 The Android Open Source Project |
| * |
| * Licensed under the Apache License, Version 2.0 (the "License"); |
| * you may not use this file except in compliance with the License. |
| * You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| package com.android.settings.theme |
| |
| import android.app.UiModeManager |
| import android.app.UiModeManager.ContrastUtils.CONTRAST_LEVEL_HIGH |
| import android.app.UiModeManager.ContrastUtils.CONTRAST_LEVEL_MEDIUM |
| import android.app.UiModeManager.ContrastUtils.toContrastLevel |
| import android.content.Context |
| import android.content.Intent |
| import android.os.UserHandle |
| import android.text.TextUtils |
| import androidx.preference.Preference |
| import com.android.internal.annotations.VisibleForTesting |
| import com.android.settings.R |
| import com.android.settings.core.BasePreferenceController |
| |
| /** |
| * Controller that opens the contrast dialog and updates the text describing the current contrast |
| */ |
| class ContrastPreferenceController( |
| private val context: Context, |
| private val uiModeManager: UiModeManager) : BasePreferenceController(context, KEY) { |
| |
| companion object { |
| @VisibleForTesting |
| const val KEY = "contrast_preference" |
| } |
| |
| override fun getAvailabilityStatus(): Int { |
| return AVAILABLE |
| } |
| |
| override fun handlePreferenceTreeClick(preference: Preference): Boolean { |
| if (TextUtils.equals(preference.key, preferenceKey)) { |
| val intent = Intent(Intent.ACTION_SHOW_CONTRAST_DIALOG) |
| context.startActivityAsUser(intent, UserHandle(UserHandle.USER_CURRENT)) |
| return true |
| } |
| return false |
| } |
| |
| override fun getSummary(): CharSequence = getSummary(toContrastLevel(uiModeManager.contrast)) |
| |
| @VisibleForTesting |
| fun getSummary(contrast: Int): String { |
| return when (contrast) { |
| CONTRAST_LEVEL_HIGH -> context.getString(R.string.contrast_high) |
| CONTRAST_LEVEL_MEDIUM -> context.getString(R.string.contrast_medium) |
| else -> context.getString(R.string.contrast_standard) |
| } |
| } |
| } |