Update color and icon list settings layouts

pull/935/head
Alex Baker 6 years ago
parent 058377f94b
commit c386c4fca3

@ -1,6 +1,7 @@
package org.tasks.activities; package org.tasks.activities;
import static org.tasks.dialogs.IconPickerDialog.newIconPicker; import static org.tasks.dialogs.IconPickerDialog.newIconPicker;
import static org.tasks.themes.DrawableUtil.getLeftDrawable;
import static org.tasks.themes.ThemeColor.newThemeColor; import static org.tasks.themes.ThemeColor.newThemeColor;
import android.content.DialogInterface; import android.content.DialogInterface;
@ -9,7 +10,7 @@ import android.graphics.drawable.LayerDrawable;
import android.os.Bundle; import android.os.Bundle;
import android.view.MenuItem; import android.view.MenuItem;
import android.view.View; import android.view.View;
import android.widget.ImageView; import android.widget.TextView;
import androidx.appcompat.widget.Toolbar; import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener; import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener;
import androidx.core.content.ContextCompat; import androidx.core.content.ContextCompat;
@ -19,28 +20,36 @@ import butterknife.ButterKnife;
import butterknife.OnClick; import butterknife.OnClick;
import javax.inject.Inject; import javax.inject.Inject;
import org.tasks.R; import org.tasks.R;
import org.tasks.dialogs.ColorWheelPicker;
import org.tasks.dialogs.ColorPalettePicker; import org.tasks.dialogs.ColorPalettePicker;
import org.tasks.dialogs.ColorWheelPicker;
import org.tasks.dialogs.DialogBuilder; import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.IconPickerDialog.IconPickerCallback; import org.tasks.dialogs.IconPickerDialog.IconPickerCallback;
import org.tasks.injection.ThemedInjectingAppCompatActivity; import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.themes.CustomIcons; import org.tasks.themes.CustomIcons;
import org.tasks.themes.DrawableUtil;
import org.tasks.themes.ThemeColor; import org.tasks.themes.ThemeColor;
public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatActivity public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatActivity
implements IconPickerCallback, OnMenuItemClickListener, ColorPalettePicker.ColorPickedCallback, implements IconPickerCallback,
ColorWheelPicker.ColorPickedCallback { OnMenuItemClickListener,
ColorPalettePicker.ColorPickedCallback,
ColorWheelPicker.ColorPickedCallback {
private static final String EXTRA_SELECTED_THEME = "extra_selected_theme"; private static final String EXTRA_SELECTED_THEME = "extra_selected_theme";
private static final String EXTRA_SELECTED_ICON = "extra_selected_icon"; private static final String EXTRA_SELECTED_ICON = "extra_selected_icon";
private static final String FRAG_TAG_ICON_PICKER = "frag_tag_icon_picker"; private static final String FRAG_TAG_ICON_PICKER = "frag_tag_icon_picker";
private static final String FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker"; private static final String FRAG_TAG_COLOR_PICKER = "frag_tag_color_picker";
protected int selectedColor = 0;
protected int selectedIcon = -1;
@BindView(R.id.clear)
View clear;
@BindView(R.id.color) @BindView(R.id.color)
ImageView color; TextView color;
@BindView(R.id.icon) @BindView(R.id.icon)
ImageView icon; TextView icon;
@BindView(R.id.toolbar) @BindView(R.id.toolbar)
Toolbar toolbar; Toolbar toolbar;
@ -48,9 +57,6 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
@Inject ThemeColor themeColor; @Inject ThemeColor themeColor;
@Inject DialogBuilder dialogBuilder; @Inject DialogBuilder dialogBuilder;
protected int selectedColor = 0;
protected int selectedIcon = -1;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -110,6 +116,11 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
} }
} }
@OnClick(R.id.clear)
protected void clearColor() {
onColorPicked(0);
}
@OnClick(R.id.color_row) @OnClick(R.id.color_row)
protected void showThemePicker() { protected void showThemePicker() {
ColorWheelPicker.Companion.newColorWheel(null, 0, selectedColor) ColorWheelPicker.Companion.newColorWheel(null, 0, selectedColor)
@ -146,23 +157,24 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
protected void promptDelete() { protected void promptDelete() {
dialogBuilder dialogBuilder
.newDialog(R.string.delete_tag_confirmation, getToolbarTitle()) .newDialog(R.string.delete_tag_confirmation, getToolbarTitle())
.setPositiveButton( .setPositiveButton(R.string.delete, (dialog, which) -> delete())
R.string.delete,
(dialog, which) -> delete())
.setNegativeButton(android.R.string.cancel, null) .setNegativeButton(android.R.string.cancel, null)
.show(); .show();
} }
protected void updateTheme() { protected void updateTheme() {
ThemeColor themeColor; ThemeColor themeColor;
DrawableUtil.setLeftDrawable(this, color, R.drawable.color_picker);
Drawable leftDrawable = getLeftDrawable(color);
if (selectedColor == 0) { if (selectedColor == 0) {
themeColor = this.themeColor; themeColor = this.themeColor;
color.setVisibility(View.GONE); DrawableCompat.setTint(leftDrawable, ContextCompat.getColor(this, android.R.color.transparent));
clear.setVisibility(View.GONE);
} else { } else {
themeColor = newThemeColor(this, selectedColor); themeColor = newThemeColor(this, selectedColor);
Drawable drawable = color.getDrawable(); DrawableCompat.setTint(
DrawableCompat.setTint(((LayerDrawable) drawable).getDrawable(0), themeColor.getPrimaryColor()); ((LayerDrawable) leftDrawable).getDrawable(0), themeColor.getPrimaryColor());
color.setVisibility(View.VISIBLE); clear.setVisibility(View.VISIBLE);
} }
themeColor.apply(toolbar); themeColor.apply(toolbar);
themeColor.applyToSystemBars(this); themeColor.applyToSystemBars(this);
@ -170,6 +182,8 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
if (icon == null) { if (icon == null) {
icon = CustomIcons.getIconResId(CustomIcons.getCLOUD()); icon = CustomIcons.getIconResId(CustomIcons.getCLOUD());
} }
this.icon.setImageResource(icon == null ? R.drawable.ic_outline_cloud_24px : icon); DrawableUtil.setLeftDrawable(this, this.icon, icon);
DrawableCompat.setTint(
getLeftDrawable(this.icon), ContextCompat.getColor(this, R.color.icon_tint_with_alpha));
} }
} }

@ -0,0 +1,31 @@
package org.tasks.themes;
import static com.todoroo.andlib.utility.AndroidUtilities.atLeastJellybeanMR1;
import android.content.Context;
import android.graphics.drawable.Drawable;
import android.widget.TextView;
import androidx.annotation.DrawableRes;
import androidx.core.content.ContextCompat;
import androidx.core.graphics.drawable.DrawableCompat;
public class DrawableUtil {
public static Drawable getWrapped(Context context, @DrawableRes int resId) {
return DrawableCompat.wrap(ContextCompat.getDrawable(context, resId).mutate());
}
public static void setLeftDrawable(Context context, TextView tv, @DrawableRes int resId) {
Drawable wrapped = getWrapped(context, resId);
if (atLeastJellybeanMR1()) {
tv.setCompoundDrawablesRelativeWithIntrinsicBounds(wrapped, null, null, null);
} else {
tv.setCompoundDrawablesWithIntrinsicBounds(wrapped, null, null, null);
}
}
public static Drawable getLeftDrawable(TextView tv) {
return atLeastJellybeanMR1()
? tv.getCompoundDrawablesRelative()[0]
: tv.getCompoundDrawables()[0];
}
}

@ -5,24 +5,17 @@
style="@style/TagSettingsRow" style="@style/TagSettingsRow"
android:background="?attr/selectableItemBackground"> android:background="?attr/selectableItemBackground">
<ImageView <include layout="@layout/control_set_clear_button" />
android:id="@+id/color"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:alpha="@dimen/alpha_secondary"
android:contentDescription="@string/color"
android:src="@drawable/color_picker"/>
<TextView <TextView
android:id="@+id/color"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_toLeftOf="@id/color" android:layout_toLeftOf="@id/clear"
android:layout_toStartOf="@id/clear"
android:layout_toStartOf="@id/color" android:drawablePadding="@dimen/keyline_second"
android:contentDescription="@string/color" android:contentDescription="@string/color"
android:text="@string/color" android:text="@string/color"
android:textSize="18sp"/> android:textSize="18sp"/>

@ -5,24 +5,13 @@
style="@style/TagSettingsRow" style="@style/TagSettingsRow"
android:background="?attr/selectableItemBackground"> android:background="?attr/selectableItemBackground">
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:alpha="@dimen/alpha_secondary"
android:contentDescription="@string/icon"
android:src="@drawable/ic_outline_label_24px"
android:tint="@color/icon_tint"/>
<TextView <TextView
android:id="@+id/icon"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentLeft="true" android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" android:layout_alignParentStart="true"
android:layout_toLeftOf="@id/icon" android:drawablePadding="@dimen/keyline_second"
android:layout_toStartOf="@id/icon"
android:contentDescription="@string/icon" android:contentDescription="@string/icon"
android:text="@string/icon" android:text="@string/icon"
android:textSize="18sp"/> android:textSize="18sp"/>

Loading…
Cancel
Save