Merge "Change to not call update() if APN is not modified." into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
7cab6a9a17
@@ -64,6 +64,7 @@ public class ApnEditor extends SettingsPreferenceFragment
|
|||||||
implements OnPreferenceChangeListener, OnKeyListener {
|
implements OnPreferenceChangeListener, OnKeyListener {
|
||||||
|
|
||||||
private final static String TAG = ApnEditor.class.getSimpleName();
|
private final static String TAG = ApnEditor.class.getSimpleName();
|
||||||
|
private final static boolean VDBG = false; // STOPSHIP if true
|
||||||
|
|
||||||
private final static String SAVED_POS = "pos";
|
private final static String SAVED_POS = "pos";
|
||||||
private final static String KEY_AUTH_TYPE = "auth_type";
|
private final static String KEY_AUTH_TYPE = "auth_type";
|
||||||
@@ -784,6 +785,46 @@ public class ApnEditor extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add key, value to cv and compare the value against the value at index in mCursor. Return true
|
||||||
|
* if values are different. assumeDiff indicates if values can be assumed different in which
|
||||||
|
* case no comparison is needed.
|
||||||
|
* @return true if value is different from the value at index in mCursor
|
||||||
|
*/
|
||||||
|
boolean setStringValueAndCheckIfDiff(ContentValues cv, String key, String value,
|
||||||
|
boolean assumeDiff, int index) {
|
||||||
|
cv.put(key, value);
|
||||||
|
String valueFromCursor = mCursor.getString(index);
|
||||||
|
if (VDBG) {
|
||||||
|
Log.d(TAG, "setStringValueAndCheckIfDiff: assumeDiff: " + assumeDiff
|
||||||
|
+ " key: " + key
|
||||||
|
+ " value: '" + value
|
||||||
|
+ "' valueFromCursor: '" + valueFromCursor + "'");
|
||||||
|
}
|
||||||
|
return assumeDiff
|
||||||
|
|| !((TextUtils.isEmpty(value) && TextUtils.isEmpty(valueFromCursor))
|
||||||
|
|| (value != null && value.equals(valueFromCursor)));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add key, value to cv and compare the value against the value at index in mCursor. Return true
|
||||||
|
* if values are different. assumeDiff indicates if values can be assumed different in which
|
||||||
|
* case no comparison is needed.
|
||||||
|
* @return true if value is different from the value at index in mCursor
|
||||||
|
*/
|
||||||
|
boolean setIntValueAndCheckIfDiff(ContentValues cv, String key, int value,
|
||||||
|
boolean assumeDiff, int index) {
|
||||||
|
cv.put(key, value);
|
||||||
|
int valueFromCursor = mCursor.getInt(index);
|
||||||
|
if (VDBG) {
|
||||||
|
Log.d(TAG, "setIntValueAndCheckIfDiff: assumeDiff: " + assumeDiff
|
||||||
|
+ " key: " + key
|
||||||
|
+ " value: '" + value
|
||||||
|
+ "' valueFromCursor: '" + valueFromCursor + "'");
|
||||||
|
}
|
||||||
|
return assumeDiff || value != valueFromCursor;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Check the key fields' validity and save if valid.
|
* Check the key fields' validity and save if valid.
|
||||||
* @param force save even if the fields are not valid, if the app is
|
* @param force save even if the fields are not valid, if the app is
|
||||||
@@ -820,33 +861,110 @@ public class ApnEditor extends SettingsPreferenceFragment
|
|||||||
}
|
}
|
||||||
|
|
||||||
ContentValues values = new ContentValues();
|
ContentValues values = new ContentValues();
|
||||||
|
// call update() if it's a new APN. If not, check if any field differs from the db value;
|
||||||
|
// if any diff is found update() should be called
|
||||||
|
boolean callUpdate = mNewApn;
|
||||||
|
|
||||||
// Add a dummy name "Untitled", if the user exits the screen without adding a name but
|
// Add a dummy name "Untitled", if the user exits the screen without adding a name but
|
||||||
// entered other information worth keeping.
|
// entered other information worth keeping.
|
||||||
values.put(Telephony.Carriers.NAME,
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
name.length() < 1 ? getResources().getString(R.string.untitled_apn) : name);
|
Telephony.Carriers.NAME,
|
||||||
values.put(Telephony.Carriers.APN, apn);
|
name.length() < 1 ? getResources().getString(R.string.untitled_apn) : name,
|
||||||
values.put(Telephony.Carriers.PROXY, checkNotSet(mProxy.getText()));
|
callUpdate,
|
||||||
values.put(Telephony.Carriers.PORT, checkNotSet(mPort.getText()));
|
NAME_INDEX);
|
||||||
values.put(Telephony.Carriers.MMSPROXY, checkNotSet(mMmsProxy.getText()));
|
|
||||||
values.put(Telephony.Carriers.MMSPORT, checkNotSet(mMmsPort.getText()));
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
values.put(Telephony.Carriers.USER, checkNotSet(mUser.getText()));
|
Telephony.Carriers.APN,
|
||||||
values.put(Telephony.Carriers.SERVER, checkNotSet(mServer.getText()));
|
apn,
|
||||||
values.put(Telephony.Carriers.PASSWORD, checkNotSet(mPassword.getText()));
|
callUpdate,
|
||||||
values.put(Telephony.Carriers.MMSC, checkNotSet(mMmsc.getText()));
|
APN_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.PROXY,
|
||||||
|
checkNotSet(mProxy.getText()),
|
||||||
|
callUpdate,
|
||||||
|
PROXY_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.PORT,
|
||||||
|
checkNotSet(mPort.getText()),
|
||||||
|
callUpdate,
|
||||||
|
PORT_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.MMSPROXY,
|
||||||
|
checkNotSet(mMmsProxy.getText()),
|
||||||
|
callUpdate,
|
||||||
|
MMSPROXY_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.MMSPORT,
|
||||||
|
checkNotSet(mMmsPort.getText()),
|
||||||
|
callUpdate,
|
||||||
|
MMSPORT_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.USER,
|
||||||
|
checkNotSet(mUser.getText()),
|
||||||
|
callUpdate,
|
||||||
|
USER_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.SERVER,
|
||||||
|
checkNotSet(mServer.getText()),
|
||||||
|
callUpdate,
|
||||||
|
SERVER_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.PASSWORD,
|
||||||
|
checkNotSet(mPassword.getText()),
|
||||||
|
callUpdate,
|
||||||
|
PASSWORD_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.MMSC,
|
||||||
|
checkNotSet(mMmsc.getText()),
|
||||||
|
callUpdate,
|
||||||
|
MMSC_INDEX);
|
||||||
|
|
||||||
String authVal = mAuthType.getValue();
|
String authVal = mAuthType.getValue();
|
||||||
if (authVal != null) {
|
if (authVal != null) {
|
||||||
values.put(Telephony.Carriers.AUTH_TYPE, Integer.parseInt(authVal));
|
callUpdate = setIntValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.AUTH_TYPE,
|
||||||
|
Integer.parseInt(authVal),
|
||||||
|
callUpdate,
|
||||||
|
AUTH_TYPE_INDEX);
|
||||||
}
|
}
|
||||||
|
|
||||||
values.put(Telephony.Carriers.PROTOCOL, checkNotSet(mProtocol.getValue()));
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
values.put(Telephony.Carriers.ROAMING_PROTOCOL, checkNotSet(mRoamingProtocol.getValue()));
|
Telephony.Carriers.PROTOCOL,
|
||||||
|
checkNotSet(mProtocol.getValue()),
|
||||||
|
callUpdate,
|
||||||
|
PROTOCOL_INDEX);
|
||||||
|
|
||||||
values.put(Telephony.Carriers.TYPE, checkNotSet(mApnType.getText()));
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.ROAMING_PROTOCOL,
|
||||||
|
checkNotSet(mRoamingProtocol.getValue()),
|
||||||
|
callUpdate,
|
||||||
|
ROAMING_PROTOCOL_INDEX);
|
||||||
|
|
||||||
values.put(Telephony.Carriers.MCC, mcc);
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
values.put(Telephony.Carriers.MNC, mnc);
|
Telephony.Carriers.TYPE,
|
||||||
|
checkNotSet(mApnType.getText()),
|
||||||
|
callUpdate,
|
||||||
|
TYPE_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.MCC,
|
||||||
|
mcc,
|
||||||
|
callUpdate,
|
||||||
|
MCC_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.MNC,
|
||||||
|
mnc,
|
||||||
|
callUpdate,
|
||||||
|
MNC_INDEX);
|
||||||
|
|
||||||
values.put(Telephony.Carriers.NUMERIC, mcc + mnc);
|
values.put(Telephony.Carriers.NUMERIC, mcc + mnc);
|
||||||
|
|
||||||
@@ -866,7 +984,11 @@ public class ApnEditor extends SettingsPreferenceFragment
|
|||||||
bearerBitmask |= ServiceState.getBitmaskForTech(Integer.parseInt(bearer));
|
bearerBitmask |= ServiceState.getBitmaskForTech(Integer.parseInt(bearer));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
values.put(Telephony.Carriers.BEARER_BITMASK, bearerBitmask);
|
callUpdate = setIntValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.BEARER_BITMASK,
|
||||||
|
bearerBitmask,
|
||||||
|
callUpdate,
|
||||||
|
BEARER_BITMASK_INDEX);
|
||||||
|
|
||||||
int bearerVal;
|
int bearerVal;
|
||||||
if (bearerBitmask == 0 || mBearerInitialVal == 0) {
|
if (bearerBitmask == 0 || mBearerInitialVal == 0) {
|
||||||
@@ -879,13 +1001,35 @@ public class ApnEditor extends SettingsPreferenceFragment
|
|||||||
// random tech from the new bitmask??
|
// random tech from the new bitmask??
|
||||||
bearerVal = 0;
|
bearerVal = 0;
|
||||||
}
|
}
|
||||||
values.put(Telephony.Carriers.BEARER, bearerVal);
|
callUpdate = setIntValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.BEARER,
|
||||||
|
bearerVal,
|
||||||
|
callUpdate,
|
||||||
|
BEARER_INDEX);
|
||||||
|
|
||||||
values.put(Telephony.Carriers.MVNO_TYPE, checkNotSet(mMvnoType.getValue()));
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
values.put(Telephony.Carriers.MVNO_MATCH_DATA, checkNotSet(mMvnoMatchData.getText()));
|
Telephony.Carriers.MVNO_TYPE,
|
||||||
|
checkNotSet(mMvnoType.getValue()),
|
||||||
|
callUpdate,
|
||||||
|
MVNO_TYPE_INDEX);
|
||||||
|
|
||||||
values.put(Telephony.Carriers.CARRIER_ENABLED, mCarrierEnabled.isChecked() ? 1 : 0);
|
callUpdate = setStringValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.MVNO_MATCH_DATA,
|
||||||
|
checkNotSet(mMvnoMatchData.getText()),
|
||||||
|
callUpdate,
|
||||||
|
MVNO_MATCH_DATA_INDEX);
|
||||||
|
|
||||||
|
callUpdate = setIntValueAndCheckIfDiff(values,
|
||||||
|
Telephony.Carriers.CARRIER_ENABLED,
|
||||||
|
mCarrierEnabled.isChecked() ? 1 : 0,
|
||||||
|
callUpdate,
|
||||||
|
CARRIER_ENABLED_INDEX);
|
||||||
|
|
||||||
|
if (callUpdate) {
|
||||||
getContentResolver().update(mUri, values, null, null);
|
getContentResolver().update(mUri, values, null, null);
|
||||||
|
} else {
|
||||||
|
if (VDBG) Log.d(TAG, "validateAndSave: not calling update()");
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user