diff --git a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.java b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.java index 30b98be7d..b2e25686b 100644 --- a/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.java +++ b/app/src/main/java/com/todoroo/astrid/adapter/FilterViewHolder.java @@ -1,6 +1,5 @@ package com.todoroo.astrid.adapter; -import static androidx.core.content.ContextCompat.getColor; import static com.todoroo.andlib.utility.AndroidUtilities.preLollipop; import android.app.Activity; @@ -32,6 +31,7 @@ import org.tasks.sync.SynchronizationPreferences; import org.tasks.themes.CustomIcons; import org.tasks.themes.ThemeAccent; import org.tasks.themes.ThemeCache; +import org.tasks.themes.ThemeColor; public class FilterViewHolder extends RecyclerView.ViewHolder { @@ -119,11 +119,7 @@ public class FilterViewHolder extends RecyclerView.ViewHolder { } icon.setImageResource(getIcon(filter)); - icon.setColorFilter( - filter.tint >= 0 - ? themeCache.getThemeColor(filter.tint).getPrimaryColor() - : getColor(activity, R.color.text_primary)); - + icon.setColorFilter(getColor(filter)); text.setText(filter.listingTitle); if (count == null || count == 0) { @@ -138,6 +134,16 @@ public class FilterViewHolder extends RecyclerView.ViewHolder { } } + private int getColor(FilterListItem filter) { + if (filter.tint >= 0) { + ThemeColor color = themeCache.getThemeColor(filter.tint); + if (color.isFree() || inventory.purchasedThemes()) { + return color.getPrimaryColor(); + } + } + return ContextCompat.getColor(activity, R.color.text_primary); + } + private int getIcon(FilterListItem filter) { if (filter.icon < 1000 || inventory.hasPro()) { Integer icon = CustomIcons.getIconResId(filter.icon); diff --git a/app/src/main/java/org/tasks/ui/ChipProvider.java b/app/src/main/java/org/tasks/ui/ChipProvider.java index c905ea3de..bc9975a2c 100644 --- a/app/src/main/java/org/tasks/ui/ChipProvider.java +++ b/app/src/main/java/org/tasks/ui/ChipProvider.java @@ -24,6 +24,7 @@ import java.util.Map; import javax.inject.Inject; import org.tasks.LocalBroadcastManager; import org.tasks.R; +import org.tasks.billing.Inventory; import org.tasks.data.CaldavCalendar; import org.tasks.data.CaldavDao; import org.tasks.data.GoogleTaskList; @@ -41,6 +42,7 @@ public class ChipProvider { private final Map googleTaskLists = new HashMap<>(); private final Map caldavCalendars = new HashMap<>(); private final Map tagDatas = new HashMap<>(); + private final Inventory inventory; private final ThemeCache themeCache; private final int iconAlpha; private final LocalBroadcastManager localBroadcastManager; @@ -55,11 +57,13 @@ public class ChipProvider { @Inject public ChipProvider( @ForApplication Context context, + Inventory inventory, ThemeCache themeCache, GoogleTaskListDao googleTaskListDao, CaldavDao caldavDao, TagDataDao tagDataDao, LocalBroadcastManager localBroadcastManager) { + this.inventory = inventory; this.themeCache = themeCache; this.localBroadcastManager = localBroadcastManager; iconAlpha = (int) (255 * getDimen(context, R.dimen.alpha_secondary)); @@ -145,7 +149,7 @@ public class ChipProvider { } private void apply(Chip chip, String name, int theme) { - ThemeColor color = theme >= 0 ? themeCache.getThemeColor(theme) : themeCache.getUntaggedColor(); + ThemeColor color = getColor(theme); chip.setText(name); chip.setCloseIconTint( new ColorStateList(new int[][] {new int[] {}}, new int[] {color.getActionBarTint()})); @@ -158,4 +162,14 @@ public class ChipProvider { }, new int[] {color.getPrimaryColor(), color.getPrimaryColor()})); } + + private ThemeColor getColor(int theme) { + if (theme >= 0) { + ThemeColor color = themeCache.getThemeColor(theme); + if (color.isFree() || inventory.purchasedThemes()) { + return color; + } + } + return themeCache.getUntaggedColor(); + } }