diff options
author | Jin Cao <jinyan@google.com> | 2014-07-30 02:09:14 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2014-07-24 15:36:21 +0000 |
commit | 0adf3fa87b007e9fa7e3e718bb5111fd47178110 (patch) | |
tree | 950e1e6c0df30df056e424aba22b03082e79735e | |
parent | 133cb86525952b025969512f50dbf346c1ea64b9 (diff) | |
parent | af9dc29f589c6ee771db22e3a2923b8bae46aafc (diff) | |
download | android_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.png | bin | 205 -> 0 bytes | |||
-rw-r--r-- | res/drawable-mdpi/banner_background_search.9.png | bin | 176 -> 0 bytes | |||
-rw-r--r-- | res/drawable-sw600dp-hdpi/banner_background_search.9.png | bin | 220 -> 0 bytes | |||
-rw-r--r-- | res/drawable-sw600dp-mdpi/banner_background_search.9.png | bin | 190 -> 0 bytes | |||
-rw-r--r-- | res/drawable-sw600dp-xhdpi/banner_background_search.9.png | bin | 245 -> 0 bytes | |||
-rw-r--r-- | res/drawable-sw600dp-xxhdpi/banner_background_search.9.png | bin | 1200 -> 0 bytes | |||
-rw-r--r-- | res/drawable-xhdpi/banner_background_search.9.png | bin | 225 -> 0 bytes | |||
-rw-r--r-- | res/drawable-xxhdpi/banner_background_search.9.png | bin | 1142 -> 0 bytes | |||
-rw-r--r-- | res/layout/conversation_list.xml | 12 | ||||
-rw-r--r-- | res/layout/search_results_view.xml | 24 | ||||
-rw-r--r-- | res/values-ldrtl/styles-ldrtl.xml | 8 | ||||
-rw-r--r-- | res/values/colors.xml | 3 | ||||
-rw-r--r-- | res/values/dimen.xml | 5 | ||||
-rw-r--r-- | res/values/styles.xml | 9 | ||||
-rw-r--r-- | src/com/android/mail/ui/ConversationListFragment.java | 71 | ||||
-rw-r--r-- | src/com/android/mail/ui/SwipeableListView.java | 4 |
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 Binary files differdeleted file mode 100644 index 0e2c2bedd..000000000 --- a/res/drawable-hdpi/banner_background_search.9.png +++ /dev/null diff --git a/res/drawable-mdpi/banner_background_search.9.png b/res/drawable-mdpi/banner_background_search.9.png Binary files differdeleted file mode 100644 index 0e5970edd..000000000 --- a/res/drawable-mdpi/banner_background_search.9.png +++ /dev/null diff --git a/res/drawable-sw600dp-hdpi/banner_background_search.9.png b/res/drawable-sw600dp-hdpi/banner_background_search.9.png Binary files differdeleted file mode 100644 index c3448d92c..000000000 --- a/res/drawable-sw600dp-hdpi/banner_background_search.9.png +++ /dev/null diff --git a/res/drawable-sw600dp-mdpi/banner_background_search.9.png b/res/drawable-sw600dp-mdpi/banner_background_search.9.png Binary files differdeleted file mode 100644 index 587c3a2ec..000000000 --- a/res/drawable-sw600dp-mdpi/banner_background_search.9.png +++ /dev/null diff --git a/res/drawable-sw600dp-xhdpi/banner_background_search.9.png b/res/drawable-sw600dp-xhdpi/banner_background_search.9.png Binary files differdeleted file mode 100644 index 02fafa20a..000000000 --- a/res/drawable-sw600dp-xhdpi/banner_background_search.9.png +++ /dev/null diff --git a/res/drawable-sw600dp-xxhdpi/banner_background_search.9.png b/res/drawable-sw600dp-xxhdpi/banner_background_search.9.png Binary files differdeleted file mode 100644 index 0ac64eda4..000000000 --- a/res/drawable-sw600dp-xxhdpi/banner_background_search.9.png +++ /dev/null diff --git a/res/drawable-xhdpi/banner_background_search.9.png b/res/drawable-xhdpi/banner_background_search.9.png Binary files differdeleted file mode 100644 index 17540618b..000000000 --- a/res/drawable-xhdpi/banner_background_search.9.png +++ /dev/null diff --git a/res/drawable-xxhdpi/banner_background_search.9.png b/res/drawable-xxhdpi/banner_background_search.9.png Binary files differdeleted file mode 100644 index c30bf1ab9..000000000 --- a/res/drawable-xxhdpi/banner_background_search.9.png +++ /dev/null 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(); } |