Fix for bug #3325868 (add accounts should not use the settings activity as part of its flow)

- suppress non needed AccountSyncSettingsInAddAccount class

Change-Id: I27ba9ea2d45a5e2c9ec1d2ed6033f6d68e100a3f
This commit is contained in:
Fabrice Di Meglio
2011-01-06 13:46:43 -08:00
parent b1a234ef46
commit ce9f77bb55
3 changed files with 44 additions and 124 deletions

View File

@@ -1050,20 +1050,6 @@
android:resource="@id/sync_settings" /> android:resource="@id/sync_settings" />
</activity> </activity>
<activity android:name="Settings$AccountSyncSettingsInAddAccountActivity"
android:label="@string/account_sync_settings_title"
android:theme="@android:style/Theme.Holo">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<action android:name="android.settings.ACCOUNT_SYNC_SETTINGS_ADD_ACCOUNT" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="com.android.settings.FRAGMENT_CLASS"
android:value="com.android.settings.accounts.AccountSyncSettingsInAddAccount" />
<meta-data android:name="com.android.settings.TOP_LEVEL_HEADER_ID"
android:resource="@id/sync_settings" />
</activity>
<activity android:name="com.android.settings.accounts.AddAccountSettings" <activity android:name="com.android.settings.accounts.AddAccountSettings"
android:theme="@android:style/Theme.Translucent.NoTitleBar" android:theme="@android:style/Theme.Translucent.NoTitleBar"
android:label="@string/header_add_an_account"> android:label="@string/header_add_an_account">

View File

@@ -81,8 +81,6 @@ public class AccountSyncSettings extends AccountPreferenceBase {
private ArrayList<SyncStateCheckBoxPreference> mCheckBoxes = private ArrayList<SyncStateCheckBoxPreference> mCheckBoxes =
new ArrayList<SyncStateCheckBoxPreference>(); new ArrayList<SyncStateCheckBoxPreference>();
private ArrayList<String> mInvisibleAdapters = Lists.newArrayList(); private ArrayList<String> mInvisibleAdapters = Lists.newArrayList();
// Tell if we will use the current SyncManager data or just the User input
protected boolean mUseSyncManagerFeedsState = true;
@Override @Override
public Dialog onCreateDialog(final int id) { public Dialog onCreateDialog(final int id) {
@@ -264,7 +262,7 @@ public class AccountSyncSettings extends AccountPreferenceBase {
@Override @Override
public boolean onPreferenceTreeClick(PreferenceScreen preferences, Preference preference) { public boolean onPreferenceTreeClick(PreferenceScreen preferences, Preference preference) {
if (preference instanceof SyncStateCheckBoxPreference && mUseSyncManagerFeedsState) { if (preference instanceof SyncStateCheckBoxPreference) {
SyncStateCheckBoxPreference syncPref = (SyncStateCheckBoxPreference) preference; SyncStateCheckBoxPreference syncPref = (SyncStateCheckBoxPreference) preference;
String authority = syncPref.getAuthority(); String authority = syncPref.getAuthority();
Account account = syncPref.getAccount(); Account account = syncPref.getAccount();
@@ -345,10 +343,10 @@ public class AccountSyncSettings extends AccountPreferenceBase {
@Override @Override
protected void onSyncStateUpdated() { protected void onSyncStateUpdated() {
if (!isResumed()) return; if (!isResumed()) return;
setFeedsState(mUseSyncManagerFeedsState); setFeedsState();
} }
private void setFeedsState(boolean useSyncManager) { private void setFeedsState() {
// iterate over all the preferences, setting the state properly for each // iterate over all the preferences, setting the state properly for each
Date date = new Date(); Date date = new Date();
List<SyncInfo> currentSyncs = ContentResolver.getCurrentSyncs(); List<SyncInfo> currentSyncs = ContentResolver.getCurrentSyncs();
@@ -367,53 +365,49 @@ public class AccountSyncSettings extends AccountPreferenceBase {
String authority = syncPref.getAuthority(); String authority = syncPref.getAuthority();
Account account = syncPref.getAccount(); Account account = syncPref.getAccount();
if (useSyncManager) { SyncStatusInfo status = ContentResolver.getSyncStatus(account, authority);
SyncStatusInfo status = ContentResolver.getSyncStatus(account, authority); boolean syncEnabled = ContentResolver.getSyncAutomatically(account, authority);
boolean syncEnabled = ContentResolver.getSyncAutomatically(account, authority); boolean authorityIsPending = status == null ? false : status.pending;
boolean authorityIsPending = status == null ? false : status.pending; boolean initialSync = status == null ? false : status.initialize;
boolean initialSync = status == null ? false : status.initialize;
boolean activelySyncing = isSyncing(currentSyncs, account, authority); boolean activelySyncing = isSyncing(currentSyncs, account, authority);
boolean lastSyncFailed = status != null boolean lastSyncFailed = status != null
&& status.lastFailureTime != 0 && status.lastFailureTime != 0
&& status.getLastFailureMesgAsInt(0) && status.getLastFailureMesgAsInt(0)
!= ContentResolver.SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS; != ContentResolver.SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS;
if (!syncEnabled) lastSyncFailed = false; if (!syncEnabled) lastSyncFailed = false;
if (lastSyncFailed && !activelySyncing && !authorityIsPending) { if (lastSyncFailed && !activelySyncing && !authorityIsPending) {
syncIsFailing = true; syncIsFailing = true;
}
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.d(TAG, "Update sync status: " + account + " " + authority +
" active = " + activelySyncing + " pend =" + authorityIsPending);
}
final long successEndTime = (status == null) ? 0 : status.lastSuccessTime;
if (successEndTime != 0) {
date.setTime(successEndTime);
final String timeString = mDateFormat.format(date) + " "
+ mTimeFormat.format(date);
syncPref.setSummary(timeString);
} else {
syncPref.setSummary("");
}
int syncState = ContentResolver.getIsSyncable(account, authority);
syncPref.setActive(activelySyncing && (syncState >= 0) &&
!initialSync);
syncPref.setPending(authorityIsPending && (syncState >= 0) &&
!initialSync);
syncPref.setFailed(lastSyncFailed);
ConnectivityManager connManager =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final boolean masterSyncAutomatically = ContentResolver.getMasterSyncAutomatically();
final boolean backgroundDataEnabled = connManager.getBackgroundDataSetting();
final boolean oneTimeSyncMode = !masterSyncAutomatically || !backgroundDataEnabled;
syncPref.setOneTimeSyncMode(oneTimeSyncMode);
syncPref.setChecked(oneTimeSyncMode || syncEnabled);
} else {
syncPref.setChecked(true);
} }
if (Log.isLoggable(TAG, Log.VERBOSE)) {
Log.d(TAG, "Update sync status: " + account + " " + authority +
" active = " + activelySyncing + " pend =" + authorityIsPending);
}
final long successEndTime = (status == null) ? 0 : status.lastSuccessTime;
if (successEndTime != 0) {
date.setTime(successEndTime);
final String timeString = mDateFormat.format(date) + " "
+ mTimeFormat.format(date);
syncPref.setSummary(timeString);
} else {
syncPref.setSummary("");
}
int syncState = ContentResolver.getIsSyncable(account, authority);
syncPref.setActive(activelySyncing && (syncState >= 0) &&
!initialSync);
syncPref.setPending(authorityIsPending && (syncState >= 0) &&
!initialSync);
syncPref.setFailed(lastSyncFailed);
ConnectivityManager connManager =
(ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
final boolean masterSyncAutomatically = ContentResolver.getMasterSyncAutomatically();
final boolean backgroundDataEnabled = connManager.getBackgroundDataSetting();
final boolean oneTimeSyncMode = !masterSyncAutomatically || !backgroundDataEnabled;
syncPref.setOneTimeSyncMode(oneTimeSyncMode);
syncPref.setChecked(oneTimeSyncMode || syncEnabled);
} }
mErrorInfoView.setVisibility(syncIsFailing ? View.VISIBLE : View.GONE); mErrorInfoView.setVisibility(syncIsFailing ? View.VISIBLE : View.GONE);
getActivity().invalidateOptionsMenu(); getActivity().invalidateOptionsMenu();

View File

@@ -1,60 +0,0 @@
package com.android.settings.accounts;
import android.accounts.Account;
import android.content.ContentResolver;
import android.preference.Preference;
import com.android.settings.R;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
/**
* This is AccountSyncSettings with 'remove account' button always gone and
* a wizard-like button bar to complete the activity.
*/
public class AccountSyncSettingsInAddAccount extends AccountSyncSettings
implements OnClickListener {
private View mFinishArea;
private View mFinishButton;
@Override
protected void initializeUi(final View rootView) {
super.initializeUi(rootView);
mFinishArea = (View) rootView.findViewById(R.id.finish_button_area);
mFinishArea.setVisibility(View.VISIBLE);
mFinishButton = (View) rootView.findViewById(R.id.finish_button);
mFinishButton.setOnClickListener(this);
mUseSyncManagerFeedsState = false;
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// Remove the "remove account" menu item
menu.findItem(MENU_REMOVE_ACCOUNT_ID).setVisible(false);
}
public void onClick(View v) {
applySyncSettingsToSyncManager();
finish();
}
private void applySyncSettingsToSyncManager() {
for (int i = 0, count = getPreferenceScreen().getPreferenceCount(); i < count; i++) {
Preference pref = getPreferenceScreen().getPreference(i);
if (! (pref instanceof SyncStateCheckBoxPreference)) {
continue;
}
SyncStateCheckBoxPreference syncPref = (SyncStateCheckBoxPreference) pref;
String authority = syncPref.getAuthority();
Account account = syncPref.getAccount();
ContentResolver.setSyncAutomatically(account, authority, syncPref.isChecked());
}
}
}