auto import from //branches/cupcake/...@130745
diff --git a/src/com/android/contacts/ContactsGroupSyncSelector.java b/src/com/android/contacts/ContactsGroupSyncSelector.java
index 6081c79..80b5166 100644
--- a/src/com/android/contacts/ContactsGroupSyncSelector.java
+++ b/src/com/android/contacts/ContactsGroupSyncSelector.java
@@ -112,6 +112,12 @@
}
case R.id.ok: {
+ // The list isn't setup yet, so just return without doing anything.
+ if (mChecked == null) {
+ finish();
+ return;
+ }
+
final ContentResolver resolver = getContentResolver();
if (mSyncAllGroups) {
// For now we only support a single account and the UI doesn't know what
diff --git a/src/com/android/contacts/DialtactsActivity.java b/src/com/android/contacts/DialtactsActivity.java
index 1933c4c..d3f8981 100644
--- a/src/com/android/contacts/DialtactsActivity.java
+++ b/src/com/android/contacts/DialtactsActivity.java
@@ -176,6 +176,14 @@
finish();
return;
}
+
+ // Dismiss menu provided by any children activites
+ Activity activity = getLocalActivityManager().
+ getActivity(mTabHost.getCurrentTabTag());
+ if (activity != null) {
+ activity.closeOptionsMenu();
+ }
+
intent.putExtra(EXTRA_IGNORE_STATE, true);
if (intent.getComponent().getClassName().equals(getClass().getName())) {
if (recentCallsRequest) {
diff --git a/src/com/android/contacts/EditContactActivity.java b/src/com/android/contacts/EditContactActivity.java
index fb8dd70..d34713d 100644
--- a/src/com/android/contacts/EditContactActivity.java
+++ b/src/com/android/contacts/EditContactActivity.java
@@ -170,7 +170,6 @@
private EditText mNameView;
private ImageView mPhotoImageView;
- private View mPhotoButton;
private CheckBox mSendToVoicemailCheckBox;
private LinearLayout mLayout;
private LayoutInflater mInflater;
@@ -198,7 +197,6 @@
public void onClick(View v) {
switch (v.getId()) {
- case R.id.photoButton:
case R.id.photoImage: {
doPickPhotoAction();
break;
@@ -252,9 +250,17 @@
}
private void setPhotoPresent(boolean present) {
- mPhotoImageView.setVisibility(present ? View.VISIBLE : View.GONE);
- mPhotoButton.setVisibility(present ? View.GONE : View.VISIBLE);
mPhotoPresent = present;
+
+ // Correctly scale the contact photo if present, otherwise just center
+ // the photo placeholder icon.
+ if (mPhotoPresent) {
+ mPhotoImageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
+ } else {
+ mPhotoImageView.setImageResource(R.drawable.ic_menu_add_picture);
+ mPhotoImageView.setScaleType(ImageView.ScaleType.CENTER);
+ }
+
if (mPhotoMenuItem != null) {
if (present) {
mPhotoMenuItem.setTitle(R.string.removePicture);
@@ -312,9 +318,6 @@
mNameView = (EditText) findViewById(R.id.name);
mPhotoImageView = (ImageView) findViewById(R.id.photoImage);
mPhotoImageView.setOnClickListener(this);
- mPhotoImageView.setVisibility(View.GONE);
- mPhotoButton = findViewById(R.id.photoButton);
- mPhotoButton.setOnClickListener(this);
mSendToVoicemailCheckBox = (CheckBox) findViewById(R.id.send_to_voicemail);
mPhoneticNameView = (EditText) findViewById(R.id.phonetic_name);
@@ -340,6 +343,7 @@
buildEntriesForEdit(getIntent().getExtras());
buildViews();
}
+ setTitle(R.string.editContact_title_edit);
mState = STATE_EDIT;
} else if (action.equals(Intent.ACTION_INSERT)) {
if (icicle == null) {
@@ -347,6 +351,7 @@
buildEntriesForInsert(getIntent().getExtras());
buildViews();
}
+ setTitle(R.string.editContact_title_insert);
mState = STATE_INSERT;
mInsert = true;
}
@@ -459,7 +464,7 @@
}
return super.onKeyDown(keyCode, event);
}
-
+
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
@@ -549,7 +554,6 @@
private void doRemovePhotoAction() {
mPhoto = null;
mPhotoChanged = true;
- mPhotoImageView.setImageResource(R.drawable.ic_contact_picture);
setPhotoPresent(false);
}
@@ -593,8 +597,9 @@
}
private void updateRingtoneView(EditEntry entry) {
+ String ringtoneName;
if (entry.data == null) {
- updateDataView(entry, getString(R.string.default_ringtone));
+ ringtoneName = getString(R.string.default_ringtone);
} else {
Uri ringtoneUri = Uri.parse(entry.data);
Ringtone ringtone = RingtoneManager.getRingtone(this, ringtoneUri);
@@ -602,8 +607,12 @@
Log.w(TAG, "ringtone's URI doesn't resolve to a Ringtone");
return;
}
- updateDataView(entry, ringtone.getTitle(this));
+ ringtoneName = ringtone.getTitle(this);
}
+
+ // Build actual "Ringtone: Default" string that is assigned to spinner.
+ String text = getString(R.string.ringtone_spinner, ringtoneName);
+ updateDataView(entry, text);
}
private void updateDataView(EditEntry entry, String text) {
@@ -1456,11 +1465,11 @@
final LinearLayout layout = mLayout;
layout.removeAllViews();
- buildViewsForSection(layout, mPhoneEntries, R.string.listSeparatorCallNumber);
- buildViewsForSection(layout, mEmailEntries, R.string.listSeparatorSendEmail);
- buildViewsForSection(layout, mImEntries, R.string.listSeparatorSendIm);
- buildViewsForSection(layout, mPostalEntries, R.string.listSeparatorMapAddress);
- buildViewsForSection(layout, mOtherEntries, R.string.listSeparatorOtherInformation);
+ buildViewsForSection(layout, mPhoneEntries, R.string.listSeparatorCallNumber_edit);
+ buildViewsForSection(layout, mEmailEntries, R.string.listSeparatorSendEmail_edit);
+ buildViewsForSection(layout, mImEntries, R.string.listSeparatorSendIm_edit);
+ buildViewsForSection(layout, mPostalEntries, R.string.listSeparatorMapAddress_edit);
+ buildViewsForSection(layout, mOtherEntries, R.string.listSeparatorOtherInformation_edit);
}
@@ -1530,7 +1539,7 @@
// Bind data
TextView data = (TextView) view.findViewById(R.id.data);
TextView data2 = (TextView) view.findViewById(R.id.data2);
-
+
if (data instanceof Button) {
data.setOnClickListener(this);
}
diff --git a/src/com/android/contacts/ViewContactActivity.java b/src/com/android/contacts/ViewContactActivity.java
index 4690b12..3a177b2 100644
--- a/src/com/android/contacts/ViewContactActivity.java
+++ b/src/com/android/contacts/ViewContactActivity.java
@@ -576,7 +576,16 @@
separator.data = getString(R.string.listSeparatorOtherInformation);
mOtherEntries.add(separator);
}
-
+
+ private Uri constructImToUrl(String host, String data) {
+ // don't encode the url, because the Activity Manager can't find using the encoded url
+ StringBuilder buf = new StringBuilder("imto://");
+ buf.append(host);
+ buf.append('/');
+ buf.append(data);
+ return Uri.parse(buf.toString());
+ }
+
/**
* Build up the entries to display on the screen.
*
@@ -701,12 +710,11 @@
case Contacts.KIND_IM: {
Object protocolObj = ContactMethods.decodeImProtocol(
methodsCursor.getString(METHODS_AUX_DATA_COLUMN));
- String providerCategory;
+ String host;
if (protocolObj instanceof Number) {
int protocol = ((Number) protocolObj).intValue();
entry.label = protocolStrings[protocol];
- providerCategory = ContactMethods.lookupProviderCategoryFromId(
- protocol);
+ host = ContactMethods.lookupProviderNameFromId(protocol).toLowerCase();
if (protocol == ContactMethods.PROTOCOL_GOOGLE_TALK
|| protocol == ContactMethods.PROTOCOL_MSN) {
entry.maxLabelLines = 2;
@@ -714,14 +722,12 @@
} else {
String providerName = (String) protocolObj;
entry.label = providerName;
- providerCategory = Im.Provider.getProviderCategoryFromName(
- providerName);
+ host = providerName.toLowerCase();
}
- // Only add the intent if there is a valid provider name
- if (!TextUtils.isEmpty(providerCategory)) {
- entry.intent = new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts("im", data, null)).addCategory(providerCategory);
+ // Only add the intent if there is a valid host
+ if (!TextUtils.isEmpty(host)) {
+ entry.intent = new Intent(Intent.ACTION_SENDTO, constructImToUrl(host, data));
}
entry.data = data;
if (!methodsCursor.isNull(METHODS_STATUS_COLUMN)) {
@@ -755,26 +761,25 @@
String label;
Object protocolObj = ContactMethods.decodeImProtocol(
presenceCursor.getString(1));
- String providerCategory;
+ String host;
if (protocolObj instanceof Number) {
int protocol = ((Number) protocolObj).intValue();
label = getResources().getStringArray(
android.R.array.imProtocols)[protocol];
- providerCategory = ContactMethods.lookupProviderCategoryFromId(
- protocol);
+ host = ContactMethods.lookupProviderNameFromId(protocol).toLowerCase();
} else {
String providerName = (String) protocolObj;
label = providerName;
- providerCategory = Im.Provider.getProviderCategoryFromName(providerName);
+ host = providerName.toLowerCase();
}
- if (TextUtils.isEmpty(providerCategory)) {
+ if (TextUtils.isEmpty(host)) {
// A valid provider name is required
continue;
}
- Intent intent = new Intent(Intent.ACTION_SENDTO,
- Uri.fromParts("im", data, null)).addCategory(providerCategory);
+
+ Intent intent = new Intent(Intent.ACTION_SENDTO, constructImToUrl(host, data));
// Check to see if there is already an entry for this IM account
boolean addEntry = true;