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;
import static org.tasks.dialogs.IconPickerDialog.newIconPicker;
import static org.tasks.themes.DrawableUtil.getLeftDrawable;
import static org.tasks.themes.ThemeColor.newThemeColor;
import android.content.DialogInterface;
@ -9,7 +10,7 @@ import android.graphics.drawable.LayerDrawable;
import android.os.Bundle;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.appcompat.widget.Toolbar;
import androidx.appcompat.widget.Toolbar.OnMenuItemClickListener;
import androidx.core.content.ContextCompat;
@ -19,28 +20,36 @@ import butterknife.ButterKnife;
import butterknife.OnClick;
import javax.inject.Inject;
import org.tasks.R;
import org.tasks.dialogs.ColorWheelPicker;
import org.tasks.dialogs.ColorPalettePicker;
import org.tasks.dialogs.ColorWheelPicker;
import org.tasks.dialogs.DialogBuilder;
import org.tasks.dialogs.IconPickerDialog.IconPickerCallback;
import org.tasks.injection.ThemedInjectingAppCompatActivity;
import org.tasks.themes.CustomIcons;
import org.tasks.themes.DrawableUtil;
import org.tasks.themes.ThemeColor;
public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatActivity
implements IconPickerCallback, OnMenuItemClickListener, ColorPalettePicker.ColorPickedCallback,
ColorWheelPicker.ColorPickedCallback {
implements IconPickerCallback,
OnMenuItemClickListener,
ColorPalettePicker.ColorPickedCallback,
ColorWheelPicker.ColorPickedCallback {
private static final String EXTRA_SELECTED_THEME = "extra_selected_theme";
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_COLOR_PICKER = "frag_tag_color_picker";
protected int selectedColor = 0;
protected int selectedIcon = -1;
@BindView(R.id.clear)
View clear;
@BindView(R.id.color)
ImageView color;
TextView color;
@BindView(R.id.icon)
ImageView icon;
TextView icon;
@BindView(R.id.toolbar)
Toolbar toolbar;
@ -48,9 +57,6 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
@Inject ThemeColor themeColor;
@Inject DialogBuilder dialogBuilder;
protected int selectedColor = 0;
protected int selectedIcon = -1;
@Override
protected void onCreate(Bundle 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)
protected void showThemePicker() {
ColorWheelPicker.Companion.newColorWheel(null, 0, selectedColor)
@ -146,23 +157,24 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
protected void promptDelete() {
dialogBuilder
.newDialog(R.string.delete_tag_confirmation, getToolbarTitle())
.setPositiveButton(
R.string.delete,
(dialog, which) -> delete())
.setPositiveButton(R.string.delete, (dialog, which) -> delete())
.setNegativeButton(android.R.string.cancel, null)
.show();
}
protected void updateTheme() {
ThemeColor themeColor;
DrawableUtil.setLeftDrawable(this, color, R.drawable.color_picker);
Drawable leftDrawable = getLeftDrawable(color);
if (selectedColor == 0) {
themeColor = this.themeColor;
color.setVisibility(View.GONE);
DrawableCompat.setTint(leftDrawable, ContextCompat.getColor(this, android.R.color.transparent));
clear.setVisibility(View.GONE);
} else {
themeColor = newThemeColor(this, selectedColor);
Drawable drawable = color.getDrawable();
DrawableCompat.setTint(((LayerDrawable) drawable).getDrawable(0), themeColor.getPrimaryColor());
color.setVisibility(View.VISIBLE);
DrawableCompat.setTint(
((LayerDrawable) leftDrawable).getDrawable(0), themeColor.getPrimaryColor());
clear.setVisibility(View.VISIBLE);
}
themeColor.apply(toolbar);
themeColor.applyToSystemBars(this);
@ -170,6 +182,8 @@ public abstract class BaseListSettingsActivity extends ThemedInjectingAppCompatA
if (icon == null) {
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"
android:background="?attr/selectableItemBackground">
<ImageView
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"/>
<include layout="@layout/control_set_clear_button" />
<TextView
android:id="@+id/color"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@id/color"
android:layout_toStartOf="@id/color"
android:layout_toLeftOf="@id/clear"
android:layout_toStartOf="@id/clear"
android:drawablePadding="@dimen/keyline_second"
android:contentDescription="@string/color"
android:text="@string/color"
android:textSize="18sp"/>

@ -5,24 +5,13 @@
style="@style/TagSettingsRow"
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
android:id="@+id/icon"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_toLeftOf="@id/icon"
android:layout_toStartOf="@id/icon"
android:drawablePadding="@dimen/keyline_second"
android:contentDescription="@string/icon"
android:text="@string/icon"
android:textSize="18sp"/>

Loading…
Cancel
Save