blob: 1da17756fae65755ac2d8155ea9641c861433d70 [file] [log] [blame]
/*
* 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.settingslib.devicestate
import android.provider.Settings.Secure.DEVICE_STATE_ROTATION_LOCK
import android.util.Dumpable
/**
* Interface for managing [DEVICE_STATE_ROTATION_LOCK] setting.
*
* It provides methods to register/unregister listeners for setting changes, update the setting for
* specific device states, retrieve the setting value, and check if rotation is locked for specific
* or all device states.
*/
interface DeviceStateAutoRotateSettingManager : Dumpable {
// TODO: b/397928958 - Rename all terms from rotationLock to autoRotate in all apis.
/** Listener for changes in device-state based auto rotate setting. */
interface DeviceStateAutoRotateSettingListener {
/** Called whenever the setting has changed. */
fun onSettingsChanged()
}
/** Register listener for changes to [DEVICE_STATE_ROTATION_LOCK] setting. */
fun registerListener(settingListener: DeviceStateAutoRotateSettingListener)
/** Unregister listener for changes to [DEVICE_STATE_ROTATION_LOCK] setting. */
fun unregisterListener(settingListener: DeviceStateAutoRotateSettingListener)
/**
* Write [deviceState]'s setting value as [autoRotate], for [DEVICE_STATE_ROTATION_LOCK] setting.
*/
fun updateSetting(deviceState: Int, autoRotate: Boolean)
/** Get [DEVICE_STATE_ROTATION_LOCK] setting value for [deviceState]. */
fun getRotationLockSetting(deviceState: Int): Int
/** Returns true if auto-rotate setting is OFF for [deviceState]. */
fun isRotationLocked(deviceState: Int): Boolean
/** Returns true if the auto-rotate setting value for all device states is OFF. */
fun isRotationLockedForAllStates(): Boolean
/** Returns a list of device states and their respective auto rotate setting availability. */
fun getSettableDeviceStates(): List<SettableDeviceState>
}
/** Represents a device state and whether it has an auto-rotation setting. */
data class SettableDeviceState(
/** Returns the device state associated with this object. */
val deviceState: Int,
/** Returns whether there is an auto-rotation setting for this device state. */
val isSettable: Boolean
)