Loading res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -6552,7 +6552,7 @@ <!-- Button label to disconnect from a VPN profile. [CHAR LIMIT=40] --> <string name="vpn_disconnect">Disconnect</string> <!-- Field label to show the version number for a VPN app. [CHAR LIMIT=40] --> <string name="vpn_version">Version <xliff:g id="version" example="3.3.0">%s</xliff:g></string> <string name="vpn_version">Version</string> <!-- Button label to forget a VPN profile [CHAR LIMIT=40] --> <string name="vpn_forget_long">Forget VPN</string> <!-- Dialog message title to set another VPN app to be always-on [CHAR LIMIT=40] --> res/values/styles.xml +10 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,16 @@ <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item> </style> <style name="vpn_app_management_version_title"> <item name="android:textAppearance">?android:attr/textAppearanceListItem</item> <item name="android:textColor">?android:attr/textColorPrimary</item> </style> <style name="vpn_app_management_version_summary"> <item name="android:textAppearance">?android:attr/textAppearanceListItemSecondary</item> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> <style name="TextAppearance" parent="android:TextAppearance.DeviceDefault"/> <style name="TextAppearance.info_label"> Loading res/xml/vpn_app_management.xml +13 −1 Original line number Diff line number Diff line Loading @@ -15,14 +15,24 @@ --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto"> xmlns:settings="http://schemas.android.com/apk/res-auto" orderingFromXml="false" > <!-- To limit the size (in height) of version Preference displayed here, maximum height of TextView need to be set programmingly. Therefore, this Preference got removed from here and will be added dynamically through source code. <Preference android:order="0" android:key="version" android:textColor="?android:attr/textColorSecondary" android:selectable="false"/> --> <com.android.settingslib.RestrictedSwitchPreference android:order="10" android:key="always_on_vpn" android:title="@string/vpn_menu_lockdown" android:defaultValue="false" Loading @@ -32,6 +42,7 @@ settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" /> <com.android.settingslib.RestrictedSwitchPreference android:order="20" android:key="lockdown_vpn" android:title="@string/vpn_require_connection" android:defaultValue="false" Loading @@ -41,6 +52,7 @@ settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" /> <com.android.settingslib.RestrictedPreference android:order="30" android:key="forget_vpn" android:title="@string/vpn_forget_long" android:icon="@drawable/ic_delete" Loading src/com/android/settings/vpn2/AppManagementFragment.java +47 −4 Original line number Diff line number Diff line Loading @@ -35,11 +35,13 @@ import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import android.widget.TextView; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; import com.android.internal.net.VpnConfig; import com.android.internal.util.ArrayUtils; Loading Loading @@ -76,7 +78,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment private String mVpnLabel; // UI preference private Preference mPreferenceVersion; private RestrictedSwitchPreference mPreferenceAlwaysOn; private RestrictedSwitchPreference mPreferenceLockdown; private RestrictedPreference mPreferenceForget; Loading Loading @@ -122,7 +123,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment mConnectivityService = IConnectivityManager.Stub .asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mPreferenceVersion = findPreference(KEY_VERSION); mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN); mPreferenceLockdown = (RestrictedSwitchPreference) findPreference(KEY_LOCKDOWN_VPN); mPreferenceForget = (RestrictedPreference) findPreference(KEY_FORGET_VPN); Loading @@ -138,9 +138,52 @@ public class AppManagementFragment extends SettingsPreferenceFragment boolean isInfoLoaded = loadInfo(); if (isInfoLoaded) { mPreferenceVersion.setTitle( getPrefContext().getString(R.string.vpn_version, mPackageInfo.versionName)); updateUI(); Preference version = getPreferenceScreen().findPreference(KEY_VERSION); if (version != null) { // Version field has been added. return; } /** * Create version field at runtime, and set max height on the display area. * * When long length of text given within version field, a large text area * might be created and inconvenient to the user (User need to scroll * for a long time in order to get to the Preferences after this field.) */ version = new Preference(getPrefContext()) { @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); TextView titleView = (TextView) holder.findViewById(android.R.id.title); if (titleView != null) { titleView.setTextAppearance(R.style.vpn_app_management_version_title); } TextView summaryView = (TextView) holder.findViewById(android.R.id.summary); if (summaryView != null) { summaryView.setTextAppearance(R.style.vpn_app_management_version_summary); // Set max height in summary area. int versionMaxHeight = getListView().getHeight(); summaryView.setMaxHeight(versionMaxHeight); summaryView.setVerticalScrollBarEnabled(false); summaryView.setHorizontallyScrolling(false); } } }; version.setOrder(0); // Set order to 0 in order to be placed // in front of other Preference(s). version.setKey(KEY_VERSION); // Set key to avoid from creating multi instance. version.setTitle(R.string.vpn_version); version.setSummary(mPackageInfo.versionName); version.setSelectable(false); getPreferenceScreen().addPreference(version); } else { finish(); } Loading Loading
res/values/strings.xml +1 −1 Original line number Diff line number Diff line Loading @@ -6552,7 +6552,7 @@ <!-- Button label to disconnect from a VPN profile. [CHAR LIMIT=40] --> <string name="vpn_disconnect">Disconnect</string> <!-- Field label to show the version number for a VPN app. [CHAR LIMIT=40] --> <string name="vpn_version">Version <xliff:g id="version" example="3.3.0">%s</xliff:g></string> <string name="vpn_version">Version</string> <!-- Button label to forget a VPN profile [CHAR LIMIT=40] --> <string name="vpn_forget_long">Forget VPN</string> <!-- Dialog message title to set another VPN app to be always-on [CHAR LIMIT=40] -->
res/values/styles.xml +10 −0 Original line number Diff line number Diff line Loading @@ -197,6 +197,16 @@ <item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item> </style> <style name="vpn_app_management_version_title"> <item name="android:textAppearance">?android:attr/textAppearanceListItem</item> <item name="android:textColor">?android:attr/textColorPrimary</item> </style> <style name="vpn_app_management_version_summary"> <item name="android:textAppearance">?android:attr/textAppearanceListItemSecondary</item> <item name="android:textColor">?android:attr/textColorSecondary</item> </style> <style name="TextAppearance" parent="android:TextAppearance.DeviceDefault"/> <style name="TextAppearance.info_label"> Loading
res/xml/vpn_app_management.xml +13 −1 Original line number Diff line number Diff line Loading @@ -15,14 +15,24 @@ --> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" xmlns:settings="http://schemas.android.com/apk/res-auto"> xmlns:settings="http://schemas.android.com/apk/res-auto" orderingFromXml="false" > <!-- To limit the size (in height) of version Preference displayed here, maximum height of TextView need to be set programmingly. Therefore, this Preference got removed from here and will be added dynamically through source code. <Preference android:order="0" android:key="version" android:textColor="?android:attr/textColorSecondary" android:selectable="false"/> --> <com.android.settingslib.RestrictedSwitchPreference android:order="10" android:key="always_on_vpn" android:title="@string/vpn_menu_lockdown" android:defaultValue="false" Loading @@ -32,6 +42,7 @@ settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" /> <com.android.settingslib.RestrictedSwitchPreference android:order="20" android:key="lockdown_vpn" android:title="@string/vpn_require_connection" android:defaultValue="false" Loading @@ -41,6 +52,7 @@ settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" /> <com.android.settingslib.RestrictedPreference android:order="30" android:key="forget_vpn" android:title="@string/vpn_forget_long" android:icon="@drawable/ic_delete" Loading
src/com/android/settings/vpn2/AppManagementFragment.java +47 −4 Original line number Diff line number Diff line Loading @@ -35,11 +35,13 @@ import android.os.UserHandle; import android.os.UserManager; import android.text.TextUtils; import android.util.Log; import android.widget.TextView; import androidx.annotation.VisibleForTesting; import androidx.appcompat.app.AlertDialog; import androidx.fragment.app.DialogFragment; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; import com.android.internal.net.VpnConfig; import com.android.internal.util.ArrayUtils; Loading Loading @@ -76,7 +78,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment private String mVpnLabel; // UI preference private Preference mPreferenceVersion; private RestrictedSwitchPreference mPreferenceAlwaysOn; private RestrictedSwitchPreference mPreferenceLockdown; private RestrictedPreference mPreferenceForget; Loading Loading @@ -122,7 +123,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment mConnectivityService = IConnectivityManager.Stub .asInterface(ServiceManager.getService(Context.CONNECTIVITY_SERVICE)); mPreferenceVersion = findPreference(KEY_VERSION); mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN); mPreferenceLockdown = (RestrictedSwitchPreference) findPreference(KEY_LOCKDOWN_VPN); mPreferenceForget = (RestrictedPreference) findPreference(KEY_FORGET_VPN); Loading @@ -138,9 +138,52 @@ public class AppManagementFragment extends SettingsPreferenceFragment boolean isInfoLoaded = loadInfo(); if (isInfoLoaded) { mPreferenceVersion.setTitle( getPrefContext().getString(R.string.vpn_version, mPackageInfo.versionName)); updateUI(); Preference version = getPreferenceScreen().findPreference(KEY_VERSION); if (version != null) { // Version field has been added. return; } /** * Create version field at runtime, and set max height on the display area. * * When long length of text given within version field, a large text area * might be created and inconvenient to the user (User need to scroll * for a long time in order to get to the Preferences after this field.) */ version = new Preference(getPrefContext()) { @Override public void onBindViewHolder(PreferenceViewHolder holder) { super.onBindViewHolder(holder); TextView titleView = (TextView) holder.findViewById(android.R.id.title); if (titleView != null) { titleView.setTextAppearance(R.style.vpn_app_management_version_title); } TextView summaryView = (TextView) holder.findViewById(android.R.id.summary); if (summaryView != null) { summaryView.setTextAppearance(R.style.vpn_app_management_version_summary); // Set max height in summary area. int versionMaxHeight = getListView().getHeight(); summaryView.setMaxHeight(versionMaxHeight); summaryView.setVerticalScrollBarEnabled(false); summaryView.setHorizontallyScrolling(false); } } }; version.setOrder(0); // Set order to 0 in order to be placed // in front of other Preference(s). version.setKey(KEY_VERSION); // Set key to avoid from creating multi instance. version.setTitle(R.string.vpn_version); version.setSummary(mPackageInfo.versionName); version.setSelectable(false); getPreferenceScreen().addPreference(version); } else { finish(); } Loading