Merge "Add a smoke test for ImportProcessor."
diff --git a/res/drawable-mdpi/edit_focused.png b/res/drawable-mdpi/edit_focused.png
new file mode 100644
index 0000000..cf65d88
--- /dev/null
+++ b/res/drawable-mdpi/edit_focused.png
Binary files differ
diff --git a/res/drawable-mdpi/edit_normal.png b/res/drawable-mdpi/edit_normal.png
new file mode 100644
index 0000000..4e66379
--- /dev/null
+++ b/res/drawable-mdpi/edit_normal.png
Binary files differ
diff --git a/res/drawable-mdpi/edit_pressed.png b/res/drawable-mdpi/edit_pressed.png
new file mode 100644
index 0000000..537795d
--- /dev/null
+++ b/res/drawable-mdpi/edit_pressed.png
Binary files differ
diff --git a/res/layout/contact_editor_fragment.xml b/res/layout/contact_editor_fragment.xml
index 0055956..32ac464 100644
--- a/res/layout/contact_editor_fragment.xml
+++ b/res/layout/contact_editor_fragment.xml
@@ -29,9 +29,10 @@
android:layout_width="match_parent"
android:layout_height="0px"
android:layout_weight="1">
- <com.android.contacts.views.editor.MyListView android:id="@android:id/list"
+ <LinearLayout android:id="@+id/field_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
+ android:orientation="vertical"
android:background="@drawable/title_bar_shadow"
/>
</ScrollView>
diff --git a/src/com/android/contacts/views/editor/ContactEditorFragment.java b/src/com/android/contacts/views/editor/ContactEditorFragment.java
index 4f65f6d..823c033 100644
--- a/src/com/android/contacts/views/editor/ContactEditorFragment.java
+++ b/src/com/android/contacts/views/editor/ContactEditorFragment.java
@@ -78,6 +78,7 @@
import android.view.View.OnCreateContextMenuListener;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
+import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.Toast;
@@ -89,8 +90,6 @@
private static final String BUNDLE_RAW_CONTACT_ID = "rawContactId";
- private static final int MENU_ITEM_MAKE_DEFAULT = 3;
-
private static final int LOADER_DETAILS = 1;
private Context mContext;
@@ -101,8 +100,7 @@
private ContactLoader.Result mContactData;
private ContactEditorHeaderView mHeaderView;
- private MyListView mListView;
- private ViewAdapter mAdapter;
+ private LinearLayout mFieldContainer;
private int mReadOnlySourcesCnt;
private int mWritableSourcesCnt;
@@ -135,11 +133,9 @@
mHeaderView = (ContactEditorHeaderView) view.findViewById(R.id.contact_header_widget);
- mListView = (MyListView) view.findViewById(android.R.id.list);
- mListView.setOnCreateContextMenuListener(this);
- mListView.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
- mListView.setOnItemClickListener(this);
- mListView.setItemsCanFocus(true);
+ mFieldContainer = (LinearLayout) view.findViewById(R.id.field_container);
+ mFieldContainer.setOnCreateContextMenuListener(this);
+ mFieldContainer.setScrollBarStyle(ListView.SCROLLBARS_OUTSIDE_OVERLAY);
return view;
}
@@ -205,12 +201,7 @@
mHeaderView.setMergeInfo(mRawContacts.size());
- if (mAdapter == null) {
- mAdapter = new ViewAdapter();
- mListView.setAdapter(mAdapter);
- } else {
- mAdapter.notifyDataSetChanged();
- }
+ createFieldViews();
}
/**
@@ -348,72 +339,25 @@
}
}
- private final class ViewAdapter extends BaseAdapter {
- public View getView(int position, View convertView, ViewGroup parent) {
- final View result;
+ private void createFieldViews() {
+ mFieldContainer.removeAllViews();
- final BaseViewModel viewEntry = getEntry(position);
- return viewEntry.getView(mInflater, convertView, parent);
- }
+ for (int i = 0; i < mRawContacts.size(); i++) {
+ final DisplayRawContact rawContact = mRawContacts.get(i);
+ // Header
+ mFieldContainer.addView(
+ rawContact.getHeader().getView(mInflater, mFieldContainer));
- public Object getItem(int position) {
- return getEntry(position);
- }
-
- public long getItemId(int position) {
- // TODO Get a unique Id. Use negative numbers for Headers/Footers
- return position;
- }
-
- private BaseViewModel getEntry(int position) {
- for (int i = 0; i < mRawContacts.size(); i++) {
- final DisplayRawContact rawContact = mRawContacts.get(i);
- if (position == 0) return rawContact.getHeader();
-
- // Collapsed header? Count one item and continue
- if (rawContact.getHeader().isCollapsed()) {
- position--;
- continue;
- }
-
- final ArrayList<BaseViewModel> fields = rawContact.getFields();
- // +1 for header, +1 for footer
- final int fieldCount = fields.size() + 2;
- if (position == fieldCount - 1) {
- return rawContact.getFooter();
- }
- if (position < fieldCount) {
- // -1 for header
- return fields.get(position - 1);
- }
- position -= fieldCount;
+ // Data items
+ final ArrayList<BaseViewModel> fields = rawContact.getFields();
+ for (int j = 0; j < fields.size(); j++) {
+ final BaseViewModel field = fields.get(j);
+ mFieldContainer.addView(field.getView(mInflater, mFieldContainer));
}
- return null;
- }
- @Override
- public int getViewTypeCount() {
- return ViewTypes._COUNT;
- }
-
- @Override
- public int getItemViewType(int position) {
- return getEntry(position).getEntryType();
- }
-
- public int getCount() {
- int result = 0;
- for (int i = 0; i < mRawContacts.size(); i++) {
- final DisplayRawContact rawContact = mRawContacts.get(i);
- if (rawContact.getHeader().isCollapsed()) {
- // just one header item
- result++;
- } else {
- // +1 for header, +1 for footer
- result += rawContact.getFields().size() + 2;
- }
- }
- return result;
+ // Footer
+ mFieldContainer.addView(
+ rawContact.getFooter().getView(mInflater, mFieldContainer));
}
}
diff --git a/src/com/android/contacts/views/editor/MyListView.java b/src/com/android/contacts/views/editor/MyListView.java
deleted file mode 100644
index 12651c1..0000000
--- a/src/com/android/contacts/views/editor/MyListView.java
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
- * Copyright (C) 2010 Google Inc.
- *
- * 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.views.editor;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.BaseAdapter;
-import android.widget.LinearLayout;
-
-/**
- * Compatibility pseudo-ListView. This just renders everything into a LinearLayout using a ListView
- * adapter. If this turns out to be fast enough, we can keep using this. This view will be removed
- * once the decision has been made
- */
-public class MyListView extends LinearLayout {
- public MyListView(Context context) {
- super(context);
- }
-
- public MyListView(Context context, AttributeSet attrs) {
- super(context, attrs);
- }
-
- public MyListView(Context context, AttributeSet attrs, int defStyle) {
- super(context, attrs, defStyle);
- }
-
- @Override
- protected void onFinishInflate() {
- super.onFinishInflate();
- setOrientation(VERTICAL);
- }
-
- public void setOnItemClickListener(ContactEditorFragment contactEditorFragment) {
- // Keep compatibility with ListView
- }
-
- public void setItemsCanFocus(boolean value) {
- // Keep compatibility with ListView
- }
-
- public void setAdapter(BaseAdapter adapter) {
- removeAllViews();
- for (int i = 0; i < adapter.getCount(); i++) {
- final View childView = adapter.getView(i, null, this);
- addView(childView);
- }
- }
-}
diff --git a/src/com/android/contacts/views/editor/viewModel/BaseViewModel.java b/src/com/android/contacts/views/editor/viewModel/BaseViewModel.java
index 6bef3ca..8a2f78a 100644
--- a/src/com/android/contacts/views/editor/viewModel/BaseViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/BaseViewModel.java
@@ -43,5 +43,5 @@
}
public abstract int getEntryType();
- public abstract View getView(LayoutInflater inflater, View convertView, ViewGroup parent);
+ public abstract View getView(LayoutInflater inflater, ViewGroup parent);
}
diff --git a/src/com/android/contacts/views/editor/viewModel/FieldAndTypeViewModel.java b/src/com/android/contacts/views/editor/viewModel/FieldAndTypeViewModel.java
index c754e92..c4cc931 100644
--- a/src/com/android/contacts/views/editor/viewModel/FieldAndTypeViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/FieldAndTypeViewModel.java
@@ -54,10 +54,8 @@
}
@Override
- public FieldAndTypeView getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final FieldAndTypeView result = convertView != null
- ? (FieldAndTypeView) convertView
- : FieldAndTypeView.inflate(inflater, parent, false);
+ public FieldAndTypeView getView(LayoutInflater inflater, ViewGroup parent) {
+ final FieldAndTypeView result = FieldAndTypeView.inflate(inflater, parent, false);
result.setListener(mViewListener);
result.setLabelText(mLabelResId);
diff --git a/src/com/android/contacts/views/editor/viewModel/FooterViewModel.java b/src/com/android/contacts/views/editor/viewModel/FooterViewModel.java
index 9277a8b..28610ef 100644
--- a/src/com/android/contacts/views/editor/viewModel/FooterViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/FooterViewModel.java
@@ -40,10 +40,8 @@
}
@Override
- public View getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final FooterView result = convertView != null
- ? (FooterView) convertView
- : FooterView.inflate(inflater, parent, false);
+ public View getView(LayoutInflater inflater, ViewGroup parent) {
+ final FooterView result = FooterView.inflate(inflater, parent, false);
result.setListener(mViewListener);
return result;
diff --git a/src/com/android/contacts/views/editor/viewModel/HeaderViewModel.java b/src/com/android/contacts/views/editor/viewModel/HeaderViewModel.java
index dca3a06..15b5226 100644
--- a/src/com/android/contacts/views/editor/viewModel/HeaderViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/HeaderViewModel.java
@@ -48,10 +48,8 @@
}
@Override
- public View getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final HeaderView result = convertView != null
- ? (HeaderView) convertView
- : HeaderView.inflate(inflater, parent, false);
+ public View getView(LayoutInflater inflater, ViewGroup parent) {
+ final HeaderView result = HeaderView.inflate(inflater, parent, false);
CharSequence accountType = getRawContact().getSource().getDisplayLabel(getContext());
if (TextUtils.isEmpty(accountType)) {
diff --git a/src/com/android/contacts/views/editor/viewModel/OrganizationViewModel.java b/src/com/android/contacts/views/editor/viewModel/OrganizationViewModel.java
index 0f40532..1ccfb79 100644
--- a/src/com/android/contacts/views/editor/viewModel/OrganizationViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/OrganizationViewModel.java
@@ -62,10 +62,8 @@
}
@Override
- public OrganizationView getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final OrganizationView result = convertView != null
- ? (OrganizationView) convertView
- : OrganizationView.inflate(inflater, parent, false);
+ public OrganizationView getView(LayoutInflater inflater, ViewGroup parent) {
+ final OrganizationView result = OrganizationView.inflate(inflater, parent, false);
result.setListener(mViewListener);
result.setLabelText(mLabelResId);
diff --git a/src/com/android/contacts/views/editor/viewModel/PhotoViewModel.java b/src/com/android/contacts/views/editor/viewModel/PhotoViewModel.java
index 05adf57..ae04933 100644
--- a/src/com/android/contacts/views/editor/viewModel/PhotoViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/PhotoViewModel.java
@@ -56,10 +56,8 @@
}
@Override
- public View getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final PhotoView result = convertView != null
- ? (PhotoView) convertView
- : PhotoView.inflate(inflater, parent, false);
+ public View getView(LayoutInflater inflater, ViewGroup parent) {
+ final PhotoView result = PhotoView.inflate(inflater, parent, false);
final byte[] binaryData = getContentValues().getAsByteArray(Photo.PHOTO);
diff --git a/src/com/android/contacts/views/editor/viewModel/SingleFieldViewModel.java b/src/com/android/contacts/views/editor/viewModel/SingleFieldViewModel.java
index 16a9769..a5ef528 100644
--- a/src/com/android/contacts/views/editor/viewModel/SingleFieldViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/SingleFieldViewModel.java
@@ -49,10 +49,8 @@
}
@Override
- public SingleFieldView getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final SingleFieldView result = convertView != null
- ? (SingleFieldView) convertView
- : SingleFieldView.inflate(inflater, parent, false);
+ public SingleFieldView getView(LayoutInflater inflater, ViewGroup parent) {
+ final SingleFieldView result = SingleFieldView.inflate(inflater, parent, false);
result.setListener(mViewListener);
result.setLabelText(mLabelResId);
diff --git a/src/com/android/contacts/views/editor/viewModel/StructuredNameViewModel.java b/src/com/android/contacts/views/editor/viewModel/StructuredNameViewModel.java
index 269bc2a..fb92b83 100644
--- a/src/com/android/contacts/views/editor/viewModel/StructuredNameViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/StructuredNameViewModel.java
@@ -69,10 +69,9 @@
}
@Override
- public View getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final SimpleOrStructuredView result = convertView != null
- ? (SimpleOrStructuredView) convertView
- : SimpleOrStructuredView.inflate(inflater, parent, false);
+ public View getView(LayoutInflater inflater, ViewGroup parent) {
+ final SimpleOrStructuredView result =
+ SimpleOrStructuredView.inflate(inflater, parent, false);
result.setListener(mViewListener);
result.setLabelText(mLabelResId);
diff --git a/src/com/android/contacts/views/editor/viewModel/StructuredPostalViewModel.java b/src/com/android/contacts/views/editor/viewModel/StructuredPostalViewModel.java
index 9f8fc46..ef46bdb 100644
--- a/src/com/android/contacts/views/editor/viewModel/StructuredPostalViewModel.java
+++ b/src/com/android/contacts/views/editor/viewModel/StructuredPostalViewModel.java
@@ -78,10 +78,9 @@
}
@Override
- public View getView(LayoutInflater inflater, View convertView, ViewGroup parent) {
- final SimpleOrStructuredView result = convertView != null
- ? (SimpleOrStructuredView) convertView
- : SimpleOrStructuredView.inflate(inflater, parent, false);
+ public View getView(LayoutInflater inflater, ViewGroup parent) {
+ final SimpleOrStructuredView result =
+ SimpleOrStructuredView.inflate(inflater, parent, false);
result.setListener(mViewListener);
result.setLabelText(mLabelResId);