*/
public class AppPreference extends ManageablePreference {
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 mName;
update();
}
- public int getState() {
- return mState;
- }
-
- public void setState(int state) {
- mState = state;
- update();
- }
-
private void update() {
if (mPackageName == null || mUserId == UserHandle.USER_NULL) {
return;
}
- setSummary(getSummaryString(mState == STATE_DISCONNECTED ? STATE_NONE : mState));
-
mName = mPackageName;
Drawable icon = null;
}
setTitle(mName);
setIcon(icon);
+ updateSummary();
notifyHierarchyChanged();
}
public class LegacyVpnPreference extends ManageablePreference {
private VpnProfile mProfile;
- /** One of the STATE_* fields from LegacyVpnInfo, or STATE_NONE */
- private int mState = STATE_NONE;
-
LegacyVpnPreference(Context context) {
super(context, null /* attrs */);
}
public void setProfile(VpnProfile profile) {
mProfile = profile;
- update();
- }
-
- public void setState(int state) {
- mState = state;
- update();
- }
-
- private void update() {
- setSummary(getSummaryString(mState));
if (mProfile != null) {
setIcon(R.mipmap.ic_launcher_settings);
setTitle(mProfile.name);
}
super.onClick(v);
}
-
-}
\ No newline at end of file
+}
public static int STATE_NONE = -1;
boolean mIsAlwaysOn = false;
+ int mState = STATE_NONE;
int mUserId;
public ManageablePreference(Context context, AttributeSet attrs) {
return mIsAlwaysOn;
}
+ public int getState() {
+ return mState;
+ }
+
+ public void setState(int state) {
+ mState = state;
+ updateSummary();
+ }
+
public void setAlwaysOn(boolean 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 String[] states = res.getStringArray(R.array.vpn_states);
- String summary = state == STATE_NONE ? "" : states[state];
+ String summary = (mState == STATE_NONE ? "" : states[mState]);
if (mIsAlwaysOn) {
final String alwaysOnString = res.getString(R.string.vpn_always_on_active);
summary = TextUtils.isEmpty(summary) ? alwaysOnString : res.getString(
R.string.join_two_unrelated_items, summary, alwaysOnString);
}
- return summary;
+ setSummary(summary);
}
}