1 /* 2 * Copyright (C) 2020 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.settings.wifi; 17 18 import android.content.Context; 19 import android.view.View; 20 21 import androidx.fragment.app.Fragment; 22 import androidx.preference.PreferenceViewHolder; 23 24 import com.android.settingslib.R; 25 import com.android.settingslib.wifi.LongPressWifiEntryPreference; 26 import com.android.wifitrackerlib.WifiEntry; 27 28 /** 29 * An AP preference for the currently connected AP. 30 */ 31 public class ConnectedWifiEntryPreference extends LongPressWifiEntryPreference implements 32 View.OnClickListener { 33 34 private OnGearClickListener mOnGearClickListener; 35 ConnectedWifiEntryPreference(Context context, WifiEntry wifiEntry, Fragment fragment)36 public ConnectedWifiEntryPreference(Context context, WifiEntry wifiEntry, Fragment fragment) { 37 super(context, wifiEntry, fragment); 38 setWidgetLayoutResource(R.layout.preference_widget_gear_optional_background); 39 } 40 41 /** 42 * Set gear icon click callback listener. 43 */ setOnGearClickListener(OnGearClickListener l)44 public void setOnGearClickListener(OnGearClickListener l) { 45 mOnGearClickListener = l; 46 notifyChanged(); 47 } 48 49 @Override onBindViewHolder(PreferenceViewHolder holder)50 public void onBindViewHolder(PreferenceViewHolder holder) { 51 super.onBindViewHolder(holder); 52 53 final View gear = holder.findViewById(R.id.settings_button); 54 gear.setOnClickListener(this); 55 56 final boolean canSignIn = getWifiEntry().canSignIn(); 57 holder.findViewById(R.id.settings_button_no_background).setVisibility( 58 canSignIn ? View.INVISIBLE : View.VISIBLE); 59 gear.setVisibility(canSignIn ? View.VISIBLE : View.INVISIBLE); 60 holder.findViewById(R.id.two_target_divider).setVisibility( 61 canSignIn ? View.VISIBLE : View.INVISIBLE); 62 } 63 64 @Override onClick(View v)65 public void onClick(View v) { 66 if (v.getId() == R.id.settings_button) { 67 if (mOnGearClickListener != null) { 68 mOnGearClickListener.onGearClick(this); 69 } 70 } 71 } 72 73 /** 74 * Gear Icon click callback interface. 75 */ 76 public interface OnGearClickListener { 77 /** 78 * The callback triggered when gear icon is clicked. 79 */ onGearClick(ConnectedWifiEntryPreference p)80 void onGearClick(ConnectedWifiEntryPreference p); 81 } 82 83 } 84