diff --git a/res/values/attrs.xml b/res/values/attrs.xml
index 7fa1032e9..0ab5e116a 100644
--- a/res/values/attrs.xml
+++ b/res/values/attrs.xml
@@ -48,6 +48,7 @@
+
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 7e10e1f56..0c9ea41be 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -47,6 +47,7 @@
- #00ffffff
- ?android:attr/colorBackground
- @drawable/thread_count_box_light
+ - #ff2ea7d1
+
diff --git a/src/com/fsck/k9/activity/MessageList.java b/src/com/fsck/k9/activity/MessageList.java
index 44c164e77..cf3a45b15 100644
--- a/src/com/fsck/k9/activity/MessageList.java
+++ b/src/com/fsck/k9/activity/MessageList.java
@@ -627,6 +627,8 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
ft.replace(R.id.message_view_container, fragment);
mMessageViewFragment = fragment;
ft.commit();
+
+ mMessageListFragment.setActiveMessage(messageReference);
}
}
@@ -763,6 +765,8 @@ public class MessageList extends K9FragmentActivity implements MessageListFragme
if (mMessageViewPlaceHolder.getParent() == null) {
mMessageViewContainer.addView(mMessageViewPlaceHolder);
}
+
+ mMessageListFragment.setActiveMessage(null);
}
@Override
diff --git a/src/com/fsck/k9/fragment/MessageListFragment.java b/src/com/fsck/k9/fragment/MessageListFragment.java
index 92452f01f..2666f3cd1 100644
--- a/src/com/fsck/k9/fragment/MessageListFragment.java
+++ b/src/com/fsck/k9/fragment/MessageListFragment.java
@@ -310,6 +310,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
private static final String ARG_IS_THREAD_DISPLAY = "isThreadedDisplay";
private static final String STATE_SELECTED_MESSAGES = "selectedMessages";
+ private static final String STATE_ACTIVE_MESSAGE = "activeMessage";
private static final String STATE_REMOTE_SEARCH_PERFORMED = "remoteSearchPerformed";
/**
@@ -413,6 +414,8 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
private Preferences mPreferences;
+ private MessageReference mActiveMessage;
+
/**
* This class is used to run operations that modify UI elements in the UI thread.
*
@@ -751,6 +754,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
saveSelectedMessages(outState);
outState.putBoolean(STATE_REMOTE_SEARCH_PERFORMED, mRemoteSearchPerformed);
+ outState.putParcelable(STATE_ACTIVE_MESSAGE, mActiveMessage);
}
/**
@@ -766,6 +770,7 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
restoreSelectedMessages(savedInstanceState);
mRemoteSearchPerformed = savedInstanceState.getBoolean(STATE_REMOTE_SEARCH_PERFORMED);
+ mActiveMessage = savedInstanceState.getParcelable(STATE_ACTIVE_MESSAGE);
}
/**
@@ -1751,6 +1756,21 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
view.setBackgroundColor(outValue.data);
}
+ if (mActiveMessage != null) {
+ String uid = cursor.getString(UID_COLUMN);
+ String folderName = cursor.getString(FOLDER_NAME_COLUMN);
+
+ if (account.getUuid().equals(mActiveMessage.accountUuid) &&
+ folderName.equals(mActiveMessage.folderName) &&
+ uid.equals(mActiveMessage.uid)) {
+ int res = R.attr.messageListActiveItemBackgroundColor;
+
+ TypedValue outValue = new TypedValue();
+ getActivity().getTheme().resolveAttribute(res, outValue, true);
+ view.setBackgroundColor(outValue.data);
+ }
+ }
+
// Thread count
if (threadCount > 1) {
holder.threadCount.setText(Integer.toString(threadCount));
@@ -3135,4 +3155,22 @@ public class MessageListFragment extends SherlockFragment implements OnItemClick
private void remoteSearchFinished() {
mRemoteSearchFuture = null;
}
+
+ /**
+ * Mark a message as 'active'.
+ *
+ *
+ * The active message is the one currently displayed in the message view portion of the split
+ * view.
+ *
+ *
+ * @param messageReference
+ * {@code null} to not mark any message as being 'active'.
+ */
+ public void setActiveMessage(MessageReference messageReference) {
+ mActiveMessage = messageReference;
+ if (mAdapter != null) {
+ mAdapter.notifyDataSetChanged();
+ }
+ }
}