Files
app_Settings/src/com/android/settings/network/ethernet/EthernetInterfaceDetailsController.kt
Nikhil Nayunigari 487a4774d1 Add ethernet interface details settings subpage
Adds a click listener to the ethernet interface row and displays a
settings subpage with interface connection status.

Flag: com.android.settings.connectivity.ethernet_settings

Test: atest SettingsRoboTests:
com.android.settings.network.NetworkProviderSettingsTest

Change-Id: Id64ce3657b47dd4ca70d425dd3d13227c8468d2c
2025-02-19 04:55:22 +00:00

76 lines
2.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.network.ethernet
import android.content.Context
import android.net.EthernetManager
import android.widget.ImageView
import androidx.preference.PreferenceFragmentCompat
import androidx.preference.PreferenceScreen
import com.android.settings.R
import com.android.settings.widget.EntityHeaderController
import com.android.settingslib.core.AbstractPreferenceController
import com.android.settingslib.widget.LayoutPreference
class EthernetInterfaceDetailsController(
context: Context,
private val fragment: PreferenceFragmentCompat,
private val preferenceId: String,
) : AbstractPreferenceController(context) {
private val KEY_HEADER = "ethernet_details"
private val ethernetManager = context.getSystemService(EthernetManager::class.java)
private val ethernetInterface =
EthernetTrackerImpl.getInstance(context).getInterface(preferenceId)
override fun isAvailable(): Boolean {
return true
}
override fun getPreferenceKey(): String? {
return KEY_HEADER
}
override fun displayPreference(screen: PreferenceScreen) {
val headerPref: LayoutPreference? = screen.findPreference(KEY_HEADER)
val mEntityHeaderController =
EntityHeaderController.newInstance(
fragment.getActivity(),
fragment,
headerPref?.findViewById(R.id.entity_header),
)
val iconView: ImageView? = headerPref?.findViewById(R.id.entity_header_icon)
iconView?.setScaleType(ImageView.ScaleType.CENTER_INSIDE)
mEntityHeaderController
.setLabel("Ethernet")
.setSummary(
if (ethernetInterface?.getInterfaceState() == EthernetManager.STATE_LINK_UP) {
mContext.getString(R.string.network_connected)
} else {
mContext.getString(R.string.network_disconnected)
}
)
.setSecondSummary("")
.setIcon(mContext.getDrawable(R.drawable.ic_settings_ethernet))
.done(true /* rebind */)
}
}