diff --git a/Android.mk b/Android.mk
index 510f50c..51834b9 100644
--- a/Android.mk
+++ b/Android.mk
@@ -3,19 +3,9 @@
 
 LOCAL_MODULE_TAGS := user
 
-base_packages := ../../../frameworks/base/packages
-source_files := $(base_packages)/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsProvider.java
-source_files += $(base_packages)/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsIntentService.java
-source_files += $(base_packages)/SubscribedFeedsProvider/src/com/android/providers/subscribedfeeds/SubscribedFeedsBroadcastReceiver.java
+LOCAL_SRC_FILES := $(call all-java-files-under, src)
 
-LOCAL_SRC_FILES := $(call all-subdir-java-files) $(source_files)
-
-# We depend on googlelogin-client also, but that is already being included by google-framework
-LOCAL_STATIC_JAVA_LIBRARIES := google-framework
-
-LOCAL_OVERRIDES_PACKAGES := SubscribedFeedsProvider
-
-LOCAL_PACKAGE_NAME := GoogleSubscribedFeedsProvider
+LOCAL_PACKAGE_NAME := AccountAndSyncSettings
 LOCAL_CERTIFICATE := platform
 
 include $(BUILD_PACKAGE)
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index aa768b1..1021175 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -2,25 +2,21 @@
         package="com.android.providers.subscribedfeeds"
         android:sharedUserId="android.uid.system">
 
-    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
-    <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH" />
-    <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.cp" />
-    <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.cl" />
-    <uses-permission android:name="com.google.android.googleapps.permission.GOOGLE_AUTH.mail" />
+    <uses-permission android:name="android.permission.USE_CREDENTIALS" />
+    <uses-permission android:name="android.permission.BACKUP" />
     <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.READ_SYNC_STATS" />
-    <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" />
-    <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE" />
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
 
     <application android:process="system"
                  android:allowClearUserData="false"
                  android:icon="@drawable/app_icon"
                  android:label="@string/app_label">
 
-        <uses-library android:name="com.google.android.gtalkservice" />
-
-        <activity android:name="com.android.settings.SyncSettings" android:label="@string/sync_settings">
+        <activity android:name="com.android.settings.ManageAccountsSettings"
+            android:label="@string/sync_settings">
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <action android:name="android.settings.SYNC_SETTINGS" />
@@ -28,6 +24,35 @@
             </intent-filter>
         </activity>
 
+        <activity android:name="com.android.settings.AccountSyncSettings"
+            android:label="@string/sync_settings"
+            android:theme="@android:style/Theme.NoTitleBar">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.ACCOUNT_SYNC_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
+        <activity android:name="com.android.settings.AccountSyncSettingsInAddAccount"
+            android:label="@string/sync_settings"
+            android:theme="@android:style/Theme.NoTitleBar">
+            <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>
+        </activity>
+
+        <activity android:name="com.android.settings.AddAccountSettings"
+            android:label="@string/header_add_an_account">
+            <intent-filter>
+                <action android:name="android.intent.action.MAIN" />
+                <action android:name="android.settings.ADD_ACCOUNT_SETTINGS" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <activity android:name="com.android.settings.SyncActivityTooManyDeletes"
                   android:theme="@android:style/Theme.Dialog"
                   android:label="@string/sync_too_many_deletes">
@@ -36,25 +61,5 @@
                 <category android:name="android.intent.category.DEFAULT" />
             </intent-filter>
         </activity>
-
-        <provider android:name="GoogleSubscribedFeedsProvider"
-                android:authorities="subscribedfeeds" android:syncable="true"
-                android:multiprocess="false"
-                android:readPermission="android.permission.SUBSCRIBED_FEEDS_READ"
-                android:writePermission="android.permission.SUBSCRIBED_FEEDS_WRITE" />
-
-        <receiver android:name="SubscribedFeedsBroadcastReceiver">
-            <intent-filter>
-                <action android:name="android.intent.action.GTALK_DATA_MESSAGE_RECEIVED" />
-                <category android:name="GSYNC_TICKLE"/>
-            </intent-filter>
-            <intent-filter>
-                <action android:name="android.intent.action.BOOT_COMPLETED" />
-            </intent-filter>
-            <intent-filter>
-                <action android:name="com.android.subscribedfeeds.action.REFRESH" />
-            </intent-filter>
-        </receiver>
-        <service android:name="SubscribedFeedsIntentService"/>
     </application>
 </manifest>
diff --git a/res/drawable-hdpi/app_icon.png b/res/drawable-hdpi/app_icon.png
new file mode 100755
index 0000000..f274432
--- /dev/null
+++ b/res/drawable-hdpi/app_icon.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_btn_next.png b/res/drawable-hdpi/ic_btn_next.png
new file mode 100755
index 0000000..ad00a95
--- /dev/null
+++ b/res/drawable-hdpi/ic_btn_next.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_anim0.png b/res/drawable-hdpi/ic_list_sync_anim0.png
new file mode 100755
index 0000000..dc78905
--- /dev/null
+++ b/res/drawable-hdpi/ic_list_sync_anim0.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_anim1.png b/res/drawable-hdpi/ic_list_sync_anim1.png
new file mode 100755
index 0000000..5fe6b4f
--- /dev/null
+++ b/res/drawable-hdpi/ic_list_sync_anim1.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_anim2.png b/res/drawable-hdpi/ic_list_sync_anim2.png
new file mode 100755
index 0000000..d9d68ed
--- /dev/null
+++ b/res/drawable-hdpi/ic_list_sync_anim2.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_anim3.png b/res/drawable-hdpi/ic_list_sync_anim3.png
new file mode 100755
index 0000000..7275c29
--- /dev/null
+++ b/res/drawable-hdpi/ic_list_sync_anim3.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_list_sync_error.png b/res/drawable-hdpi/ic_list_sync_error.png
new file mode 100755
index 0000000..d05146a
--- /dev/null
+++ b/res/drawable-hdpi/ic_list_sync_error.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_green.png b/res/drawable-hdpi/ic_sync_green.png
new file mode 100644
index 0000000..6956088
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_green.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_grey.png b/res/drawable-hdpi/ic_sync_grey.png
new file mode 100644
index 0000000..3e9995a
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_grey.png
Binary files differ
diff --git a/res/drawable-hdpi/ic_sync_red.png b/res/drawable-hdpi/ic_sync_red.png
new file mode 100644
index 0000000..5abb707
--- /dev/null
+++ b/res/drawable-hdpi/ic_sync_red.png
Binary files differ
diff --git a/res/drawable-hdpi/title_bar.9.png b/res/drawable-hdpi/title_bar.9.png
new file mode 100755
index 0000000..e8ff1f8
--- /dev/null
+++ b/res/drawable-hdpi/title_bar.9.png
Binary files differ
diff --git a/res/drawable/app_icon.png b/res/drawable-mdpi/app_icon.png
similarity index 100%
rename from res/drawable/app_icon.png
rename to res/drawable-mdpi/app_icon.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_btn_next.png b/res/drawable-mdpi/ic_btn_next.png
new file mode 100755
index 0000000..c6cf436
--- /dev/null
+++ b/res/drawable-mdpi/ic_btn_next.png
Binary files differ
diff --git a/res/drawable/ic_list_sync_anim0.png b/res/drawable-mdpi/ic_list_sync_anim0.png
similarity index 100%
rename from res/drawable/ic_list_sync_anim0.png
rename to res/drawable-mdpi/ic_list_sync_anim0.png
Binary files differ
diff --git a/res/drawable/ic_list_sync_anim1.png b/res/drawable-mdpi/ic_list_sync_anim1.png
similarity index 100%
rename from res/drawable/ic_list_sync_anim1.png
rename to res/drawable-mdpi/ic_list_sync_anim1.png
Binary files differ
diff --git a/res/drawable/ic_list_sync_anim2.png b/res/drawable-mdpi/ic_list_sync_anim2.png
similarity index 100%
rename from res/drawable/ic_list_sync_anim2.png
rename to res/drawable-mdpi/ic_list_sync_anim2.png
Binary files differ
diff --git a/res/drawable/ic_list_sync_anim3.png b/res/drawable-mdpi/ic_list_sync_anim3.png
similarity index 100%
rename from res/drawable/ic_list_sync_anim3.png
rename to res/drawable-mdpi/ic_list_sync_anim3.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_green.png b/res/drawable-mdpi/ic_sync_green.png
new file mode 100644
index 0000000..177a024
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_green.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_grey.png b/res/drawable-mdpi/ic_sync_grey.png
new file mode 100644
index 0000000..8f168d4
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_grey.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_sync_red.png b/res/drawable-mdpi/ic_sync_red.png
new file mode 100644
index 0000000..5e38136
--- /dev/null
+++ b/res/drawable-mdpi/ic_sync_red.png
Binary files differ
diff --git a/res/drawable-mdpi/title_bar.9.png b/res/drawable-mdpi/title_bar.9.png
new file mode 100644
index 0000000..4c78d2d
--- /dev/null
+++ b/res/drawable-mdpi/title_bar.9.png
Binary files differ
diff --git a/res/layout/account_preference.xml b/res/layout/account_preference.xml
new file mode 100644
index 0000000..a3a9d43
--- /dev/null
+++ b/res/layout/account_preference.xml
@@ -0,0 +1,64 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    android:paddingLeft="16dip"
+    android:paddingRight="?android:attr/scrollbarSize">
+
+    <ImageView
+        android:id="@+id/providerIcon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="5dip"
+        android:layout_gravity="center" />
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="6dip"
+        android:layout_marginTop="6dip"
+        android:layout_marginBottom="6dip"
+        android:layout_weight="1">
+
+        <TextView android:id="@+android:id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+
+        <TextView android:id="@+android:id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@android:id/title"
+            android:layout_alignLeft="@android:id/title"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:maxLines="2" />
+
+    </RelativeLayout>
+
+    <ImageView
+        android:id="@+id/syncStatusIcon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dip"
+        android:layout_marginRight="7dip"
+        android:layout_gravity="center" />
+
+</LinearLayout>
diff --git a/res/layout/account_sync_screen.xml b/res/layout/account_sync_screen.xml
new file mode 100644
index 0000000..4409acb
--- /dev/null
+++ b/res/layout/account_sync_screen.xml
@@ -0,0 +1,84 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/assets/res/layout/list_content.xml
+**
+** Copyright 2006, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical">
+
+    <include layout="@layout/title"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content" />
+
+    <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list"
+        android:layout_width="fill_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:drawSelectorOnTop="false"
+        android:scrollbarAlwaysDrawVerticalTrack="true"
+    />
+
+    <TextView android:id="@+id/sync_settings_error_info"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/sync_is_failing" />
+
+    <LinearLayout android:id="@+id/remove_account_area"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="@android:drawable/bottom_bar">
+
+        <View
+            android:layout_width="0dip"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"/>
+
+        <Button android:id="@+id/remove_account_button"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="2"
+            android:layout_marginTop="5dip"
+            android:text="@string/remove_account_label" />
+
+        <View
+            android:layout_width="0dip"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"/>
+    </LinearLayout>
+    
+    <RelativeLayout android:id="@+id/finish_button_area"
+        android:layout_height="wrap_content"
+        android:layout_width="fill_parent"
+        android:background="@android:drawable/bottom_bar"
+        android:visibility="gone">
+        
+        <Button android:id="@+id/finish_button"
+            android:layout_width="150dip"
+            android:layout_height="wrap_content"
+            android:layout_margin="5dip"
+            android:layout_alignParentRight="true"
+            android:drawableRight="@drawable/ic_btn_next"
+            android:drawablePadding="3dip"
+            android:text="@string/finish_button_label"
+        />
+        
+    </RelativeLayout>
+
+</LinearLayout>
diff --git a/res/layout/sync_settings_list_content.xml b/res/layout/add_account_screen.xml
similarity index 61%
rename from res/layout/sync_settings_list_content.xml
rename to res/layout/add_account_screen.xml
index 9573d36..8d4be3d 100644
--- a/res/layout/sync_settings_list_content.xml
+++ b/res/layout/add_account_screen.xml
@@ -18,18 +18,16 @@
 */
 -->
 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
-  android:layout_width="fill_parent"
-  android:layout_height="fill_parent"
-  android:orientation="vertical">
-  <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list"
     android:layout_width="fill_parent"
-    android:layout_height="0dip"
-    android:layout_weight="1"
-    android:drawSelectorOnTop="false"
-    android:scrollbarAlwaysDrawVerticalTrack="true"
+    android:layout_height="fill_parent"
+    android:orientation="vertical">
+
+    <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list"
+        android:layout_width="fill_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:drawSelectorOnTop="false"
+        android:scrollbarAlwaysDrawVerticalTrack="true"
     />
-  <TextView android:id="@+id/sync_settings_error_info"
-    android:layout_width="fill_parent"
-    android:layout_height="wrap_content"
-    android:text="@string/sync_is_failing" />
+
 </LinearLayout>
diff --git a/res/layout/manage_accounts_screen.xml b/res/layout/manage_accounts_screen.xml
new file mode 100644
index 0000000..55e8d22
--- /dev/null
+++ b/res/layout/manage_accounts_screen.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/* //device/apps/common/assets/res/layout/list_content.xml
+**
+** Copyright 2006, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="fill_parent"
+    android:orientation="vertical">
+
+    <ListView xmlns:android="http://schemas.android.com/apk/res/android" android:id="@android:id/list"
+        android:layout_width="fill_parent"
+        android:layout_height="0dip"
+        android:layout_weight="1"
+        android:drawSelectorOnTop="false"
+        android:scrollbarAlwaysDrawVerticalTrack="true"
+    />
+
+    <TextView android:id="@+id/sync_settings_error_info"
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:text="@string/sync_is_failing" />
+
+    <LinearLayout
+        android:layout_width="fill_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="@android:drawable/bottom_bar">
+
+        <View
+            android:layout_width="0dip"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"/>
+
+        <Button android:id="@+id/add_account_button"
+            android:layout_width="0dip"
+            android:layout_height="wrap_content"
+            android:layout_weight="2"
+            android:layout_marginTop="5dip"
+            android:text="@string/add_account_label" />
+
+        <View
+            android:layout_width="0dip"
+            android:layout_height="fill_parent"
+            android:layout_weight="1"/>
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/res/layout/provider_preference.xml b/res/layout/provider_preference.xml
new file mode 100644
index 0000000..3daaf30
--- /dev/null
+++ b/res/layout/provider_preference.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2009 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="fill_parent"
+    android:layout_height="wrap_content"
+    android:minHeight="?android:attr/listPreferredItemHeight"
+    android:gravity="center_vertical"
+    android:paddingLeft="16dip"
+    android:paddingRight="?android:attr/scrollbarSize">
+
+    <ImageView
+        android:id="@+id/providerIcon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="5dip"
+        android:layout_gravity="center" />
+
+    <RelativeLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginRight="6dip"
+        android:layout_marginTop="6dip"
+        android:layout_marginBottom="6dip"
+        android:layout_weight="1">
+
+        <TextView android:id="@+android:id/title"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:singleLine="true"
+            android:textAppearance="?android:attr/textAppearanceMedium" />
+
+        <TextView android:id="@+android:id/summary"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_below="@android:id/title"
+            android:layout_alignLeft="@android:id/title"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:maxLines="2" />
+
+    </RelativeLayout>
+
+    <ImageView
+        android:id="@+id/syncStatusIcon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginLeft="5dip"
+        android:layout_gravity="center" />
+
+</LinearLayout>
diff --git a/res/layout/title.xml b/res/layout/title.xml
new file mode 100644
index 0000000..85efdd3
--- /dev/null
+++ b/res/layout/title.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/**
+ * Copyright (C) 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+-->
+
+<!-- The title area at the top of the screen -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/title_area"
+    android:orientation="horizontal"
+    android:background="@drawable/title_bar">
+
+    <ImageView android:id="@+id/provider_icon"
+        android:layout_width="48dip"
+        android:layout_height="48dip"
+        android:layout_margin="5dip"
+        android:layout_gravity="center_vertical" />
+
+    <LinearLayout
+        android:layout_width="0dip"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:background="@drawable/title_bar">
+
+        <TextView
+            android:id="@+id/user_id"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceMedium"
+            android:textStyle="bold"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:gravity="center_vertical"
+            android:layout_marginTop="5dip"/>
+
+        <TextView
+            android:id="@+id/provider_id"
+            android:layout_width="fill_parent"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:singleLine="true"
+            android:ellipsize="end"
+            android:layout_gravity="bottom"
+            android:layout_marginBottom="5dip"/>
+
+    </LinearLayout>
+
+</LinearLayout>
diff --git a/res/values-cs/strings.xml b/res/values-cs/strings.xml
index 7fc9970..318f699 100644
--- a/res/values-cs/strings.xml
+++ b/res/values-cs/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Synchronizace zdrojů"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Synchronizace dat"</string>
+    <string name="app_label" msgid="569000083919693222">"Synchronizace zdrojů"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Nastavení účtů a synchronizace"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Byl překročen limit mazání."</string>
     <string name="background_data" msgid="1103557117473896066">"Data na pozadí"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Povolit používání dat na pozadí"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Aplikace mohou kdykoli synchronizovat, odesílat a přijímat data."</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Upozornění"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Zakázání dat na pozadí šetří baterii a snižuje objem použitých dat. Některé aplikace mohou přesto datové připojení na pozadí používat."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Deaktivace přenosu dat na pozadí šetří baterii a snižuje objem použitých dat. Některé aplikace mohou přesto datové připojení na pozadí používat."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Automatická synchronizace"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Data jsou synchronizována automaticky"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Aplikace synchronizují data automaticky"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Zálohovat nastavení"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Zálohovat moje nastavení"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Synchronizovat nyní"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Zrušit synchronizaci"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Synchronizovat nyní<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Dotykem provedete synchronizaci nyní<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Kalendář"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Vrátit mazání zpět."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Nyní neprovádět žádnou akci."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Nastaly potíže se synchronizací. Služba bude brzy obnovena."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Vítá vás aplikace Google Sync"</font>" "\n"Nový pohled na synchronizaci dat v režii Google. Poskytuje vám přístup ke kontaktům, schůzkám a dalším náležitostem, ať jste kdekoli."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Vítá vás aplikace Google Sync"</font>" "\n"Nový pohled na synchronizaci dat v režii Googlu. Poskytuje vám přístup ke kontaktům, schůzkám a dalším informacím, ať jste kdekoli."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Nastavení synchronizace aplikací"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Spravovat účty"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Obecná nastavení synchronizace"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Synchronizace je ZAPNUTA"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Synchronizace je VYPNUTA"</string>
+    <string name="sync_error" msgid="681431702824599812">"Chyba synchronizace"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Přidat účet"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Data a synchronizace"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Změnit heslo"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Nastavení účtu"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Odebrat účet"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Přidat účet"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Dokončit"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Odebrat účet"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Opravdu chcete tento účet odebrat? Z telefonu budou smazány také všechny zprávy, kontakty a další data tohoto účtu. "\n"Pokračovat?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Tento účet je požadován některými aplikacemi. Můžete jej odebrat pouze obnovením výchozího nastavení telefonu z výroby (které smaže všechna osobní data). Můžete to provést v aplikaci Nastavení v části Ochrana osobních údajů."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Zobrazit odběry"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Synchronizace služby <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Nelze ručně synchronizovat"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Synchronizace této položky je aktuálně deaktivována. Chcete-li předvolbu změnit, dočasně zapněte přenos dat na pozadí a automatickou synchronizaci."</string>
 </resources>
diff --git a/res/values-da/strings.xml b/res/values-da/strings.xml
index 2b8ef09..733929c 100644
--- a/res/values-da/strings.xml
+++ b/res/values-da/strings.xml
@@ -15,29 +15,48 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Datasynkronisering"</string>
+    <string name="app_label" msgid="569000083919693222">"Synkroniser feeds"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Indstillinger for konti og synkronisering"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Grænsen for sletning er overskredet"</string>
     <string name="background_data" msgid="1103557117473896066">"Baggrundsdata"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Aktiver baggrundsdatabrug"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Programmer kan altid synkronisere, sende og modtage data"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Bemærk"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Deaktivering af baggrundsdata sparer på batteriet og mindsker databrug. Nogle programmer kan muligvis stadig bruge baggrundsdataforbindelsen."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Deaktivering af baggrundsdata forlænger batteriets levetid og mindsker databrug. Nogle programmer kan muligvis stadig bruge baggrundsdataforbindelsen."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Autom. synkronisering"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Synkroniser automatisk data"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Programmer synkroniserer data automatisk"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Sikkerhedskopier indstillinger"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Sikkerhedskopier mine indstillinger"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Synkroniser nu"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Annuller synkronisering"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Vælg at synkronisere nu<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Berør for at synkronisere nu<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Kalender"</string>
-    <string name="sync_contacts" msgid="2035690905925565660">"Kontakter"</string>
+    <string name="sync_contacts" msgid="2035690905925565660">"Kontakt."</string>
     <string name="sync_too_many_deletes_desc" msgid="699495654174066067">"Der er <xliff:g id="NUMBER_OF_DELETED_ITEMS">%1$d</xliff:g> slettede elementer for <xliff:g id="TYPE_OF_SYNC">%2$s</xliff:g>, konto <xliff:g id="ACCOUNT_NAME">%3$s</xliff:g>. Hvad ønsker du at gøre?"</string>
     <string name="sync_really_delete" msgid="5456355204562588976">"Slet elementerne."</string>
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Fortryd sletningerne."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Gør ikke noget lige nu."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Der er problemer med synkronisering i øjeblikket. Det vender snart tilbage."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Velkommen til Google Sync!"</font>" "\n"En tilgang til synkronisering af data fra Google, hvilket lader dig få adgang til dine kontakter, aftaler og mere, uanset hvor du er."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Velkommen til Google\nSync!"</font>" "\n"En tilgang til synkronisering af data fra Google, som giver dig adgang til dine kontaktpersoner, aftaler og mere, uanset hvor du er."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Indstillinger for programsynkronisering"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Administrer konti"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Generelle synkroniseringsindstillinger"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Synkronisering er aktiveret"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Synkronisering slået fra"</string>
+    <string name="sync_error" msgid="681431702824599812">"Synkroniseringsfejl"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Tilføj konto"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Data og synkronisering"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Skift adgangskode"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Kontoindstillinger"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Fjern konto"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Tilføj en konto"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Afslut"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Fjern konto"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Ønsker du virkelig at fjerne denne konto? Hvis du fjerner den, slettes også alle dens beskeder, kontaktpersoner og andre data fra telefonen. "\n"Fortsæt?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Denne konto er påkrævet af nogle programmer. Du kan kun fjerne den ved at nulstille telefonen til fabriksstandard (hvilket sletter alle dine personlige data). Du kan gøre dette i Indstillingsprogrammet under Beskyttelse af personlige oplysninger."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Push-abonnementer"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Synkroniser<xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Kan ikke synkronisere manuelt"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Synkronisering af dette element er slået fra i øjeblikket. Hvis du vil ændre indstillingen, skal du midlertidigt slå baggrundsdata til og synkronisere automatisk."</string>
 </resources>
diff --git a/res/values-de/strings.xml b/res/values-de/strings.xml
index a89b482..706488b 100644
--- a/res/values-de/strings.xml
+++ b/res/values-de/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Feedsynchronisierung"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Datensynchronisierung"</string>
+    <string name="app_label" msgid="569000083919693222">"Feedsynchronisierung"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Einstellungen für Konten &amp; Synchronisierung"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Löschbegrenzung überschritten"</string>
     <string name="background_data" msgid="1103557117473896066">"Hintergrunddaten"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Verwendung von Hintergrunddaten aktivieren"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Die Anwendungen können jederzeit Daten synchronisieren, senden und empfangen"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Achtung"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Durch die Deaktivierung von Hintergrunddaten kann Strom gespart und die Verwendung von Daten verringert werden. Einige Anwendungen nutzen die Hintergrunddatenverbindung möglicherweise weiterhin."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Durch die Deaktivierung von Hintergrunddaten kann die Akkulaufzeit verlängert und die Verwendung von Daten verringert werden. Einige Anwendungen nutzen die Hintergrunddatenverbindung möglicherweise weiterhin."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Autom. synchronisieren"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Daten automatisch synchronisieren"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Anwendungen synchronisieren Daten automatisch."</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Einstellungen sichern"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Meine Einstellungen sichern"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Jetzt synchronisieren"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Synchronisierung abbrechen"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Jetzt synchronisieren: <xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Zum sofortigen Synchronisieren berühren<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Google Kalender"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Löschen rückgängig machen"</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Im Moment nichts unternehmen"</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Bei der Synchronisierung treten derzeit Probleme auf. Sie wird in Kürze fortgesetzt."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Willkommen bei Google Sync!"</font>\n"Mit dieser Funktion von Google können Sie Ihre Daten synchronisieren, um auf Ihre Kontakte, Termine und vieles mehr zuzugreifen - wo immer Sie auch sind!"</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Willkommen bei Google Sync!"</font>\n"Mit dieser Funktion von Google können Sie Ihre Daten synchronisieren, um auf Ihre Kontakte, Termine und vieles mehr zuzugreifen - wo immer Sie auch sind!"</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Anwendungssynchronisierung"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Konten verwalten"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Allgemeine Synchronisierungseinstellungen"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Synchronisierung ist aktiviert"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Synchronisierung deaktiviert"</string>
+    <string name="sync_error" msgid="681431702824599812">"Synchronisierungsfehler"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Konto hinzufügen"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Daten und Synchronisierung"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Passwort ändern"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Kontoeinstellungen"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Konto entfernen"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Konto hinzufügen"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Fertigstellen"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Konto entfernen"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Möchten Sie dieses Konto wirklich entfernen? Hierdurch werden auch die zugehörigen Nachrichten, Kontakte und anderen Daten auf dem Telefon gelöscht. "\n"Vorgang fortsetzen?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Dieses Konto wird von einigen Anwendungen benötigt. Sie können es nur entfernen, indem Sie das Telefon auf die Werkseinstellungen zurücksetzen und so alle persönlichen Daten löschen. Wählen Sie hierfür unter \"Datenschutz\" die Option \"Einstellungen\"."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Push-Abos"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"<xliff:g id="AUTHORITY">%s</xliff:g> synchronisieren"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Manuelle Synchronisierung kann nicht durchgeführt werden"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Die Synchronisierung ist für dieses Element zurzeit deaktiviert. Zur Änderung Ihrer Voreinstellungen aktivieren Sie vorübergehend Hintergrunddaten und automatische Synchronisierung."</string>
 </resources>
diff --git a/res/values-el/strings.xml b/res/values-el/strings.xml
index 2482062..b1d1bb6 100644
--- a/res/values-el/strings.xml
+++ b/res/values-el/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Συγχρονισμός δεδομένων"</string>
+    <string name="app_label" msgid="569000083919693222">"Συγχρονισμός ροών δεδομένων"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Ρυθμίσεις λογαριασμών &amp; συγχρονισμού"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Έγινε υπέρβαση του ορίου διαγραφής."</string>
     <string name="background_data" msgid="1103557117473896066">"Δεδομένα φόντου"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Ενεργοποίηση χρήσης δεδομένων φόντου"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Οι εφαρμογές μπορούν να κάνουν συγχρονισμό, αποστολή και λήψη δεδομένων ανά πάσα στιγμή"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Προσοχή"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Η απενεργοποίηση δεδομένων φόντου εξοικονομεί ενέργεια μπαταρίας και μειώνει τη χρήση δεδομένων. Ορισμένες εφαρμογές ενδέχεται να συνεχίσουν να χρησιμοποιούν τη σύνδεση δεδομένων φόντου."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Η απενεργοποίηση δεδομένων παρασκηνίου αυξάνει το χρόνο ζωής της μπαταρίας και μειώνει τη χρήση δεδομένων. Ορισμένες εφαρμογές ενδέχεται να συνεχίσουν να χρησιμοποιούν τη σύνδεση δεδομένων παρασκηνίου."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Αυτόματος συγχρονισμός"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Αυτόματος συγχρονισμός δεδομένων"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Οι εφαρμογές συγχρονίζουν αυτόματα τα δεδομένα"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Δημιουργία αντιγράφων ασφαλείας για τις ρυθμίσεις"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Δημιουργία αντιγράφων ασφαλείας για τις ρυθμίσεις μου"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Να γίνει συγχρονισμός τώρα"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Ακύρωση συγχρονισμού"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Επιλέξτε για συγχρονισμό τώρα<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Πατήστε για συγχρονισμό τώρα<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Ημερολόγιο"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Αναίρεση των διαγραφών."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Να μην γίνει καμία ενέργεια τώρα."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Το Sync αντιμετωπίζει προβλήματα αυτή τη στιγμή. Θα είναι διαθέσιμο ξανά σε λίγο."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Καλώς ορίσατε στο Google Sync!"</font>" "\n"Μια προσέγγιση της Google στον συγχρονισμό δεδομένων ώστε να αποκτήσετε πρόσβαση στις επαφές σας, στις συναντήσεις σας και σε άλλα, οπουδήποτε κι αν είστε."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Καλώς ορίσατε στο Google Sync!"</font>" "\n"Μια προσέγγιση της Google στον συγχρονισμό δεδομένων ώστε να επιτρέπεται η πρόσβαση στις επαφές σας, στις συναντήσεις σας και σε άλλα, οπουδήποτε κι αν είστε."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Ρυθμίσεις συγχρονισμού εφαρμογής"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Διαχείριση λογαριασμών"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Γενικές ρυθμίσεις συγχρονισμού"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Ο συγχρονισμός είναι ενεργοποιημένος"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Ο συγχρονισμός είναι απενεργοποιημένος"</string>
+    <string name="sync_error" msgid="681431702824599812">"Σφάλμα συγχρονισμού"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Προσθήκη λογαριασμού"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Δεδομένα και συγχρονισμός"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Αλλαγή κωδικού πρόσβασης"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Ρυθμίσεις λογαριασμού"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Κατάργηση λογαριασμού"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Προσθήκη λογαριασμού"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Τέλος"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Κατάργηση λογαριασμού"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Είστε βέβαιοι ότι θέλετε να καταργήσετε αυτόν το λογαριασμό; Η κατάργησή του θα έχει σαν αποτέλεσμα τη διαγραφή όλων των μηνυμάτων, των επαφών και άλλων δεδομένων του από το τηλέφωνο. "\n"Συνέχεια;"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Αυτό ο λογαριασμός απαιτείται από ορισμένες εφαρμογές. Μπορείτε να την καταργήσετε μόνο πραγματοποιώντας επαναφορά των εργοστασιακών ρυθμίσεων του τηλεφώνου (ενέργεια που διαγράφει όλα τα προσωπικά δεδομένα σας). Μπορείτε να επιλέξετε αυτήν την ενέργεια στην εφαρμογή \"Ρυθμίσεις\", στην καρτέλα \"Απόρρητο\"."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Προώθηση συνδρομών"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Συγχρονισμός εφαρμογής <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Δεν είναι δυνατός ο μη αυτόματος συγχρονισμός"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Ο συγχρονισμός για αυτό το στοιχείο είναι προς το παρόν απενεργοποιημένος. Για να αλλάξετε την προτίμησή σας, ενεργοποιήστε προσωρινά τα δεδομένα παρασκηνίου και τον αυτόματο συγχρονισμό."</string>
 </resources>
diff --git a/res/values-es-rUS/strings.xml b/res/values-es-rUS/strings.xml
index e43c9fa..e75acc7 100644
--- a/res/values-es-rUS/strings.xml
+++ b/res/values-es-rUS/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Sincronización de datos"</string>
+    <string name="app_label" msgid="569000083919693222">"Canales de sincronización"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Configuración de cuentas y sincronización"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Eliminar el límite excedido"</string>
     <string name="background_data" msgid="1103557117473896066">"Datos de fondo"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Activar el uso de datos de fondo"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Las aplicaciones se pueden sincronizar, enviar y pueden recibir datos en cualquier momento"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Atención"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Al desactivar los datos de fondo, se ahorra batería y se reduce el uso de los datos. Algunas aplicaciones incluso pueden utilizar una conexión de datos de fondo."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Al desactivar los datos de fondo, se prolonga la vida útil de la batería y se reduce el uso de los datos. Algunas aplicaciones incluso pueden utilizar una conexión de datos de fondo."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Sincroniz. automática"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Datos sincronizados automáticamente"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Las aplicaciones sincronizan los datos automáticamente."</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Hacer una copia de seguridad de configuraciones"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Hacer una copia de seguridad de mi configuración"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Sincronizar ahora"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Cancelar sincronización"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Selecciona sincronización ahora<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Tocar para sincronizar ahora<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Calendario"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Deshacer eliminaciones."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"No hagas nada por el momento."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"En este momento la sincronización experimenta problemas. Volverá en breve."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"¡Bienvenido a\nGoogle Sync!"</font>" "\n"Un método de Google que sincroniza datos para permitir el acceso a tus contactos, citas y mucho más desde cualquier lugar en donde estés."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"¡Bienvenido a\nGoogle sync!"</font>" "\n"Un método de Google que sincroniza datos para permitir el acceso a tus contactos, citas y mucho más desde cualquier lugar en donde estés."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Config. de sincroniz. de la aplic."</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Administrar cuentas"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Configuración de sincronización general"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Sincronización activada"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Sincronización desactivada"</string>
+    <string name="sync_error" msgid="681431702824599812">"Error de sincronización"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Agregar cuenta"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Sincronización y datos"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Cambiar contraseña"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Configuración de la cuenta"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Eliminar cuenta"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Agregar una cuenta"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Finalizar"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Eliminar cuenta"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"¿Realmente deseas eliminar·esta cuenta? Si lo haces, también suprimirás todos sus mensajes, contactos y otros datos del teléfono. "\n"¿Deseas continuar?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Algunas aplicaciones requieren esta cuenta. Sólo puedes suprimirla si restableces la configuración predeterminada de fábrica en el teléfono (la cual suprime todos tus datos personales). Puedes hacerlo en la aplicación Configuración, dentro de Privacidad."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Suscripciones de inserción"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Sincronización <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"No se puede realizar la sincronización manual"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"La sincronización de este elemento actualmente está desactivada. Para cambiar tus preferencias, activa momentáneamente los datos de fondo y la sincronización automática."</string>
 </resources>
diff --git a/res/values-es/strings.xml b/res/values-es/strings.xml
index eecb893..a6faab6 100644
--- a/res/values-es/strings.xml
+++ b/res/values-es/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Sincronización de feeds"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Sincronización de datos"</string>
+    <string name="app_label" msgid="569000083919693222">"Sincronización de feeds"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Configuración de sincronización y de cuentas"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Límite de eliminaciones superado"</string>
     <string name="background_data" msgid="1103557117473896066">"Datos de referencia"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Habilitar el uso de datos de referencia"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Las aplicaciones pueden sincronizar datos, enviarlos y recibirlos en cualquier momento."</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Atención"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Si inhabilitas los datos de referencia, ahorrarás batería y reducirás el uso de datos. Es posible que algunas aplicaciones sigan utilizando la conexión de datos de referencia."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Si inhabilitas los datos de referencia, aumentarás la duración de la batería y reducirás el uso de datos. Es posible que algunas aplicaciones sigan utilizando la conexión de datos de referencia."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Sincronización automática"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Sincronizar datos de forma automática"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Las aplicaciones sincronizan los datos de forma automática."</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Realizar copia de seguridad de configuración"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Realizar copia de seguridad de mi configuración"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Sincronizar ahora"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Cancelar sincronización"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Seleccionar para realizar la sincronización ahora<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Tocar para realizar la sincronización ahora<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Calendar"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Deshacer las eliminaciones"</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"No hacer nada por ahora"</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"En este momento hay problemas con la sincronización. Se restablecerá en breve."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Te damos la bienvenida a Google Sync."</font>" "\n"Un servicio de Google para sincronizar datos y permitir así el acceso a tus contactos, citas, etc. desde cualquier ubicación."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Te damos la bienvenida a Google Sync,"</font>" "\n"un servicio de Google que te permite sincronizar datos para hacer posible el acceso a tus contactos, a tus citas, etc., desde cualquier ubicación."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Configuración de sincronización de aplicación"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Administrar cuentas"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Configuración de sincronización general"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"La sincronización está activada."</string>
+    <string name="sync_disabled" msgid="185731301298967302">"La sincronización está desactivada."</string>
+    <string name="sync_error" msgid="681431702824599812">"Error de sincronización"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Añadir cuenta"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Datos y sincronización"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Cambiar contraseña"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Configuración de la cuenta"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Eliminar cuenta"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Añadir una cuenta"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Finalizar"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Eliminar cuenta"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"¿Deseas eliminar realmente esta cuenta? Si la eliminas, se eliminarán también todos los mensajes, los contactos y otros datos del teléfono. "\n"¿Quieres continuar?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Algunas aplicaciones necesitan esta cuenta. Solo puedes eliminarla restableciendo los valores predeterminados de fábrica del teléfono(esta acción elimina todos tus datos personales). Para ello, accede a \"Configuración\", \"Privacidad\"."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Enviar suscripciones"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Sincronizar <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"No se puede realizar la sincronización de forma manual."</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"La sincronización de este elemento no está disponible en este momento. Para modificar tu preferencia, activa temporalmente los datos de referencia y la sincronización automática."</string>
 </resources>
diff --git a/res/values-fr/strings.xml b/res/values-fr/strings.xml
index 5d6fd8c..2384847 100644
--- a/res/values-fr/strings.xml
+++ b/res/values-fr/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Synchronisation des flux"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Synchronisation"</string>
+    <string name="app_label" msgid="569000083919693222">"Synchronisation des flux"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Paramètres de compte et de synchronisation"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Le nombre maximum de suppressions a été atteint."</string>
     <string name="background_data" msgid="1103557117473896066">"Données en arrière-plan"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Activer l\'utilisation des données en arrière-plan"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Les applications peuvent synchroniser, envoyer et recevoir des données à tout moment."</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Attention"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"La désactivation des données en arrière-plan permet d\'économiser la batterie et de réduire l\'utilisation des données. Certaines applications peuvent utiliser la connexion des données en arrière-plan."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"La désactivation des données en arrière-plan permet d\'économiser la batterie et de réduire l\'utilisation des données. Certaines applications peuvent utiliser la connexion des données en arrière-plan."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Synchronisation auto"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Synchronisation automatique des données"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Synchronisation automatique des données par les applications"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Sauvegarder les paramètres"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Sauvegarder mes paramètres"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Synchroniser maintenant"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Annuler la synchronisation"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Synchroniser maintenant <xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Touchez l\'écran pour lancer la synchronisation <xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Agenda"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Annuler les suppressions"</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Ne rien faire pour l\'instant"</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"La synchronisation rencontre actuellement des problèmes. Elle sera rétablie sous peu."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Bienvenue sur Google Sync !"</font>" "\n"Une approche Google pour synchroniser vos données afin de vous permettre l\'accès à vos contacts, rendez-vous et plus encore, où que vous vous trouviez."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Bienvenue sur Google Sync !"</font>" "\n"Une solution Google pour synchroniser vos données et vous permettre d\'accéder à vos contacts, rendez-vous, etc. où que vous soyez."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Paramètres des applications"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Gérer les comptes"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Paramètres généraux"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"La synchronisation est activée."</string>
+    <string name="sync_disabled" msgid="185731301298967302">"La synchronisation est désactivée."</string>
+    <string name="sync_error" msgid="681431702824599812">"Erreur de synchronisation"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Ajouter un compte"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Données et synchronisation"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Modifier le mot de passe"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Paramètres du compte"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Supprimer le compte"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Ajouter un compte"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Terminer"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Supprimer le compte"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Voulez-vous vraiment supprimer ce compte ? Cela entraînera également la suppression de tous ses messages, contacts et autres données du téléphone."\n"Voulez-vous continuer ?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Ce compte est utilisé par des applications. Pour le supprimer, vous devez rétablir les paramètres par défaut du téléphone (ce qui supprimera toutes vos données personnelles). Pour cela, allez dans l\'application Paramètres, sous Confidentialité."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Abonnements Push"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Synchroniser <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Impossible de procéder à la synchronisation manuelle."</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"La synchronisation de cet élément est actuellement désactivée. Pour modifier vos préférences, activez temporairement les données en arrière-plan et la synchronisation automatique."</string>
 </resources>
diff --git a/res/values-it/strings.xml b/res/values-it/strings.xml
index 43ece11..98485d2 100644
--- a/res/values-it/strings.xml
+++ b/res/values-it/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Sincronizzazione feed"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Sincronizzazione dati"</string>
+    <string name="app_label" msgid="569000083919693222">"Sincronizzazione feed"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Impostazioni account e sincronizzazione"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Limite di eliminazioni superato"</string>
     <string name="background_data" msgid="1103557117473896066">"Dati in background"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Attiva utilizzo dei dati in background"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Le applicazioni possono sincronizzare, inviare e ricevere dati in qualsiasi momento"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Attenzione"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"La disattivazione dei dati in background consente di ridurre il consumo delle batterie e l\'utilizzo dei dati. Alcune applicazioni potrebbero utilizzare comunque la connessione dati in background."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"La disattivazione dei dati in background consente di estendere la durata delle batterie e di ridurre l\'utilizzo dei dati. Alcune applicazioni potrebbero utilizzare comunque la connessione dati in background."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Sincronizz. automatica"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Sincronizza i dati automaticamente"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Le applicazioni sincronizzano i dati automaticamente"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Backup impostazioni"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Backup delle mie impostazioni"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Sincronizza ora"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Annulla sincronizzazione"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Seleziona per sincronizzare ora<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Tocca per sincronizzare ora <xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Calendario"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Annulla le eliminazioni."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Non fare nulla per ora."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"La sincronizzazione presenta dei problemi. L\'operazione verrà ripristinata a breve."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Benvenuto in Google Sync."</font>" "\n"L\'approccio di Google alla sincronizzazione di dati per consentirti l\'accesso ai tuoi contatti, appuntamenti e altro ancora, dovunque tu sia."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Benvenuto in Google Sync."</font>" "\n"L\'approccio di Google alla sincronizzazione di dati per consentirti l\'accesso ai tuoi contatti, appuntamenti e altro ancora, ovunque tu sia."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Impostazioni sincronizzazione applicazioni"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Gestisci account"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Impostazioni generali di sincronizzazione"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"La sincronizzazione è attiva"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"La sincronizzazione non è attiva"</string>
+    <string name="sync_error" msgid="681431702824599812">"Errore di sincronizzazione"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Aggiungi account"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Dati e sincronizzazione"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Cambia password"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Impostazioni account"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Rimuovi account"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Aggiungi un account"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Fine"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Rimuovi account"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Rimuovere questo account? La rimozione elimina dal telefono tutti i relativi messaggi, contatti e altri dati. "\n"Procedere?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"L\'account è richiesto da alcune applicazioni. Puoi rimuoverlo solo ripristinando il telefono con le impostazioni predefinite (questa operazione elimina tutti i dati personali). Per procedere vai a \"Impostazioni\" in \"Privacy\"."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Sottoscrizioni push"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Sincronizza <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Impossibile sincronizzare manualmente"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"La sincronizzazione per questo elemento è attualmente disabilitata. Per modificare la preferenza, attiva temporaneamente i dati in background e la sincronizzazione automatica."</string>
 </resources>
diff --git a/res/values-ja/strings.xml b/res/values-ja/strings.xml
index be494cc..364e07b 100644
--- a/res/values-ja/strings.xml
+++ b/res/values-ja/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"フィードの同期"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"データの同期"</string>
+    <string name="app_label" msgid="569000083919693222">"フィードの同期"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"アカウントと同期の設定"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"削除の制限を超えました"</string>
     <string name="background_data" msgid="1103557117473896066">"バックグラウンドデータ"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"バックグラウンドデータの使用を有効にする"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"アプリケーションがデータをいつでも同期、送信、受信できるようにする"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"注意"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"バックグラウンドデータを無効にすると、データの使用が減るため電池を節約できます。一部のアプリケーションでは引き続きバックグラウンドデータの接続を使用します。"</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"バックグラウンドデータを無効にすると、データの使用が減るため電池を節約できます。一部のアプリケーションでは引き続きバックグラウンドデータの接続を使用します。"</string>
     <string name="sync_automatically" msgid="4694735102757960100">"自動同期"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"自動的にデータを同期する"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"アプリケーションが自動的にデータを同期する"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"設定をバックアップ"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"設定のバックアップ"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"今すぐ同期"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"同期をキャンセル"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"今すぐ同期を選択<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"タップして今すぐ同期<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"カレンダー"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"削除を元に戻します。"</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"今は何もしません。"</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"現在同期で問題が発生しています。しばらくお待ちください。"</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Google Syncへようこそ"</font>" "\n"このサービスを使用すると、データを同期してどこからでも連絡先や予定などにアクセスできます。"</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Google Syncへようこそ"</font>" "\n"このサービスを使用すると、データを同期してどこからでも連絡先や予定などにアクセスできます。"</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"アプリケーションの同期設定"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"アカウントを管理"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"同期の基本設定"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"同期ON"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"同期OFF"</string>
+    <string name="sync_error" msgid="681431702824599812">"同期エラー"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"アカウントを追加"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"データと同期"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"パスワードを変更"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"アカウントの設定"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"アカウントを削除"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"アカウントを追加"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"完了"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"アカウントを削除"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"このアカウントを削除してよろしいですか？削除すると、携帯のメール、連絡先などのすべてのデータも削除されます。"\n"続けますか？"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"このアカウントを必要としているアプリケーションがあります。アカウントを削除するには、携帯を出荷時設定にリセットする必要があります（個人データはすべて削除されます）。リセットは、[設定]アプリケーションの[プライバシー]で行います。"</string>
+    <string name="provider_label" msgid="6191617139291321517">"プッシュ型登録"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"<xliff:g id="AUTHORITY">%s</xliff:g>を同期"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"手動では同期できません"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"このアイテムの同期は現在無効になっています。設定を変更するには、バックグラウンドデータと自動同期を一時的にONにします。"</string>
 </resources>
diff --git a/res/values-ko/strings.xml b/res/values-ko/strings.xml
index 62bcbb7..55af90c 100644
--- a/res/values-ko/strings.xml
+++ b/res/values-ko/strings.xml
@@ -15,20 +15,21 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"데이터 동기화"</string>
+    <string name="app_label" msgid="569000083919693222">"피드 동기화"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"계정 및 동기화 설정"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"삭제 한도를 초과했습니다."</string>
     <string name="background_data" msgid="1103557117473896066">"배경 데이터"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"배경 데이터 사용 설정"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"응용프로그램이 언제든지 데이터를 동기화하고 보내고 받을 수 있습니다."</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"주의"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"배경 데이터를 사용하지 않도록 설정하면 배터리가 절약되고 데이터 사용률이 낮아집니다. 일부 응용프로그램은 여전히 배경 데이터 연결을 사용할 수 있습니다."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"백그라운드 데이터를 사용하지 않도록 설정하면 배터리 수명이 늘어나고 데이터 사용률이 낮아집니다. 일부 응용프로그램은 여전히 백그라운드 데이터 연결을 사용할 수 있습니다."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"자동 동기화"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"자동으로 데이터 동기화"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"응용프로그램이 데이터를 자동으로 동기화합니다."</string>
+    <string name="settings_backup" msgid="6114299464740014762">"설정 백업"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"내 설정 백업"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"지금 동기화"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"동기화 취소"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"지금 동기화하도록 선택(마지막 동기화: <xliff:g id="LAST_SYNC_TIME">
-%1$s</xliff:g>)"</string>
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"지금 동기화하려면 터치<xliff:g id="LAST_SYNC_TIME">
+%1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"캘린더"</string>
     <string name="sync_contacts" msgid="2035690905925565660">"주소록"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"삭제 실행취소"</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"지금은 아무 작업도 안함"</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"동기화에 현재 문제가 발생했습니다. 곧 다시 동기화됩니다."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Google 동기화를 시작합니다."</font>" "\n"사용자가 어디에서든지 주소록, 일정 등에 액세스할 수 있도록 데이터를 동기화하는 방법입니다."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Google Sync에 오신 것을 환영합니다."</font>" "\n"Google Sync는 사용자가 어디에서든지 연락처, 일정 등에 액세스할 수 있도록 데이터를 동기화하는 Google 서비스입니다."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"응용프로그램 동기화 설정"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"계정 관리"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"기본 동기화 설정"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"동기화 사용 중"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"동기화 사용 안함"</string>
+    <string name="sync_error" msgid="681431702824599812">"동기화 오류"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"계정 추가"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"데이터 및 동기화"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"비밀번호 변경"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"계정 설정"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"계정 삭제"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"계정 추가"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"마침"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"계정 삭제"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"계정을 삭제하시겠습니까? 삭제하면 휴대전화의 메시지, 연락처 및 다른 데이터가 모두 지워집니다. "\n"계속하시겠습니까?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"일부 응용프로그램의 경우 이 계정이 필요합니다. 휴대전화를 기본값으로 재설정해야 계정을 삭제할 수 있으며 이 경우 모든 개인정보가 삭제됩니다. 개인정보 보호 아래의 설정 응용프로그램에서 재설정을 수행할 수 있습니다."</string>
+    <string name="provider_label" msgid="6191617139291321517">"구독정보 푸시"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"<xliff:g id="AUTHORITY">%s</xliff:g> 동기화"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"수동으로 동기화할 수 없음"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"현재 이 항목에 대해 동기화를 사용할 수 없습니다. 환경설정을 변경하려면 백그라운드 데이터 및 자동 동기화를 일시적으로 사용하도록 설정하세요."</string>
 </resources>
diff --git a/res/values-nb/strings.xml b/res/values-nb/strings.xml
index 82c890d..1c36793 100644
--- a/res/values-nb/strings.xml
+++ b/res/values-nb/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Strømsynkronisering"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Datasynkronisering"</string>
+    <string name="app_label" msgid="569000083919693222">"Strømsynkronisering"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Innstillinger for kontoer og synkronisering"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Grensen for sletting nådd"</string>
     <string name="background_data" msgid="1103557117473896066">"Bakgrunnsdata"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Slå på bruk av bakgrunnsdata"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Slå på bruk av bakgrunnsdata"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"NB"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Det å slå av bakgrunnsdata sparer batteri og reduserer datatrafikken. Noen applikasjoner kan fortsatt bruke tilkoblingen for bakgrunnsdata."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Det å slå av bakgrunnsdata sparer batteri og reduserer datatrafikken. Noen applikasjoner kan fortsatt bruke tilkoblingen for bakgrunnsdata."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Autosynk"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Synkroniser data automatisk"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Synkroniser data automatisk"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Sikkerhetskopier innstillinger"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Aktiver sikkerhetskopiering av innstillinger"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Synkroniser nå"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Avbryt synkronisering"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Velg for å synkronisere nå<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Velg for å synkronisere nå<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Kalender"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Angre slettingen."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Ikke gjør noe nå."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Det er midlertidige problemer med synkroniseringen. Vent litt."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Velkommen til Google-synkronisering!"</font>" "\n"En Google-løsning for å synkronisere data så du får tilgang til kontakter, avtaler og mer uansett hvor du er."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Velkommen til Google-synkronisering!"</font>" "\n"En Google-løsning for å synkronisere data så du får tilgang til kontakter, avtaler og mer uansett hvor du er."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Synkronisering av applikasjoner"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Styr kontoer"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Generelle synkroniseringsinnstillinger"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Synkronisering er på"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Synkronisering er av"</string>
+    <string name="sync_error" msgid="681431702824599812">"Synkroniseringsfeil"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Legg til konto"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Data og synkronisering"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Endre passord"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Kontoinnstillinger"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Fjern konto"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Legg til en konto"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Fullfør"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Fjern konto"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Er du sikker på at du vil fjerne denne kontoen? Hvis du fjerner den, fjernes samtidig alle data som er tilknyttet kontoen. "\n"Vil du fortsette?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Kunne ikke fjerne denne kontoen."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Push-abonnementer"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Synkroniser <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Kan ikke synkronisere manuelt"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Synkronisering for disse dataene er deaktivert. For å bytte innstillinger, slå på bakgrunnsdata og automatisk synkronisering midlertidig."</string>
 </resources>
diff --git a/res/values-nl/strings.xml b/res/values-nl/strings.xml
index ac215e9..4914f9c 100644
--- a/res/values-nl/strings.xml
+++ b/res/values-nl/strings.xml
@@ -15,19 +15,22 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Feeds synchroniseren"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Gegevenssynchronisatie"</string>
+    <string name="app_label" msgid="569000083919693222">"Feeds synchroniseren"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Account- en synchronisatie-instellingen"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Verwijderingslimiet overschreden"</string>
     <string name="background_data" msgid="1103557117473896066">"Achtergrondgegevens"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Gebruik van achtergrondgegevens inschakelen"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Toepassingen kunnen gegevens op elk gewenst moment synchroniseren, verzenden en ontvangen"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Let op"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Als u achtergrondgegevens uitschakelt, bespaart u batterijlading en wordt het gegevensverbruik verlaagd. Sommige toepassingen maken mogelijk nog steeds gebruik van de achtergrondgegevensverbinding."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Als u achtergrondgegevens uitschakelt, bespaart u acculading en wordt het gegevensverbruik verlaagd. Sommige toepassingen maken mogelijk nog steeds gebruik van de achtergrondgegevensverbinding."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Automatische synchronisatie"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Gegevens automatisch synchroniseren"</string>
+    <!-- no translation found for sync_automatically_summary (4598895616781542745) -->
+    <skip />
+    <string name="settings_backup" msgid="6114299464740014762">"Back-up van instellingen maken"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Back-up maken van mijn instellingen"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Nu synchroniseren"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Synchronisatie annuleren"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Selecteren om nu te synchroniseren<xliff:g id="LAST_SYNC_TIME">
-%1$s</xliff:g>"</string>
+    <!-- no translation found for sync_one_time_sync (3274364877518422827) -->
+    <skip />
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Agenda"</string>
     <string name="sync_contacts" msgid="2035690905925565660">"Contacten"</string>
@@ -36,7 +39,28 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Verwijderingen ongedaan maken."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Nu niets doen."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Er zijn momenteel problemen met de synchronisatie. Synchronisatie wordt snel opnieuw uitgevoerd."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Welkom bij Google Sync!"</font>" "\n"Een benadering van Google voor de synchronisatie van gegevens, zodat u altijd en overal toegang heeft tot uw contacten, afspraken en nog veel meer."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Welkom bij Google Sync!"</font>" "\n"Een benadering van Google voor de synchronisatie van gegevens, zodat u altijd en overal toegang heeft tot uw contacten, afspraken en nog veel meer."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Synchronisatie-instellingen toepassing"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Accounts beheren"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Algemene instellingen voor synchronisatie"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Synchroniseren ingeschakeld"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Synchroniseren uitgeschakeld"</string>
+    <string name="sync_error" msgid="681431702824599812">"Fout bij synchroniseren"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Account toevoegen"</string>
+    <!-- no translation found for header_data_and_synchronization (6286257845276834071) -->
+    <skip />
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Wachtwoord wijzigen"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Accountinstellingen"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Account verwijderen"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Een account toevoegen"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Voltooien"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Account verwijderen"</string>
+    <!-- no translation found for really_remove_account_message (3293445755620109578) -->
+    <skip />
+    <!-- no translation found for remove_account_failed (8178924513521241001) -->
+    <skip />
+    <string name="provider_label" msgid="6191617139291321517">"Abonnementen doorvoeren"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"<xliff:g id="AUTHORITY">%s</xliff:g> synchroniseren"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Kan niet handmatig synchroniseren"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Synchroniseren is op dit moment uitgeschakeld voor dit item. Als u uw voorkeuren wilt wijzigen, schakelt u achtergrondgegevens en automatisch synchroniseren tijdelijk in."</string>
 </resources>
diff --git a/res/values-pl/strings.xml b/res/values-pl/strings.xml
index c8ccede..57e4902 100644
--- a/res/values-pl/strings.xml
+++ b/res/values-pl/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"Synchronizowanie kanałów"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"Synchronizacja danych"</string>
+    <string name="app_label" msgid="569000083919693222">"Synchronizuj kanały"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Ustawienia kont i synchronizacji"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Przekroczono limit usuwania"</string>
     <string name="background_data" msgid="1103557117473896066">"Dane w tle"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Włącz używanie danych w tle"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Aplikacje mogą synchronizować, wysyłać i odbierać dane w dowolnym momencie"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Uwaga"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Wyłączenie danych w tle umożliwia oszczędzanie baterii i zmniejsza wykorzystanie danych. Mimo to niektóre aplikacje mogą nadal korzystać z połączenia transmisji danych w tle."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Wyłączenie obsługi danych w tle wydłuża czas pracy baterii i zmniejsza użycie danych. Niektóre aplikacje mogą nadal korzystać z połączenia transmisji danych w tle."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Autosynchronizacja"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Automatycznie synchronizuj dane"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Aplikacje automatycznie synchronizują dane"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Ustawienia tworzenia kopii zapasowej"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Utwórz kopię zapasową moich ustawień"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Synchronizuj teraz"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Anuluj synchronizację"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Wybierz, aby zsynchronizować teraz<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Dotknij, aby teraz zsynchronizować<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Kalendarz"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Cofnij usunięcie."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Nie wykonuj teraz żadnych czynności."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Podczas synchronizacji wystąpiły problemy. Synchronizacja zostanie wkrótce wznowiona."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Witamy w Google Sync!"</font>" "\n"Firma Google umożliwia synchronizację danych i dostęp do kontaktów, terminów oraz innych informacji z dowolnego miejsca."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Google Sync – witamy!"</font>" "\n"Synchronizacja danych w stylu Google zapewniająca dostęp do kontaktów, terminów oraz innych informacji z dowolnego miejsca."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Ustawienia synchronizacji aplikacji"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Zarządzaj kontami"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Ogólne ustawienia synchronizacji"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Synchronizacja jest włączona"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Synchronizacja jest wyłączona"</string>
+    <string name="sync_error" msgid="681431702824599812">"Błąd synchronizacji"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Dodaj konto"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Dane i synchronizacja"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Zmień hasło"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Ustawienia konta"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Usuń konto"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Dodaj konto"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Zakończ"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Usuń konto"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Czy na pewno chcesz usunąć to konto? Jego usunięcie spowoduje również usunięcie z telefonu wszystkich jego wiadomości, kontaktów i innych danych. "\n"Czy kontynuować?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"To konto jest wymagane przez niektóre aplikacje. Można je usunąć jedynie przez przywrócenie fabrycznych wartości domyślnych telefonu (co spowoduje usunięcie wszystkich danych osobistych). W tym celu należy przejść do sekcji Prywatność w aplikacji Ustawienia."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Subskrypcje w trybie push"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Synchronizuj aplikację <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Nie można ręcznie zsynchronizować"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Synchronizacja tego elementu jest obecnie wyłączona. Aby zmienić ustawienie, tymczasowo włącz obsługę danych w tle i automatyczną synchronizację."</string>
 </resources>
diff --git a/res/values-pt-rPT/strings.xml b/res/values-pt-rPT/strings.xml
index e609de2..97992b3 100644
--- a/res/values-pt-rPT/strings.xml
+++ b/res/values-pt-rPT/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Sincronização de dados"</string>
+    <string name="app_label" msgid="569000083919693222">"Sincronizar feeds"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Definições de contas e sincronização"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Limite de eliminações excedido"</string>
     <string name="background_data" msgid="1103557117473896066">"Dados em segundo plano"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Activar utilização de dados em segundo plano"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"As aplicações podem sincronizar, enviar e receber dados em qualquer momento"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Atenção"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"A desactivação de dados em segundo plano economiza a bateria e reduz a utilização de dados. Algumas aplicações podem continuar a utilizar a ligação de dados em segundo plano."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"A desactivação de dados em segundo plano economiza a bateria e reduz a utilização de dados. Algumas aplicações podem continuar a utilizar a ligação de dados em segundo plano."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Sincronização automática"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Sincronizar dados automaticamente"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"As aplicações sincronizam os dados automaticamente"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Efectuar uma cópia de segurança das definições"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Efectuar uma cópia de segurança das minhas definições"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Sincronizar agora"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Cancelar sincronização"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Optar por sincronizar agora<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Tocar para sincronizar agora<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Calendário"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Anular as eliminações."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Não fazer nada por agora."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"A sincronização está actualmente com problemas e será retomada em breve."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Bem vindo ao Google Sync!"</font>" "\n"Uma abordagem do Google à sincronização de dados que permite aceder aos contactos, compromissos e outros itens, onde quer que esteja."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Bem vindo ao Google Sync!"</font>" "\n"Uma abordagem do Google à sincronização de dados, que permite aceder aos contactos, compromissos e outros itens, a partir de qualquer local onde se encontre."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Definições de sincronização da aplicação"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Gerir contas"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Definições gerais de sincronização"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"A sincronização está activada"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"A sincronização está desactivada"</string>
+    <string name="sync_error" msgid="681431702824599812">"Erro de sincronização"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Adicionar conta"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Dados e sincronização"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Alterar palavra-passe"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Definições da conta"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Remover conta"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Adicionar uma conta"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Terminar"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Remover conta"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Tem a certeza de que pretende remover esta conta? Ao fazê-lo, eliminará também todas as mensagens e contactos da mesma e outros dados do telefone. "\n" Deseja continuar?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Esta conta é necessária para algumas aplicações. Só será possível removê-la se as predefinições de fábrica do telefone forem repostas (o que elimina todos os seus dados pessoais). Para o fazer, aceda à aplicação Definições, em Privacidade."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Subscrições de emissão"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Sincronizar <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Não é possível sincronizar manualmente"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"A sincronização para este item está actualmente desactivada. Para alterar as suas preferências, active temporariamente os dados em segundo plano e a sincronização automática."</string>
 </resources>
diff --git a/res/values-pt/strings.xml b/res/values-pt/strings.xml
index 4335e28..2d51e42 100644
--- a/res/values-pt/strings.xml
+++ b/res/values-pt/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Sincronização de dados"</string>
+    <string name="app_label" msgid="569000083919693222">"Sincronizar feeds"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Configurações de Contas e sincronização"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Limite de exclusão excedido"</string>
     <string name="background_data" msgid="1103557117473896066">"Dados de segundo plano"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Ativar o uso de dados de segundo plano"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Os aplicativos podem sincronizar, enviar e receber dados a qualquer momento"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Atenção"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"A desativação dos dados de segundo plano economiza a bateria e diminui o uso dos dados. Alguns aplicativos ainda podem usar a conexão de dados de segundo plano."</string>
-    <string name="sync_automatically" msgid="4694735102757960100">"Sincronização automática"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Sincronizar dados automaticamente"</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"A desativação dos dados de segundo plano estende a vida útil da bateria e diminui o uso dos dados. Alguns aplicativos ainda podem usar a conexão de dados de segundo plano."</string>
+    <string name="sync_automatically" msgid="4694735102757960100">"Sinc. automática"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Aplicativos sincronizam dados automaticamente"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Fazer backup das configurações"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Fazer backup de minhas configurações"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Sincronizar agora"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Cancelar a sincronização"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Selecione para sincronizar agora<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Toque para sincronizar agora<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Agenda"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Desfazer as exclusões."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Não fazer nada por enquanto."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"O Google Sync está enfrentando problemas no momento. Ele retornará em breve."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Bem-vindo ao Google Sync!"</font>" "\n"Um método do Google para sincronizar dados de modo a permitir o acesso aos seus contatos, compromissos e muito mais, onde quer que você esteja."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Bem-vindo ao Google Sync!"</font>" "\n"Um método do Google para sincronizar dados de modo a permitir o acesso aos seus contatos, compromissos e muito mais, onde quer que você esteja."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Configurações de sincronização do aplicativo"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Gerenciar contas"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Configurações de sincronização geral"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"A sincronização está ATIVADA"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"A sincronização está DESATIVADA"</string>
+    <string name="sync_error" msgid="681431702824599812">"Erro na sincronização"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Adicionar conta"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Dados e sincronização"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Alterar senha"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Configurações da conta"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Remover conta"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Adicionar uma conta"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Concluir"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Remover conta"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Deseja mesmo remover esta conta? Sua remoção excluirá também todas as suas mensagens, contatos e outros dados do telefone. "\n"Continuar?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Esta conta é necessária para alguns aplicativos. Só é possível removê-la redefinindo o telefone para os padrões de fábrica (o que exclui todos os seus dados pessoais). Isso é feito na seção de Configurações, em Privacidade."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Enviar inscrições"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Sincronizar <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Não é possível sincronizar manualmente"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"A sincronização para o item está desativada no momento. Para alterar a sua preferência, ative os dados de segundo plano e a sincronização automática temporariamente."</string>
 </resources>
diff --git a/res/values-ru/strings.xml b/res/values-ru/strings.xml
index 01f3f14..61f2653 100644
--- a/res/values-ru/strings.xml
+++ b/res/values-ru/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Синхронизация данных"</string>
+    <string name="app_label" msgid="569000083919693222">"Фиды синхронизации"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Настройки аккаунтов и синхронизации"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Превышен предел удаления"</string>
     <string name="background_data" msgid="1103557117473896066">"Использовать фоновые данные"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Разрешить использовать фоновую передачу данных"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Программы могут синхронизироваться, отправлять и принимать данные в любое время."</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Внимание"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Отключение фоновых данных экономит энергию батареи и уменьшает использование данных. Некоторые приложения могут, тем не менее, использовать фоновую передачу данных."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Отключение фоновых данных экономит энергию батареи и уменьшает использование данных. Некоторые приложения могут, тем не менее, использовать фоновую передачу данных."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Автосинхронизация"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Автоматическая синхронизация данных"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Приложения синхронизируют данные автоматически"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Создать резервную копию настроек"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Создать резервную копию настроек"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Синхронизировать сейчас"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Отменить синхронизацию"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Выберите для синхронизации прямо сейчас<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Нажмите, чтобы начать синхронизацию<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Календарь"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Отменить удаления."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Ничего не делать сейчас."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Проблемы с синхронизацией. Скоро все снова будет работать."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Добро пожаловать в Google Sync!"</font>" "\n"Подход Google к синхронизации данных, помогает получить информацию о контактах, встречах и многом другом, где бы вы ни были."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Добро пожаловать в Google Sync!"</font>" "\n"Подход Google к синхронизации данных, позволяющий получить данные о контактах, встречах и многом другом, где бы вы ни были."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Настройки синхронизации приложения"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Управление аккаунтами"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Общие настройки синхронизации"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Синхронизация включена"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Синхронизация выключена"</string>
+    <string name="sync_error" msgid="681431702824599812">"Ошибка синхронизации"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Добавить аккаунт"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Данные и синхронизация"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Изменить пароль"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Настройки аккаунта"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Удалить аккаунт"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Добавить аккаунт"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Готово"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Удалить аккаунт"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Вы действительно хотите удалить этот аккаунт? Это приведет к потере всех связанных с ним сообщений, контактов и других данных, имеющихся в телефоне. "\n"Продолжить?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Этот аккаунт используется некоторыми приложениями. Чтобы удалить его, нужно восстановить настройки по умолчанию (при этом все личные данные будут потеряны). Для этого откройте \"Настройки\" в разделе \"Конфиденциальность\"."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Подписки Push"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Синхр. <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Не удается синхронизировать вручную"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Синхронизация для этого элемента отключена. Чтобы изменить настройку, временно разрешите использование фоновых данных и автоматическую синхронизацию."</string>
 </resources>
diff --git a/res/values-sv/strings.xml b/res/values-sv/strings.xml
index f7e1637..f6ead7d 100644
--- a/res/values-sv/strings.xml
+++ b/res/values-sv/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Datasynkronisering"</string>
+    <string name="app_label" msgid="569000083919693222">"Synkroniseringsflöden"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Inställningar för konton och synkronisering"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Gränsen för borttagning har överskridits"</string>
     <string name="background_data" msgid="1103557117473896066">"Bakgrundsdata"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Aktivera användning av bakgrundsdata"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Program kan synkronisera, skicka och ta emot data när som helst"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Obs!"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Om du inaktiverar bakgrundsdata sparar du batteri och minskar dataanvändning. Vissa program kanske fortfarande använder anslutningen för bakgrundsdata."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Om du inaktiverar bakgrundsdata sparar du batteri och minskar dataanvändning. Vissa program kanske fortfarande använder anslutningen för bakgrundsdata."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Automatisk synkron."</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Synkronisera data automatiskt"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Programmen synkroniserar data automatiskt"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Säkerhetskopiera inställningar"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Säkerhetskopiera mina inställningar"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Synkronisera nu"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Avbryt synkronisering"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Välj om du vill synkronisera nu<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Tryck om du vill synkronisera nu<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Kalender"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Ångra borttagningarna."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Gör ingenting just nu."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Det är för närvarande problem med synkronisering. Det fungerar igen om en stund."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Välkommen till Google Sync!"</font>" "\n"En funktion i Google som du kan använda om du vill synkronisera data så att du kommer åt dina kontakter, din kalender osv. var du än befinner dig."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Välkommen till Google Sync!"</font>" "\n"En funktion i Google som du kan använda om du vill synkronisera data så att du kommer åt dina kontakter, din kalender osv. var du än befinner dig."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Programmets synkroniseringsinställningar"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Hantera konton"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Allmänna synkroniseringsinställningar"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Synkronisering är på"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Synkronisering är avstängd"</string>
+    <string name="sync_error" msgid="681431702824599812">"Synkroniseringsfel"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Lägg till konto"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Data och synkronisering"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Byt lösenord"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Kontoinställningar"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Ta bort konto"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Lägg till ett konto"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Avsluta"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Ta bort konto"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Vill du ta bort kontot? Om du tar bort kontot tar du också bort alla meddelanden, kontakter och andra data från telefonen. "\n"Vill du fortsätta?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Det här kontot krävs av vissa program. Du kan bara ta bort det om du återställer telefonens fabriksinställningar (vilket raderar alla personliga data). Om du vill göra det öppnar du menyn Sekretess och väljer Inställningar."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Push-prenumerationer"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"Synkronisera <xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Det går inte att synkronisera manuellt"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Synkronisering är inaktiverad för det här objektet. Om du vill ändra inställningen aktiverar du bakgrundsdata och automatisk synkronisering tillfälligt."</string>
 </resources>
diff --git a/res/values-tr/strings.xml b/res/values-tr/strings.xml
index bc32866..74d08f9 100644
--- a/res/values-tr/strings.xml
+++ b/res/values-tr/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"Veri senkronizasyonu"</string>
+    <string name="app_label" msgid="569000083919693222">"Senkronizasyon yayınları"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"Hesaplar ve senkronizasyon ayarları"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"Silme sınırı aşıldı"</string>
     <string name="background_data" msgid="1103557117473896066">"Arka plan veri"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"Arka plan veri kullanımını etkinleştir"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"Uygulamalar, verileri istediğiniz zaman senkronize edebilir ve gönderip alabilir"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"Dikkat"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"Arka plan verilerini devre dışı bırakmak pilden tasarruf sağlar ve veri kullanımını düşürür. Bazı uygulamalar yine de arka plan veri bağlantısını kullanabilir."</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"Arka plan verilerini devre dışı bırakmak, pilden tasarruf sağlar ve veri kullanımını azaltır. Bazı uygulamalar yine de arka plan veri bağlantısını kullanmaya devam edebilir."</string>
     <string name="sync_automatically" msgid="4694735102757960100">"Otomatik senk."</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"Verileri otomatik olarak senkronize et"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"Uygulamalar verileri otomatik olarak senkronize eder"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"Ayarları yedekle"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"Ayarlarımı yedekle"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"Şimdi senk. et"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"Senkronizasyonu iptal et"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"Şimdi senkronize etmek için seçin<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"Şimdi senkronize etmek için dokunun<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Takvim"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"Silme işlemlerini geri alın."</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"Şimdilik bir şey yapma."</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"Senk. şu anda sorun yaşıyor. Kısa bir süre sonra yeniden devreye girecek."</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"Google Sync\'e Hoş Geldiniz!"</font>" "\n"Kişilerinize, randevularınıza ve diğer bilgilerinize istediğiniz yerden erişebilmenize olanak tanımak için veri senkronizasyonuna bir Google yaklaşımı."</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"Google Sync\'e Hoş Geldiniz!"</font>" "\n"Kişilerinize, randevularınıza ve diğer bilgilerinize istediğiniz yerden erişebilmenize olanak veren, Google\'ın veri senkronizasyonu ürünü."</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"Uygulama senk. ayarları"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"Hesapları yönetin"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"Genel senk. ayarları"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"Senkronizasyon AÇIK"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"Senkronizasyon KAPALI"</string>
+    <string name="sync_error" msgid="681431702824599812">"Senkronizasyon hatası"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"Hesap ekle"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"Veri ve senkronizasyon"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"Şifreyi değiştir"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"Hesap ayarları"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"Hesabı kaldır"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"Bir hesap ekleyin"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"Son"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"Hesabı kaldır"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"Bu hesabı gerçekten kaldırmak istiyor musunuz? Bunu kaldırmak, bu hesaba ait tüm mesajları, kişileri ve telefondaki diğer verileri de silecektir. "\n"Devam etmek istiyor musunuz?"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"Bu hesap, bazı uygulamalar için gereklidir. Hesabı ancak telefonu varsayılan fabrika ayarlarına geri döndürerek kaldırabilirsiniz (tüm kişisel verileriniz silinir). Bu işlemi Ayarlar uygulamasında, Gizlilik altında gerçekleştirebilirsiniz."</string>
+    <string name="provider_label" msgid="6191617139291321517">"Abonelik şart koş"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"<xliff:g id="AUTHORITY">%s</xliff:g> senkronize et"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"Manuel olarak senkronize edilemiyor"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"Bu öğe için senkronizasyon şu anda devre dışı bırakılmış durumdadır. Tercihinizi değiştirmek için geçici olarak arka plan verilerini ve otomatik senkronizasyonu açın."</string>
 </resources>
diff --git a/res/values-zh-rCN/strings.xml b/res/values-zh-rCN/strings.xml
index caae4ed..ec8cb31 100644
--- a/res/values-zh-rCN/strings.xml
+++ b/res/values-zh-rCN/strings.xml
@@ -15,19 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <!-- no translation found for app_label (2800463760279909883) -->
-    <skip />
-    <string name="sync_settings" msgid="4549768061467147584">"数据同步"</string>
+    <string name="app_label" msgid="569000083919693222">"同步供稿"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"帐户与同步设置"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"超出删除限制"</string>
     <string name="background_data" msgid="1103557117473896066">"背景数据"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"启用背景数据"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"应用程序能够随时同步、发送和接收数据"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"注意事项"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"禁用背景数据可节省电量并可降低数据使用量。有些应用程序可能仍会使用背景数据连接。"</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"禁用背景数据可延长电池寿命并可降低数据使用量。有些应用程序可能仍会使用背景数据连接。"</string>
     <string name="sync_automatically" msgid="4694735102757960100">"自动同步"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"自动同步数据"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"应用程序自动同步数据"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"备份设置"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"备份我的设置"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"立即同步"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"取消同步"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"选择此程序立即开始同步<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"触摸可立即同步<xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"日历"</string>
@@ -37,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"撤消删除。"</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"目前不进行任何操作。"</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"同步现在遇到问题。很快将返回此操作。"</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"欢迎使用 Google Sync！"</font>\n"Google 同步数据的方法可以让您从任何地方访问您的联系人、约会以及更多信息。"</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"欢迎使用 Google sync！"</font>" "\n"Google 的这款同步数据工具可以让您从任何地方访问您的联系人、约会以及更多信息。"</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"应用程序同步设置"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"管理帐户"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"常规同步设置"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"同步功能已开启"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"同步功能已关闭"</string>
+    <string name="sync_error" msgid="681431702824599812">"同步错误"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"添加帐户"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"数据与同步"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"更改密码"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"帐户设置"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"删除帐户"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"添加帐户"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"完成"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"删除帐户"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"确实要删除此帐户吗？删除该帐户会同时从手机中删除其所有讯息、联系人以及其他数据。"\n"是否继续？"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"某些应用程序需要使用此帐户。您只有将手机重置为出厂默认设置（此操作会删除您所有的个人数据），才能删除此帐户。您可以在“隐私权”下的“设置”部分执行此操作。"</string>
+    <string name="provider_label" msgid="6191617139291321517">"推送订阅"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"同步<xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"无法手动同步"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"当前已停用同步此条目。要更改您的偏好设置，请暂时启用背景数据和自动同步。"</string>
 </resources>
diff --git a/res/values-zh-rTW/strings.xml b/res/values-zh-rTW/strings.xml
index 5818795..5b50283 100644
--- a/res/values-zh-rTW/strings.xml
+++ b/res/values-zh-rTW/strings.xml
@@ -15,18 +15,20 @@
 -->
 <resources xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
-    <string name="app_label" msgid="2800463760279909883">"同步資訊提供"</string>
-    <string name="sync_settings" msgid="4549768061467147584">"資料同步處理"</string>
+    <string name="app_label" msgid="569000083919693222">"同步處理資訊提供"</string>
+    <string name="sync_settings" msgid="8707056705985552604">"帳戶與同步處理設定"</string>
     <string name="sync_too_many_deletes" msgid="1621369057980827097">"達到刪除上限"</string>
     <string name="background_data" msgid="1103557117473896066">"背景資料"</string>
-    <string name="background_data_summary" msgid="4689952168187153486">"啟用背景資料"</string>
+    <string name="background_data_summary" msgid="9048259510387973822">"應用程式隨時可以同步處理、傳送和接收資料"</string>
     <string name="background_data_dialog_title" msgid="6303755495467986079">"注意"</string>
-    <string name="background_data_dialog_message" msgid="2817489591533703840">"停用背景資料可節省電源並減少資料的使用。但某些應用程式可能仍會使用背景資料連線。"</string>
+    <string name="background_data_dialog_message" msgid="8417297954700022363">"停用背景資料可延長電池使用時間，並減少資料的傳輸量。但某些應用程式可能仍會使用背景資料連線。"</string>
     <string name="sync_automatically" msgid="4694735102757960100">"自動同步處理"</string>
-    <string name="sync_automatically_summary" msgid="6210073947698673774">"自動同步處理資料"</string>
+    <string name="sync_automatically_summary" msgid="4598895616781542745">"應用程式會自動同步處理資料"</string>
+    <string name="settings_backup" msgid="6114299464740014762">"備份設定"</string>
+    <string name="settings_backup_summary" msgid="1787552172618610178">"備份我的設定"</string>
     <string name="sync_menu_sync_now" msgid="5796024841315572404">"立即同步處理"</string>
     <string name="sync_menu_sync_cancel" msgid="1005480041232010062">"取消同步處理"</string>
-    <string name="sync_one_time_sync" msgid="3474532720071919514">"選取此處立即開始同步處理<xliff:g id="LAST_SYNC_TIME">
+    <string name="sync_one_time_sync" msgid="3274364877518422827">"輕觸此處立即開始同步 <xliff:g id="LAST_SYNC_TIME">
 %1$s</xliff:g>"</string>
     <string name="sync_gmail" msgid="5806053858668452000">"Gmail"</string>
     <string name="sync_calendar" msgid="1796292773734071897">"Google 日曆"</string>
@@ -36,7 +38,25 @@
     <string name="sync_undo_deletes" msgid="8695514459839593307">"復原刪除。"</string>
     <string name="sync_do_nothing" msgid="5798755982392201673">"暫停執行 。"</string>
     <string name="sync_is_failing" msgid="5230237058552433773">"同步處理目前發生問題。將於短時間內恢復。"</string>
-    <string name="sync_plug" msgid="4526246957714417280"><font fgcolor="#ffffffff">"歡迎使用 Google Sync！"</font>\n"這是 Google 所提供用於同步處理資料的程式，可讓您隨時隨地存取聯絡人、約會等資料。"</string>
+    <string name="sync_plug" msgid="7020432439004167162"><font fgcolor="#ffffffff">"歡迎使用 Google Sync！"</font>\n"這是 Google 所提供的資料同步處理工具，可讓您隨時隨地存取通訊錄、約會等資料。"</string>
     <string name="header_application_sync_settings" msgid="5263025067167527890">"應用程式同步處理設定"</string>
+    <string name="header_manage_accounts" msgid="381956296995298770">"管理帳戶"</string>
     <string name="header_general_sync_settings" msgid="1598537524696692308">"一般同步處理設定"</string>
+    <string name="sync_enabled" msgid="913018877443997502">"已開啟同步處理功能"</string>
+    <string name="sync_disabled" msgid="185731301298967302">"已關閉同步處理功能"</string>
+    <string name="sync_error" msgid="681431702824599812">"同步處理錯誤"</string>
+    <string name="add_account_label" msgid="2035321485672826779">"新增帳戶"</string>
+    <string name="header_data_and_synchronization" msgid="6286257845276834071">"資料同步處理"</string>
+    <string name="preference_change_password_title" msgid="6468827554159468315">"變更密碼"</string>
+    <string name="header_account_settings" msgid="4950809499418403792">"帳戶設定"</string>
+    <string name="remove_account_label" msgid="5624712684599197863">"移除帳戶"</string>
+    <string name="header_add_an_account" msgid="2198078922829535425">"新增帳戶"</string>
+    <string name="finish_button_label" msgid="6121560986057356757">"完成"</string>
+    <string name="really_remove_account_title" msgid="8808121039511188784">"移除帳戶"</string>
+    <string name="really_remove_account_message" msgid="3293445755620109578">"確定要移除帳戶嗎？移除帳戶後，手機上的訊息、聯絡人和其他資料將一併遭到刪除。"\n"您要繼續嗎？"</string>
+    <string name="remove_account_failed" msgid="8178924513521241001">"部分應用程式需要使用此帳戶。如要移除此帳戶，您必須將手機還原至出廠預設值 (這會刪除您全部的個人資料)；請至 [設定] 應用程式的 [隱私權] 中進行還原。"</string>
+    <string name="provider_label" msgid="6191617139291321517">"發送訂閱"</string>
+    <string name="sync_item_title" msgid="7984962124867021854">"同步處理<xliff:g id="AUTHORITY">%s</xliff:g>"</string>
+    <string name="cant_sync_dialog_title" msgid="3016197392261471761">"無法手動同步處理"</string>
+    <string name="cant_sync_dialog_message" msgid="7200115394296632300">"該項目的同步處理功能已停用。如要變更您的偏好設定，請暫時開啟背景資料與自動同步處理功能。"</string>
 </resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index a606565..016073d 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -19,30 +19,34 @@
 
 <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
     <!-- Title of the feed synchronization activity. -->
-    <string name="app_label">Sync Feeds</string>
+    <string name="app_label">Account and Sync Settings</string>
     <!-- Sync settings -->
     <!-- Main Settings screen setting option name to go into the screen for data sync settings-->
-    <string name="sync_settings">Data synchronization</string>
+    <string name="sync_settings">Accounts &amp; sync settings</string>
     <!-- Error message when the sync tried to delete too many things -->
     <string name="sync_too_many_deletes">Delete limit exceeded</string>
     <!-- Data synchronization settings screen, title of setting that controls whether background data should be used -->
     <string name="background_data">Background data</string>
     <!-- Data synchronization settings screen, summary of setting that controls whether background data should be used -->
-    <string name="background_data_summary">Enable background data usage</string>
+    <string name="background_data_summary">Applications can sync, send, and receive data at any time</string>
     <!-- Data synchronization settings screen, title of dialog that confirms the user's unchecking of background data -->
     <string name="background_data_dialog_title">Attention</string>
     <!-- Data synchronization settings screen, message of dialog that confirms the user's unchecking of background data -->
-    <string name="background_data_dialog_message">Disabling background data saves battery and lowers data usage. Some applications may still use the background data connection.</string>
+    <string name="background_data_dialog_message">Disabling background data extends battery life and lowers data use. Some applications may still use the background data connection.</string>
     <!-- Data synchronization settings screen, setting option name -->
     <string name="sync_automatically">Auto-sync</string>
     <!-- Data synchronization settings screen, setting option summary text when check box is selected -->
-    <string name="sync_automatically_summary">Automatically sync data</string>
+    <string name="sync_automatically_summary">Applications sync data automatically</string>
+    <!-- Data synchronization settings screen, setting option name -->
+    <string name="settings_backup">Back up settings</string>
+    <!-- Data synchronization settings screen, setting option summary text when check box is selected -->
+    <string name="settings_backup_summary">Back up my settings</string>
     <!-- Data synchronization settings screen, menu option -->
     <string name="sync_menu_sync_now">Sync now</string>
     <!-- Data synchronization settings screen, menu option -->
     <string name="sync_menu_sync_cancel">Cancel sync</string>
     <!-- Data synchronization settings screen, summary of a sync provider (for example, Gmail) when autosync is off and the user wants to do a one-time sync. -->
-    <string name="sync_one_time_sync">Select to sync now<xliff:g id="last_sync_time">\n%1$s</xliff:g></string>
+    <string name="sync_one_time_sync">Touch to sync now<xliff:g id="last_sync_time">\n%1$s</xliff:g></string>
     <!-- Data synchronization settings screen, checkbox setting option name. Controls whether Gmail should be synced.  Should use "Gmail" to refer to this app.-->
     <string name="sync_gmail">Gmail</string>
     <!-- Data synchronization settings screen, checkbox setting option name. Controls whether Calendar shoudl be synced. -->
@@ -60,11 +64,56 @@
     <!-- Message when sync is currently failing -->
     <string name="sync_is_failing">Sync is currently experiencing problems. It will be back shortly.</string>
     <!-- Message introducing the user to Google Sync. -->
-    <string name="sync_plug"><font fgcolor="#ffffffff">Welcome to Google Sync!</font>
-    \nA Google approach to synchronizing data to allow access to your contacts, appointments and more from wherever you are.
+    <string name="sync_plug"><font fgcolor="#ffffffff">Welcome to Google sync!</font>
+    \nA Google approach to synchronizing data to allow access to your contacts, appointments, and more from wherever you are.
     </string>
+
+    <!-- TODO: Remove -->
     <!-- Header title for those settings relating to application syncing. -->
     <string name="header_application_sync_settings">Application sync settings</string>
+    <!-- TODO: end -->
+
+    <!-- Accounts & Synchronization settings --><skip/>
+    <!-- Header title for list of accounts on Accounts & Synchronization settings -->
+    <string name="header_manage_accounts">Manage accounts</string>
     <!-- Header title for those settings relating to general syncing. -->
     <string name="header_general_sync_settings">General sync settings</string>
+
+    <!-- Sync status messages on Accounts & Synchronization settings --><skip/>
+    <!-- Sync status shown when sync is enabled -->
+    <string name="sync_enabled">Sync is ON</string>
+    <!-- Sync status shown when sync is disabled -->
+    <string name="sync_disabled">Sync is OFF</string>
+    <!-- Sync status shown when last sync resulted in an error -->
+    <string name="sync_error">Sync error</string>
+
+    <!-- Button label to add an account -->
+    <string name="add_account_label">Add account</string>
+    <!-- Header for data and synchronization -->
+    <string name="header_data_and_synchronization">Data &amp; synchronization</string>
+    <!-- Preference item that lets the user change password -->
+    <string name="preference_change_password_title">Change password</string>
+    <!-- Header that appears at the top of Account Settings screen -->
+    <string name="header_account_settings">Account settings</string>
+    <!-- Button label to remove current account -->
+    <string name="remove_account_label">Remove account</string>
+    <!-- Title shown in AddAccount -->
+    <string name="header_add_an_account">Add an account</string>
+    <!-- Button shown when this activity is run from SetupWizard -->
+    <string name="finish_button_label">Finish</string>
+    <!-- Title of remove message for remove account dialog -->
+    <string name="really_remove_account_title">Remove account</string>
+    <!-- Remove account message in dialog -->
+    <string name="really_remove_account_message">Do you really want to remove this account? Removing it will also delete all of its messages, contacts, and other data from the phone.
+    \nProceed?</string>
+    <!-- This is shown if the autheticator for a given account fails to remove it. -->
+    <string name="remove_account_failed">This account is required by some applications. You can only remove it by resetting the phone to factory defaults (which deletes all your personal data). You do that in the Settings application, under Privacy.</string>
+    <!-- What to show in messaging that refers to this provider, e.g. AccountSyncSettings -->
+    <string name="provider_label">Push subscriptions</string>
+    <!-- Formatter in AccountSyncSettings for each application we wish to synchronize, e.g. "Sync Calendar" -->
+    <string name="sync_item_title">Sync <xliff:g id="authority" example="Calendar">%s</xliff:g></string>
+    <!-- Title of dialog shown when you can't manually sync an item because it's disabled -->
+    <string name="cant_sync_dialog_title">Cannot manually sync</string>
+    <!-- Messaage shown in dialog when you can't manually sync -->
+    <string name="cant_sync_dialog_message">Sync for this item is currently disabled. To change your preference, temporarily turn on background data and automatic sync.</string>
 </resources>
diff --git a/res/xml/account_sync_settings.xml b/res/xml/account_sync_settings.xml
new file mode 100644
index 0000000..ff49c9c
--- /dev/null
+++ b/res/xml/account_sync_settings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <PreferenceCategory android:key="dataAndSynchronization"
+            android:title="@string/header_data_and_synchronization" />
+
+</PreferenceScreen>
diff --git a/res/xml/add_account_settings.xml b/res/xml/add_account_settings.xml
new file mode 100644
index 0000000..0ec46b7
--- /dev/null
+++ b/res/xml/add_account_settings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+</PreferenceScreen>
diff --git a/res/xml/manage_accounts_settings.xml b/res/xml/manage_accounts_settings.xml
new file mode 100644
index 0000000..8ddd7e7
--- /dev/null
+++ b/res/xml/manage_accounts_settings.xml
@@ -0,0 +1,36 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2008 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
+
+    <PreferenceCategory
+            android:title="@string/header_general_sync_settings" />
+
+    <CheckBoxPreference android:key="backgroundDataCheckBox"
+        android:persistent="false"
+        android:title="@string/background_data"
+        android:summary="@string/background_data_summary"/>
+
+    <CheckBoxPreference android:key="syncAutomaticallyCheckBox"
+        android:persistent="false"
+        android:dependency="backgroundDataCheckBox"
+        android:title="@string/sync_automatically"
+        android:summary="@string/sync_automatically_summary"/>
+
+    <PreferenceCategory android:key="manageAccountsCategory"
+            android:title="@string/header_manage_accounts" />
+
+</PreferenceScreen>
diff --git a/res/xml/sync_settings.xml b/res/xml/sync_settings.xml
deleted file mode 100644
index 988363f..0000000
--- a/res/xml/sync_settings.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2008 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-  
-          http://www.apache.org/licenses/LICENSE-2.0
-  
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <PreferenceCategory
-            android:title="@string/header_general_sync_settings" />
-
-    <CheckBoxPreference android:key="backgroundDataCheckBox"
-        android:persistent="false"
-        android:title="@string/background_data"
-        android:summary="@string/background_data_summary"/>
-    <CheckBoxPreference android:key="autoSyncCheckBox"
-        android:persistent="false"
-        android:title="@string/sync_automatically"
-        android:summary="@string/sync_automatically_summary"
-        android:dependency="backgroundDataCheckBox"/>
-
-    <PreferenceCategory
-            android:title="@string/header_application_sync_settings" />
-
-    <!-- The following keys are special. They correspond to
-         content providers sans the "sync_" prefix. This is
-         because very specific content providers are being
-         enabled for sync in this release.
-        -->
-    <com.android.settings.SyncStateCheckBoxPreference android:key="sync_gmail-ls"
-        android:persistent="false"
-        android:title="@string/sync_gmail"
-        android:summary=""
-        android:dependency="backgroundDataCheckBox"/>
-    <com.android.settings.SyncStateCheckBoxPreference android:key="sync_calendar"
-        android:persistent="false"
-        android:title="@string/sync_calendar"
-        android:summary=""
-        android:dependency="backgroundDataCheckBox"/>
-    <com.android.settings.SyncStateCheckBoxPreference android:key="sync_contacts"
-        android:persistent="false"
-        android:title="@string/sync_contacts"
-        android:summary=""
-        android:dependency="backgroundDataCheckBox"/>
-</PreferenceScreen>
diff --git a/src/com/android/providers/subscribedfeeds/GoogleSubscribedFeedsProvider.java b/src/com/android/providers/subscribedfeeds/GoogleSubscribedFeedsProvider.java
deleted file mode 100644
index 87e6364..0000000
--- a/src/com/android/providers/subscribedfeeds/GoogleSubscribedFeedsProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.providers.subscribedfeeds;
-
-import android.content.SyncAdapter;
-
-public class GoogleSubscribedFeedsProvider extends SubscribedFeedsProvider {
-    private SubscribedFeedsSyncAdapter mSyncAdapter;
-
-    @Override
-    public synchronized SyncAdapter getSyncAdapter() {
-        if (mSyncAdapter == null) {
-            mSyncAdapter = new SubscribedFeedsSyncAdapter(getContext(), this);
-        }
-        return mSyncAdapter;
-    }
-}
\ No newline at end of file
diff --git a/src/com/android/providers/subscribedfeeds/SubscribedFeedsSyncAdapter.java b/src/com/android/providers/subscribedfeeds/SubscribedFeedsSyncAdapter.java
deleted file mode 100644
index 6094ed3..0000000
--- a/src/com/android/providers/subscribedfeeds/SubscribedFeedsSyncAdapter.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
-** Copyright 2007, The Android Open Source Project
-**
-** Licensed under the Apache License, Version 2.0 (the "License");
-** you may not use this file except in compliance with the License.
-** You may obtain a copy of the License at
-**
-**     http://www.apache.org/licenses/LICENSE-2.0
-**
-** Unless required by applicable law or agreed to in writing, software
-** distributed under the License is distributed on an "AS IS" BASIS,
-** See the License for the specific language governing permissions and
-** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-** limitations under the License.
-*/
-
-package com.android.providers.subscribedfeeds;
-
-import com.google.android.gdata.client.AndroidGDataClient;
-import com.google.android.gdata.client.AndroidXmlParserFactory;
-import com.google.android.googlelogin.GoogleLoginServiceBlockingHelper;
-import com.google.android.googlelogin.GoogleLoginServiceNotFoundException;
-import com.google.android.providers.AbstractGDataSyncAdapter;
-import com.google.wireless.gdata.client.GDataServiceClient;
-import com.google.wireless.gdata.client.QueryParams;
-import com.google.wireless.gdata.data.Entry;
-import com.google.wireless.gdata.data.Feed;
-import com.google.wireless.gdata.parser.ParseException;
-import com.google.wireless.gdata.subscribedfeeds.client.SubscribedFeedsClient;
-import com.google.wireless.gdata.subscribedfeeds.data.FeedUrl;
-import com.google.wireless.gdata.subscribedfeeds.data.SubscribedFeedsEntry;
-import com.google.wireless.gdata.subscribedfeeds.parser.xml.XmlSubscribedFeedsGDataParserFactory;
-
-import android.content.ContentProvider;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.SyncContext;
-import android.content.SyncResult;
-import android.content.SyncStats;
-import android.content.SyncableContentProvider;
-import android.database.Cursor;
-import android.net.Uri;
-import android.os.Bundle;
-import android.provider.Settings;
-import android.provider.SubscribedFeeds;
-import android.util.Log;
-import android.text.TextUtils;
-
-/**
- * Implements a SyncAdapter for SubscribedFeeds
- */
-public class SubscribedFeedsSyncAdapter extends AbstractGDataSyncAdapter {
-    private final SubscribedFeedsClient mSubscribedFeedsClient;
-
-    private final static String FEED_URL = "https://android.clients.google.com/gsync/sub";
-
-    private static final String ROUTINGINFO_PARAMETER = "routinginfo";
-
-    protected SubscribedFeedsSyncAdapter(Context context, SyncableContentProvider provider) {
-        super(context, provider);
-        mSubscribedFeedsClient =
-            new SubscribedFeedsClient(
-                    new AndroidGDataClient(context),
-                    new XmlSubscribedFeedsGDataParserFactory(
-                            new AndroidXmlParserFactory()));
-    }
-
-    @Override
-    protected GDataServiceClient getGDataServiceClient() {
-        return mSubscribedFeedsClient;
-    }
-
-    protected boolean handleAllDeletedUnavailable(GDataSyncData syncData, String feed) {
-        Log.w(TAG, "subscribed feeds don't use tombstones");
-
-        // this should never happen, but if it does pretend that we are able to handle it.
-        return true;
-    }
-
-    /*
-     * Takes the entry, casts it to a SubscribedFeedsEntry and executes the
-     * appropriate actions on the ContentProvider to represent the entry.
-     */
-    protected void updateProvider(Feed feed, Long syncLocalId,
-            Entry baseEntry, ContentProvider provider, Object syncInfo)
-            throws ParseException {
-        ContentValues values = new ContentValues();
-        values.put(SubscribedFeeds.Feeds._SYNC_ACCOUNT, getAccount());
-        values.put(SubscribedFeeds.Feeds._SYNC_LOCAL_ID, syncLocalId);
-        final SubscribedFeedsEntry entry = (SubscribedFeedsEntry) baseEntry;
-        final String id = entry.getId();
-        final String editUri = entry.getEditUri();
-        String version = null;
-        if (!TextUtils.isEmpty(id) && !TextUtils.isEmpty(editUri)) {
-            final String serverId = id.substring(id.lastIndexOf('/') + 1);
-            version = editUri.substring(editUri.lastIndexOf('/') + 1);
-            values.put(SubscribedFeeds.Feeds._SYNC_ID, serverId);
-            values.put(SubscribedFeeds.Feeds._SYNC_VERSION, version);
-        }
-        if (baseEntry.isDeleted()) {
-            provider.insert(SubscribedFeeds.Feeds.DELETED_CONTENT_URI, values);
-        } else {
-            values.put(SubscribedFeeds.Feeds.FEED, entry.getSubscribedFeed().getFeed());
-            if (!TextUtils.isEmpty(version)) {
-                values.put(SubscribedFeeds.Feeds._SYNC_TIME, version);
-            }
-            values.put(SubscribedFeeds.Feeds._SYNC_DIRTY, "0");
-            provider.insert(SubscribedFeeds.Feeds.CONTENT_URI, values);
-        }
-    }
-
-    @Override
-    protected String getFeedUrl(String account) {
-        return FEED_URL;
-    }
-
-    protected Class getFeedEntryClass() {
-        return SubscribedFeedsEntry.class;
-    }
-
-    @Override
-    protected void updateQueryParameters(QueryParams params) {
-        params.setParamValue(ROUTINGINFO_PARAMETER, getRoutingInfoForAccount(getAccount()));
-    }
-
-    @Override
-    protected Entry newEntry() {
-        return new SubscribedFeedsEntry();
-    }
-
-    /* (non-Javadoc)
-    * @see android.content.SyncAdapter#getServerDiffs
-    */
-    @Override
-    public void getServerDiffs(SyncContext context, SyncData syncData,
-            SyncableContentProvider tempProvider,
-            Bundle extras, Object syncInfo, SyncResult syncResult) {
-        tempProvider.setContainsDiffs(false /* the server returns all records, not just diffs */);
-        super.getServerDiffs(context, syncData, tempProvider, extras, syncInfo, syncResult);
-    }
-
-    public void onAccountsChanged(String[] accounts) {
-        // no need to do anything
-    }
-
-    @Override
-    protected Cursor getCursorForTable(ContentProvider cp, Class entryClass) {
-        if (entryClass != SubscribedFeedsEntry.class) {
-            throw new IllegalArgumentException("unexpected entry class, " + entryClass.getName());
-        }
-        return cp.query(SubscribedFeeds.Feeds.CONTENT_URI, null, null, null, null);
-    }
-
-    @Override
-    protected Cursor getCursorForDeletedTable(ContentProvider cp, Class entryClass) {
-        if (entryClass != SubscribedFeedsEntry.class) {
-            throw new IllegalArgumentException("unexpected entry class, " + entryClass.getName());
-        }
-        return cp.query(SubscribedFeeds.Feeds.DELETED_CONTENT_URI, null, null, null, null);
-    }
-
-    @Override
-    protected String cursorToEntry(SyncContext context,
-            Cursor c, Entry baseEntry, Object syncInfo) throws ParseException {
-        final String account = c.getString(c.getColumnIndex(SubscribedFeeds.Feeds._SYNC_ACCOUNT));
-        final String service = c.getString(c.getColumnIndex(SubscribedFeeds.Feeds.SERVICE));
-        final String id = c.getString(c.getColumnIndex(SubscribedFeeds.Feeds._SYNC_ID));
-        final String feed = c.getString(c.getColumnIndex(SubscribedFeeds.Feeds.FEED));
-
-        String authToken;
-        try {
-            authToken =
-                    GoogleLoginServiceBlockingHelper.getAuthToken(getContext(), account, service);
-        } catch (GoogleLoginServiceBlockingHelper.AuthenticationException e) {
-            Log.e("Sync", "caught exception while attempting to get an " +
-                    "authtoken for account " + account +
-                    ", service " + service + ": " + e.toString());
-            throw new ParseException(e.getMessage(), e);
-        } catch (GoogleLoginServiceNotFoundException e) {
-            Log.e("Sync", "caught exception while attempting to get an " +
-                    "authtoken for account " + account +
-                    ", service " + service + ": " + e.toString());
-            throw new ParseException(e.getMessage(), e);
-        }
-
-        FeedUrl subscribedFeedUrl = new FeedUrl(feed, service, authToken);
-        SubscribedFeedsEntry entry = (SubscribedFeedsEntry) baseEntry;
-        if (id != null) {
-            entry.setId(getFeedUrl(account) + "/" + id);
-            entry.setEditUri(entry.getId());
-        }
-        entry.setRoutingInfo(getRoutingInfoForAccount(account));
-        entry.setSubscribedFeed(subscribedFeedUrl);
-        entry.setClientToken(subscribedFeedUrl.getFeed());
-
-        String createUrl = null;
-        if (id == null) {
-            createUrl = getFeedUrl(account);    
-        }
-        return createUrl;
-    }
-
-    @Override
-    protected void deletedCursorToEntry(SyncContext context, Cursor c, Entry entry) {
-        final String id = c.getString(c.getColumnIndexOrThrow(SubscribedFeeds.Feeds._SYNC_ID));
-        entry.setId(id);
-        entry.setEditUri(getFeedUrl(getAccount()) + "/" + id);
-    }
-
-    /**
-     * Returns a string that can be used by the GSyncSubscriptionServer to
-     * route messages back to this account via GTalkService.
-     * TODO: this should eventually move into a general place so that others
-     * can use it.
-     *
-     * @param account the account whose routing info we want
-     * @return the GSyncSubscriptionServer routing string for this account
-     */
-    public String getRoutingInfoForAccount(String account) {
-        long androidId;
-        try {
-            androidId = GoogleLoginServiceBlockingHelper.getAndroidId(getContext());
-        } catch (GoogleLoginServiceNotFoundException e) {
-            Log.e(TAG, "Could not get routing info for account", e);
-            return null;
-        }
-        return Uri.parse("gtalk://" + account
-                + "#" + Settings.getGTalkDeviceId(androidId)).toString();
-    }
-
-    @Override
-    protected boolean hasTooManyDeletions(SyncStats stats) {
-        // allow subscribed feeds to delete any number of entries,
-        // since the client is the authority on which entries
-        // should exist.
-        return false;
-    }
-}
diff --git a/src/com/android/settings/AccountPreference.java b/src/com/android/settings/AccountPreference.java
new file mode 100644
index 0000000..cba267e
--- /dev/null
+++ b/src/com/android/settings/AccountPreference.java
@@ -0,0 +1,144 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import java.util.ArrayList;
+
+import com.android.providers.subscribedfeeds.R;
+
+import android.accounts.Account;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.drawable.Drawable;
+import android.preference.Preference;
+import android.util.Log;
+import android.view.View;
+import android.widget.ImageView;
+
+/**
+ * AccountPreference is used to display a username, status and provider icon for an account on
+ * the device.
+ */
+public class AccountPreference extends Preference {
+    private static final String TAG = "AccountPreference";
+    public static final int SYNC_ENABLED = 0; // all know sync adapters are enabled and OK
+    public static final int SYNC_DISABLED = 1; // no sync adapters are enabled
+    public static final int SYNC_ERROR = 2; // one or more sync adapters have a problem
+    private int mStatus;
+    private Account mAccount;
+    private ArrayList<String> mAuthorities;
+    private Drawable mProviderIcon;
+    private ImageView mSyncStatusIcon;
+    private ImageView mProviderIconView;
+
+    public AccountPreference(Context context, Account account, Drawable icon,
+            ArrayList<String> authorities) {
+        super(context);
+        mAccount = account;
+        mAuthorities = authorities;
+        mProviderIcon = icon;
+        setLayoutResource(R.layout.account_preference);
+        setTitle(mAccount.name);
+        setSummary("");
+        // Add account info to the intent for AccountSyncSettings
+        Intent intent = new Intent("android.settings.ACCOUNT_SYNC_SETTINGS");
+        intent.putExtra("account", mAccount);
+        setIntent(intent);
+        setPersistent(false);
+        setSyncStatus(SYNC_DISABLED);
+    }
+
+    public Account getAccount() {
+        return mAccount;
+    }
+
+    public ArrayList<String> getAuthorities() {
+        return mAuthorities;
+    }
+
+    @Override
+    protected void onBindView(View view) {
+        super.onBindView(view);
+        setSummary(getSyncStatusMessage(mStatus));
+        mProviderIconView = (ImageView) view.findViewById(R.id.providerIcon);
+        mProviderIconView.setImageDrawable(mProviderIcon);
+        mSyncStatusIcon = (ImageView) view.findViewById(R.id.syncStatusIcon);
+        mSyncStatusIcon.setImageResource(getSyncStatusIcon(mStatus));
+    }
+
+    public void setProviderIcon(Drawable icon) {
+        mProviderIcon = icon;
+        if (mProviderIconView != null) {
+            mProviderIconView.setImageDrawable(icon);
+        }
+    }
+
+    public void setSyncStatus(int status) {
+        mStatus = status;
+        if (mSyncStatusIcon != null) {
+            mSyncStatusIcon.setImageResource(getSyncStatusIcon(status));
+        }
+        setSummary(getSyncStatusMessage(status));
+    }
+
+    private int getSyncStatusMessage(int status) {
+        int res;
+        switch (status) {
+            case SYNC_ENABLED:
+                res = R.string.sync_enabled;
+                break;
+            case SYNC_DISABLED:
+                res = R.string.sync_disabled;
+                break;
+            case SYNC_ERROR:
+                res = R.string.sync_error;
+                break;
+            default:
+                res = R.string.sync_error;
+                Log.e(TAG, "Unknown sync status: " + status);
+        }
+        return res;
+    }
+
+    private int getSyncStatusIcon(int status) {
+        int res;
+        switch (status) {
+            case SYNC_ENABLED:
+                res = R.drawable.ic_sync_green;
+                break;
+            case SYNC_DISABLED:
+                res = R.drawable.ic_sync_grey;
+                break;
+            case SYNC_ERROR:
+                res = R.drawable.ic_sync_red;
+                break;
+            default:
+                res = R.drawable.ic_sync_red;
+                Log.e(TAG, "Unknown sync status: " + status);
+        }
+        return res;
+    }
+
+    @Override
+    public int compareTo(Preference other) {
+        if (!(other instanceof AccountPreference)) {
+            // Put other preference types above us
+            return 1;
+        }
+        return mAccount.name.compareTo(((AccountPreference) other).mAccount.name);
+    }
+}
diff --git a/src/com/android/settings/AccountPreferenceBase.java b/src/com/android/settings/AccountPreferenceBase.java
new file mode 100644
index 0000000..9b5ab8d
--- /dev/null
+++ b/src/com/android/settings/AccountPreferenceBase.java
@@ -0,0 +1,198 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Map;
+
+import com.google.android.collect.Maps;
+
+import android.accounts.Account;
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorDescription;
+import android.accounts.OnAccountsUpdateListener;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.SyncAdapterType;
+import android.content.SyncStatusObserver;
+import android.content.pm.PackageManager;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.os.Handler;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceScreen;
+import android.util.Log;
+
+class AccountPreferenceBase extends PreferenceActivity implements OnAccountsUpdateListener {
+    protected static final String TAG = "AccountSettings";
+    public static final String AUTHORITIES_FILTER_KEY = "authorities";
+    private Map<String, AuthenticatorDescription> mTypeToAuthDescription
+            = new HashMap<String, AuthenticatorDescription>();
+    protected AuthenticatorDescription[] mAuthDescs;
+    private final Handler mHandler = new Handler();
+    private Object mStatusChangeListenerHandle;
+    private HashMap<String, ArrayList<String>> mAccountTypeToAuthorities = null;
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+    }
+
+    /**
+     * Overload to handle account updates.
+     */
+    public void onAccountsUpdated(Account[] accounts) {
+
+    }
+
+    /**
+     * Overload to handle authenticator description updates
+     */
+    protected void onAuthDescriptionsUpdated() {
+
+    }
+
+    /**
+     * Overload to handle sync state updates.
+     */
+    protected void onSyncStateUpdated() {
+
+    }
+
+    @Override
+    protected void onResume() {
+        super.onResume();
+        mStatusChangeListenerHandle = ContentResolver.addStatusChangeListener(
+                ContentResolver.SYNC_OBSERVER_TYPE_ACTIVE
+                | ContentResolver.SYNC_OBSERVER_TYPE_STATUS
+                | ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS,
+                mSyncStatusObserver);
+        onSyncStateUpdated();
+    }
+
+    @Override
+    protected void onPause() {
+        super.onPause();
+        ContentResolver.removeStatusChangeListener(mStatusChangeListenerHandle);
+    }
+
+
+    private SyncStatusObserver mSyncStatusObserver = new SyncStatusObserver() {
+        public void onStatusChanged(int which) {
+            mHandler.post(new Runnable() {
+                public void run() {
+                    onSyncStateUpdated();
+                }
+            });
+        }
+    };
+
+    public ArrayList<String> getAuthoritiesForAccountType(String type) {
+        if (mAccountTypeToAuthorities == null) {
+            mAccountTypeToAuthorities = Maps.newHashMap();
+            SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypes();
+            for (int i = 0, n = syncAdapters.length; i < n; i++) {
+                final SyncAdapterType sa = syncAdapters[i];
+                ArrayList<String> authorities = mAccountTypeToAuthorities.get(sa.accountType);
+                if (authorities == null) {
+                    authorities = new ArrayList<String>();
+                    mAccountTypeToAuthorities.put(sa.accountType, authorities);
+                }
+                Log.d(TAG, "added authority " + sa.authority + " to accountType " + sa.accountType);
+                authorities.add(sa.authority);
+            }
+        }
+        return mAccountTypeToAuthorities.get(type);
+    }
+
+    /**
+     * Gets an icon associated with a particular account type. If none found, return null.
+     * @param accountType the type of account
+     * @return a drawable for the icon or null if one cannot be found.
+     */
+    protected Drawable getDrawableForType(final String accountType) {
+        Drawable icon = null;
+        if (mTypeToAuthDescription.containsKey(accountType)) {
+            try {
+                AuthenticatorDescription desc = (AuthenticatorDescription)
+                        mTypeToAuthDescription.get(accountType);
+                Context authContext = createPackageContext(desc.packageName, 0);
+                icon = authContext.getResources().getDrawable(desc.iconId);
+            } catch (PackageManager.NameNotFoundException e) {
+                // TODO: place holder icon for missing account icons?
+                Log.w(TAG, "No icon for account type " + accountType);
+            }
+        }
+        return icon;
+    }
+
+    /**
+     * Gets the label associated with a particular account type. If none found, return null.
+     * @param accountType the type of account
+     * @return a CharSequence for the label or null if one cannot be found.
+     */
+    protected CharSequence getLabelForType(final String accountType) {
+        CharSequence label = null;
+        if (mTypeToAuthDescription.containsKey(accountType)) {
+             try {
+                 AuthenticatorDescription desc = (AuthenticatorDescription)
+                         mTypeToAuthDescription.get(accountType);
+                 Context authContext = createPackageContext(desc.packageName, 0);
+                 label = authContext.getResources().getText(desc.labelId);
+             } catch (PackageManager.NameNotFoundException e) {
+                 Log.w(TAG, "No label for account type " + ", type " + accountType);
+             }
+        }
+        return label;
+    }
+
+    /**
+     * Gets the preferences.xml file associated with a particular account type.
+     * @param accountType the type of account
+     * @return a PreferenceScreen inflated from accountPreferenceId.
+     */
+    protected PreferenceScreen addPreferencesForType(final String accountType) {
+        PreferenceScreen prefs = null;
+        if (mTypeToAuthDescription.containsKey(accountType)) {
+            AuthenticatorDescription desc = null;
+            try {
+                desc = (AuthenticatorDescription) mTypeToAuthDescription.get(accountType);
+                if (desc != null && desc.accountPreferencesId != 0) {
+                    Context authContext = createPackageContext(desc.packageName, 0);
+                    prefs = getPreferenceManager().inflateFromResource(authContext,
+                            desc.accountPreferencesId, getPreferenceScreen());
+                }
+            } catch (PackageManager.NameNotFoundException e) {
+                Log.w(TAG, "Couldn't load preferences.xml file from " + desc.packageName);
+            }
+        }
+        return prefs;
+    }
+
+    /**
+     * Updates provider icons. Subclasses should call this in onCreate()
+     * and update any UI that depends on AuthenticatorDescriptions in onAuthDescriptionsUpdated().
+     */
+    protected void updateAuthDescriptions() {
+        mAuthDescs = AccountManager.get(this).getAuthenticatorTypes();
+        for (int i = 0; i < mAuthDescs.length; i++) {
+            mTypeToAuthDescription.put(mAuthDescs[i].type, mAuthDescs[i]);
+        }
+        onAuthDescriptionsUpdated();
+    }
+}
diff --git a/src/com/android/settings/AccountSyncSettings.java b/src/com/android/settings/AccountSyncSettings.java
new file mode 100644
index 0000000..e28b9ab
--- /dev/null
+++ b/src/com/android/settings/AccountSyncSettings.java
@@ -0,0 +1,462 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import com.android.providers.subscribedfeeds.R;
+import com.google.android.collect.Maps;
+import com.google.android.collect.Lists;
+
+import android.accounts.AccountManager;
+import android.accounts.Account;
+import android.accounts.AccountManagerCallback;
+import android.accounts.AccountManagerFuture;
+import android.accounts.AuthenticatorException;
+import android.accounts.OperationCanceledException;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.ActiveSyncInfo;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SyncStatusInfo;
+import android.content.SyncAdapterType;
+import android.content.pm.ProviderInfo;
+import android.net.ConnectivityManager;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.text.format.DateFormat;
+import android.preference.Preference;
+import android.preference.PreferenceScreen;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.view.View.OnClickListener;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
+import android.util.Log;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+
+public class AccountSyncSettings extends AccountPreferenceBase implements OnClickListener {
+    private static final String ACCOUNT_KEY = "account";
+    private static final String TAG = "SyncSettings";
+    private static final String CHANGE_PASSWORD_KEY = "changePassword";
+    private static final int MENU_SYNC_NOW_ID = Menu.FIRST;
+    private static final int MENU_SYNC_CANCEL_ID = Menu.FIRST + 1;
+    private static final int REALLY_REMOVE_DIALOG = 100;
+    private static final int FAILED_REMOVAL_DIALOG = 101;
+    private static final int CANT_DO_ONETIME_SYNC_DIALOG = 102;
+    private TextView mUserId;
+    private TextView mProviderId;
+    private ImageView mProviderIcon;
+    private TextView mErrorInfoView;
+    protected View mRemoveAccountArea;
+    private java.text.DateFormat mDateFormat;
+    private java.text.DateFormat mTimeFormat;
+    private Preference mAuthenticatorPreferences;
+    private Account mAccount;
+    // List of all accounts, updated when accounts are added/removed
+    // We need to re-scan the accounts on sync events, in case sync state changes.
+    private Account[] mAccounts;
+    private Button mRemoveAccountButton;
+    private ArrayList<SyncStateCheckBoxPreference> mCheckBoxes =
+                new ArrayList<SyncStateCheckBoxPreference>();
+    private ArrayList<String> mInvisibleAdapters = Lists.newArrayList();
+
+    public void onClick(View v) {
+        if (v == mRemoveAccountButton) {
+            showDialog(REALLY_REMOVE_DIALOG);
+        }
+    }
+
+    @Override
+    protected Dialog onCreateDialog(final int id) {
+        Dialog dialog = null;
+        if (id == REALLY_REMOVE_DIALOG) {
+            dialog = new AlertDialog.Builder(this)
+                .setTitle(R.string.really_remove_account_title)
+                .setMessage(R.string.really_remove_account_message)
+                .setNegativeButton(android.R.string.cancel, null)
+                .setPositiveButton(R.string.remove_account_label,
+                        new DialogInterface.OnClickListener() {
+                    public void onClick(DialogInterface dialog, int which) {
+                        AccountManager.get(AccountSyncSettings.this).removeAccount(mAccount,
+                                new AccountManagerCallback<Boolean>() {
+                            public void run(AccountManagerFuture<Boolean> future) {
+                                boolean failed = true;
+                                try {
+                                    if (future.getResult() == true) {
+                                        failed = false;
+                                    }
+                                } catch (OperationCanceledException e) {
+                                    // handled below
+                                } catch (IOException e) {
+                                    // handled below
+                                } catch (AuthenticatorException e) {
+                                    // handled below
+                                }
+                                if (failed) {
+                                    showDialog(FAILED_REMOVAL_DIALOG);
+                                } else {
+                                    finish();
+                                }
+                            }
+                        }, null);
+                    }
+                })
+                .create();
+        } else if (id == FAILED_REMOVAL_DIALOG) {
+            dialog = new AlertDialog.Builder(this)
+                .setTitle(R.string.really_remove_account_title)
+                .setPositiveButton(android.R.string.ok, null)
+                .setMessage(R.string.remove_account_failed)
+                .create();
+        } else if (id == CANT_DO_ONETIME_SYNC_DIALOG) {
+            dialog = new AlertDialog.Builder(this)
+                .setTitle(R.string.cant_sync_dialog_title)
+                .setMessage(R.string.cant_sync_dialog_message)
+                .setPositiveButton(android.R.string.ok, null)
+                .create();
+        }
+        return dialog;
+    }
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        setContentView(R.layout.account_sync_screen);
+        addPreferencesFromResource(R.xml.account_sync_settings);
+
+        mErrorInfoView = (TextView) findViewById(R.id.sync_settings_error_info);
+        mErrorInfoView.setVisibility(View.GONE);
+        mErrorInfoView.setCompoundDrawablesWithIntrinsicBounds(
+                getResources().getDrawable(R.drawable.ic_list_syncerror), null, null, null);
+
+        mUserId = (TextView) findViewById(R.id.user_id);
+        mProviderId = (TextView) findViewById(R.id.provider_id);
+        mProviderIcon = (ImageView) findViewById(R.id.provider_icon);
+        mRemoveAccountArea = (View) findViewById(R.id.remove_account_area);
+        mRemoveAccountButton = (Button) findViewById(R.id.remove_account_button);
+        mRemoveAccountButton.setOnClickListener(this);
+
+
+        mDateFormat = DateFormat.getDateFormat(this);
+        mTimeFormat = DateFormat.getTimeFormat(this);
+
+        mAccount = (Account) getIntent().getParcelableExtra(ACCOUNT_KEY);
+        if (mAccount != null) {
+            Log.v(TAG, "Got account: " + mAccount);
+            mUserId.setText(mAccount.name);
+            mProviderId.setText(mAccount.type);
+        }
+        AccountManager.get(this).addOnAccountsUpdatedListener(this, null, false);
+        updateAuthDescriptions();
+        onAccountsUpdated(AccountManager.get(this).getAccounts());
+    }
+    
+    @Override
+    protected void onDestroy() {
+        super.onDestroy();
+        AccountManager.get(this).removeOnAccountsUpdatedListener(this);
+    }
+
+    private void addSyncStateCheckBox(Account account, String authority) {
+        SyncStateCheckBoxPreference item =
+                new SyncStateCheckBoxPreference(this, account, authority);
+        item.setPersistent(false);
+        final ProviderInfo providerInfo = getPackageManager().resolveContentProvider(authority, 0);
+        CharSequence providerLabel = providerInfo != null
+                ? providerInfo.loadLabel(getPackageManager()) : null;
+        if (TextUtils.isEmpty(providerLabel)) {
+            Log.e(TAG, "Provider needs a label for authority '" + authority + "'");
+            providerLabel = authority;
+        }
+        String title = getString(R.string.sync_item_title, providerLabel);
+        item.setTitle(title);
+        item.setKey(authority);
+        getPreferenceScreen().addPreference(item);
+        mCheckBoxes.add(item);
+    }
+
+    @Override
+    public boolean onCreateOptionsMenu(Menu menu) {
+        super.onCreateOptionsMenu(menu);
+        menu.add(0, MENU_SYNC_NOW_ID, 0, getString(R.string.sync_menu_sync_now))
+                .setIcon(com.android.internal.R.drawable.ic_menu_refresh);
+        menu.add(0, MENU_SYNC_CANCEL_ID, 0, getString(R.string.sync_menu_sync_cancel))
+                .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
+        return true;
+    }
+
+    @Override
+    public boolean onPrepareOptionsMenu(Menu menu) {
+        super.onPrepareOptionsMenu(menu);
+        boolean syncActive = ContentResolver.getActiveSync() != null;
+        menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive);
+        menu.findItem(MENU_SYNC_CANCEL_ID).setVisible(syncActive);
+        return true;
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem item) {
+        switch (item.getItemId()) {
+            case MENU_SYNC_NOW_ID:
+                startSyncForEnabledProviders();
+                return true;
+            case MENU_SYNC_CANCEL_ID:
+                cancelSyncForEnabledProviders();
+                return true;
+        }
+        return super.onOptionsItemSelected(item);
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferences, Preference preference) {
+        if (preference instanceof SyncStateCheckBoxPreference) {
+            SyncStateCheckBoxPreference syncPref = (SyncStateCheckBoxPreference) preference;
+            String authority = syncPref.getAuthority();
+            Account account = syncPref.getAccount();
+            boolean syncAutomatically = ContentResolver.getSyncAutomatically(account, authority);
+            if (syncPref.isOneTimeSyncMode()) {
+                if (syncAutomatically) {
+                    requestOrCancelSync(account, authority, true);
+                } else {
+                    showDialog(CANT_DO_ONETIME_SYNC_DIALOG);
+                }
+            } else {
+                boolean syncOn = syncPref.isChecked();
+                boolean oldSyncState = syncAutomatically;
+                if (syncOn != oldSyncState) {
+                    // if we're enabling sync, this will request a sync as well
+                    ContentResolver.setSyncAutomatically(account, authority, syncOn);
+                    // if the master sync switch is off, the request above will
+                    // get dropped.  when the user clicks on this toggle,
+                    // we want to force the sync, however.
+                    if (!ContentResolver.getMasterSyncAutomatically() || !syncOn) {
+                        requestOrCancelSync(account, authority, syncOn);
+                    }
+                }
+            }
+            return true;
+        } else {
+            return super.onPreferenceTreeClick(preferences, preference);
+        }
+    }
+
+    private void startSyncForEnabledProviders() {
+        requestOrCancelSyncForEnabledProviders(true /* start them */);
+    }
+
+    private void cancelSyncForEnabledProviders() {
+        requestOrCancelSyncForEnabledProviders(false /* cancel them */);
+    }
+
+    private void requestOrCancelSyncForEnabledProviders(boolean startSync) {
+        // sync everything that the user has enabled
+        int count = getPreferenceScreen().getPreferenceCount();
+        for (int i = 0; i < count; i++) {
+            Preference pref = getPreferenceScreen().getPreference(i);
+            if (! (pref instanceof SyncStateCheckBoxPreference)) {
+                continue;
+            }
+            SyncStateCheckBoxPreference syncPref = (SyncStateCheckBoxPreference) pref;
+            if (!syncPref.isChecked()) {
+                continue;
+            }
+            requestOrCancelSync(syncPref.getAccount(), syncPref.getAuthority(), startSync);
+        }
+        // plus whatever the system needs to sync, e.g., invisible sync adapters
+        if (mAccount != null) {
+            for (String authority : mInvisibleAdapters) {
+                requestOrCancelSync(mAccount, authority, startSync);
+            }
+        }
+    }
+
+    private void requestOrCancelSync(Account account, String authority, boolean flag) {
+        if (flag) {
+            Bundle extras = new Bundle();
+            extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
+            ContentResolver.requestSync(account, authority, extras);
+        } else {
+            ContentResolver.cancelSync(account, authority);
+        }
+    }
+
+    @Override
+    protected void onSyncStateUpdated() {
+        // iterate over all the preferences, setting the state properly for each
+        Date date = new Date();
+        ActiveSyncInfo activeSyncValues = ContentResolver.getActiveSync();
+        boolean syncIsFailing = false;
+
+        // Refresh the sync status checkboxes - some syncs may have become active.
+        updateAccountCheckboxes(mAccounts);
+
+        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();
+
+            SyncStatusInfo status = ContentResolver.getSyncStatus(account, authority);
+            boolean syncEnabled = ContentResolver.getSyncAutomatically(account, authority);
+            boolean authorityIsPending = status == null ? false : status.pending;
+            boolean initialSync = status == null ? false : status.initialize;
+
+            boolean activelySyncing = activeSyncValues != null
+                    && activeSyncValues.account.equals(account)
+                    && activeSyncValues.authority.equals(authority);
+            boolean lastSyncFailed = status != null
+                    && status.lastFailureTime != 0
+                    && status.getLastFailureMesgAsInt(0)
+                       != ContentResolver.SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS;
+            if (!syncEnabled) lastSyncFailed = false;
+            if (lastSyncFailed && !activelySyncing && !authorityIsPending) {
+                syncIsFailing = true;
+            }
+            if (Log.isLoggable(TAG, Log.DEBUG)) {
+                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();
+            syncPref.setOneTimeSyncMode(!masterSyncAutomatically || !backgroundDataEnabled);
+            syncPref.setChecked(syncEnabled);
+        }
+        mErrorInfoView.setVisibility(syncIsFailing ? View.VISIBLE : View.GONE);
+    }
+
+    @Override
+    public void onAccountsUpdated(Account[] accounts) {
+        super.onAccountsUpdated(accounts);
+        mAccounts = accounts;
+        updateAccountCheckboxes(accounts);
+        onSyncStateUpdated();
+    }
+
+    private void updateAccountCheckboxes(Account[] accounts) {
+        mInvisibleAdapters.clear();
+
+        SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypes();
+        HashMap<String, ArrayList<String>> accountTypeToAuthorities =
+            Maps.newHashMap();
+        for (int i = 0, n = syncAdapters.length; i < n; i++) {
+            final SyncAdapterType sa = syncAdapters[i];
+            if (sa.isUserVisible()) {
+                ArrayList<String> authorities = accountTypeToAuthorities.get(sa.accountType);
+                if (authorities == null) {
+                    authorities = new ArrayList<String>();
+                    accountTypeToAuthorities.put(sa.accountType, authorities);
+                }
+                if (Log.isLoggable(TAG, Log.DEBUG)) {
+                    Log.d(TAG, "onAccountUpdated: added authority " + sa.authority
+                            + " to accountType " + sa.accountType);
+                }
+                authorities.add(sa.authority);
+            } else {
+                // keep track of invisible sync adapters, so sync now forces
+                // them to sync as well.
+                mInvisibleAdapters.add(sa.authority);
+            }
+        }
+
+        for (int i = 0, n = mCheckBoxes.size(); i < n; i++) {
+            getPreferenceScreen().removePreference(mCheckBoxes.get(i));
+        }
+        mCheckBoxes.clear();
+
+        for (int i = 0, n = accounts.length; i < n; i++) {
+            final Account account = accounts[i];
+            Log.d(TAG, "looking for sync adapters that match account " + account);
+            final ArrayList<String> authorities = accountTypeToAuthorities.get(account.type);
+            if (authorities != null && (mAccount == null || mAccount.equals(account))) {
+                for (int j = 0, m = authorities.size(); j < m; j++) {
+                    final String authority = authorities.get(j);
+                    // We could check services here....
+                    int syncState = ContentResolver.getIsSyncable(account, authority);
+                    if (Log.isLoggable(TAG, Log.DEBUG)) {
+                        Log.d(TAG, "  found authority " + authority + " " + syncState);
+                    }
+                    if (syncState > 0) {
+                        addSyncStateCheckBox(account, authority);
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * Updates the titlebar with an icon for the provider type.
+     */
+    @Override
+    protected void onAuthDescriptionsUpdated() {
+        super.onAuthDescriptionsUpdated();
+        getPreferenceScreen().removeAll();
+        mProviderIcon.setImageDrawable(getDrawableForType(mAccount.type));
+        mProviderId.setText(getLabelForType(mAccount.type));
+        PreferenceScreen prefs = addPreferencesForType(mAccount.type);
+        if (prefs != null) {
+            updatePreferenceIntents(prefs);
+        }
+        addPreferencesFromResource(R.xml.account_sync_settings);
+    }
+
+    private void updatePreferenceIntents(PreferenceScreen prefs) {
+        for (int i = 0; i < prefs.getPreferenceCount(); i++) {
+            Intent intent = prefs.getPreference(i).getIntent();
+            if (intent != null) {
+                intent.putExtra(ACCOUNT_KEY, mAccount);
+                // This is somewhat of a hack. Since the preference screen we're accessing comes
+                // from another package, we need to modify the intent to launch it with
+                // FLAG_ACTIVITY_NEW_TASK.
+                // TODO: Do something smarter if we ever have PreferenceScreens of our own.
+                intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/AccountSyncSettingsInAddAccount.java b/src/com/android/settings/AccountSyncSettingsInAddAccount.java
new file mode 100644
index 0000000..4a23e7c
--- /dev/null
+++ b/src/com/android/settings/AccountSyncSettingsInAddAccount.java
@@ -0,0 +1,33 @@
+package com.android.settings;
+
+import com.android.providers.subscribedfeeds.R;
+
+import android.os.Bundle;
+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
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+        
+        mRemoveAccountArea.setVisibility(View.GONE);
+        mFinishArea = (View) findViewById(R.id.finish_button_area);
+        mFinishArea.setVisibility(View.VISIBLE);
+        mFinishButton = (View) findViewById(R.id.finish_button);
+        mFinishButton.setOnClickListener(this);
+    }
+
+    public void onClick(View v) {
+        finish();
+    }
+}
diff --git a/src/com/android/settings/AddAccountSettings.java b/src/com/android/settings/AddAccountSettings.java
new file mode 100644
index 0000000..564f4c7
--- /dev/null
+++ b/src/com/android/settings/AddAccountSettings.java
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import com.android.providers.subscribedfeeds.R;
+
+import android.accounts.AccountManager;
+import android.accounts.AuthenticatorException;
+import android.accounts.AccountManagerFuture;
+import android.accounts.OperationCanceledException;
+import android.accounts.AccountManagerCallback;
+import android.graphics.drawable.Drawable;
+import android.os.Bundle;
+import android.preference.Preference;
+import android.preference.PreferenceGroup;
+import android.preference.PreferenceScreen;
+import android.util.Log;
+
+import java.io.IOException;
+import java.util.ArrayList;
+
+public class AddAccountSettings extends AccountPreferenceBase {
+    private static final String TAG = "AddAccount";
+    private String[] mAuthorities;
+    private PreferenceGroup mAddAccountGroup;
+    private ArrayList<ProviderEntry> mProviderList = new ArrayList<ProviderEntry>();;
+
+    private static class ProviderEntry {
+        private final CharSequence name;
+        private final String type;
+        ProviderEntry(CharSequence providerName, String accountType) {
+            name = providerName;
+            type = accountType;
+        }
+    }
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        setContentView(R.layout.add_account_screen);
+        addPreferencesFromResource(R.xml.add_account_settings);
+        mAuthorities = getIntent().getStringArrayExtra(AUTHORITIES_FILTER_KEY);
+        mAddAccountGroup = getPreferenceScreen();
+        updateAuthDescriptions();
+    }
+
+    @Override
+    protected void onAuthDescriptionsUpdated() {
+        // Create list of providers to show on preference screen
+        for (int i = 0; i < mAuthDescs.length; i++) {
+            String accountType = mAuthDescs[i].type;
+            CharSequence providerName = getLabelForType(accountType);
+
+            // Skip preferences for authorities not specified. If no authorities specified,
+            // then include them all.
+            ArrayList<String> accountAuths = getAuthoritiesForAccountType(accountType);
+            boolean addAccountPref = true;
+            if (mAuthorities != null && mAuthorities.length > 0) {
+                addAccountPref = false;
+                for (int k = 0; k < mAuthorities.length; k++) {
+                    if (accountAuths.contains(mAuthorities[k])) {
+                        addAccountPref = true;
+                        break;
+                    }
+                }
+            }
+            if (addAccountPref) {
+                mProviderList.add(new ProviderEntry(providerName, accountType));
+            } else {
+                Log.v(TAG, "Skipped pref " + providerName + ": has no authority we need");
+            }
+        }
+
+        if (mProviderList.size() == 1) {
+            // If there's only one provider that matches, just run it.
+            addAccount(mProviderList.get(0).type);
+            finish();
+        } else if (mProviderList.size() > 0) {
+            mAddAccountGroup.removeAll();
+            for (ProviderEntry pref : mProviderList) {
+                Drawable drawable = getDrawableForType(pref.type);
+                ProviderPreference p = new ProviderPreference(this, pref.type, drawable, pref.name);
+                mAddAccountGroup.addPreference(p);
+            }
+        } else {
+            String auths = new String();
+            for (String a : mAuthorities) auths += a + " ";
+            Log.w(TAG, "No providers found for authorities: " + auths);
+        }
+    }
+
+    private AccountManagerCallback<Bundle> mCallback = new AccountManagerCallback<Bundle>() {
+        public void run(AccountManagerFuture<Bundle> future) {
+            boolean accountAdded = false;
+            try {
+                Bundle bundle = future.getResult();
+                bundle.keySet();
+                accountAdded = true;
+                Log.d(TAG, "account added: " + bundle);
+            } catch (OperationCanceledException e) {
+                Log.d(TAG, "addAccount was canceled");
+            } catch (IOException e) {
+                Log.d(TAG, "addAccount failed: " + e);
+            } catch (AuthenticatorException e) {
+                Log.d(TAG, "addAccount failed: " + e);
+            } finally {
+                if (mProviderList.size() <= 1 || accountAdded) {
+                    finish();
+                }
+            }
+        }
+    };
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferences, Preference preference) {
+        if (preference instanceof ProviderPreference) {
+            ProviderPreference pref = (ProviderPreference) preference;
+            Log.v(TAG, "Attempting to add account of type " + pref.getAccountType());
+            addAccount(pref.getAccountType());
+            finish();
+        }
+        return true;
+    }
+
+    private void addAccount(String accountType) {
+        AccountManager.get(this).addAccount(
+                accountType,
+                null, /* authTokenType */
+                null, /* requiredFeatures */
+                null, /* addAccountOptions */
+                this,
+                mCallback,
+                null /* handler */);
+    }
+}
diff --git a/src/com/android/settings/ManageAccountsSettings.java b/src/com/android/settings/ManageAccountsSettings.java
new file mode 100644
index 0000000..7b672f1
--- /dev/null
+++ b/src/com/android/settings/ManageAccountsSettings.java
@@ -0,0 +1,264 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import com.android.providers.subscribedfeeds.R;
+import com.google.android.collect.Maps;
+
+import android.accounts.AccountManager;
+import android.accounts.Account;
+import android.app.AlertDialog;
+import android.app.Dialog;
+import android.content.ActiveSyncInfo;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.content.DialogInterface;
+import android.content.Intent;
+import android.content.SyncAdapterType;
+import android.content.SyncStatusInfo;
+import android.graphics.drawable.Drawable;
+import android.net.ConnectivityManager;
+import android.os.Bundle;
+import android.text.format.DateFormat;
+import android.preference.CheckBoxPreference;
+import android.preference.Preference;
+import android.preference.PreferenceCategory;
+import android.preference.PreferenceScreen;
+import android.view.Menu;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.Button;
+import android.widget.TextView;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.HashSet;
+
+public class ManageAccountsSettings extends AccountPreferenceBase implements View.OnClickListener {
+    private static final String AUTO_SYNC_CHECKBOX_KEY = "syncAutomaticallyCheckBox";
+    private static final String MANAGE_ACCOUNTS_CATEGORY_KEY = "manageAccountsCategory";
+    private static final String BACKGROUND_DATA_CHECKBOX_KEY = "backgroundDataCheckBox";
+    private static final int DIALOG_DISABLE_BACKGROUND_DATA = 1;
+
+    private CheckBoxPreference mBackgroundDataCheckBox;
+    private PreferenceCategory mManageAccountsCategory;
+    private String[] mAuthorities;
+    private TextView mErrorInfoView;
+    private Button mAddAccountButton;
+    private CheckBoxPreference mAutoSyncCheckbox;
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+
+        setContentView(R.layout.manage_accounts_screen);
+        addPreferencesFromResource(R.xml.manage_accounts_settings);
+
+        mErrorInfoView = (TextView)findViewById(R.id.sync_settings_error_info);
+        mErrorInfoView.setVisibility(View.GONE);
+        mErrorInfoView.setCompoundDrawablesWithIntrinsicBounds(
+                getResources().getDrawable(R.drawable.ic_list_syncerror), null, null, null);
+
+        mBackgroundDataCheckBox = (CheckBoxPreference) findPreference(BACKGROUND_DATA_CHECKBOX_KEY);
+        mAutoSyncCheckbox = (CheckBoxPreference) findPreference(AUTO_SYNC_CHECKBOX_KEY);
+
+        mManageAccountsCategory =
+                (PreferenceCategory) findPreference(MANAGE_ACCOUNTS_CATEGORY_KEY);
+        mAuthorities = getIntent().getStringArrayExtra(AUTHORITIES_FILTER_KEY);
+        mAddAccountButton = (Button) findViewById(R.id.add_account_button);
+        mAddAccountButton.setOnClickListener(this);
+
+        AccountManager.get(this).addOnAccountsUpdatedListener(this, null, true);
+        updateAuthDescriptions();
+    }
+
+    @Override
+    public void onDestroy() {
+        AccountManager.get(this).removeOnAccountsUpdatedListener(this);
+        super.onDestroy();
+    }
+
+    @Override
+    public boolean onPreferenceTreeClick(PreferenceScreen preferences, Preference preference) {
+        if (preference == mBackgroundDataCheckBox) {
+            ConnectivityManager connManager =
+                    (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+            boolean oldBackgroundDataSetting = connManager.getBackgroundDataSetting();
+            boolean backgroundDataSetting = mBackgroundDataCheckBox.isChecked();
+            if (oldBackgroundDataSetting != backgroundDataSetting) {
+                if (backgroundDataSetting) {
+                    setBackgroundDataInt(true);
+                    onSyncStateUpdated();
+                } else {
+                    // This will get unchecked only if the user hits "Ok"
+                    mBackgroundDataCheckBox.setChecked(true);
+                    showDialog(DIALOG_DISABLE_BACKGROUND_DATA);
+                }
+            }
+        } else if (preference == mAutoSyncCheckbox) {
+            ContentResolver.setMasterSyncAutomatically(mAutoSyncCheckbox.isChecked());
+            onSyncStateUpdated();
+        } else {
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    protected Dialog onCreateDialog(int id) {
+        switch (id) {
+            case DIALOG_DISABLE_BACKGROUND_DATA:
+                final CheckBoxPreference pref =
+                    (CheckBoxPreference) findPreference(BACKGROUND_DATA_CHECKBOX_KEY);
+                return new AlertDialog.Builder(this)
+                        .setTitle(R.string.background_data_dialog_title)
+                        .setIcon(android.R.drawable.ic_dialog_alert)
+                        .setMessage(R.string.background_data_dialog_message)
+                        .setPositiveButton(android.R.string.ok,
+                                    new DialogInterface.OnClickListener() {
+                                public void onClick(DialogInterface dialog, int which) {
+                                    setBackgroundDataInt(false);
+                                    pref.setChecked(false);
+                                    onSyncStateUpdated();
+                                }
+                            })
+                        .setNegativeButton(android.R.string.cancel, null)
+                        .create();
+        }
+
+        return null;
+    }
+
+    private void setBackgroundDataInt(boolean enabled) {
+        ConnectivityManager connManager =
+                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+        connManager.setBackgroundDataSetting(enabled);
+    }
+
+    @Override
+    protected void onSyncStateUpdated() {
+        // Set background connection state
+        ConnectivityManager connManager =
+                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
+        boolean backgroundDataSetting = connManager.getBackgroundDataSetting();
+        mBackgroundDataCheckBox.setChecked(backgroundDataSetting);
+        boolean masterSyncAutomatically = ContentResolver.getMasterSyncAutomatically();
+        mAutoSyncCheckbox.setChecked(masterSyncAutomatically);
+
+        // iterate over all the preferences, setting the state properly for each
+        ActiveSyncInfo activeSyncValues = ContentResolver.getActiveSync();
+
+        boolean anySyncFailed = false; // true if sync on any account failed
+
+        // only track userfacing sync adapters when deciding if account is synced or not
+        final SyncAdapterType[] syncAdapters = ContentResolver.getSyncAdapterTypes();
+        HashSet<String> userFacing = new HashSet<String>();
+        for (int k = 0, n = syncAdapters.length; k < n; k++) {
+            final SyncAdapterType sa = syncAdapters[k];
+            if (sa.isUserVisible()) {
+                userFacing.add(sa.authority);
+            }
+        }
+        for (int i = 0, count = mManageAccountsCategory.getPreferenceCount(); i < count; i++) {
+            Preference pref = mManageAccountsCategory.getPreference(i);
+            if (! (pref instanceof AccountPreference)) {
+                continue;
+            }
+
+            AccountPreference accountPref = (AccountPreference) pref;
+            Account account = accountPref.getAccount();
+            int syncCount = 0;
+            boolean syncIsFailing = false;
+            for (String authority : accountPref.getAuthorities()) {
+                SyncStatusInfo status = ContentResolver.getSyncStatus(account, authority);
+                boolean syncEnabled = ContentResolver.getSyncAutomatically(account, authority)
+                        && masterSyncAutomatically
+                        && backgroundDataSetting;
+                boolean authorityIsPending = ContentResolver.isSyncPending(account, authority);
+                boolean activelySyncing = activeSyncValues != null
+                        && activeSyncValues.authority.equals(authority)
+                        && activeSyncValues.account.equals(account);
+                boolean lastSyncFailed = status != null
+                        && syncEnabled
+                        && status.lastFailureTime != 0
+                        && status.getLastFailureMesgAsInt(0)
+                           != ContentResolver.SYNC_ERROR_SYNC_ALREADY_IN_PROGRESS;
+                if (lastSyncFailed && !activelySyncing && !authorityIsPending) {
+                    syncIsFailing = true;
+                    anySyncFailed = true;
+                }
+                syncCount += syncEnabled && userFacing.contains(authority) ? 1 : 0;
+            }
+            int syncStatus = AccountPreference.SYNC_DISABLED;
+            if (syncIsFailing) {
+                syncStatus = AccountPreference.SYNC_ERROR;
+            } else if (syncCount == 0) {
+                syncStatus = AccountPreference.SYNC_DISABLED;
+            } else if (syncCount > 0) {
+                syncStatus = AccountPreference.SYNC_ENABLED;
+            }
+            accountPref.setSyncStatus(syncStatus);
+        }
+
+        mErrorInfoView.setVisibility(anySyncFailed ? View.VISIBLE : View.GONE);
+    }
+
+    public void onAccountsUpdated(Account[] accounts) {
+        mManageAccountsCategory.removeAll();
+        for (int i = 0, n = accounts.length; i < n; i++) {
+            final Account account = accounts[i];
+            final ArrayList<String> auths = getAuthoritiesForAccountType(account.type);
+
+            boolean showAccount = true;
+            if (mAuthorities != null) {
+                showAccount = false;
+                for (String requestedAuthority : mAuthorities) {
+                    if (auths.contains(requestedAuthority)) {
+                        showAccount = true;
+                        break;
+                    }
+                }
+            }
+
+            if (showAccount) {
+                Drawable icon = getDrawableForType(account.type);
+                AccountPreference preference = new AccountPreference(this, account, icon, auths);
+                mManageAccountsCategory.addPreference(preference);
+            }
+        }
+        onSyncStateUpdated();
+    }
+
+    @Override
+    protected void onAuthDescriptionsUpdated() {
+        // Update account icons for all account preference items
+        for (int i = 0; i < mManageAccountsCategory.getPreferenceCount(); i++) {
+            AccountPreference pref = (AccountPreference) mManageAccountsCategory.getPreference(i);
+            pref.setProviderIcon(getDrawableForType(pref.getAccount().type));
+            pref.setSummary(getLabelForType(pref.getAccount().type));
+        }
+    }
+
+    public void onClick(View v) {
+        if (v == mAddAccountButton) {
+            Intent intent = new Intent("android.settings.ADD_ACCOUNT_SETTINGS");
+            intent.putExtra(AUTHORITIES_FILTER_KEY, mAuthorities);
+            startActivity(intent);
+        }
+    }
+}
diff --git a/src/com/android/settings/ProviderPreference.java b/src/com/android/settings/ProviderPreference.java
new file mode 100644
index 0000000..2eb1f5b
--- /dev/null
+++ b/src/com/android/settings/ProviderPreference.java
@@ -0,0 +1,60 @@
+/*
+ * Copyright (C) 2008 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings;
+
+import com.android.providers.subscribedfeeds.R;
+
+import android.content.Context;
+import android.graphics.drawable.Drawable;
+import android.preference.Preference;
+import android.view.View;
+import android.widget.ImageView;
+
+/**
+ * ProviderPreference is used to display an image to the left of a provider name.
+ * The preference ultimately calls AccountManager.addAccount() for the account type.
+ */
+public class ProviderPreference extends Preference {
+    private Drawable mProviderIcon;
+    private ImageView mProviderIconView;
+    private CharSequence mProviderName;
+    private String mAccountType;
+
+    public ProviderPreference(Context context, String accountType, Drawable icon, CharSequence providerName) {
+        super(context);
+        mAccountType = accountType;
+        mProviderIcon = icon;
+        mProviderName = providerName;
+        setLayoutResource(R.layout.provider_preference);
+        setPersistent(false);
+        setTitle(mProviderName);
+        //setSummary(mProviderName);
+    }
+
+    @Override
+    protected void onBindView(View view) {
+        super.onBindView(view);
+        mProviderIconView = (ImageView) view.findViewById(R.id.providerIcon);
+        mProviderIconView.setImageDrawable(mProviderIcon);
+        setTitle(mProviderName);
+        //setSummary(mProviderName);
+    }
+
+    public String getAccountType() {
+        return mAccountType;
+    }
+}
diff --git a/src/com/android/settings/SyncActivityTooManyDeletes.java b/src/com/android/settings/SyncActivityTooManyDeletes.java
index 3195ea3..61ac59d 100644
--- a/src/com/android/settings/SyncActivityTooManyDeletes.java
+++ b/src/com/android/settings/SyncActivityTooManyDeletes.java
@@ -18,9 +18,9 @@
 
 import com.android.providers.subscribedfeeds.R;
 
+import android.accounts.Account;
 import android.app.Activity;
 import android.content.ContentResolver;
-import android.net.Uri;
 import android.os.Bundle;
 import android.view.View;
 import android.view.ViewGroup;
@@ -40,7 +40,8 @@
         implements AdapterView.OnItemClickListener {
 
     private long mNumDeletes;
-    private String mAccount;
+    private Account mAccount;
+    private String mAuthority;
     private String mProvider;
 
     @Override
@@ -54,7 +55,8 @@
         }
 
         mNumDeletes = extras.getLong("numDeletes");
-        mAccount = extras.getString("account");
+        mAccount = (Account) extras.getParcelable("account");
+        mAuthority = extras.getString("authority");
         mProvider = extras.getString("provider");
 
         // the order of these must match up with the constants for position used in onItemClick
@@ -78,7 +80,7 @@
         CharSequence tooManyDeletesDescFormat =
                 getResources().getText(R.string.sync_too_many_deletes_desc);
         textView.setText(String.format(tooManyDeletesDescFormat.toString(),
-                mNumDeletes, mProvider, mAccount));
+                mNumDeletes, mProvider, mAccount.name));
 
         final LinearLayout ll = new LinearLayout(this);
         ll.setOrientation(LinearLayout.VERTICAL);
@@ -86,6 +88,22 @@
                 ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT, 0);
         ll.addView(textView, lp);
         ll.addView(listView, lp);
+
+        // TODO: consider displaying the icon of the account type
+//        AuthenticatorDescription[] descs = AccountManager.get(this).getAuthenticatorTypes();
+//        for (AuthenticatorDescription desc : descs) {
+//            if (desc.type.equals(mAccount.type)) {
+//                try {
+//                    final Context authContext = createPackageContext(desc.packageName, 0);
+//                    ImageView imageView = new ImageView(this);
+//                    imageView.setImageDrawable(authContext.getResources().getDrawable(desc.iconId));
+//                    ll.addView(imageView, lp);
+//                } catch (PackageManager.NameNotFoundException e) {
+//                }
+//                break;
+//            }
+//        }
+
         setContentView(ll);
     }
 
@@ -97,24 +115,20 @@
     }
 
     private void startSyncReallyDelete() {
-        Uri uri = Uri.parse("content://" + mProvider);
         Bundle extras = new Bundle();
-        extras.putString(ContentResolver.SYNC_EXTRAS_ACCOUNT, mAccount);
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_OVERRIDE_TOO_MANY_DELETIONS, true);
-        extras.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true);
+        extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_UPLOAD, true);
-        getContentResolver().startSync(uri, extras);
+        ContentResolver.requestSync(mAccount, mAuthority, extras);
     }
 
     private void startSyncUndoDeletes() {
-        Uri uri = Uri.parse("content://" + mProvider);
         Bundle extras = new Bundle();
-        extras.putString(ContentResolver.SYNC_EXTRAS_ACCOUNT, mAccount);
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_DISCARD_LOCAL_DELETIONS, true);
-        extras.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true);
+        extras.putBoolean(ContentResolver.SYNC_EXTRAS_MANUAL, true);
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_EXPEDITED, true);
         extras.putBoolean(ContentResolver.SYNC_EXTRAS_UPLOAD, true);
-        getContentResolver().startSync(uri, extras);
+        ContentResolver.requestSync(mAccount, mAuthority, extras);
     }
 }
diff --git a/src/com/android/settings/SyncSettings.java b/src/com/android/settings/SyncSettings.java
deleted file mode 100644
index 483db9b..0000000
--- a/src/com/android/settings/SyncSettings.java
+++ /dev/null
@@ -1,487 +0,0 @@
-/*
- * Copyright (C) 2008 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.settings;
-
-import com.android.providers.subscribedfeeds.R;
-
-import android.app.ActivityThread;
-import android.app.AlertDialog;
-import android.app.Dialog;
-import android.content.ActiveSyncInfo;
-import android.content.ContentResolver;
-import android.content.ContentValues;
-import android.content.Context;
-import android.content.DialogInterface;
-import android.content.IContentService;
-import android.content.ISyncStatusObserver;
-import android.content.Intent;
-import android.content.SyncStatusInfo;
-import android.content.SyncStorageEngine;
-import android.content.pm.ProviderInfo;
-import android.net.ConnectivityManager;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Handler;
-import android.os.RemoteException;
-import android.text.format.DateFormat;
-import android.preference.CheckBoxPreference;
-import android.preference.Preference;
-import android.preference.PreferenceActivity;
-import android.preference.PreferenceScreen;
-import android.provider.Gmail;
-import android.provider.SubscribedFeeds;
-import android.text.TextUtils;
-import android.view.Menu;
-import android.view.MenuItem;
-import android.view.View;
-import android.widget.TextView;
-
-import java.util.ArrayList;
-import java.util.Date;
-import java.util.List;
-import java.util.Map;
-import java.util.Observable;
-import java.util.Observer;
-
-import com.google.android.googlelogin.GoogleLoginServiceConstants;
-import com.google.android.googlelogin.GoogleLoginServiceHelper;
-
-public class SyncSettings extends PreferenceActivity {
-
-    IContentService    mContentService;
-    List<String>       mProviderNames;
-    List<ProviderInfo> mProviderInfos;
-
-    CheckBoxPreference mAutoSyncCheckBox;
-    TextView mErrorInfoView;
-
-    java.text.DateFormat mDateFormat;
-    java.text.DateFormat mTimeFormat;
-
-    final Handler mHandler = new Handler();
-    
-    private static final String SYNC_CONNECTION_SETTING_CHANGED
-        = "com.android.sync.SYNC_CONN_STATUS_CHANGED";
-
-    private static final String BACKGROUND_DATA_SETTING_CHANGED
-        = "com.android.sync.BG_DATA_STATUS_CHANGED";
-
-    private static final String SYNC_KEY_PREFIX = "sync_";
-    private static final String SYNC_CHECKBOX_KEY = "autoSyncCheckBox";
-    private static final String BACKGROUND_DATA_CHECKBOX_KEY = "backgroundDataCheckBox";
-
-    private static final String BACKGROUND_DATA_INTENT_EXTRA_NAME = "value";
-
-    private static final int MENU_SYNC_NOW_ID = Menu.FIRST;
-    private static final int MENU_SYNC_CANCEL_ID = Menu.FIRST + 1;
-    private static final int GET_ACCOUNT_REQUEST = 14376;
-
-    private static final int DIALOG_DISABLE_BACKGROUND_DATA = 1;
-    
-    @Override
-    protected void onCreate(Bundle icicle) {
-        super.onCreate(icicle);
-        
-        mContentService = ContentResolver.getContentService();
-        
-        setContentView(R.layout.sync_settings_list_content);
-        addPreferencesFromResource(R.xml.sync_settings);
-
-        mErrorInfoView = (TextView)findViewById(R.id.sync_settings_error_info);
-        mErrorInfoView.setVisibility(View.GONE);
-        mErrorInfoView.setCompoundDrawablesWithIntrinsicBounds(
-                getResources().getDrawable(R.drawable.ic_list_syncerror), null, null, null);
-
-        mDateFormat = DateFormat.getDateFormat(this);
-        mTimeFormat = DateFormat.getTimeFormat(this);
-
-        mAutoSyncCheckBox = (CheckBoxPreference) findPreference(SYNC_CHECKBOX_KEY);
-        
-        if (icicle == null) checkForAccount(); // First launch only; ignore orientation changes.
-        
-        initProviders();
-        initUI();
-    }
-    
-    private void checkForAccount() {
-        // This will request a Gmail account and if none present will invoke SetupWizard
-        // to login or create a new one. The result is returned through onActivityResult().
-        Bundle bundle = new Bundle();
-        bundle.putCharSequence("optional_message", getText(R.string.sync_plug));
-        GoogleLoginServiceHelper.getCredentials(
-                this, 
-                GET_ACCOUNT_REQUEST, 
-                bundle,
-                GoogleLoginServiceConstants.PREFER_HOSTED, 
-                Gmail.GMAIL_AUTH_SERVICE, 
-                true);
-    }
-    
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        super.onActivityResult(requestCode, resultCode, data);
-        if (requestCode == GET_ACCOUNT_REQUEST) {
-            if (resultCode != RESULT_OK) {
-                // The user canceled and there are no accounts. Just return to the previous
-                // settings page...
-                finish();
-            }
-        } 
-    }
-
-    @Override
-    public boolean onCreateOptionsMenu(Menu menu) {
-        super.onCreateOptionsMenu(menu);
-        menu.add(0, MENU_SYNC_NOW_ID, 0, getString(R.string.sync_menu_sync_now))
-                .setIcon(com.android.internal.R.drawable.ic_menu_refresh);
-        menu.add(0, MENU_SYNC_CANCEL_ID, 0, getString(R.string.sync_menu_sync_cancel))
-                .setIcon(android.R.drawable.ic_menu_close_clear_cancel);
-        return true;
-    }
-
-    @Override
-    public boolean onPrepareOptionsMenu(Menu menu) {
-        super.onPrepareOptionsMenu(menu);
-        boolean syncActive = false;
-        try {
-            syncActive = mContentService.getActiveSync() != null;
-        } catch (RemoteException e) {
-        }
-        menu.findItem(MENU_SYNC_NOW_ID).setVisible(!syncActive);
-        menu.findItem(MENU_SYNC_CANCEL_ID).setVisible(syncActive);
-        return true;
-    }
-
-    @Override
-    public boolean onOptionsItemSelected(MenuItem item) {
-        switch (item.getItemId()) {
-            case MENU_SYNC_NOW_ID:
-                startSyncForEnabledProviders();
-                return true;
-            case MENU_SYNC_CANCEL_ID:
-                cancelSyncForEnabledProviders();
-                return true;
-        }
-        return super.onOptionsItemSelected(item);
-    }
-
-    private void initProviders() {
-        mProviderNames = new ArrayList<String>();
-        mProviderInfos = new ArrayList<ProviderInfo>();
-
-        try {
-            ActivityThread.getPackageManager().querySyncProviders(mProviderNames,
-                    mProviderInfos);
-        } catch (RemoteException e) {
-        }
-        /*
-        for (int i = 0; i < mProviderNames.size(); i++) {
-            Log.i("SyncProviders", mProviderNames.get(i));
-        }
-        */
-    }
-
-    @Override
-    protected void onResume() {
-        super.onResume();
-        try {
-            mContentService.addStatusChangeListener(
-                    SyncStorageEngine.CHANGE_ACTIVE
-                    | SyncStorageEngine.CHANGE_STATUS
-                    | SyncStorageEngine.CHANGE_SETTINGS,
-                    mSyncStatusObserver);
-        } catch (RemoteException e) {
-        }
-        onSyncStateUpdated();
-    }
-
-    @Override
-    protected void onPause() {
-        super.onPause();
-        try {
-            mContentService.removeStatusChangeListener(mSyncStatusObserver);
-        } catch (RemoteException e) {
-        }
-    }
-
-    @Override
-    protected void onDestroy() {
-        super.onDestroy();
-    }
-
-    private void initUI() {
-        // Set background connection state
-        CheckBoxPreference backgroundData =
-            (CheckBoxPreference) findPreference(BACKGROUND_DATA_CHECKBOX_KEY);
-        ConnectivityManager connManager =
-                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-        backgroundData.setChecked(connManager.getBackgroundDataSetting());
-
-        // Set the Auto Sync toggle state
-        CheckBoxPreference autoSync = (CheckBoxPreference) findPreference(SYNC_CHECKBOX_KEY);
-        try {
-            autoSync.setChecked(mContentService.getListenForNetworkTickles());
-        } catch (RemoteException e) {
-        }
-        setOneTimeSyncMode(!autoSync.isChecked());
-
-        // Find individual sync provider's states and initialize the toggles
-        int i;
-        int count = getPreferenceScreen().getPreferenceCount();
-        for (i = 0; i < count; i++) {
-            Preference pref = getPreferenceScreen().getPreference(i);
-            if (pref.hasKey() && pref.getKey().startsWith(SYNC_KEY_PREFIX)) {
-                CheckBoxPreference toggle = (CheckBoxPreference) pref;
-                String providerName = toggle.getKey().substring(SYNC_KEY_PREFIX.length());
-                boolean enabled = false;
-                try {
-                    enabled = mContentService.getSyncProviderAutomatically(providerName);
-                } catch (RemoteException e) {
-                }
-                toggle.setChecked(enabled);
-            }
-        }
-
-    }
-
-    @Override
-    public boolean onPreferenceTreeClick(PreferenceScreen preferences, Preference preference) {
-        CheckBoxPreference togglePreference = (CheckBoxPreference) preference;
-        String key = preference.getKey();
-        if (key.equals(BACKGROUND_DATA_CHECKBOX_KEY)) {
-            ConnectivityManager connManager =
-                    (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-            boolean oldBackgroundDataSetting = connManager.getBackgroundDataSetting();
-            boolean backgroundDataSetting = togglePreference.isChecked();
-            if (oldBackgroundDataSetting != backgroundDataSetting) {
-                if (backgroundDataSetting) {
-                    setBackgroundDataInt(true);
-                } else {
-                    confirmDisablingOfBackgroundData(togglePreference);
-                }
-            }
-        } else if (key.equals(SYNC_CHECKBOX_KEY)) {
-            boolean oldListenForTickles = false;
-            try {
-                oldListenForTickles = mContentService.getListenForNetworkTickles();
-            } catch (RemoteException e) {
-            }
-            boolean listenForTickles = togglePreference.isChecked();
-            if (oldListenForTickles != listenForTickles) {
-                try {
-                    mContentService.setListenForNetworkTickles(listenForTickles);
-                } catch (RemoteException e) {
-                }
-                Intent intent = new Intent();
-                intent.setAction(SYNC_CONNECTION_SETTING_CHANGED);
-                sendBroadcast(intent);
-                if (listenForTickles) {
-                    startSyncForEnabledProviders();
-                }
-            }
-            if (!listenForTickles) {
-                cancelSyncForEnabledProviders();
-            }
-            setOneTimeSyncMode(!listenForTickles);
-        } else if (key.startsWith(SYNC_KEY_PREFIX)) {
-            SyncStateCheckBoxPreference syncPref = (SyncStateCheckBoxPreference) preference;
-            String providerName = key.substring(SYNC_KEY_PREFIX.length());
-            if (syncPref.isOneTimeSyncMode()) {
-                startSync(providerName);
-            } else {
-                boolean syncOn = togglePreference.isChecked();
-                boolean oldSyncState = false;
-                try {
-                    oldSyncState = mContentService.getSyncProviderAutomatically(providerName);
-                } catch (RemoteException e) {
-                }
-                if (syncOn != oldSyncState) {
-                    try {
-                        mContentService.setSyncProviderAutomatically(providerName, syncOn);
-                    } catch (RemoteException e) {
-                    }
-                    if (syncOn) {
-                        startSync(providerName);
-                    } else {
-                        cancelSync(providerName);
-                    }
-                }
-            }
-        } else {
-            return false;
-        }
-        return true;
-    }
-
-    private void setOneTimeSyncMode(boolean oneTimeSyncMode) {
-        int count = getPreferenceScreen().getPreferenceCount();
-        for (int i = 0; i < count; i++) {
-            Preference pref = getPreferenceScreen().getPreference(i);
-            if (pref.hasKey() && pref.getKey().startsWith(SYNC_KEY_PREFIX)) {
-                SyncStateCheckBoxPreference syncPref = (SyncStateCheckBoxPreference) pref;
-                syncPref.setOneTimeSyncMode(oneTimeSyncMode);
-            }
-        }
-    }
-    
-    private void confirmDisablingOfBackgroundData(final CheckBoxPreference
-            backgroundDataPreference) {
-        // This will get unchecked only if the user hits "Ok"
-        backgroundDataPreference.setChecked(true);
-        showDialog(DIALOG_DISABLE_BACKGROUND_DATA);        
-    }
-
-    @Override
-    protected Dialog onCreateDialog(int id) {
-        switch (id) {
-            case DIALOG_DISABLE_BACKGROUND_DATA:
-                final CheckBoxPreference pref =
-                    (CheckBoxPreference) findPreference(BACKGROUND_DATA_CHECKBOX_KEY); 
-                return new AlertDialog.Builder(this)
-                        .setTitle(R.string.background_data_dialog_title)
-                        .setIcon(android.R.drawable.ic_dialog_alert)
-                        .setMessage(R.string.background_data_dialog_message)
-                        .setPositiveButton(android.R.string.ok,
-                                    new DialogInterface.OnClickListener() {
-                                public void onClick(DialogInterface dialog, int which) {
-                                    setBackgroundDataInt(false);
-                                    pref.setChecked(false);
-                                }
-                            })
-                        .setNegativeButton(android.R.string.cancel, null)
-                        .create();
-        }
-        
-        return null;
-    }
-
-    private void setBackgroundDataInt(boolean enabled) {
-        ConnectivityManager connManager =
-                (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
-        connManager.setBackgroundDataSetting(enabled);
-    }
-    
-    private void startSyncForEnabledProviders() {
-        cancelOrStartSyncForEnabledProviders(true /* start them */);
-    }
-
-    private void cancelSyncForEnabledProviders() {
-        cancelOrStartSyncForEnabledProviders(false /* cancel them */);
-    }
-
-    private void cancelOrStartSyncForEnabledProviders(boolean startSync) {
-        int count = getPreferenceScreen().getPreferenceCount();
-        for (int i = 0; i < count; i++) {
-            Preference pref = getPreferenceScreen().getPreference(i);
-            if (pref.hasKey() && pref.getKey().startsWith(SYNC_KEY_PREFIX)) {
-                CheckBoxPreference toggle = (CheckBoxPreference) pref;
-                if (!toggle.isChecked()) {
-                    continue;
-                }
-                final String authority = toggle.getKey().substring(SYNC_KEY_PREFIX.length());
-                if (startSync) {
-                    startSync(authority);
-                } else {
-                    cancelSync(authority);
-                }
-            }
-        }
-
-        // treat SubscribedFeeds as an enabled provider
-        final String authority = SubscribedFeeds.Feeds.CONTENT_URI.getAuthority();
-        if (startSync) {
-            startSync(authority);
-        } else {
-            cancelSync(authority);
-        }
-    }
-
-    private void startSync(String providerName) {
-        Uri uriToSync = (providerName != null) ? Uri.parse("content://" + providerName) : null;
-        Bundle extras = new Bundle();
-        extras.putBoolean(ContentResolver.SYNC_EXTRAS_FORCE, true);
-        getContentResolver().startSync(uriToSync, extras);
-    }
-
-    private void cancelSync(String authority) {
-        getContentResolver().cancelSync(Uri.parse("content://" + authority));
-    }
-
-    private ISyncStatusObserver mSyncStatusObserver = new ISyncStatusObserver.Stub() {
-        public void onStatusChanged(int which) throws RemoteException {
-            mHandler.post(new Runnable() {
-                public void run() {
-                    onSyncStateUpdated();
-                }
-            });
-        }
-    };
-
-    private void onSyncStateUpdated() {
-        // iterate over all the preferences, setting the state properly for each
-        Date date = new Date();
-        ActiveSyncInfo activeSyncValues = null;
-        try {
-            activeSyncValues = mContentService.getActiveSync();
-        } catch (RemoteException e) {
-        }
-        boolean syncIsFailing = false;
-        int count = getPreferenceScreen().getPreferenceCount();
-        for (int i = 0; i < count; i++) {
-            Preference pref = getPreferenceScreen().getPreference(i);
-            final String prefKey = pref.getKey();
-            if (!TextUtils.isEmpty(prefKey) && prefKey.startsWith(SYNC_KEY_PREFIX)) {
-                String authority = prefKey.substring(SYNC_KEY_PREFIX.length());
-                SyncStateCheckBoxPreference toggle = (SyncStateCheckBoxPreference)pref;
-                SyncStatusInfo status = null;
-                boolean syncEnabled = false;
-                boolean authorityIsPending = false;
-                try {
-                    status = mContentService.getStatusByAuthority(authority);
-                    syncEnabled = mContentService.getSyncProviderAutomatically(authority);
-                    authorityIsPending = mContentService.isAuthorityPending(null, authority);
-                } catch (RemoteException e) {
-                }
-
-                boolean activelySyncing = activeSyncValues != null
-                        && activeSyncValues.authority.equals(authority);
-                boolean lastSyncFailed = status != null
-                        && status.lastFailureTime != 0
-                        && status.getLastFailureMesgAsInt(0)
-                           != SyncStorageEngine.ERROR_SYNC_ALREADY_IN_PROGRESS;
-                if (!syncEnabled) lastSyncFailed = false;
-                if (lastSyncFailed && !activelySyncing && !authorityIsPending) {
-                    syncIsFailing = true;
-                }
-                final long successEndTime =
-                    status == null ? 0 : status.lastSuccessTime;
-                if (successEndTime != 0) {
-                    date.setTime(successEndTime);
-                    final String timeString = mDateFormat.format(date) + " "
-                            + mTimeFormat.format(date);
-                    toggle.setSummary(timeString);
-                } else {
-                    toggle.setSummary("");
-                }
-                toggle.setActive(activelySyncing);
-                toggle.setPending(authorityIsPending);
-                toggle.setFailed(lastSyncFailed);
-            }
-        }
-        mErrorInfoView.setVisibility(syncIsFailing ? View.VISIBLE : View.GONE);
-    }
-}
diff --git a/src/com/android/settings/SyncStateCheckBoxPreference.java b/src/com/android/settings/SyncStateCheckBoxPreference.java
index 948287b..287979e 100644
--- a/src/com/android/settings/SyncStateCheckBoxPreference.java
+++ b/src/com/android/settings/SyncStateCheckBoxPreference.java
@@ -25,12 +25,15 @@
 import android.view.View;
 import android.widget.ImageView;
 import android.widget.TextView;
+import android.accounts.Account;
 
 public class SyncStateCheckBoxPreference extends CheckBoxPreference {
 
     private boolean mIsActive = false;
     private boolean mIsPending = false;
     private boolean mFailed = false;
+    private Account mAccount;
+    private String mAuthority;
 
     /**
      * A mode for this preference where clicking does a one-time sync instead of
@@ -41,6 +44,15 @@
     public SyncStateCheckBoxPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
         setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
+        mAccount = null;
+        mAuthority = null;
+    }
+
+    public SyncStateCheckBoxPreference(Context context, Account account, String authority) {
+        super(context, null);
+        mAccount = account;
+        mAuthority = authority;
+        setWidgetLayoutResource(R.layout.preference_widget_sync_toggle);
     }
 
     @Override
@@ -51,11 +63,15 @@
         View syncFailedView = view.findViewById(R.id.sync_failed);
 
         syncActiveView.setVisibility(mIsActive ? View.VISIBLE : View.GONE);
-        AnimationDrawable anim = (AnimationDrawable) syncActiveView.getDrawable();
+        final AnimationDrawable anim = (AnimationDrawable) syncActiveView.getDrawable();
         boolean showError;
         boolean showPending;
         if (mIsActive) {
-            anim.start();
+            syncActiveView.post(new Runnable() {
+                public void run() {
+                    anim.start();
+                }
+            });
             showPending = false;
             showError = false;
         } else {
@@ -138,5 +154,12 @@
             super.onClick();
         }            
     }
-    
+
+    public Account getAccount() {
+        return mAccount;
+    }
+
+    public String getAuthority() {
+        return mAuthority;
+    }
 }
