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.settings.R; 25 import com.android.wifitrackerlib.WifiEntry; 26 27 /** 28 * An AP preference for the currently connected AP. 29 */ 30 public class ConnectedWifiEntryPreference extends LongPressWifiEntryPreference implements 31 View.OnClickListener { 32 33 private OnGearClickListener mOnGearClickListener; 34 ConnectedWifiEntryPreference(Context context, WifiEntry wifiEntry, Fragment fragment)35 public ConnectedWifiEntryPreference(Context context, WifiEntry wifiEntry, Fragment fragment) { 36 super(context, wifiEntry, fragment); 37 setWidgetLayoutResource(R.layout.preference_widget_gear_optional_background); 38 } 39 40 /** 41 * Set gear icon click callback listener. 42 */ setOnGearClickListener(OnGearClickListener l)43 public void setOnGearClickListener(OnGearClickListener l) { 44 mOnGearClickListener = l; 45 notifyChanged(); 46 } 47 48 @Override onBindViewHolder(PreferenceViewHolder holder)49 public void onBindViewHolder(PreferenceViewHolder holder) { 50 super.onBindViewHolder(holder); 51 52 final View gear = holder.findViewById(R.id.settings_button); 53 gear.setOnClickListener(this); 54 55 final boolean canSignIn = getWifiEntry().canSignIn(); 56 holder.findViewById(R.id.settings_button_no_background).setVisibility( 57 canSignIn ? View.INVISIBLE : View.VISIBLE); 58 gear.setVisibility(canSignIn ? View.VISIBLE : View.INVISIBLE); 59 holder.findViewById(com.android.settingslib.widget.preference.twotarget.R.id.two_target_divider).setVisibility( 60 canSignIn ? View.VISIBLE : View.INVISIBLE); 61 } 62 63 @Override onClick(View v)64 public void onClick(View v) { 65 if (v.getId() == R.id.settings_button) { 66 if (mOnGearClickListener != null) { 67 mOnGearClickListener.onGearClick(this); 68 } 69 } 70 } 71 72 /** 73 * Gear Icon click callback interface. 74 */ 75 public interface OnGearClickListener { 76 /** 77 * The callback triggered when gear icon is clicked. 78 */ onGearClick(ConnectedWifiEntryPreference p)79 void onGearClick(ConnectedWifiEntryPreference p); 80 } 81 82 } 83