summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJin Cao <jinyan@google.com>2014-07-30 02:09:14 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2014-07-24 15:36:21 +0000
commit0adf3fa87b007e9fa7e3e718bb5111fd47178110 (patch)
tree950e1e6c0df30df056e424aba22b03082e79735e
parent133cb86525952b025969512f50dbf346c1ea64b9 (diff)
parentaf9dc29f589c6ee771db22e3a2923b8bae46aafc (diff)
downloadandroid_packages_apps_UnifiedEmail-0adf3fa87b007e9fa7e3e718bb5111fd47178110.tar.gz
android_packages_apps_UnifiedEmail-0adf3fa87b007e9fa7e3e718bb5111fd47178110.tar.bz2
android_packages_apps_UnifiedEmail-0adf3fa87b007e9fa7e3e718bb5111fd47178110.zip
Merge "[Quantum search] update search header" into ub-mail-master
-rw-r--r--res/drawable-hdpi/banner_background_search.9.pngbin205 -> 0 bytes
-rw-r--r--res/drawable-mdpi/banner_background_search.9.pngbin176 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-hdpi/banner_background_search.9.pngbin220 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-mdpi/banner_background_search.9.pngbin190 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-xhdpi/banner_background_search.9.pngbin245 -> 0 bytes
-rw-r--r--res/drawable-sw600dp-xxhdpi/banner_background_search.9.pngbin1200 -> 0 bytes
-rw-r--r--res/drawable-xhdpi/banner_background_search.9.pngbin225 -> 0 bytes
-rw-r--r--res/drawable-xxhdpi/banner_background_search.9.pngbin1142 -> 0 bytes
-rw-r--r--res/layout/conversation_list.xml12
-rw-r--r--res/layout/search_results_view.xml24
-rw-r--r--res/values-ldrtl/styles-ldrtl.xml8
-rw-r--r--res/values/colors.xml3
-rw-r--r--res/values/dimen.xml5
-rw-r--r--res/values/styles.xml9
-rw-r--r--src/com/android/mail/ui/ConversationListFragment.java71
-rw-r--r--src/com/android/mail/ui/SwipeableListView.java4
16 files changed, 47 insertions, 89 deletions
diff --git a/res/drawable-hdpi/banner_background_search.9.png b/res/drawable-hdpi/banner_background_search.9.png
deleted file mode 100644
index 0e2c2bedd..000000000
--- a/res/drawable-hdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-mdpi/banner_background_search.9.png b/res/drawable-mdpi/banner_background_search.9.png
deleted file mode 100644
index 0e5970edd..000000000
--- a/res/drawable-mdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-hdpi/banner_background_search.9.png b/res/drawable-sw600dp-hdpi/banner_background_search.9.png
deleted file mode 100644
index c3448d92c..000000000
--- a/res/drawable-sw600dp-hdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-mdpi/banner_background_search.9.png b/res/drawable-sw600dp-mdpi/banner_background_search.9.png
deleted file mode 100644
index 587c3a2ec..000000000
--- a/res/drawable-sw600dp-mdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-xhdpi/banner_background_search.9.png b/res/drawable-sw600dp-xhdpi/banner_background_search.9.png
deleted file mode 100644
index 02fafa20a..000000000
--- a/res/drawable-sw600dp-xhdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-sw600dp-xxhdpi/banner_background_search.9.png b/res/drawable-sw600dp-xxhdpi/banner_background_search.9.png
deleted file mode 100644
index 0ac64eda4..000000000
--- a/res/drawable-sw600dp-xxhdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xhdpi/banner_background_search.9.png b/res/drawable-xhdpi/banner_background_search.9.png
deleted file mode 100644
index 17540618b..000000000
--- a/res/drawable-xhdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/drawable-xxhdpi/banner_background_search.9.png b/res/drawable-xxhdpi/banner_background_search.9.png
deleted file mode 100644
index c30bf1ab9..000000000
--- a/res/drawable-xxhdpi/banner_background_search.9.png
+++ /dev/null
Binary files differ
diff --git a/res/layout/conversation_list.xml b/res/layout/conversation_list.xml
index 2d2bfa84c..654092ce7 100644
--- a/res/layout/conversation_list.xml
+++ b/res/layout/conversation_list.xml
@@ -16,33 +16,37 @@
limitations under the License.
-->
-<RelativeLayout
- xmlns:android="http://schemas.android.com/apk/res/android"
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/between_chrome"
android:layout_width="match_parent"
android:layout_height="match_parent">
- <include layout="@layout/search_results_view"/>
-
<com.android.mail.ui.MailSwipeRefreshLayout
android:id="@+id/swipe_refresh_widget"
android:layout_width="match_parent"
android:layout_height="match_parent">
+
<FrameLayout
android:id="@+id/conversation_list_parent_frame"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true">
+
<!-- Note: intentionally not called "empty" because we call
setEmptyView programmatically-->
<!-- Offset by height of undo bar and action bar -->
<include layout="@layout/conversation_list_empty_view" />
+
<com.android.mail.ui.SwipeableListView
android:id="@android:id/list"
android:layout_width="match_parent"
android:layout_height="match_parent"
style="@style/ConversationListFade" />
+
<include layout="@layout/conversation_load_spinner" />
+
</FrameLayout>
+
</com.android.mail.ui.MailSwipeRefreshLayout>
+
</RelativeLayout>
diff --git a/res/layout/search_results_view.xml b/res/layout/search_results_view.xml
index 87e86989a..9d8cfa3c2 100644
--- a/res/layout/search_results_view.xml
+++ b/res/layout/search_results_view.xml
@@ -21,32 +21,28 @@
android:id="@+id/search_status_view"
android:layout_width="match_parent"
android:layout_height="@dimen/notification_view_height"
+ android:background="@color/search_banner_bg"
android:minHeight="@dimen/notification_view_height"
- android:background="@drawable/banner_background_search"
- android:visibility="gone"
- android:orientation="horizontal" >
+ android:paddingLeft="@dimen/search_results_padding"
+ android:paddingRight="@dimen/search_results_padding">
<TextView
android:id="@+id/search_status_text_view"
- android:layout_width="0dip"
+ android:layout_width="0dp"
android:layout_height="match_parent"
- android:gravity="center_vertical"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textSize="18sp"
- android:textColor="#777777"
- android:text="@string/search_results_header"
android:layout_weight="8"
android:ellipsize="marquee"
+ android:gravity="center_vertical"
android:singleLine="true"
- style="@style/SearchStatusStyle" />
+ android:text="@string/search_results_header"
+ android:textAllCaps="true"
+ style="@style/SearchTextStyle" />
<TextView android:id="@+id/search_result_count_view"
android:layout_width="0dip"
android:layout_height="match_parent"
- android:gravity="center_vertical|right|end"
- android:textAppearance="?android:attr/textAppearanceMedium"
- android:textColor="#777777"
android:layout_weight="2"
- style="@style/SearchCountStyle" />
+ android:gravity="center_vertical|end"
+ style="@style/SearchTextStyle" />
</LinearLayout>
diff --git a/res/values-ldrtl/styles-ldrtl.xml b/res/values-ldrtl/styles-ldrtl.xml
index 6ed9f90a8..d7399a701 100644
--- a/res/values-ldrtl/styles-ldrtl.xml
+++ b/res/values-ldrtl/styles-ldrtl.xml
@@ -252,14 +252,6 @@
<item name="android:paddingEnd">@dimen/widget_attachment_padding_end</item>
</style>
- <style name="SearchStatusStyle">
- <item name="android:paddingStart">@dimen/search_results_padding</item>
- </style>
-
- <style name="SearchCountStyle">
- <item name="android:paddingEnd">@dimen/search_results_padding</item>
- </style>
-
<!-- START Conversation list styles -->
<style name="ConversationListContactImageStyle">
<item name="android:layout_marginEnd">@dimen/conv_list_contact_image_padding_end</item>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 602f07885..96148f2f3 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -95,6 +95,9 @@
<color name="notification_template_icon_low_bg">#0cffffff</color>
+ <!-- Search colors -->
+ <color name="search_banner_bg">#f6f6f6</color>
+ <color name="search_banner_text">@color/text_color_grey</color>
<array name="letter_tile_colors">
<item>#90a4ae</item>
diff --git a/res/values/dimen.xml b/res/values/dimen.xml
index 0565fc529..873b64307 100644
--- a/res/values/dimen.xml
+++ b/res/values/dimen.xml
@@ -61,7 +61,7 @@
<dimen name="message_header_margin_bottom">12dp</dimen>
<dimen name="super_collapsed_height">30sp</dimen>
<dimen name="super_collapsed_text_size">16sp</dimen>
- <dimen name="notification_view_height">36dip</dimen>
+ <dimen name="notification_view_height">36dp</dimen>
<dimen name="contact_image_width">40dp</dimen>
<dimen name="contact_image_height">40dp</dimen>
<dimen name="message_header_contact_photo_margin">16dp</dimen>
@@ -146,7 +146,8 @@
<dimen name="widget_senders_padding_end">16dip</dimen>
<dimen name="widget_attachment_padding_end">8dp</dimen>
- <dimen name="search_results_padding">8dip</dimen>
+ <dimen name="search_results_padding">16dp</dimen>
+ <dimen name="search_banner_text_size">12sp</dimen>
<!-- conversation list dimensions -->
<dimen name="conv_list_padding">16dip</dimen>
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 9120dbfd8..d74873d20 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -851,12 +851,9 @@
<item name="android:paddingRight">@dimen/widget_attachment_padding_end</item>
</style>
- <style name="SearchStatusStyle">
- <item name="android:paddingLeft">@dimen/search_results_padding</item>
- </style>
-
- <style name="SearchCountStyle">
- <item name="android:paddingRight">@dimen/search_results_padding</item>
+ <style name="SearchTextStyle">
+ <item name="android:textColor">@color/search_banner_text</item>
+ <item name="android:textSize">@dimen/search_banner_text_size</item>
</style>
<!-- START Conversation list styles -->
diff --git a/src/com/android/mail/ui/ConversationListFragment.java b/src/com/android/mail/ui/ConversationListFragment.java
index 3329c74ea..33497ee44 100644
--- a/src/com/android/mail/ui/ConversationListFragment.java
+++ b/src/com/android/mail/ui/ConversationListFragment.java
@@ -107,10 +107,8 @@ public final class ConversationListFragment extends ListFragment implements
// The internal view objects.
private SwipeableListView mListView;
+ private View mSearchHeaderView;
private TextView mSearchResultCountTextView;
- private TextView mSearchStatusTextView;
-
- private View mSearchStatusView;
/**
* Current Account being viewed
@@ -254,55 +252,12 @@ public final class ConversationListFragment extends ListFragment implements
* Show the header if the current conversation list is showing search
* results.
*/
- void configureSearchResultHeader() {
- if (mActivity == null) {
- return;
- }
- // Only show the header if the context is for a search result
- final Resources res = getResources();
- final boolean showHeader = ConversationListContext.isSearchResult(mViewContext);
- // TODO(viki): This code contains intimate understanding of the view.
- // Much of this logic
- // needs to reside in a separate class that handles the text view in
- // isolation. Then,
- // that logic can be reused in other fragments.
- mSearchStatusView.setVisibility(showHeader ? View.INVISIBLE : View.GONE);
- int paddingTop = showHeader ? (int) res.getDimension(R.dimen.notification_view_height) : 0;
- mListView.setPadding(mListView.getPaddingLeft(), paddingTop, mListView.getPaddingRight(),
- mListView.getPaddingBottom());
- }
-
- /**
- * Show the header if the current conversation list is showing search
- * results.
- */
private void updateSearchResultHeader(int count) {
- if (mActivity == null) {
+ if (mActivity == null || mSearchHeaderView == null) {
return;
}
- // Only show the header if the context is for a search result
- final Resources res = getResources();
- final boolean showHeader = ConversationListContext.isSearchResult(mViewContext);
- if (showHeader) {
- mSearchStatusTextView.setText(res.getString(R.string.search_results_header));
- mSearchResultCountTextView
- .setText(res.getString(R.string.search_results_loaded, count));
- mSearchStatusView.setVisibility(View.VISIBLE);
- }
- }
-
- /**
- * Initializes all internal state for a rendering.
- */
- private void initializeUiForFirstDisplay() {
- // TODO(mindyp): find some way to make the notification container more
- // re-usable.
- // TODO(viki): refactor according to comment in
- // configureSearchResultHandler()
- mSearchStatusView = mActivity.findViewById(R.id.search_status_view);
- mSearchStatusTextView = (TextView) mActivity.findViewById(R.id.search_status_text_view);
- mSearchResultCountTextView = (TextView) mActivity
- .findViewById(R.id.search_result_count_view);
+ mSearchResultCountTextView.setText(
+ getResources().getString(R.string.search_results_loaded, count));
}
@Override
@@ -337,10 +292,9 @@ public final class ConversationListFragment extends ListFragment implements
mCallbacks = mActivity.getListHandler();
mErrorListener = mActivity.getErrorListener();
// Start off with the current state of the folder being viewed.
- Context activityContext = mActivity.getActivityContext();
- mFooterView = (ConversationListFooterView) LayoutInflater.from(
- activityContext).inflate(R.layout.conversation_list_footer_view,
- null);
+ final LayoutInflater inflater = LayoutInflater.from(mActivity.getActivityContext());
+ mFooterView = (ConversationListFooterView) inflater.inflate(
+ R.layout.conversation_list_footer_view, null);
mFooterView.setClickListener(mActivity);
final ConversationCursor conversationCursor = getConversationListCursor();
final LoaderManager manager = getLoaderManager();
@@ -378,8 +332,6 @@ public final class ConversationListFragment extends ListFragment implements
mUpdater = mActivity.getConversationUpdater();
mUpdater.registerConversationListObserver(mConversationCursorObserver);
mTabletDevice = Utils.useTabletUI(mActivity.getApplicationContext().getResources());
- initializeUiForFirstDisplay();
- configureSearchResultHeader();
// The onViewModeChanged callback doesn't get called when the mode
// object is created, so
// force setting the mode manually this time around.
@@ -491,6 +443,15 @@ public final class ConversationListFragment extends ListFragment implements
mListView.setListItemSwipedListener(this);
mListView.setSwipeListener(this);
+ // Show search result header only if we are in search mode
+ final boolean showSearchHeader = ConversationListContext.isSearchResult(mViewContext);
+ if (showSearchHeader) {
+ mSearchHeaderView = inflater.inflate(R.layout.search_results_view, null);
+ mSearchResultCountTextView = (TextView)
+ mSearchHeaderView.findViewById(R.id.search_result_count_view);
+ mListView.addHeaderView(mSearchHeaderView);
+ }
+
// enable animateOnLayout (equivalent of setLayoutTransition) only for >=JB (b/14302062)
if (Utils.isRunningJellybeanOrLater()) {
((ViewGroup) rootView.findViewById(R.id.conversation_list_parent_frame))
diff --git a/src/com/android/mail/ui/SwipeableListView.java b/src/com/android/mail/ui/SwipeableListView.java
index d0e431242..fd2184f4f 100644
--- a/src/com/android/mail/ui/SwipeableListView.java
+++ b/src/com/android/mail/ui/SwipeableListView.java
@@ -28,6 +28,7 @@ import android.view.View;
import android.view.ViewConfiguration;
import android.widget.AbsListView;
import android.widget.AbsListView.OnScrollListener;
+import android.widget.HeaderViewListAdapter;
import android.widget.ListView;
import com.android.mail.R;
@@ -329,6 +330,9 @@ public class SwipeableListView extends ListView implements Callback, OnScrollLis
}
private AnimatedAdapter getAnimatedAdapter() {
+ if (getAdapter() instanceof HeaderViewListAdapter) {
+ return (AnimatedAdapter) ((HeaderViewListAdapter) getAdapter()).getWrappedAdapter();
+ }
return (AnimatedAdapter) getAdapter();
}