blob: 9aaf529d375fd71dde8a6f6bdfdbf6f58121a51c [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.settings.supervision
import android.app.supervision.flags.Flags
import android.content.ComponentName
import android.content.Context
import android.content.Intent
import androidx.preference.Preference
import androidx.preference.PreferenceScreen
import com.android.settings.SettingsActivity.EXTRA_IS_SECOND_LAYER_PAGE
import com.android.settings.activityembedding.ActivityEmbeddingRulesController
import com.android.settings.core.BasePreferenceController
/** Controller for the top level Supervision settings Preference item. */
class TopLevelSupervisionPreferenceController(context: Context, key: String) :
BasePreferenceController(context, key) {
override fun displayPreference(screen: PreferenceScreen) {
super.displayPreference(screen)
ActivityEmbeddingRulesController.registerTwoPanePairRuleForSettingsHome(
mContext,
ComponentName(mContext, SupervisionDashboardActivity::class.java),
/* secondaryIntentAction= */ null,
/* clearTop= */ true,
)
}
override fun handlePreferenceTreeClick(preference: Preference): Boolean {
if (preference.key == preferenceKey) {
val intent = Intent(mContext, SupervisionDashboardActivity::class.java)
intent.putExtra(EXTRA_IS_SECOND_LAYER_PAGE, true)
mContext.startActivity(intent)
return true
}
return super.handlePreferenceTreeClick(preference)
}
override fun getAvailabilityStatus(): Int {
// Hide the supervision entry in settings if the necessary supervision component is not
// available and can't be fixed by user.
val hasNecessarySupervisionComponent =
mContext.hasNecessarySupervisionComponent(matchAll = true)
if (
!Flags.enableSupervisionSettingsScreen() ||
(!hasNecessarySupervisionComponent &&
mContext.getSupervisionAppInstallActivityInfo() == null)
) {
return UNSUPPORTED_ON_DEVICE
}
return AVAILABLE
}
}