Merge "Improve progress feedback for long-running directory searches." into jb-dev
diff --git a/res/layout-sw580dp/search_header.xml b/res/layout-sw580dp/search_header.xml
index e543883..cf09190 100644
--- a/res/layout-sw580dp/search_header.xml
+++ b/res/layout-sw580dp/search_header.xml
@@ -14,29 +14,11 @@
limitations under the License.
-->
-<RelativeLayout
+<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
- style="DirectoryHeader"
- android:layout_width="match_parent"
- android:layout_height="56dip">
- <TextView
- android:id="@+id/totalContactsText"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:layout_centerVertical="true"
- android:layout_alignParentLeft="true"
- android:layout_marginLeft="8dip"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorTertiary"
- android:textStyle="bold" />
-
- <ProgressBar
- android:id="@+id/progress"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- style="?android:attr/progressBarStyleSmall"
- android:layout_alignParentRight="true"
- android:layout_centerVertical="true"
- android:layout_marginRight="10dip" />
-
-</RelativeLayout>
+ android:id="@+id/totalContactsText"
+ android:minHeight="@dimen/contact_filter_header_min_height"
+ android:paddingTop="10dip"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="?android:attr/textColorTertiary"
+ android:textStyle="bold" />
diff --git a/res/layout/contact_list_content.xml b/res/layout/contact_list_content.xml
index 05f1930..b268102 100644
--- a/res/layout/contact_list_content.xml
+++ b/res/layout/contact_list_content.xml
@@ -33,21 +33,32 @@
android:id="@+id/account_filter_header_container"
layout="@layout/account_filter_header" />
- <view
- class="com.android.contacts.widget.PinnedHeaderListView"
- android:id="@android:id/list"
+ <FrameLayout
android:layout_width="match_parent"
android:layout_height="0dip"
- android:layout_marginLeft="?attr/contact_browser_list_padding_left"
- android:layout_marginRight="?attr/contact_browser_list_padding_right"
- android:fastScrollEnabled="true"
- android:fadingEdge="none"
- android:layout_weight="1" />
+ android:layout_weight="1" >
+ <view
+ class="com.android.contacts.widget.PinnedHeaderListView"
+ android:id="@android:id/list"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ android:layout_marginLeft="?attr/contact_browser_list_padding_left"
+ android:layout_marginRight="?attr/contact_browser_list_padding_right"
+ android:fastScrollEnabled="true"
+ android:fadingEdge="none" />
+ <ProgressBar
+ android:id="@+id/search_progress"
+ style="?android:attr/progressBarStyleLarge"
+ android:layout_width="wrap_content"
+ android:layout_height="wrap_content"
+ android:layout_gravity="center"
+ android:visibility="gone" />
+ </FrameLayout>
- <ViewStub
- android:id="@+id/footer_stub"
- android:layout="@layout/footer_panel"
- android:layout_width="fill_parent"
- android:layout_height="wrap_content" />
+ <ViewStub
+ android:id="@+id/footer_stub"
+ android:layout="@layout/footer_panel"
+ android:layout_width="fill_parent"
+ android:layout_height="wrap_content" />
</LinearLayout>
diff --git a/res/layout/search_header.xml b/res/layout/search_header.xml
index b1ba00f..44e4632 100644
--- a/res/layout/search_header.xml
+++ b/res/layout/search_header.xml
@@ -14,28 +14,10 @@
limitations under the License.
-->
-<RelativeLayout
+<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="wrap_content"
+ android:id="@+id/totalContactsText"
android:minHeight="@dimen/contact_filter_header_min_height"
- android:background="@android:color/transparent">
- <TextView
- android:id="@+id/totalContactsText"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_centerVertical="true"
- android:layout_alignParentLeft="true"
- android:textAppearance="?android:attr/textAppearanceSmall"
- android:textColor="?android:attr/textColorSecondary" />
-
- <ProgressBar
- android:id="@+id/progress"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:layout_toRightOf="@id/totalContactsText"
- style="?android:attr/progressBarStyleSmall"
- android:layout_alignParentRight="true"
- android:layout_centerVertical="true" />
-
-</RelativeLayout>
+ android:paddingTop="10dip"
+ android:textAppearance="?android:attr/textAppearanceSmall"
+ android:textColor="?android:attr/textColorSecondary" />
\ No newline at end of file
diff --git a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
index 6e3cc05..5c79c45 100644
--- a/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
+++ b/src/com/android/contacts/list/DefaultContactBrowseListFragment.java
@@ -34,7 +34,6 @@
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ListView;
-import android.widget.ProgressBar;
import android.widget.TextView;
/**
@@ -54,6 +53,8 @@
private Button mProfileMessage;
private FrameLayout mMessageContainer;
private TextView mProfileTitle;
+ private View mSearchProgress;
+ private TextView mSearchProgressText;
private View mPaddingView;
@@ -117,12 +118,21 @@
headerContainer.addView(mSearchHeaderView);
getListView().addHeaderView(headerContainer, null, false);
checkHeaderViewVisibility();
+
+ mSearchProgress = getView().findViewById(R.id.search_progress);
+ mSearchProgressText = (TextView) mSearchHeaderView.findViewById(R.id.totalContactsText);
}
@Override
protected void setSearchMode(boolean flag) {
super.setSearchMode(flag);
checkHeaderViewVisibility();
+ if (!flag) showSearchProgress(false);
+ }
+
+ /** Show or hide the directory-search progress spinner. */
+ private void showSearchProgress(boolean show) {
+ mSearchProgress.setVisibility(show ? View.VISIBLE : View.GONE);
}
private void checkHeaderViewVisibility() {
@@ -203,19 +213,17 @@
// In search mode we only display the header if there is nothing found
if (TextUtils.isEmpty(getQueryString()) || !adapter.areAllPartitionsEmpty()) {
mSearchHeaderView.setVisibility(View.GONE);
+ showSearchProgress(false);
} else {
- TextView textView = (TextView) mSearchHeaderView.findViewById(
- R.id.totalContactsText);
- ProgressBar progress = (ProgressBar) mSearchHeaderView.findViewById(
- R.id.progress);
mSearchHeaderView.setVisibility(View.VISIBLE);
if (adapter.isLoading()) {
- textView.setText(R.string.search_results_searching);
- progress.setVisibility(View.VISIBLE);
+ mSearchProgressText.setText(R.string.search_results_searching);
+ showSearchProgress(true);
} else {
- textView.setText(R.string.listFoundAllContactsZero);
- textView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_SELECTED);
- progress.setVisibility(View.GONE);
+ mSearchProgressText.setText(R.string.listFoundAllContactsZero);
+ mSearchProgressText.sendAccessibilityEvent(
+ AccessibilityEvent.TYPE_VIEW_SELECTED);
+ showSearchProgress(false);
}
}
showEmptyUserProfile(false);