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