Bug 5353255: use a switch to toggle accounts & sync

Change-Id: I00821ba63651d713a148021f64bb95e7f69e6b88
This commit is contained in:
Gilles Debunne
2011-09-28 15:09:01 -07:00
parent c287e936dd
commit 13b7d8aa45

View File

@@ -19,6 +19,7 @@ package com.android.settings.accounts;
import android.accounts.Account; import android.accounts.Account;
import android.accounts.AccountManager; import android.accounts.AccountManager;
import android.accounts.OnAccountsUpdateListener; import android.accounts.OnAccountsUpdateListener;
import android.app.ActionBar;
import android.app.Activity; import android.app.Activity;
import android.content.ContentResolver; import android.content.ContentResolver;
import android.content.Intent; import android.content.Intent;
@@ -31,12 +32,15 @@ import android.preference.Preference;
import android.preference.PreferenceActivity; import android.preference.PreferenceActivity;
import android.preference.PreferenceScreen; import android.preference.PreferenceScreen;
import android.util.Log; import android.util.Log;
import android.view.Gravity;
import android.view.LayoutInflater; import android.view.LayoutInflater;
import android.view.Menu; import android.view.Menu;
import android.view.MenuInflater; import android.view.MenuInflater;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.CompoundButton;
import android.widget.Switch;
import android.widget.TextView; import android.widget.TextView;
import com.android.settings.AccountPreference; import com.android.settings.AccountPreference;
@@ -50,15 +54,14 @@ public class ManageAccountsSettings extends AccountPreferenceBase
implements OnAccountsUpdateListener, DialogCreatable { implements OnAccountsUpdateListener, DialogCreatable {
private static final int MENU_ADD_ACCOUNT = Menu.FIRST; private static final int MENU_ADD_ACCOUNT = Menu.FIRST;
private static final int MENU_SYNC_APP = MENU_ADD_ACCOUNT + 1;
private static final int REQUEST_SHOW_SYNC_SETTINGS = 1; private static final int REQUEST_SHOW_SYNC_SETTINGS = 1;
private String[] mAuthorities; private String[] mAuthorities;
private TextView mErrorInfoView; private TextView mErrorInfoView;
private MenuItem mSyncAppMenuItem;
private SettingsDialogFragment mDialogFragment; private SettingsDialogFragment mDialogFragment;
private Switch mAutoSyncSwitch;
@Override @Override
public void onCreate(Bundle icicle) { public void onCreate(Bundle icicle) {
@@ -91,6 +94,27 @@ public class ManageAccountsSettings extends AccountPreferenceBase
mErrorInfoView = (TextView)view.findViewById(R.id.sync_settings_error_info); mErrorInfoView = (TextView)view.findViewById(R.id.sync_settings_error_info);
mErrorInfoView.setVisibility(View.GONE); mErrorInfoView.setVisibility(View.GONE);
mAutoSyncSwitch = new Switch(activity);
// TODO Where to put the switch in tablet multipane layout?
final int padding = activity.getResources().getDimensionPixelSize(
R.dimen.action_bar_switch_padding);
mAutoSyncSwitch.setPadding(0, 0, padding, 0);
activity.getActionBar().setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM,
ActionBar.DISPLAY_SHOW_CUSTOM);
activity.getActionBar().setCustomView(mAutoSyncSwitch, new ActionBar.LayoutParams(
ActionBar.LayoutParams.WRAP_CONTENT,
ActionBar.LayoutParams.WRAP_CONTENT,
Gravity.CENTER_VERTICAL | Gravity.RIGHT));
mAutoSyncSwitch.setChecked(ContentResolver.getMasterSyncAutomatically());
mAutoSyncSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
ContentResolver.setMasterSyncAutomatically(isChecked);
onSyncStateUpdated();
}
});
mAuthorities = activity.getIntent().getStringArrayExtra(AUTHORITIES_FILTER_KEY); mAuthorities = activity.getIntent().getStringArrayExtra(AUTHORITIES_FILTER_KEY);
updateAuthDescriptions(); updateAuthDescriptions();
@@ -135,9 +159,6 @@ public class ManageAccountsSettings extends AccountPreferenceBase
MenuItem addAccountItem = menu.add(0, MENU_ADD_ACCOUNT, 0, R.string.add_account_label); MenuItem addAccountItem = menu.add(0, MENU_ADD_ACCOUNT, 0, R.string.add_account_label);
addAccountItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM addAccountItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM
| MenuItem.SHOW_AS_ACTION_WITH_TEXT); | MenuItem.SHOW_AS_ACTION_WITH_TEXT);
mSyncAppMenuItem = menu.add(0, MENU_SYNC_APP, 0, R.string.sync_automatically).
setCheckable(true).setChecked(ContentResolver.getMasterSyncAutomatically());
mSyncAppMenuItem.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER);
} }
@Override @Override
@@ -146,11 +167,6 @@ public class ManageAccountsSettings extends AccountPreferenceBase
if (itemId == MENU_ADD_ACCOUNT) { if (itemId == MENU_ADD_ACCOUNT) {
onAddAccountClicked(); onAddAccountClicked();
return true; return true;
} else if (itemId == MENU_SYNC_APP) {
// Use the opposite, the checked state has not yet been changed
ContentResolver.setMasterSyncAutomatically(!item.isChecked());
onSyncStateUpdated();
return true;
} else { } else {
return super.onOptionsItemSelected(item); return super.onOptionsItemSelected(item);
} }
@@ -161,8 +177,8 @@ public class ManageAccountsSettings extends AccountPreferenceBase
// Catch any delayed delivery of update messages // Catch any delayed delivery of update messages
if (getActivity() == null) return; if (getActivity() == null) return;
// Set background connection state // Set background connection state
if (mSyncAppMenuItem != null) { if (mAutoSyncSwitch != null) {
mSyncAppMenuItem.setChecked(ContentResolver.getMasterSyncAutomatically()); mAutoSyncSwitch.setChecked(ContentResolver.getMasterSyncAutomatically());
} }
// iterate over all the preferences, setting the state properly for each // iterate over all the preferences, setting the state properly for each