Files
app_Settings/src/com/android/settings/connecteddevice/display/Mirroring.kt
Matthew DeVore 6edab7d35f Disable mirror toggle if feature turned off
If the content mode management feature is disabled, the mirror display
toggle should be disabled, and instead reflect the inverse of the
"force desktop on external displays" system property.

Flag: com.android.settings.flags.display_topology_pane_in_display_list
Test: manual with and without toggle user-changeable
Bug: b/396116157
Change-Id: I550fc918aaebab7129a559c0e49b88c8da7bc00d
2025-02-21 09:43:11 -06:00

55 lines
1.7 KiB
Kotlin

/*
* Copyright (C) 2025 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.connecteddevice.display
import android.content.Context
import android.provider.Settings
import androidx.preference.SwitchPreferenceCompat
import com.android.settings.R
const val MIRROR_SETTING = Settings.Secure.MIRROR_BUILT_IN_DISPLAY
/**
* A switch preference which is backed by the MIRROR_BUILT_IN_DISPLAY global setting.
*/
class MirrorPreference(context: Context, val contentModeEnabled: Boolean):
SwitchPreferenceCompat(context) {
override fun onAttached() {
super.onAttached()
isEnabled = contentModeEnabled
if (contentModeEnabled) {
setChecked(0 != Settings.Secure.getInt(context.contentResolver, MIRROR_SETTING, 0))
} else {
setChecked(0 == Settings.Global.getInt(
context.contentResolver,
Settings.Global.DEVELOPMENT_FORCE_DESKTOP_MODE_ON_EXTERNAL_DISPLAYS, 0))
}
}
override fun onClick() {
super.onClick()
if (contentModeEnabled) {
Settings.Secure.putInt(
context.contentResolver, MIRROR_SETTING, if (isChecked()) 1 else 0)
}
}
}