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(); + } + } }