summaryrefslogtreecommitdiffstats
path: root/src/com/android/contacts
diff options
context:
space:
mode:
authoryoichi kakimoto <youichi.kakimoto.gt@kyocera.jp>2017-11-10 18:05:10 +0000
committerandroid-build-merger <android-build-merger@google.com>2017-11-10 18:05:10 +0000
commit342a1e77e31abcbf0b6bccd8a08c02820330ae49 (patch)
tree9a5e793df2776b88c41b14d2d1778c3e54844dba /src/com/android/contacts
parente18600ad6c8bf37e6ff37d6391c560bcd9c5d77e (diff)
parentec84224dd6b9533a1bc907fb5793bfe5de606b1c (diff)
downloadpackages_apps_Contacts-342a1e77e31abcbf0b6bccd8a08c02820330ae49.tar.gz
packages_apps_Contacts-342a1e77e31abcbf0b6bccd8a08c02820330ae49.tar.bz2
packages_apps_Contacts-342a1e77e31abcbf0b6bccd8a08c02820330ae49.zip
Merge "Fixed to Added the function to add the Phonetic name into Phonetic field automaticaly." am: 420c364900
am: ec84224dd6 Change-Id: Ib80f014d5f54b7e9face9fef8bfb4c466d4f008f
Diffstat (limited to 'src/com/android/contacts')
-rw-r--r--src/com/android/contacts/editor/ContactEditorFragment.java9
-rw-r--r--src/com/android/contacts/editor/Editor.java10
-rw-r--r--src/com/android/contacts/editor/KindSectionView.java13
-rw-r--r--src/com/android/contacts/editor/LabeledEditorView.java11
-rw-r--r--src/com/android/contacts/editor/RawContactEditorView.java7
-rw-r--r--src/com/android/contacts/editor/StructuredNameEditorView.java53
-rw-r--r--src/com/android/contacts/editor/TextFieldsEditorView.java69
-rw-r--r--src/com/android/contacts/model/account/AccountType.java6
-rw-r--r--src/com/android/contacts/model/account/BaseAccountType.java12
9 files changed, 184 insertions, 6 deletions
diff --git a/src/com/android/contacts/editor/ContactEditorFragment.java b/src/com/android/contacts/editor/ContactEditorFragment.java
index ac07342ae..a250b4ef4 100644
--- a/src/com/android/contacts/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/editor/ContactEditorFragment.java
@@ -52,6 +52,7 @@ import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
+import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.ListPopupWindow;
import android.widget.Toast;
@@ -100,6 +101,7 @@ import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
+import java.util.Locale;
import java.util.Set;
/**
@@ -1280,6 +1282,13 @@ public class ContactEditorFragment extends Fragment implements
if (uri != null) {
editorView.setFullSizePhoto(uri);
}
+ final StructuredNameEditorView nameEditor = editorView.getNameEditorView();
+ final TextFieldsEditorView phoneticNameEditor = editorView.getPhoneticEditorView();
+ final boolean useJapaneseOrder =
+ Locale.JAPANESE.getLanguage().equals(Locale.getDefault().getLanguage());
+ if (useJapaneseOrder && nameEditor != null && phoneticNameEditor != null) {
+ nameEditor.setPhoneticView(phoneticNameEditor);
+ }
// The editor is ready now so make it visible
editorView.setEnabled(mEnabled);
diff --git a/src/com/android/contacts/editor/Editor.java b/src/com/android/contacts/editor/Editor.java
index 711fbc057..c02816a40 100644
--- a/src/com/android/contacts/editor/Editor.java
+++ b/src/com/android/contacts/editor/Editor.java
@@ -81,6 +81,16 @@ public interface Editor {
public void onFieldChanged(String column, String value);
/**
+ * Update the phonetic field with the specified character string.
+ */
+ public void updatePhonetic(String column, String value);
+
+ /**
+ * Returns the phonetic field string of the specified column.
+ */
+ public String getPhonetic(String column);
+
+ /**
* Marks the underlying ValuesDelta as deleted, but does not update the view.
*/
public void markDeleted();
diff --git a/src/com/android/contacts/editor/KindSectionView.java b/src/com/android/contacts/editor/KindSectionView.java
index 94f8a3205..5d490643c 100644
--- a/src/com/android/contacts/editor/KindSectionView.java
+++ b/src/com/android/contacts/editor/KindSectionView.java
@@ -254,6 +254,19 @@ public class KindSectionView extends LinearLayout {
return (StructuredNameEditorView) mEditors.getChildAt(0);
}
+ public TextFieldsEditorView getPhoneticEditorView() {
+ if (!StructuredName.CONTENT_ITEM_TYPE.equals(mKindSectionData.getMimeType())) {
+ return null;
+ }
+ for (int i = 0; i < mEditors.getChildCount(); i++) {
+ final View view = mEditors.getChildAt(i);
+ if (!(view instanceof StructuredNameEditorView)) {
+ return (TextFieldsEditorView) view;
+ }
+ }
+ return null;
+ }
+
/**
* Binds views for the given {@link KindSectionData}.
*
diff --git a/src/com/android/contacts/editor/LabeledEditorView.java b/src/com/android/contacts/editor/LabeledEditorView.java
index 5712f3971..df4c5f992 100644
--- a/src/com/android/contacts/editor/LabeledEditorView.java
+++ b/src/com/android/contacts/editor/LabeledEditorView.java
@@ -331,6 +331,17 @@ public abstract class LabeledEditorView extends LinearLayout implements Editor,
notifyEditorListener();
}
+ /** {@inheritDoc} */
+ @Override
+ public void updatePhonetic(String column, String value) {
+ }
+
+ /** {@inheritDoc} */
+ @Override
+ public String getPhonetic(String column){
+ return "";
+ }
+
protected void saveValue(String column, String value) {
mEntry.put(column, value);
}
diff --git a/src/com/android/contacts/editor/RawContactEditorView.java b/src/com/android/contacts/editor/RawContactEditorView.java
index 7c61f648f..19da5bc81 100644
--- a/src/com/android/contacts/editor/RawContactEditorView.java
+++ b/src/com/android/contacts/editor/RawContactEditorView.java
@@ -387,6 +387,13 @@ public class RawContactEditorView extends LinearLayout implements View.OnClickLi
? null : nameKindSectionView.getNameEditorView();
}
+ public TextFieldsEditorView getPhoneticEditorView() {
+ final KindSectionView kindSectionView = mKindSectionViewMap
+ .get(StructuredName.CONTENT_ITEM_TYPE);
+ return kindSectionView == null
+ ? null : kindSectionView.getPhoneticEditorView();
+ }
+
public RawContactDelta getCurrentRawContactDelta() {
return mCurrentRawContactDelta;
}
diff --git a/src/com/android/contacts/editor/StructuredNameEditorView.java b/src/com/android/contacts/editor/StructuredNameEditorView.java
index 1387bd1ad..922ceec96 100644
--- a/src/com/android/contacts/editor/StructuredNameEditorView.java
+++ b/src/com/android/contacts/editor/StructuredNameEditorView.java
@@ -21,8 +21,12 @@ import android.content.Context;
import android.content.res.Resources;
import android.os.Parcel;
import android.os.Parcelable;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
+import android.text.Editable;
import android.util.AttributeSet;
import android.view.View;
+import android.view.ViewGroup;
+import android.widget.EditText;
import com.android.contacts.R;
import com.android.contacts.model.RawContactDelta;
@@ -40,6 +44,8 @@ public class StructuredNameEditorView extends TextFieldsEditorView {
private StructuredNameDataItem mSnapshot;
private boolean mChanged;
+ private TextFieldsEditorView mPhoneticView;
+
public StructuredNameEditorView(Context context) {
super(context);
}
@@ -93,6 +99,53 @@ public class StructuredNameEditorView extends TextFieldsEditorView {
notifyEditorListener();
}
+ public void updatePhonetic(String column, String value) {
+ EditText view = null;
+
+ if (mPhoneticView != null) {
+ ViewGroup fields = (ViewGroup) mPhoneticView.findViewById(R.id.editors);
+
+ if (StructuredName.FAMILY_NAME.equals(column)) {
+ view = (EditText) fields.getChildAt(0);
+ } else if (StructuredName.GIVEN_NAME.equals(column)) {
+ view = (EditText) fields.getChildAt(2);
+ } else if (StructuredName.MIDDLE_NAME.equals(column)) {
+ view = (EditText) fields.getChildAt(1);
+ }
+
+ if (view != null) {
+ view.setText(value);
+ }
+ }
+ }
+
+ @Override
+ public String getPhonetic(String column) {
+ String input = "";
+ EditText view = null;
+
+ if (mPhoneticView != null) {
+ ViewGroup fields = (ViewGroup) mPhoneticView.findViewById(R.id.editors);
+
+ if (StructuredName.FAMILY_NAME.equals(column)) {
+ view = (EditText) fields.getChildAt(0);
+ } else if (StructuredName.GIVEN_NAME.equals(column)) {
+ view = (EditText) fields.getChildAt(2);
+ } else if (StructuredName.MIDDLE_NAME.equals(column)) {
+ view = (EditText) fields.getChildAt(1);
+ }
+
+ if (view != null) {
+ input = view.getText().toString();
+ }
+ }
+ return input;
+ }
+
+ public void setPhoneticView(TextFieldsEditorView phoneticNameEditor) {
+ mPhoneticView = phoneticNameEditor;
+ }
+
/**
* Returns the display name currently displayed in the editor.
*/
diff --git a/src/com/android/contacts/editor/TextFieldsEditorView.java b/src/com/android/contacts/editor/TextFieldsEditorView.java
index c3a240a52..28fe87fc6 100644
--- a/src/com/android/contacts/editor/TextFieldsEditorView.java
+++ b/src/com/android/contacts/editor/TextFieldsEditorView.java
@@ -22,9 +22,11 @@ import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
import android.provider.ContactsContract;
+import android.provider.ContactsContract.CommonDataKinds.StructuredName;
import android.text.Editable;
import android.text.InputType;
import android.text.Spannable;
+import android.text.Spanned;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.text.style.TtsSpan;
@@ -69,6 +71,10 @@ public class TextFieldsEditorView extends LabeledEditorView {
private int mMinFieldHeight;
private int mPreviousViewHeight;
private int mHintTextColorUnfocused;
+ private String mFixedPhonetic = "";
+ private String mFixedDisplayName = "";
+ private boolean needInputInitialize;
+
public TextFieldsEditorView(Context context) {
super(context);
@@ -174,6 +180,10 @@ public class TextFieldsEditorView extends LabeledEditorView {
}
// Rebuild the label spinner using the new colors.
rebuildLabel();
+
+ if (hasFocus) {
+ needInputInitialize = true;
+ }
}
};
@@ -214,6 +224,38 @@ public class TextFieldsEditorView extends LabeledEditorView {
mFieldEditTexts[field].setText(value);
}
+ private boolean isUnFixed(Editable input) {
+ boolean unfixed = false;
+ Object[] spanned = input.getSpans(0, input.length(), Object.class);
+ if (spanned != null) {
+ for (Object obj : spanned) {
+ if ((input.getSpanFlags(obj) & Spanned.SPAN_COMPOSING) == Spanned.SPAN_COMPOSING) {
+ unfixed = true;
+ }
+ }
+ }
+ return unfixed;
+ }
+
+ private String getNameField(String column) {
+
+ EditText editText = null;
+
+ if (StructuredName.FAMILY_NAME.equals(column)) {
+ editText = (EditText) mFields.getChildAt(1);
+ } else if (StructuredName.GIVEN_NAME.equals(column)) {
+ editText = (EditText) mFields.getChildAt(3);
+ } else if (StructuredName.MIDDLE_NAME.equals(column)) {
+ editText = (EditText) mFields.getChildAt(2);
+ }
+
+ if (editText != null) {
+ return editText.getText().toString();
+ }
+
+ return "";
+ }
+
@Override
public void setValues(DataKind kind, ValuesDelta entry, RawContactDelta state, boolean readOnly,
ViewIdGenerator vig) {
@@ -280,18 +322,45 @@ public class TextFieldsEditorView extends LabeledEditorView {
// Prepare listener for writing changes
fieldView.addTextChangedListener(new TextWatcher() {
+ private int mStart = 0;
@Override
public void afterTextChanged(Editable s) {
// Trigger event for newly changed value
onFieldChanged(column, s.toString());
+
+ if (!DataKind.PSEUDO_MIME_TYPE_NAME.equals(getKind().mimeType)){
+ return;
+ }
+
+ String displayNameField = s.toString();
+
+ int nonFixedLen = displayNameField.length() - mFixedDisplayName.length();
+ if (isUnFixed(s) || nonFixedLen == 0) {
+ String tmpString = mFixedPhonetic
+ + displayNameField.substring(mStart, displayNameField.length());
+
+ updatePhonetic(column, tmpString);
+ } else {
+ mFixedPhonetic = getPhonetic(column);
+ mFixedDisplayName = displayNameField;
+ }
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
+ if (!DataKind.PSEUDO_MIME_TYPE_NAME.equals(getKind().mimeType)){
+ return;
+ }
+ if (needInputInitialize) {
+ mFixedPhonetic = getPhonetic(column);
+ mFixedDisplayName = getNameField(column);
+ needInputInitialize = false;
+ }
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
+ mStart = start;
if (!ContactsContract.CommonDataKinds.Phone.CONTENT_ITEM_TYPE.equals(
getKind().mimeType) || !(s instanceof Spannable)) {
return;
diff --git a/src/com/android/contacts/model/account/AccountType.java b/src/com/android/contacts/model/account/AccountType.java
index bddfc0992..c3e0eb5c9 100644
--- a/src/com/android/contacts/model/account/AccountType.java
+++ b/src/com/android/contacts/model/account/AccountType.java
@@ -444,6 +444,7 @@ public abstract class AccountType {
public boolean optional;
public boolean shortForm;
public boolean longForm;
+ public String phoneticsColumn;
public EditField(String column, int titleRes) {
this.column = column;
@@ -470,6 +471,11 @@ public abstract class AccountType {
return this;
}
+ public EditField setPhoneticsColumn(String phoneticsColumn) {
+ this.phoneticsColumn = phoneticsColumn;
+ return this;
+ }
+
public EditField setMinLines(int minLines) {
this.minLines = minLines;
return this;
diff --git a/src/com/android/contacts/model/account/BaseAccountType.java b/src/com/android/contacts/model/account/BaseAccountType.java
index 50f623ae9..b2429502c 100644
--- a/src/com/android/contacts/model/account/BaseAccountType.java
+++ b/src/com/android/contacts/model/account/BaseAccountType.java
@@ -191,18 +191,18 @@ public abstract class BaseAccountType extends AccountType {
FLAGS_PERSON_NAME).setOptional(true));
if (!displayOrderPrimary) {
kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME));
+ FLAGS_PERSON_NAME).setPhoneticsColumn(StructuredName.PHONETIC_FAMILY_NAME));
kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setOptional(true));
+ FLAGS_PERSON_NAME).setOptional(true).setPhoneticsColumn(StructuredName.PHONETIC_MIDDLE_NAME));
kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME));
+ FLAGS_PERSON_NAME).setPhoneticsColumn(StructuredName.PHONETIC_GIVEN_NAME));
} else {
kind.fieldList.add(new EditField(StructuredName.GIVEN_NAME, R.string.name_given,
- FLAGS_PERSON_NAME));
+ FLAGS_PERSON_NAME).setPhoneticsColumn(StructuredName.PHONETIC_GIVEN_NAME));
kind.fieldList.add(new EditField(StructuredName.MIDDLE_NAME, R.string.name_middle,
- FLAGS_PERSON_NAME).setOptional(true));
+ FLAGS_PERSON_NAME).setOptional(true).setPhoneticsColumn(StructuredName.PHONETIC_MIDDLE_NAME));
kind.fieldList.add(new EditField(StructuredName.FAMILY_NAME, R.string.name_family,
- FLAGS_PERSON_NAME));
+ FLAGS_PERSON_NAME).setPhoneticsColumn(StructuredName.PHONETIC_FAMILY_NAME));
}
kind.fieldList.add(new EditField(StructuredName.SUFFIX, R.string.name_suffix,
FLAGS_PERSON_NAME).setOptional(true));