diff options
author | Stefan Niedermann <info@niedermann.it> | 2020-06-02 10:28:21 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2020-06-02 10:28:21 +0300 |
commit | d08bd12498a6d2097571c42477b7a5131af6d291 (patch) | |
tree | d640b62c7e7977bc19641ad2a09424fedb9b0bbf /app/src | |
parent | 13259b5e908154281c3285614aafb3333ba6cea4 (diff) |
Proper tinting of menu icons
Diffstat (limited to 'app/src')
8 files changed, 68 insertions, 10 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/MultiSelectedActionModeCallback.java b/app/src/main/java/it/niedermann/owncloud/notes/android/MultiSelectedActionModeCallback.java index 20879e9a..d3e20928 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/MultiSelectedActionModeCallback.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/MultiSelectedActionModeCallback.java @@ -1,13 +1,17 @@ package it.niedermann.owncloud.notes.android; import android.content.Context; +import android.graphics.drawable.Drawable; +import android.util.TypedValue; import android.view.Menu; import android.view.MenuItem; import android.view.View; +import androidx.annotation.ColorInt; import androidx.appcompat.view.ActionMode; import androidx.appcompat.view.ActionMode.Callback; import androidx.appcompat.widget.SearchView; +import androidx.core.graphics.drawable.DrawableCompat; import androidx.fragment.app.FragmentManager; import androidx.recyclerview.widget.RecyclerView; @@ -31,6 +35,9 @@ import it.niedermann.owncloud.notes.persistence.NotesDatabase; public class MultiSelectedActionModeCallback implements Callback { + @ColorInt + private int colorAccent; + private final Context context; private final ViewProvider viewProvider; private final NotesDatabase db; @@ -50,12 +57,24 @@ public class MultiSelectedActionModeCallback implements Callback { this.refreshLists = refreshLists; this.fragmentManager = fragmentManager; this.searchView = searchView; + + final TypedValue typedValue = new TypedValue(); + context.getTheme().resolveAttribute(R.attr.colorAccent, typedValue, true); + colorAccent = typedValue.data; } @Override public boolean onCreateActionMode(ActionMode mode, Menu menu) { // inflate contextual menu mode.getMenuInflater().inflate(R.menu.menu_list_context_multiple, menu); + for (int i = 0; i < menu.size(); i++) { + Drawable drawable = menu.getItem(i).getIcon(); + if (drawable != null) { + drawable = DrawableCompat.wrap(drawable); + DrawableCompat.setTint(drawable, colorAccent); + menu.getItem(i).setIcon(drawable); + } + } return true; } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java index 5197c1cb..44051719 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/EditNoteActivity.java @@ -274,5 +274,6 @@ public class EditNoteActivity extends LockedActivity implements BaseNoteFragment @Override public void applyBrand(int mainColor, int textColor) { + applyBrandToPrimaryToolbar(binding.toolbar); } }
\ No newline at end of file diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java index 718c3df0..6797694b 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/NotesListViewActivity.java @@ -447,6 +447,7 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi @Override public void applyBrand(int mainColor, int textColor) { + applyBrandToPrimaryToolbar(activityBinding.toolbar); applyBrandToFAB(mainColor, textColor, activityBinding.fabCreate); // TODO We assume, that the background of the spinner is always white @@ -464,12 +465,6 @@ public class NotesListViewActivity extends LockedActivity implements NoteClickLi binding.account.setShadowLayer(2, 0.5f, 0, Color.BLACK); } -// final Drawable overflowDrawable = binding.accountArrow.getDrawable(); -// if (overflowDrawable != null) { -// overflowDrawable.setColorFilter(textColor, PorterDuff.Mode.SRC_ATOP); -// binding.accountArrow.setImageDrawable(overflowDrawable); -// } - adapter.applyBrand(mainColor, textColor); adapterCategories.applyBrand(mainColor, textColor); invalidateOptionsMenu(); diff --git a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java index 3b32ea22..ec1566b2 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/android/activity/PreferencesActivity.java @@ -32,5 +32,6 @@ public class PreferencesActivity extends LockedActivity { @Override public void applyBrand(int mainColor, int textColor) { + applyBrandToPrimaryToolbar(binding.toolbar); } } diff --git a/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedActivity.java b/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedActivity.java index c47aac9b..a002a011 100644 --- a/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedActivity.java +++ b/app/src/main/java/it/niedermann/owncloud/notes/branding/BrandedActivity.java @@ -1,16 +1,25 @@ package it.niedermann.owncloud.notes.branding; import android.content.res.ColorStateList; +import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; +import android.util.TypedValue; +import android.view.Menu; import androidx.annotation.ColorInt; import androidx.annotation.NonNull; import androidx.appcompat.app.AppCompatActivity; +import androidx.appcompat.widget.Toolbar; +import androidx.core.graphics.drawable.DrawableCompat; import com.google.android.material.floatingactionbutton.FloatingActionButton; +import it.niedermann.owncloud.notes.R; + public abstract class BrandedActivity extends AppCompatActivity implements Branded { - private static final String TAG = BrandedActivity.class.getSimpleName(); + @ColorInt + protected int colorAccent; public static void applyBrandToFAB(@ColorInt int mainColor, @ColorInt int textColor, @NonNull FloatingActionButton fab) { fab.setSupportBackgroundTintList(ColorStateList.valueOf(mainColor)); @@ -21,10 +30,42 @@ public abstract class BrandedActivity extends AppCompatActivity implements Brand protected void onStart() { super.onStart(); + final TypedValue typedValue = new TypedValue(); + getTheme().resolveAttribute(R.attr.colorAccent, typedValue, true); + colorAccent = typedValue.data; + if (BrandingUtil.isBrandingEnabled(this)) { @ColorInt final int mainColor = BrandingUtil.readBrandMainColor(this); @ColorInt final int textColor = BrandingUtil.readBrandTextColor(this); applyBrand(mainColor, textColor); } } + + @Override + public boolean onCreateOptionsMenu(Menu menu) { + for (int i = 0; i < menu.size(); i++) { + Drawable drawable = menu.getItem(i).getIcon(); + if (drawable != null) { + drawable = DrawableCompat.wrap(drawable); + DrawableCompat.setTint(drawable, colorAccent); + menu.getItem(i).setIcon(drawable); + } + } + return super.onCreateOptionsMenu(menu); + } + + public void applyBrandToPrimaryToolbar(@NonNull Toolbar toolbar) { + final Drawable overflowDrawable = toolbar.getOverflowIcon(); + if (overflowDrawable != null) { + overflowDrawable.setColorFilter(colorAccent, PorterDuff.Mode.SRC_ATOP); + toolbar.setOverflowIcon(overflowDrawable); + } + + final Drawable navigationDrawable = toolbar.getNavigationIcon(); + if (navigationDrawable != null) { + navigationDrawable.setColorFilter(colorAccent, PorterDuff.Mode.SRC_ATOP); + toolbar.setNavigationIcon(navigationDrawable); + } + } + } diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index d6e01cf9..8ad3ae12 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -3,7 +3,7 @@ <!-- Colors --> <color name="primary">#121212</color> - <color name="contrast">#f5f5f5</color> + <color name="accent">#f5f5f5</color> <color name="bg_highlighted">#2a2a2a</color> <color name="bg_normal">#121212</color> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index e56f4e2e..df747d51 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -3,7 +3,7 @@ <!-- Colors --> <color name="primary">#ffffff</color> - <color name="contrast">#121212</color> + <color name="accent">#121212</color> <color name="defaultBrand">#0082C9</color> diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 1e834fe2..f51ab591 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -4,10 +4,11 @@ <style name="AppTheme" parent="Theme.MaterialComponents.DayNight.NoActionBar.Bridge"> <item name="windowActionModeOverlay">true</item> <item name="colorPrimary">@color/primary</item> - <item name="colorAccent">@color/contrast</item> + <item name="colorAccent">@color/accent</item> <item name="android:statusBarColor" tools:targetApi="lollipop">?attr/colorPrimary</item> <item name="android:windowLightStatusBar" tools:targetApi="m">@bool/isDayMode</item> <item name="android:actionModeBackground">?attr/colorPrimary</item> + <item name="colorControlNormal">?attr/colorAccent</item> </style> <style name="fab"> |