Merge change 26137 into eclair
* changes:
Contacts: Fixed to choose correct item in list, counting header in.
diff --git a/src/com/android/contacts/DialtactsActivity.java b/src/com/android/contacts/DialtactsActivity.java
index 2ba3d26..9fb5f41 100644
--- a/src/com/android/contacts/DialtactsActivity.java
+++ b/src/com/android/contacts/DialtactsActivity.java
@@ -16,24 +16,21 @@
package com.android.contacts;
+import com.android.internal.telephony.ITelephony;
+
import android.app.Activity;
import android.app.TabActivity;
import android.content.Intent;
import android.content.SharedPreferences;
-import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.RemoteException;
import android.os.ServiceManager;
-import android.provider.CallLog;
-import android.provider.Contacts;
import android.provider.CallLog.Calls;
-import android.provider.Contacts.Intents.UI;
+import android.provider.ContactsContract.Intents.UI;
import android.util.Log;
-import android.view.KeyEvent;
import android.view.Window;
import android.widget.TabHost;
-import com.android.internal.telephony.ITelephony;
/**
* The dialer activity that has one tab with the virtual 12key dialer,
@@ -83,7 +80,7 @@
setCurrentTab(intent);
- if (intent.getAction().equals(Contacts.Intents.UI.FILTER_CONTACTS_ACTION)
+ if (intent.getAction().equals(UI.FILTER_CONTACTS_ACTION)
&& icicle == null) {
setupFilterText(intent);
}
@@ -235,7 +232,7 @@
fixIntent(newIntent);
setCurrentTab(newIntent);
final String action = newIntent.getAction();
- if (action.equals(Contacts.Intents.UI.FILTER_CONTACTS_ACTION)) {
+ if (action.equals(UI.FILTER_CONTACTS_ACTION)) {
setupFilterText(newIntent);
} else if (isDialIntent(newIntent)) {
setupDialUri(newIntent);
@@ -282,7 +279,7 @@
if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
return;
}
- String filter = intent.getStringExtra(Contacts.Intents.UI.FILTER_TEXT_EXTRA_KEY);
+ String filter = intent.getStringExtra(UI.FILTER_TEXT_EXTRA_KEY);
if (filter != null && filter.length() > 0) {
mFilterText = filter;
}
diff --git a/src/com/android/contacts/ui/EditContactActivity.java b/src/com/android/contacts/ui/EditContactActivity.java
index 843615a..6059e62 100644
--- a/src/com/android/contacts/ui/EditContactActivity.java
+++ b/src/com/android/contacts/ui/EditContactActivity.java
@@ -736,12 +736,17 @@
final ArrayList<Account> writable = sources.getAccounts(true);
+ // No Accounts available. Create a phone-local contact.
+ if (writable.isEmpty()) {
+ selectAccount(null);
+ return null; // Don't show a dialog.
+ }
+
// In the common case of a single account being writable, auto-select
// it without showing a dialog.
if (writable.size() == 1) {
selectAccount(writable.get(0));
- // Signal to not show a dialog:
- return null;
+ return null; // Don't show a dialog.
}
final ArrayAdapter<Account> accountAdapter = new ArrayAdapter<Account>(target,
@@ -802,6 +807,13 @@
return builder;
}
+ /**
+ * Sets up EditContactActivity's mState for the account selected.
+ * Runs from a background thread.
+ *
+ * @param account may be null to signal a device-local contact should
+ * be created.
+ */
private void selectAccount(Account account) {
EditContactActivity target = mTarget.get();
if (target == null) {
@@ -809,13 +821,19 @@
}
final Sources sources = Sources.getInstance(target);
final ContentValues values = new ContentValues();
- values.put(RawContacts.ACCOUNT_NAME, account.name);
- values.put(RawContacts.ACCOUNT_TYPE, account.type);
+ if (account != null) {
+ values.put(RawContacts.ACCOUNT_NAME, account.name);
+ values.put(RawContacts.ACCOUNT_TYPE, account.type);
+ } else {
+ values.putNull(RawContacts.ACCOUNT_NAME);
+ values.putNull(RawContacts.ACCOUNT_TYPE);
+ }
// Parse any values from incoming intent
final EntityDelta insert = new EntityDelta(ValuesDelta.fromAfter(values));
- final ContactsSource source = sources.getInflatedSource(account.type,
- ContactsSource.LEVEL_CONSTRAINTS);
+ final ContactsSource source = sources.getInflatedSource(
+ account != null ? account.type : null,
+ ContactsSource.LEVEL_CONSTRAINTS);
final Bundle extras = target.getIntent().getExtras();
EntityModifier.parseExtras(target, source, insert, extras);