Merge "[Settings] Move display of VPN version into summary text" into sc-v2-dev
This commit is contained in:
@@ -7452,7 +7452,7 @@
|
|||||||
<!-- Button label to disconnect from a VPN profile. [CHAR LIMIT=40] -->
|
<!-- Button label to disconnect from a VPN profile. [CHAR LIMIT=40] -->
|
||||||
<string name="vpn_disconnect">Disconnect</string>
|
<string name="vpn_disconnect">Disconnect</string>
|
||||||
<!-- Field label to show the version number for a VPN app. [CHAR LIMIT=40] -->
|
<!-- 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] -->
|
<!-- Button label to forget a VPN profile [CHAR LIMIT=40] -->
|
||||||
<string name="vpn_forget_long">Forget VPN</string>
|
<string name="vpn_forget_long">Forget VPN</string>
|
||||||
<!-- Dialog message title to set another VPN app to be always-on [CHAR LIMIT=40] -->
|
<!-- Dialog message title to set another VPN app to be always-on [CHAR LIMIT=40] -->
|
||||||
|
@@ -237,6 +237,16 @@
|
|||||||
<item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item>
|
<item name="android:textAppearance">@android:style/TextAppearance.DeviceDefault.Small</item>
|
||||||
</style>
|
</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="screen_size_imageview_style">
|
<style name="screen_size_imageview_style">
|
||||||
<item name="android:layout_width">48dp</item>
|
<item name="android:layout_width">48dp</item>
|
||||||
<item name="android:layout_height">48dp</item>
|
<item name="android:layout_height">48dp</item>
|
||||||
|
@@ -15,14 +15,24 @@
|
|||||||
-->
|
-->
|
||||||
|
|
||||||
<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-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
|
<Preference
|
||||||
|
android:order="0"
|
||||||
android:key="version"
|
android:key="version"
|
||||||
android:textColor="?android:attr/textColorSecondary"
|
android:textColor="?android:attr/textColorSecondary"
|
||||||
android:selectable="false"/>
|
android:selectable="false"/>
|
||||||
|
-->
|
||||||
|
|
||||||
<com.android.settingslib.RestrictedSwitchPreference
|
<com.android.settingslib.RestrictedSwitchPreference
|
||||||
|
android:order="10"
|
||||||
android:key="always_on_vpn"
|
android:key="always_on_vpn"
|
||||||
android:title="@string/vpn_menu_lockdown"
|
android:title="@string/vpn_menu_lockdown"
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
@@ -32,6 +42,7 @@
|
|||||||
settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" />
|
settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" />
|
||||||
|
|
||||||
<com.android.settingslib.RestrictedSwitchPreference
|
<com.android.settingslib.RestrictedSwitchPreference
|
||||||
|
android:order="20"
|
||||||
android:key="lockdown_vpn"
|
android:key="lockdown_vpn"
|
||||||
android:title="@string/vpn_require_connection"
|
android:title="@string/vpn_require_connection"
|
||||||
android:defaultValue="false"
|
android:defaultValue="false"
|
||||||
@@ -41,6 +52,7 @@
|
|||||||
settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" />
|
settings:restrictedSwitchSummary="@string/disabled_by_admin_summary_text" />
|
||||||
|
|
||||||
<com.android.settingslib.RestrictedPreference
|
<com.android.settingslib.RestrictedPreference
|
||||||
|
android:order="30"
|
||||||
android:key="forget_vpn"
|
android:key="forget_vpn"
|
||||||
android:title="@string/vpn_forget_long"
|
android:title="@string/vpn_forget_long"
|
||||||
android:icon="@drawable/ic_delete"
|
android:icon="@drawable/ic_delete"
|
||||||
|
@@ -34,11 +34,13 @@ import android.os.UserHandle;
|
|||||||
import android.os.UserManager;
|
import android.os.UserManager;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.widget.TextView;
|
||||||
|
|
||||||
import androidx.annotation.VisibleForTesting;
|
import androidx.annotation.VisibleForTesting;
|
||||||
import androidx.appcompat.app.AlertDialog;
|
import androidx.appcompat.app.AlertDialog;
|
||||||
import androidx.fragment.app.DialogFragment;
|
import androidx.fragment.app.DialogFragment;
|
||||||
import androidx.preference.Preference;
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceViewHolder;
|
||||||
|
|
||||||
import com.android.internal.net.VpnConfig;
|
import com.android.internal.net.VpnConfig;
|
||||||
import com.android.internal.util.ArrayUtils;
|
import com.android.internal.util.ArrayUtils;
|
||||||
@@ -77,7 +79,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment
|
|||||||
private String mVpnLabel;
|
private String mVpnLabel;
|
||||||
|
|
||||||
// UI preference
|
// UI preference
|
||||||
private Preference mPreferenceVersion;
|
|
||||||
private RestrictedSwitchPreference mPreferenceAlwaysOn;
|
private RestrictedSwitchPreference mPreferenceAlwaysOn;
|
||||||
private RestrictedSwitchPreference mPreferenceLockdown;
|
private RestrictedSwitchPreference mPreferenceLockdown;
|
||||||
private RestrictedPreference mPreferenceForget;
|
private RestrictedPreference mPreferenceForget;
|
||||||
@@ -122,7 +123,6 @@ public class AppManagementFragment extends SettingsPreferenceFragment
|
|||||||
mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class);
|
mDevicePolicyManager = getContext().getSystemService(DevicePolicyManager.class);
|
||||||
mVpnManager = getContext().getSystemService(VpnManager.class);
|
mVpnManager = getContext().getSystemService(VpnManager.class);
|
||||||
|
|
||||||
mPreferenceVersion = findPreference(KEY_VERSION);
|
|
||||||
mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN);
|
mPreferenceAlwaysOn = (RestrictedSwitchPreference) findPreference(KEY_ALWAYS_ON_VPN);
|
||||||
mPreferenceLockdown = (RestrictedSwitchPreference) findPreference(KEY_LOCKDOWN_VPN);
|
mPreferenceLockdown = (RestrictedSwitchPreference) findPreference(KEY_LOCKDOWN_VPN);
|
||||||
mPreferenceForget = (RestrictedPreference) findPreference(KEY_FORGET_VPN);
|
mPreferenceForget = (RestrictedPreference) findPreference(KEY_FORGET_VPN);
|
||||||
@@ -138,9 +138,52 @@ public class AppManagementFragment extends SettingsPreferenceFragment
|
|||||||
|
|
||||||
boolean isInfoLoaded = loadInfo();
|
boolean isInfoLoaded = loadInfo();
|
||||||
if (isInfoLoaded) {
|
if (isInfoLoaded) {
|
||||||
mPreferenceVersion.setTitle(
|
|
||||||
getPrefContext().getString(R.string.vpn_version, mPackageInfo.versionName));
|
|
||||||
updateUI();
|
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 {
|
} else {
|
||||||
finish();
|
finish();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user