Exit to Settings when removing the only account for a type.

Skip over the ManageAccounts screen which shows the list of accounts
for a particular type, if there are no accounts there.

Bug: 6630827

Also fix text alignment in top-level of settings.

Change-Id: Icd446babc131e7052fc9e95514214fffe6e6e113
This commit is contained in:
Amith Yamasani
2012-06-08 13:35:47 -07:00
parent b3a049f539
commit c8a9317649
5 changed files with 83 additions and 10 deletions

View File

@@ -0,0 +1,66 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Copyright (C) 2012 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.
-->
<!-- Layout of a header item in PreferenceActivity. -->
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:minHeight="48dp"
android:background="?android:attr/activatedBackgroundIndicator"
android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize">
<LinearLayout
android:layout_width="@dimen/header_icon_width"
android:layout_marginLeft="6dip"
android:layout_marginRight="6dip"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="2dip"
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"
android:ellipsize="marquee"
android:fadingEdge="horizontal" />
<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:ellipsize="end"
android:maxLines="2" />
</RelativeLayout>
</LinearLayout>

View File

@@ -23,14 +23,17 @@
android:gravity="center_vertical" android:gravity="center_vertical"
android:paddingRight="?android:attr/scrollbarSize"> android:paddingRight="?android:attr/scrollbarSize">
<ImageView <LinearLayout
android:id="@+id/icon" android:layout_width="@dimen/header_icon_width"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="6dip" android:layout_marginLeft="6dip"
android:layout_marginRight="6dip" android:layout_marginRight="6dip"
android:layout_gravity="center" android:layout_height="wrap_content">
android:contentDescription="@null" /> <ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center" />
</LinearLayout>
<RelativeLayout <RelativeLayout
android:layout_width="wrap_content" android:layout_width="wrap_content"

View File

@@ -625,9 +625,9 @@ public class Settings extends PreferenceActivity
case HEADER_TYPE_NORMAL: case HEADER_TYPE_NORMAL:
view = mInflater.inflate( view = mInflater.inflate(
com.android.internal.R.layout.preference_header_item, parent, R.layout.preference_header_item, parent,
false); false);
holder.icon = (ImageView) view.findViewById(com.android.internal.R.id.icon); holder.icon = (ImageView) view.findViewById(R.id.icon);
holder.title = (TextView) holder.title = (TextView)
view.findViewById(com.android.internal.R.id.title); view.findViewById(com.android.internal.R.id.title);
holder.summary = (TextView) holder.summary = (TextView)

View File

@@ -23,7 +23,6 @@ import android.content.Context;
import android.content.pm.PackageManager; import android.content.pm.PackageManager;
import android.content.res.Resources; import android.content.res.Resources;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.graphics.drawable.ScaleDrawable;
import android.util.Log; import android.util.Log;
import java.util.ArrayList; import java.util.ArrayList;
@@ -32,7 +31,7 @@ import java.util.Map;
public class AuthenticatorHelper { public class AuthenticatorHelper {
private static final String TAG = "AccountTypesHelper"; private static final String TAG = "AuthenticatorHelper";
private Map<String, AuthenticatorDescription> mTypeToAuthDescription private Map<String, AuthenticatorDescription> mTypeToAuthDescription
= new HashMap<String, AuthenticatorDescription>(); = new HashMap<String, AuthenticatorDescription>();
private AuthenticatorDescription[] mAuthDescs; private AuthenticatorDescription[] mAuthDescs;

View File

@@ -333,6 +333,11 @@ public class ManageAccountsSettings extends AccountPreferenceBase
} }
if (mAccountType != null && mFirstAccount != null) { if (mAccountType != null && mFirstAccount != null) {
addAuthenticatorSettings(); addAuthenticatorSettings();
} else {
// There's no account, reset to top-level of settings
Intent settingsTop = new Intent(android.provider.Settings.ACTION_SETTINGS);
settingsTop.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
getActivity().startActivity(settingsTop);
} }
onSyncStateUpdated(); onSyncStateUpdated();
} }