Merge "One updateSummary method called by all VPN prefs"

This commit is contained in:
Robin Lee
2016-04-19 21:02:47 +00:00
committed by Android (Google) Code Review
3 changed files with 20 additions and 33 deletions

View File

@@ -32,9 +32,8 @@ import com.android.internal.net.VpnConfig;
*/ */
public class AppPreference extends ManageablePreference { public class AppPreference extends ManageablePreference {
public static final int STATE_CONNECTED = LegacyVpnInfo.STATE_CONNECTED; public static final int STATE_CONNECTED = LegacyVpnInfo.STATE_CONNECTED;
public static final int STATE_DISCONNECTED = LegacyVpnInfo.STATE_DISCONNECTED; public static final int STATE_DISCONNECTED = STATE_NONE;
private int mState = STATE_DISCONNECTED;
private String mPackageName; private String mPackageName;
private String mName; private String mName;
@@ -70,22 +69,11 @@ public class AppPreference extends ManageablePreference {
update(); update();
} }
public int getState() {
return mState;
}
public void setState(int state) {
mState = state;
update();
}
private void update() { private void update() {
if (mPackageName == null || mUserId == UserHandle.USER_NULL) { if (mPackageName == null || mUserId == UserHandle.USER_NULL) {
return; return;
} }
setSummary(getSummaryString(mState == STATE_DISCONNECTED ? STATE_NONE : mState));
mName = mPackageName; mName = mPackageName;
Drawable icon = null; Drawable icon = null;
@@ -113,6 +101,7 @@ public class AppPreference extends ManageablePreference {
} }
setTitle(mName); setTitle(mName);
setIcon(icon); setIcon(icon);
updateSummary();
notifyHierarchyChanged(); notifyHierarchyChanged();
} }

View File

@@ -31,9 +31,6 @@ import static com.android.internal.net.LegacyVpnInfo.STATE_CONNECTED;
public class LegacyVpnPreference extends ManageablePreference { public class LegacyVpnPreference extends ManageablePreference {
private VpnProfile mProfile; private VpnProfile mProfile;
/** One of the STATE_* fields from LegacyVpnInfo, or STATE_NONE */
private int mState = STATE_NONE;
LegacyVpnPreference(Context context) { LegacyVpnPreference(Context context) {
super(context, null /* attrs */); super(context, null /* attrs */);
} }
@@ -44,16 +41,6 @@ public class LegacyVpnPreference extends ManageablePreference {
public void setProfile(VpnProfile profile) { public void setProfile(VpnProfile profile) {
mProfile = profile; mProfile = profile;
update();
}
public void setState(int state) {
mState = state;
update();
}
private void update() {
setSummary(getSummaryString(mState));
if (mProfile != null) { if (mProfile != null) {
setIcon(R.mipmap.ic_launcher_settings); setIcon(R.mipmap.ic_launcher_settings);
setTitle(mProfile.name); setTitle(mProfile.name);
@@ -93,5 +80,4 @@ public class LegacyVpnPreference extends ManageablePreference {
} }
super.onClick(v); super.onClick(v);
} }
} }

View File

@@ -34,6 +34,7 @@ public abstract class ManageablePreference extends GearPreference {
public static int STATE_NONE = -1; public static int STATE_NONE = -1;
boolean mIsAlwaysOn = false; boolean mIsAlwaysOn = false;
int mState = STATE_NONE;
int mUserId; int mUserId;
public ManageablePreference(Context context, AttributeSet attrs) { public ManageablePreference(Context context, AttributeSet attrs) {
@@ -56,24 +57,35 @@ public abstract class ManageablePreference extends GearPreference {
return mIsAlwaysOn; return mIsAlwaysOn;
} }
public int getState() {
return mState;
}
public void setState(int state) {
mState = state;
updateSummary();
}
public void setAlwaysOn(boolean isEnabled) { public void setAlwaysOn(boolean isEnabled) {
mIsAlwaysOn = isEnabled; mIsAlwaysOn = isEnabled;
updateSummary();
} }
/** /**
* State is not shown for {@code STATE_NONE} * Update the preference summary string (see {@see Preference#setSummary}) with a string
* reflecting connection status and always-on setting.
* *
* @return summary string showing current connection state and always-on-vpn state * State is not shown for {@code STATE_NONE}.
*/ */
protected String getSummaryString(int state) { protected void updateSummary() {
final Resources res = getContext().getResources(); final Resources res = getContext().getResources();
final String[] states = res.getStringArray(R.array.vpn_states); final String[] states = res.getStringArray(R.array.vpn_states);
String summary = state == STATE_NONE ? "" : states[state]; String summary = (mState == STATE_NONE ? "" : states[mState]);
if (mIsAlwaysOn) { if (mIsAlwaysOn) {
final String alwaysOnString = res.getString(R.string.vpn_always_on_active); final String alwaysOnString = res.getString(R.string.vpn_always_on_active);
summary = TextUtils.isEmpty(summary) ? alwaysOnString : res.getString( summary = TextUtils.isEmpty(summary) ? alwaysOnString : res.getString(
R.string.join_two_unrelated_items, summary, alwaysOnString); R.string.join_two_unrelated_items, summary, alwaysOnString);
} }
return summary; setSummary(summary);
} }
} }