Merge "Show "Labels" header when group menus are available" into ub-contactsdialer-i-dev
diff --git a/proguard.flags b/proguard.flags
index f586b72..75fbfd7 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -1,5 +1,3 @@
--ignorewarnings
-
-keep class com.android.contacts.model.Sources {
public <init>(...);
}
@@ -101,12 +99,10 @@
-keep class com.google.common.base.Functions { *; }
-keep class com.google.common.base.Objects { *; }
-keep class com.google.common.base.Preconditions { *; }
--keep class com.google.common.collect.ImmutableMap { *; }
--keep class com.google.common.collect.ImmutableSet { *; }
--keep class com.google.common.collect.Lists { *; }
--keep class com.google.common.collect.Maps { *; }
--keep class com.google.common.collect.Multimap { *; }
--keep class com.google.common.collect.Sets { *; }
+-keep class com.google.common.collect.** { *; }
+-keep class com.google.common.util.concurrent.** { *; }
+
+-keep class com.android.common.widget.CompositeCursorAdapter { *; }
# Any class or method annotated with NeededForReflection.
-keep @com.android.contacts.test.NeededForReflection class *
diff --git a/res/layout/phonetic_name_editor_view.xml b/res/layout/phonetic_name_editor_view.xml
deleted file mode 100644
index efaf644..0000000
--- a/res/layout/phonetic_name_editor_view.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
- Copyright (C) 2011 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.
- -->
-
-<com.android.contacts.editor.PhoneticNameEditorView
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
- android:minHeight="@dimen/editor_min_line_item_height"
- android:layout_marginStart="@dimen/editor_kind_icon_total_width">
-
- <!-- This isn't used in PhoneticNameEditorView. It is only included so that
- StructuredNameEditorView's base classes don't need extra null checks. -->
- <include
- android:id="@+id/spinner"
- layout="@layout/edit_spinner"
- android:visibility="gone" />
-
- <include
- android:id="@+id/editors"
- layout="@layout/edit_field_list" />
-
- <include
- android:id="@+id/expansion_view_container"
- layout="@layout/name_edit_expansion_view"
- android:visibility="visible" />
-
- <!-- This isn't used in PhoneticNameEditorView. It is only included so that
- StructuredNameEditorView's base classes don't need extra null checks. -->
- <include
- android:id="@+id/delete_button_container"
- layout="@layout/edit_delete_button"
- android:visibility="gone" />
-
-</com.android.contacts.editor.PhoneticNameEditorView>
diff --git a/src/com/android/contacts/editor/EditorUiUtils.java b/src/com/android/contacts/editor/EditorUiUtils.java
index a500eae..9aa5c8e 100644
--- a/src/com/android/contacts/editor/EditorUiUtils.java
+++ b/src/com/android/contacts/editor/EditorUiUtils.java
@@ -88,9 +88,6 @@
// Relation.CONTENT_ITEM_TYPE
//
// Un-supported mime types need to mapped with -1.
-
- mimetypeLayoutMap.put(DataKind.PSEUDO_MIME_TYPE_PHONETIC_NAME,
- R.layout.phonetic_name_editor_view);
mimetypeLayoutMap.put(StructuredName.CONTENT_ITEM_TYPE,
R.layout.structured_name_editor_view);
mimetypeLayoutMap.put(GroupMembership.CONTENT_ITEM_TYPE, -1);
diff --git a/src/com/android/contacts/editor/KindSectionView.java b/src/com/android/contacts/editor/KindSectionView.java
index 02eae11..7e9d53e 100644
--- a/src/com/android/contacts/editor/KindSectionView.java
+++ b/src/com/android/contacts/editor/KindSectionView.java
@@ -362,8 +362,8 @@
// The account type doesn't support phonetic name.
if (phoneticNameKind == null) return;
- final PhoneticNameEditorView phoneticNameView = (PhoneticNameEditorView) mLayoutInflater
- .inflate(R.layout.phonetic_name_editor_view, mEditors, /* attachToRoot =*/ false);
+ final TextFieldsEditorView phoneticNameView = (TextFieldsEditorView) mLayoutInflater
+ .inflate(R.layout.text_fields_editor_view, mEditors, /* attachToRoot =*/ false);
phoneticNameView.setEditorListener(new OtherNameKindEditorListener());
phoneticNameView.setDeletable(false);
phoneticNameView.setValues(
diff --git a/src/com/android/contacts/editor/PhoneticNameEditorView.java b/src/com/android/contacts/editor/PhoneticNameEditorView.java
deleted file mode 100644
index c96548c..0000000
--- a/src/com/android/contacts/editor/PhoneticNameEditorView.java
+++ /dev/null
@@ -1,166 +0,0 @@
-/*
- * Copyright (C) 2010 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.contacts.editor;
-
-import android.content.Context;
-import android.content.res.Resources;
-import android.text.TextUtils;
-import android.util.AttributeSet;
-
-import com.android.contacts.R;
-import com.android.contacts.model.RawContactDelta;
-import com.android.contacts.model.ValuesDelta;
-import com.android.contacts.model.dataitem.DataKind;
-import com.android.contacts.model.dataitem.StructuredNameDataItem;
-import com.android.contacts.util.NameConverter;
-
-/**
- * A dedicated editor for phonetic name. It is similar to {@link StructuredNameEditorView}.
- */
-public class PhoneticNameEditorView extends TextFieldsEditorView {
-
- private static class PhoneticValuesDelta extends ValuesDelta {
- private ValuesDelta mValues;
- private String mPhoneticName;
-
- public PhoneticValuesDelta(ValuesDelta values) {
- mValues = values;
- buildPhoneticName();
- }
-
- @Override
- public void put(String key, String value) {
- if (key.equals(DataKind.PSEUDO_COLUMN_PHONETIC_NAME)) {
- mPhoneticName = value;
- parsePhoneticName(value);
- } else {
- mValues.put(key, value);
- buildPhoneticName();
- }
- }
-
- @Override
- public String getAsString(String key) {
- if (key.equals(DataKind.PSEUDO_COLUMN_PHONETIC_NAME)) {
- return mPhoneticName;
- } else {
- return mValues.getAsString(key);
- }
- }
-
- private void parsePhoneticName(String value) {
- StructuredNameDataItem dataItem = NameConverter.parsePhoneticName(value, null);
- mValues.setPhoneticFamilyName(dataItem.getPhoneticFamilyName());
- mValues.setPhoneticMiddleName(dataItem.getPhoneticMiddleName());
- mValues.setPhoneticGivenName(dataItem.getPhoneticGivenName());
- }
-
- private void buildPhoneticName() {
- String family = mValues.getPhoneticFamilyName();
- String middle = mValues.getPhoneticMiddleName();
- String given = mValues.getPhoneticGivenName();
- mPhoneticName = NameConverter.buildPhoneticName(family, middle, given);
- }
-
- @Override
- public Long getId() {
- return mValues.getId();
- }
-
- @Override
- public boolean isVisible() {
- return mValues.isVisible();
- }
- }
-
- public static boolean isUnstructuredPhoneticNameColumn(String column) {
- return DataKind.PSEUDO_COLUMN_PHONETIC_NAME.equals(column);
- }
-
- public PhoneticNameEditorView(Context context) {
- super(context);
- }
-
- public PhoneticNameEditorView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public PhoneticNameEditorView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- final Resources res = getResources();
- mCollapseButtonDescription = res
- .getString(R.string.collapse_phonetic_name_fields_description);
- mExpandButtonDescription = res
- .getString(R.string.expand_phonetic_name_fields_description);
- }
-
- @Override
- public void setValues(DataKind kind, ValuesDelta entry, RawContactDelta state, boolean readOnly,
- ViewIdGenerator vig) {
- if (!(entry instanceof PhoneticValuesDelta)) {
- entry = new PhoneticValuesDelta(entry);
- }
- super.setValues(kind, entry, state, readOnly, vig);
- updateEmptiness();
- }
-
- @Override
- public void onFieldChanged(String column, String value) {
- if (!isFieldChanged(column, value)) {
- return;
- }
-
- if (hasShortAndLongForms()) {
- PhoneticValuesDelta entry = (PhoneticValuesDelta) getEntry();
-
- // Determine whether the user is modifying the structured or unstructured phonetic
- // name field. See a similar approach in {@link StructuredNameEditor#onFieldChanged}.
- // This is because on device rotation, a hidden TextView's onRestoreInstanceState() will
- // be called and incorrectly restore a null value for the hidden field, which ultimately
- // modifies the underlying phonetic name. Hence, ignore onFieldChanged() update requests
- // from fields that aren't visible.
- boolean isEditingUnstructuredPhoneticName = !areOptionalFieldsVisible();
-
- if (isEditingUnstructuredPhoneticName == isUnstructuredPhoneticNameColumn(column)) {
- // Call into the superclass to update the field and rebuild the underlying
- // phonetic name.
- super.onFieldChanged(column, value);
- }
- } else {
- // All fields are always visible, so we don't have to worry about blocking updates
- // from onRestoreInstanceState() from hidden fields. Always call into the superclass
- // to update the field and rebuild the underlying phonetic name.
- super.onFieldChanged(column, value);
- }
- }
-
- public boolean hasData() {
- ValuesDelta entry = getEntry();
-
- String family = entry.getPhoneticFamilyName();
- String middle = entry.getPhoneticMiddleName();
- String given = entry.getPhoneticGivenName();
-
- return !TextUtils.isEmpty(family) || !TextUtils.isEmpty(middle)
- || !TextUtils.isEmpty(given);
- }
-}
diff --git a/src/com/android/contacts/model/RawContactModifier.java b/src/com/android/contacts/model/RawContactModifier.java
index 0252567..789bd10 100644
--- a/src/com/android/contacts/model/RawContactModifier.java
+++ b/src/com/android/contacts/model/RawContactModifier.java
@@ -1038,14 +1038,10 @@
return;
}
- boolean supportPhoneticFullName = false;
boolean supportPhoneticFamilyName = false;
boolean supportPhoneticMiddleName = false;
boolean supportPhoneticGivenName = false;
for (EditField editField : newDataKind.fieldList) {
- if (DataKind.PSEUDO_COLUMN_PHONETIC_NAME.equals(editField.column)) {
- supportPhoneticFullName = true;
- }
if (StructuredName.PHONETIC_FAMILY_NAME.equals(editField.column)) {
supportPhoneticFamilyName = true;
}
@@ -1057,52 +1053,14 @@
}
}
-
- // Phonetic (full) name <-> PHONETIC_FAMILY_NAME, PHONETIC_MIDDLE_NAME, PHONETIC_GIVEN_NAME
- final String phoneticFullName = values.getAsString(DataKind.PSEUDO_COLUMN_PHONETIC_NAME);
- if (!TextUtils.isEmpty(phoneticFullName)) {
- if (!supportPhoneticFullName) {
- // Old data has a phonetic (full) name, while the new account doesn't allow it.
- final StructuredNameDataItem tmpItem =
- NameConverter.parsePhoneticName(phoneticFullName, null);
- values.remove(DataKind.PSEUDO_COLUMN_PHONETIC_NAME);
- if (supportPhoneticFamilyName) {
- values.put(StructuredName.PHONETIC_FAMILY_NAME,
- tmpItem.getPhoneticFamilyName());
- } else {
- values.remove(StructuredName.PHONETIC_FAMILY_NAME);
- }
- if (supportPhoneticMiddleName) {
- values.put(StructuredName.PHONETIC_MIDDLE_NAME,
- tmpItem.getPhoneticMiddleName());
- } else {
- values.remove(StructuredName.PHONETIC_MIDDLE_NAME);
- }
- if (supportPhoneticGivenName) {
- values.put(StructuredName.PHONETIC_GIVEN_NAME,
- tmpItem.getPhoneticGivenName());
- } else {
- values.remove(StructuredName.PHONETIC_GIVEN_NAME);
- }
- }
- } else {
- if (supportPhoneticFullName) {
- // Old data does not have a phonetic (full) name, while the new account requires it.
- values.put(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
- NameConverter.buildPhoneticName(
- values.getAsString(StructuredName.PHONETIC_FAMILY_NAME),
- values.getAsString(StructuredName.PHONETIC_MIDDLE_NAME),
- values.getAsString(StructuredName.PHONETIC_GIVEN_NAME)));
- }
- if (!supportPhoneticFamilyName) {
- values.remove(StructuredName.PHONETIC_FAMILY_NAME);
- }
- if (!supportPhoneticMiddleName) {
- values.remove(StructuredName.PHONETIC_MIDDLE_NAME);
- }
- if (!supportPhoneticGivenName) {
- values.remove(StructuredName.PHONETIC_GIVEN_NAME);
- }
+ if (!supportPhoneticFamilyName) {
+ values.remove(StructuredName.PHONETIC_FAMILY_NAME);
+ }
+ if (!supportPhoneticMiddleName) {
+ values.remove(StructuredName.PHONETIC_MIDDLE_NAME);
+ }
+ if (!supportPhoneticGivenName) {
+ values.remove(StructuredName.PHONETIC_GIVEN_NAME);
}
newState.addEntry(ValuesDelta.fromAfter(values));
diff --git a/src/com/android/contacts/model/account/BaseAccountType.java b/src/com/android/contacts/model/account/BaseAccountType.java
index a62f353..50f623a 100644
--- a/src/com/android/contacts/model/account/BaseAccountType.java
+++ b/src/com/android/contacts/model/account/BaseAccountType.java
@@ -218,14 +218,13 @@
kind.typeOverallMax = 1;
kind.fieldList = Lists.newArrayList();
- kind.fieldList.add(new EditField(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
- R.string.name_phonetic, FLAGS_PHONETIC).setShortForm(true));
+
kind.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC).setLongForm(true));
+ R.string.name_phonetic_family, FLAGS_PHONETIC));
kind.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
- R.string.name_phonetic_middle, FLAGS_PHONETIC).setLongForm(true));
+ R.string.name_phonetic_middle, FLAGS_PHONETIC));
kind.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC).setLongForm(true));
+ R.string.name_phonetic_given, FLAGS_PHONETIC));
return kind;
}
@@ -977,14 +976,12 @@
kinds.add(kp);
// We may want to change the order depending on displayOrderPrimary too.
- kp.fieldList.add(new EditField(DataKind.PSEUDO_COLUMN_PHONETIC_NAME,
- R.string.name_phonetic, FLAGS_PHONETIC).setShortForm(true));
kp.fieldList.add(new EditField(StructuredName.PHONETIC_FAMILY_NAME,
- R.string.name_phonetic_family, FLAGS_PHONETIC).setLongForm(true));
+ R.string.name_phonetic_family, FLAGS_PHONETIC));
kp.fieldList.add(new EditField(StructuredName.PHONETIC_MIDDLE_NAME,
- R.string.name_phonetic_middle, FLAGS_PHONETIC).setLongForm(true));
+ R.string.name_phonetic_middle, FLAGS_PHONETIC));
kp.fieldList.add(new EditField(StructuredName.PHONETIC_GIVEN_NAME,
- R.string.name_phonetic_given, FLAGS_PHONETIC).setLongForm(true));
+ R.string.name_phonetic_given, FLAGS_PHONETIC));
return kinds;
}
}
diff --git a/src/com/android/contacts/model/dataitem/DataKind.java b/src/com/android/contacts/model/dataitem/DataKind.java
index 993e6cc..f31e21c 100644
--- a/src/com/android/contacts/model/dataitem/DataKind.java
+++ b/src/com/android/contacts/model/dataitem/DataKind.java
@@ -39,7 +39,6 @@
public static final String PSEUDO_MIME_TYPE_NAME = "#name";
public static final String PSEUDO_MIME_TYPE_PHONETIC_NAME = "#phoneticName";
- public static final String PSEUDO_COLUMN_PHONETIC_NAME = "#phoneticName";
public String resourcePackageName;
public String mimeType;