Loading res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -1634,6 +1634,8 @@ <string name="wifi_cellular_data_fallback_summary">Use cellular data when Wi\u2011Fi has no Internet access. Data usage may apply.</string> <!-- Action bar text message to manually add a wifi network [CHAR LIMIT=20]--> <string name="wifi_add_network">Add network</string> <!-- Action bar title to open additional Wi-Fi settings--> <string name="wifi_configure_settings_preference_title">Wi\u2011Fi preferences</string> <!-- Header for the list of wifi networks--> <string name="wifi_access_points">Wi\u2011Fi networks</string> <!-- Menu option to do WPS Push Button [CHAR LIMIT=25]--> Loading res/xml/wifi_configure_settings.xml +0 −5 Original line number Diff line number Diff line Loading @@ -17,11 +17,6 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/wifi_configure_titlebar"> <Preference android:key="saved_networks" android:title="@string/wifi_saved_access_points_label" android:fragment="com.android.settings.wifi.SavedAccessPointsWifiSettings" /> <!-- android:dependency="enable_wifi" --> <ListPreference android:key="sleep_policy" Loading res/xml/wifi_settings.xml +15 −6 Original line number Diff line number Diff line Loading @@ -14,14 +14,23 @@ limitations under the License. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:title="@string/wifi_settings" settings:keywords="@string/keywords_wifi"> <!-- Needed so PreferenceGroupAdapter allows AccessPointPreference to be recycled. Removed in onResume --> <com.android.settings.wifi.LongPressAccessPointPreference android:key="dummy" /> <PreferenceCategory android:key="access_points"/> <PreferenceCategory android:key="additional_settings"> <Preference android:key="configure_settings" android:title="@string/wifi_configure_settings_preference_title" android:fragment="com.android.settings.wifi.ConfigureWifiSettings" /> <Preference android:key="saved_networks" android:title="@string/wifi_saved_access_points_label" android:fragment="com.android.settings.wifi.SavedAccessPointsWifiSettings" /> </PreferenceCategory> </PreferenceScreen> src/com/android/settings/wifi/ConfigureWifiSettings.java +0 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ public class ConfigureWifiSettings extends DashboardFragment { mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); final List<PreferenceController> controllers = new ArrayList<>(); controllers.add(new WifiInfoPreferenceController(context, getLifecycle(), mWifiManager)); controllers.add(new SavedNetworkPreferenceController(context, mWifiManager)); controllers.add(new CellularFallbackPreferenceController(context)); controllers.add(new AllowRecommendationPreferenceController(context)); controllers.add(new NotifyOpenNetworksPreferenceController(context, getLifecycle())); Loading src/com/android/settings/wifi/LinkablePreference.java 0 → 100644 +119 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.wifi; import android.content.Context; import android.support.annotation.Nullable; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceViewHolder; import android.text.Spannable; import android.text.style.TextAppearanceSpan; import android.util.AttributeSet; import android.widget.TextView; import com.android.settings.LinkifyUtils; /** * A preference with a title that can have linkable content on click. */ public class LinkablePreference extends Preference { private LinkifyUtils.OnClickListener mClickListener; private CharSequence mContentTitle; private CharSequence mContentDescription; public LinkablePreference(Context ctx, AttributeSet attrs, int defStyle) { super(ctx, attrs, defStyle); setSelectable(false); } public LinkablePreference(Context ctx, AttributeSet attrs) { super(ctx, attrs); setSelectable(false); } public LinkablePreference(Context ctx) { super(ctx); setSelectable(false); } @Override public void onBindViewHolder(PreferenceViewHolder view) { super.onBindViewHolder(view); TextView textView = (TextView) view.findViewById(android.R.id.title); if (textView == null || mContentTitle == null || mClickListener == null) { return; } textView.setSingleLine(false); StringBuilder contentBuilder = new StringBuilder().append(mContentTitle); if (mContentDescription != null) { contentBuilder.append("\n\n"); contentBuilder.append(mContentDescription); } boolean linked = LinkifyUtils.linkify(textView, contentBuilder, mClickListener); if (linked && mContentTitle != null) { // Embolden and enlarge the title. Spannable boldSpan = (Spannable) textView.getText(); boldSpan.setSpan( new TextAppearanceSpan( getContext(), android.R.style.TextAppearance_Medium), 0, mContentTitle.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(boldSpan); } } /** * Sets the linkable text for the Preference title. * @param contentTitle text to set the Preference title. * @param contentDescription description text to append underneath title, can be null. * @param clickListener OnClickListener for the link portion of the text. */ public void setText( CharSequence contentTitle, @Nullable CharSequence contentDescription, LinkifyUtils.OnClickListener clickListener) { mContentTitle = contentTitle; mContentDescription = contentDescription; mClickListener = clickListener; // sets the title so that the title TextView is not hidden in super.onBindViewHolder() super.setTitle(contentTitle); } /** * Sets the title of the LinkablePreference. resets linkable text for reusability. */ @Override public void setTitle(int titleResId) { mContentTitle = null; mContentDescription = null; super.setTitle(titleResId); } /** * Sets the title of the LinkablePreference. resets linkable text for reusability. */ @Override public void setTitle(CharSequence title) { mContentTitle = null; mContentDescription = null; super.setTitle(title); } } Loading
res/values/strings.xml +2 −0 Original line number Diff line number Diff line Loading @@ -1634,6 +1634,8 @@ <string name="wifi_cellular_data_fallback_summary">Use cellular data when Wi\u2011Fi has no Internet access. Data usage may apply.</string> <!-- Action bar text message to manually add a wifi network [CHAR LIMIT=20]--> <string name="wifi_add_network">Add network</string> <!-- Action bar title to open additional Wi-Fi settings--> <string name="wifi_configure_settings_preference_title">Wi\u2011Fi preferences</string> <!-- Header for the list of wifi networks--> <string name="wifi_access_points">Wi\u2011Fi networks</string> <!-- Menu option to do WPS Push Button [CHAR LIMIT=25]--> Loading
res/xml/wifi_configure_settings.xml +0 −5 Original line number Diff line number Diff line Loading @@ -17,11 +17,6 @@ <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" android:title="@string/wifi_configure_titlebar"> <Preference android:key="saved_networks" android:title="@string/wifi_saved_access_points_label" android:fragment="com.android.settings.wifi.SavedAccessPointsWifiSettings" /> <!-- android:dependency="enable_wifi" --> <ListPreference android:key="sleep_policy" Loading
res/xml/wifi_settings.xml +15 −6 Original line number Diff line number Diff line Loading @@ -14,14 +14,23 @@ limitations under the License. --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res/com.android.settings" android:title="@string/wifi_settings" settings:keywords="@string/keywords_wifi"> <!-- Needed so PreferenceGroupAdapter allows AccessPointPreference to be recycled. Removed in onResume --> <com.android.settings.wifi.LongPressAccessPointPreference android:key="dummy" /> <PreferenceCategory android:key="access_points"/> <PreferenceCategory android:key="additional_settings"> <Preference android:key="configure_settings" android:title="@string/wifi_configure_settings_preference_title" android:fragment="com.android.settings.wifi.ConfigureWifiSettings" /> <Preference android:key="saved_networks" android:title="@string/wifi_saved_access_points_label" android:fragment="com.android.settings.wifi.SavedAccessPointsWifiSettings" /> </PreferenceCategory> </PreferenceScreen>
src/com/android/settings/wifi/ConfigureWifiSettings.java +0 −1 Original line number Diff line number Diff line Loading @@ -58,7 +58,6 @@ public class ConfigureWifiSettings extends DashboardFragment { mWifiManager = (WifiManager) getSystemService(WIFI_SERVICE); final List<PreferenceController> controllers = new ArrayList<>(); controllers.add(new WifiInfoPreferenceController(context, getLifecycle(), mWifiManager)); controllers.add(new SavedNetworkPreferenceController(context, mWifiManager)); controllers.add(new CellularFallbackPreferenceController(context)); controllers.add(new AllowRecommendationPreferenceController(context)); controllers.add(new NotifyOpenNetworksPreferenceController(context, getLifecycle())); Loading
src/com/android/settings/wifi/LinkablePreference.java 0 → 100644 +119 −0 Original line number Diff line number Diff line /* * Copyright (C) 2017 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.wifi; import android.content.Context; import android.support.annotation.Nullable; import android.support.v7.preference.Preference; import android.support.v7.preference.PreferenceViewHolder; import android.text.Spannable; import android.text.style.TextAppearanceSpan; import android.util.AttributeSet; import android.widget.TextView; import com.android.settings.LinkifyUtils; /** * A preference with a title that can have linkable content on click. */ public class LinkablePreference extends Preference { private LinkifyUtils.OnClickListener mClickListener; private CharSequence mContentTitle; private CharSequence mContentDescription; public LinkablePreference(Context ctx, AttributeSet attrs, int defStyle) { super(ctx, attrs, defStyle); setSelectable(false); } public LinkablePreference(Context ctx, AttributeSet attrs) { super(ctx, attrs); setSelectable(false); } public LinkablePreference(Context ctx) { super(ctx); setSelectable(false); } @Override public void onBindViewHolder(PreferenceViewHolder view) { super.onBindViewHolder(view); TextView textView = (TextView) view.findViewById(android.R.id.title); if (textView == null || mContentTitle == null || mClickListener == null) { return; } textView.setSingleLine(false); StringBuilder contentBuilder = new StringBuilder().append(mContentTitle); if (mContentDescription != null) { contentBuilder.append("\n\n"); contentBuilder.append(mContentDescription); } boolean linked = LinkifyUtils.linkify(textView, contentBuilder, mClickListener); if (linked && mContentTitle != null) { // Embolden and enlarge the title. Spannable boldSpan = (Spannable) textView.getText(); boldSpan.setSpan( new TextAppearanceSpan( getContext(), android.R.style.TextAppearance_Medium), 0, mContentTitle.length(), Spannable.SPAN_INCLUSIVE_EXCLUSIVE); textView.setText(boldSpan); } } /** * Sets the linkable text for the Preference title. * @param contentTitle text to set the Preference title. * @param contentDescription description text to append underneath title, can be null. * @param clickListener OnClickListener for the link portion of the text. */ public void setText( CharSequence contentTitle, @Nullable CharSequence contentDescription, LinkifyUtils.OnClickListener clickListener) { mContentTitle = contentTitle; mContentDescription = contentDescription; mClickListener = clickListener; // sets the title so that the title TextView is not hidden in super.onBindViewHolder() super.setTitle(contentTitle); } /** * Sets the title of the LinkablePreference. resets linkable text for reusability. */ @Override public void setTitle(int titleResId) { mContentTitle = null; mContentDescription = null; super.setTitle(titleResId); } /** * Sets the title of the LinkablePreference. resets linkable text for reusability. */ @Override public void setTitle(CharSequence title) { mContentTitle = null; mContentDescription = null; super.setTitle(title); } }