Update account list if account description changes
Editing the account description occurs in a different fragment. As such, we need to notify the fragment in charge of the account list whenever the description is updated. We already have a callback mechanism, so, expand that to send notifications of any property change. bug 3388586 Change-Id: I02475233f7f333db57c49ceaf908dbfa69c86ca6
This commit is contained in:
parent
3a4a1ac834
commit
34704851e9
@ -68,7 +68,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
private static final String BUNDLE_KEY_ACCOUNT_ID = "AccountSettingsFragment.AccountId";
|
||||
|
||||
private static final String PREFERENCE_CATEGORY_TOP = "account_settings";
|
||||
private static final String PREFERENCE_DESCRIPTION = "account_description";
|
||||
public static final String PREFERENCE_DESCRIPTION = "account_description";
|
||||
private static final String PREFERENCE_NAME = "account_name";
|
||||
private static final String PREFERENCE_SIGNATURE = "account_signature";
|
||||
private static final String PREFERENCE_FREQUENCY = "account_check_frequency";
|
||||
@ -122,6 +122,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
* Callback interface that owning activities must provide
|
||||
*/
|
||||
public interface Callback {
|
||||
public void onSettingsChanged(Account account, String preference, Object value);
|
||||
public void onIncomingSettings(Account account);
|
||||
public void onOutgoingSettings(Account account);
|
||||
public void abandonEdit();
|
||||
@ -130,6 +131,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
|
||||
private static class EmptyCallback implements Callback {
|
||||
public static final Callback INSTANCE = new EmptyCallback();
|
||||
@Override public void onSettingsChanged(Account account, String preference, Object value) {}
|
||||
@Override public void onIncomingSettings(Account account) {}
|
||||
@Override public void onOutgoingSettings(Account account) {}
|
||||
@Override public void abandonEdit() {}
|
||||
@ -372,7 +374,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
}
|
||||
mAccountDescription.setSummary(summary);
|
||||
mAccountDescription.setText(summary);
|
||||
onPreferenceChanged();
|
||||
onPreferenceChanged(PREFERENCE_DESCRIPTION, summary);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@ -387,7 +389,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
if (!TextUtils.isEmpty(summary)) {
|
||||
mAccountName.setSummary(summary);
|
||||
mAccountName.setText(summary);
|
||||
onPreferenceChanged();
|
||||
onPreferenceChanged(PREFERENCE_NAME, summary);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@ -407,7 +409,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
signature = "";
|
||||
}
|
||||
mAccountSignature.setText(signature);
|
||||
onPreferenceChanged();
|
||||
onPreferenceChanged(PREFERENCE_SIGNATURE, signature);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -430,7 +432,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
int index = mCheckFrequency.findIndexOfValue(summary);
|
||||
mCheckFrequency.setSummary(mCheckFrequency.getEntries()[index]);
|
||||
mCheckFrequency.setValue(summary);
|
||||
onPreferenceChanged();
|
||||
onPreferenceChanged(PREFERENCE_FREQUENCY, newValue);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -451,7 +453,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
int index = mSyncWindow.findIndexOfValue(summary);
|
||||
mSyncWindow.setSummary(mSyncWindow.getEntries()[index]);
|
||||
mSyncWindow.setValue(summary);
|
||||
onPreferenceChanged();
|
||||
onPreferenceChanged(preference.getKey(), newValue);
|
||||
return false;
|
||||
}
|
||||
});
|
||||
@ -584,7 +586,7 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
private Preference.OnPreferenceChangeListener mPreferenceChangeListener =
|
||||
new Preference.OnPreferenceChangeListener() {
|
||||
public boolean onPreferenceChange(Preference preference, Object newValue) {
|
||||
onPreferenceChanged();
|
||||
onPreferenceChanged(preference.getKey(), newValue);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
@ -592,7 +594,8 @@ public class AccountSettingsFragment extends PreferenceFragment {
|
||||
/**
|
||||
* Called any time a preference is changed.
|
||||
*/
|
||||
private void onPreferenceChanged() {
|
||||
private void onPreferenceChanged(String preference, Object value) {
|
||||
mCallback.onSettingsChanged(mAccount, preference, value);
|
||||
mSaveOnExit = true;
|
||||
}
|
||||
|
||||
|
@ -94,7 +94,6 @@ public class AccountSettingsXL extends PreferenceActivity {
|
||||
private Header mRequestedAccountHeader;
|
||||
private Header[] mAccountListHeaders;
|
||||
private Header mAppPreferencesHeader;
|
||||
private int mCurrentHeaderPosition;
|
||||
/* package */ Fragment mCurrentFragment;
|
||||
private long mDeletingAccountId = -1;
|
||||
private boolean mShowDebugMenu;
|
||||
@ -474,7 +473,6 @@ public class AccountSettingsXL extends PreferenceActivity {
|
||||
}
|
||||
|
||||
// Process header click normally
|
||||
mCurrentHeaderPosition = position;
|
||||
super.onHeaderClick(header, position);
|
||||
}
|
||||
|
||||
@ -484,7 +482,6 @@ public class AccountSettingsXL extends PreferenceActivity {
|
||||
* with a dialog, and the user OK'd it.
|
||||
*/
|
||||
private void forceSwitchHeader(int position) {
|
||||
mCurrentHeaderPosition = position;
|
||||
// Clear the current fragment; we're navigating away
|
||||
mCurrentFragment = null;
|
||||
// Ensure the UI visually shows the correct header selected
|
||||
@ -526,6 +523,9 @@ public class AccountSettingsXL extends PreferenceActivity {
|
||||
* Callbacks for AccountSettingsFragment
|
||||
*/
|
||||
private class AccountSettingsFragmentCallback implements AccountSettingsFragment.Callback {
|
||||
public void onSettingsChanged(Account account, String preference, Object value) {
|
||||
AccountSettingsXL.this.onSettingsChanged(account, preference, value);
|
||||
}
|
||||
public void onIncomingSettings(Account account) {
|
||||
AccountSettingsXL.this.onIncomingSettings(account);
|
||||
}
|
||||
@ -570,6 +570,23 @@ public class AccountSettingsXL extends PreferenceActivity {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Some of the settings have changed. Update internal state as necessary.
|
||||
*/
|
||||
public void onSettingsChanged(Account account, String preference, Object value) {
|
||||
if (AccountSettingsFragment.PREFERENCE_DESCRIPTION.equals(preference)) {
|
||||
for (Header header : mAccountListHeaders) {
|
||||
if (header.id == account.mId) {
|
||||
// Manually tweak the header title. We cannot rebuild the header list from
|
||||
// an account cursor as the account database has not been saved yet.
|
||||
header.title = value.toString();
|
||||
invalidateHeaders();
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Dispatch to edit incoming settings.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user