From 21c8051b022f0a3dcec690047882071b1060f6d8 Mon Sep 17 00:00:00 2001 From: Veeti Paananen Date: Wed, 8 Jul 2015 00:46:21 +0300 Subject: [PATCH] Use matching status bar color during action mode Closes #3552 FREEBIE. --- res/values/colors.xml | 1 + .../securesms/ConversationFragment.java | 14 ++++++++++++++ .../securesms/ConversationListFragment.java | 16 ++++++++++++++++ 3 files changed, 31 insertions(+) diff --git a/res/values/colors.xml b/res/values/colors.xml index f1483bc90a..b71862b422 100644 --- a/res/values/colors.xml +++ b/res/values/colors.xml @@ -32,6 +32,7 @@ #ff33b5e5 #ff111111 + #ff1f1f1f #400099cc #33ffffff #66ffffff diff --git a/src/org/thoughtcrime/securesms/ConversationFragment.java b/src/org/thoughtcrime/securesms/ConversationFragment.java index f8e20ab65e..bc987eb068 100644 --- a/src/org/thoughtcrime/securesms/ConversationFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationFragment.java @@ -6,6 +6,7 @@ import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.support.v4.app.ListFragment; import android.support.v4.app.LoaderManager; @@ -21,6 +22,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.Window; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; @@ -345,11 +347,19 @@ public class ConversationFragment extends ListFragment private class ActionModeCallback implements ActionMode.Callback { + private int statusBarColor; + @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { MenuInflater inflater = mode.getMenuInflater(); inflater.inflate(R.menu.conversation_context, menu); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + Window window = getActivity().getWindow(); + statusBarColor = window.getStatusBarColor(); + window.setStatusBarColor(getResources().getColor(R.color.action_mode_status_bar)); + } + setCorrectMenuVisibility(menu); return true; } @@ -364,6 +374,10 @@ public class ConversationFragment extends ListFragment ((ConversationAdapter)getListAdapter()).getBatchSelected().clear(); ((ConversationAdapter)getListAdapter()).notifyDataSetChanged(); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getActivity().getWindow().setStatusBarColor(statusBarColor); + } + actionMode = null; } diff --git a/src/org/thoughtcrime/securesms/ConversationListFragment.java b/src/org/thoughtcrime/securesms/ConversationListFragment.java index de821e5a25..05db73ac5b 100644 --- a/src/org/thoughtcrime/securesms/ConversationListFragment.java +++ b/src/org/thoughtcrime/securesms/ConversationListFragment.java @@ -19,8 +19,11 @@ package org.thoughtcrime.securesms; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; +import android.content.res.TypedArray; import android.database.Cursor; +import android.graphics.Color; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.LoaderManager; @@ -267,6 +270,11 @@ public class ConversationListFragment extends Fragment mode.setTitle(R.string.conversation_fragment_cab__batch_selection_mode); mode.setSubtitle(null); + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + getActivity().getWindow() + .setStatusBarColor(getResources().getColor(R.color.action_mode_status_bar)); + } + return true; } @@ -288,6 +296,14 @@ public class ConversationListFragment extends Fragment @Override public void onDestroyActionMode(ActionMode mode) { getListAdapter().initializeBatchMode(false); + + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { + TypedArray color = getActivity().getTheme() + .obtainStyledAttributes(new int[] { android.R.attr.statusBarColor }); + getActivity().getWindow().setStatusBarColor(color.getColor(0, Color.BLACK)); + color.recycle(); + } + actionMode = null; }