Merge "Make search behavior match jb search behavior." into jb-ub-mail
diff --git a/res/layout/conversation_pager.xml b/res/layout/conversation_pager.xml
index 9d876af..623d35d 100644
--- a/res/layout/conversation_pager.xml
+++ b/res/layout/conversation_pager.xml
@@ -19,8 +19,17 @@
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/conversation_pane"
android:layout_width="match_parent"
- android:layout_height="match_parent">
+ android:layout_height="match_parent"
+ android:visibility="gone">
- <!-- TODO: put a bottom-anchored PagerTitleStrip in here -->
+ <android.support.v4.view.PagerTitleStrip
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:layout_gravity="bottom"
+ android:paddingLeft="16dp"
+ android:paddingRight="16dp"
+ android:textAppearance="?android:attr/textAppearanceSmallInverse"
+ android:includeFontPadding="false"
+ android:background="@color/position_bar_background" />
</com.android.mail.browse.ConversationPager>
\ No newline at end of file
diff --git a/res/values-sw600dp/styles.xml b/res/values-sw600dp/styles.xml
index 38a00a3..2988c68 100644
--- a/res/values-sw600dp/styles.xml
+++ b/res/values-sw600dp/styles.xml
@@ -23,11 +23,6 @@
<item name="android:layout_marginTop">3sp</item>
</style>
- <style name="SendersStyle">
- <item name="android:layout_marginLeft">8dip</item>
- <item name="android:layout_marginTop">10sp</item>
- </style>
-
<style name="SubjectStyle">
<item name="android:layout_marginLeft">8dip</item>
<item name="android:layout_marginTop">-6sp</item>
diff --git a/res/values/colors.xml b/res/values/colors.xml
index 63211f6..4bac510 100644
--- a/res/values/colors.xml
+++ b/res/values/colors.xml
@@ -52,6 +52,8 @@
<color name="conv_subject_border">#c0c0c0</color>
<color name="conv_header_text_light">#777777</color>
+ <color name="position_bar_background">#777777</color>
+
<!-- Folder colors -->
<color name="folder_disabled_drop_target_text_color">#999999</color>
</resources>
diff --git a/res/values/strings.xml b/res/values/strings.xml
index c32e4c2..1671718 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -448,6 +448,12 @@
<!-- Text anchor for control to add / change labels on a conversation when
viewing it. [CHAR LIMIT=40] -->
<string name="add_label">Add label</string>
+ <!-- position bar label in conversation view: number out of total [CHAR LIMIT=50]-->
+ <string name="conversation_count"><xliff:g id="count">%1$s</xliff:g> of <xliff:g id="total">%2$s</xliff:g></string>
+ <!-- position bar label in conversation view: label for a newer conversation [CHAR LIMIT=20]-->
+ <string name="conversation_newer">Newer</string>
+ <!-- position bar label in conversation view: label for an older conversation [CHAR LIMIT=20]-->
+ <string name="conversation_older">Older</string>
<!-- Conversation message header strings -->
<!-- Icon name for expanding recipient details in a message when viewing it. [CHAR LIMIT=40] -->
diff --git a/res/values/styles.xml b/res/values/styles.xml
index 9842988..a37e6d8 100644
--- a/res/values/styles.xml
+++ b/res/values/styles.xml
@@ -177,7 +177,7 @@
</style>
<style name="SendersStyle">
- <item name="android:layout_marginLeft">32dip</item>
+ <item name="android:layout_marginLeft">8dip</item>
<item name="android:layout_marginTop">8sp</item>
</style>
diff --git a/src/com/android/mail/browse/ConversationPagerAdapter.java b/src/com/android/mail/browse/ConversationPagerAdapter.java
index 500f0b2..6ee24a1 100644
--- a/src/com/android/mail/browse/ConversationPagerAdapter.java
+++ b/src/com/android/mail/browse/ConversationPagerAdapter.java
@@ -19,12 +19,15 @@
import android.app.Fragment;
import android.app.FragmentManager;
+import android.content.res.Resources;
import android.database.Cursor;
import android.database.DataSetObserver;
import android.os.Bundle;
import android.os.Parcelable;
+import android.support.v4.view.ViewPager;
import android.view.ViewGroup;
+import com.android.mail.R;
import com.android.mail.providers.Account;
import com.android.mail.providers.Conversation;
import com.android.mail.providers.Folder;
@@ -57,12 +60,27 @@
* setPrimary somehow adds or removes items from the conversation cursor. Crazy!
*/
private boolean mSafeToNotify;
+ /**
+ * Need to keep this around to look up pager title strings.
+ */
+ private Resources mResources;
+ /**
+ * This isn't great to create a circular dependency, but our usage of {@link #getPageTitle(int)}
+ * requires knowing which page is the currently visible to dynamically name offscreen pages
+ * "newer" and "older". And {@link #setPrimaryItem(ViewGroup, int, Object)} does not work well
+ * because it isn't updated as often as {@link ViewPager#getCurrentItem()} is.
+ * <p>
+ * We must be careful to null out this reference when the pager and adapter are decoupled to
+ * minimize dangling references.
+ */
+ private ViewPager mPager;
private static final String LOG_TAG = new LogUtils().getLogTag();
- public ConversationPagerAdapter(FragmentManager fm, Account account, Folder folder,
- Conversation initialConversation) {
+ public ConversationPagerAdapter(Resources res, FragmentManager fm, Account account,
+ Folder folder, Conversation initialConversation) {
super(fm, false /* enableSavedStates */);
+ mResources = res;
mCommonFragmentArgs = ConversationViewFragment.makeBasicArgs(account, folder);
mInitialConversation = initialConversation;
}
@@ -143,12 +161,16 @@
@Override
public CharSequence getPageTitle(int position) {
+ final String title;
+ final int currentPosition = mPager.getCurrentItem();
- // TODO: implement this to show "1 of 123" or whatever
- // maybe when the position is not the pager's current position, this could
- // return "newer" or "older"?
-
- return null;
+ if (position == currentPosition) {
+ title = mResources.getString(R.string.conversation_count, position + 1, getCount());
+ } else {
+ title = mResources.getString(position > currentPosition ?
+ R.string.conversation_newer : R.string.conversation_older);
+ }
+ return title;
}
@Override
@@ -230,6 +252,10 @@
return result;
}
+ public void setPager(ViewPager pager) {
+ mPager = pager;
+ }
+
public void setListController(ConversationListCallbacks listController) {
if (mListController != null) {
mListController.unregisterConversationListObserver(mListObserver);
diff --git a/src/com/android/mail/browse/ConversationPagerController.java b/src/com/android/mail/browse/ConversationPagerController.java
index 0f7296f..9e3abdf 100644
--- a/src/com/android/mail/browse/ConversationPagerController.java
+++ b/src/com/android/mail/browse/ConversationPagerController.java
@@ -19,6 +19,7 @@
import android.app.FragmentManager;
import android.support.v4.view.ViewPager;
+import android.view.View;
import com.android.mail.R;
import com.android.mail.providers.Account;
@@ -49,7 +50,7 @@
*/
public class ConversationPagerController {
- private ConversationPager mPager;
+ private ViewPager mPager;
private ConversationPagerAdapter mPagerAdapter;
private FragmentManager mFragmentManager;
private ConversationListCallbacks mListController;
@@ -74,7 +75,7 @@
public ConversationPagerController(RestrictedActivity activity,
ConversationListCallbacks listController) {
mFragmentManager = activity.getFragmentManager();
- mPager = (ConversationPager) activity.findViewById(R.id.conversation_pane);
+ mPager = (ViewPager) activity.findViewById(R.id.conversation_pane);
mListController = listController;
}
@@ -87,10 +88,13 @@
// position if the account+folder combo are the same, but the conversation is different
}
- mPagerAdapter = new ConversationPagerAdapter(mFragmentManager, account, folder,
- initialConversation);
+ mPager.setVisibility(View.VISIBLE);
+
+ mPagerAdapter = new ConversationPagerAdapter(mPager.getResources(), mFragmentManager,
+ account, folder, initialConversation);
mPagerAdapter.setSingletonMode(ENABLE_SINGLETON_INITIAL_LOAD);
mPagerAdapter.setListController(mListController);
+ mPagerAdapter.setPager(mPager);
LogUtils.d(LOG_TAG, "IN CPC.show, adapter=%s", mPagerAdapter);
LogUtils.d(LOG_TAG, "init pager adapter, count=%d initial=%s", mPagerAdapter.getCount(),
@@ -113,6 +117,7 @@
return;
}
mShown = false;
+ mPager.setVisibility(View.GONE);
LogUtils.d(LOG_TAG, "IN CPC.hide, clearing adapter and unregistering list observer");
mPager.setAdapter(null);
@@ -128,6 +133,7 @@
if (mPagerAdapter != null) {
// stop observing the conversation list
mPagerAdapter.setListController(null);
+ mPagerAdapter.setPager(null);
mPagerAdapter = null;
}
}