mirror of https://github.com/tasks/tasks
Add CheckBoxProvider
parent
b8c98aa2f1
commit
0e967c0889
@ -0,0 +1,50 @@
|
||||
package org.tasks.ui
|
||||
|
||||
import android.content.Context
|
||||
import android.graphics.Bitmap
|
||||
import android.graphics.Canvas
|
||||
import android.graphics.drawable.Drawable
|
||||
import androidx.annotation.DrawableRes
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.graphics.drawable.DrawableCompat
|
||||
import com.todoroo.astrid.data.Task
|
||||
import org.tasks.R
|
||||
import org.tasks.injection.ForActivity
|
||||
import org.tasks.themes.ColorProvider
|
||||
import org.tasks.themes.DrawableUtil
|
||||
import javax.inject.Inject
|
||||
|
||||
class CheckBoxProvider @Inject constructor(@ForActivity private val context: Context, private val colorProvider: ColorProvider) {
|
||||
|
||||
fun getCheckBox(task: Task) = getCheckBox(task.isCompleted, task.isRecurring, task.priority)
|
||||
|
||||
fun getCheckBox(complete: Boolean, repeating: Boolean, priority: Int) =
|
||||
getDrawable(getDrawableRes(complete, repeating), priority)
|
||||
|
||||
fun getWidgetCheckBox(task: Task): Bitmap {
|
||||
val wrapped = DrawableUtil.getWrapped(context, getDrawableRes(task.isCompleted, task.isRecurring))
|
||||
DrawableUtil.setTint(wrapped, colorProvider.getPriorityColor(task.priority, false))
|
||||
return convertToBitmap(wrapped)
|
||||
}
|
||||
|
||||
private fun getDrawableRes(complete: Boolean, repeating: Boolean) = when {
|
||||
complete -> R.drawable.ic_outline_check_box_24px
|
||||
repeating -> R.drawable.ic_outline_repeat_24px
|
||||
else -> R.drawable.ic_outline_check_box_outline_blank_24px
|
||||
}
|
||||
|
||||
private fun getDrawable(@DrawableRes resId: Int, priority: Int): Drawable {
|
||||
val original = ContextCompat.getDrawable(context, resId)
|
||||
val wrapped = DrawableCompat.wrap(original!!.mutate())
|
||||
DrawableCompat.setTint(wrapped, colorProvider.getPriorityColor(priority))
|
||||
return wrapped
|
||||
}
|
||||
|
||||
private fun convertToBitmap(d: Drawable): Bitmap {
|
||||
val bitmap = Bitmap.createBitmap(d.intrinsicWidth, d.intrinsicHeight, Bitmap.Config.ARGB_8888)
|
||||
val canvas = Canvas(bitmap)
|
||||
d.setBounds(0, 0, canvas.width, canvas.height)
|
||||
d.draw(canvas)
|
||||
return bitmap
|
||||
}
|
||||
}
|
@ -1,96 +0,0 @@
|
||||
package org.tasks.ui;
|
||||
|
||||
import static androidx.core.content.ContextCompat.getColor;
|
||||
|
||||
import android.content.Context;
|
||||
import android.graphics.Bitmap;
|
||||
import android.graphics.Canvas;
|
||||
import android.graphics.drawable.Drawable;
|
||||
import androidx.annotation.ColorRes;
|
||||
import androidx.annotation.DrawableRes;
|
||||
import androidx.core.content.ContextCompat;
|
||||
import androidx.core.graphics.drawable.DrawableCompat;
|
||||
import com.todoroo.astrid.data.Task;
|
||||
import org.tasks.R;
|
||||
import org.tasks.themes.DrawableUtil;
|
||||
|
||||
public class CheckBoxes {
|
||||
|
||||
private CheckBoxes() {}
|
||||
|
||||
private @ColorRes static int getPriorityResId(int priority) {
|
||||
if (priority <= 0) {
|
||||
return R.color.priority_1;
|
||||
} else if (priority == 1) {
|
||||
return R.color.priority_2;
|
||||
} else if (priority == 2) {
|
||||
return R.color.priority_3;
|
||||
} else {
|
||||
return R.color.priority_4;
|
||||
}
|
||||
}
|
||||
|
||||
private @ColorRes static int getWidgetPriorityResId(int priority) {
|
||||
if (priority <= 0) {
|
||||
return R.color.widget_priority_1;
|
||||
} else if (priority == 1) {
|
||||
return R.color.widget_priority_2;
|
||||
} else if (priority == 2) {
|
||||
return R.color.widget_priority_3;
|
||||
} else {
|
||||
return R.color.priority_4;
|
||||
}
|
||||
}
|
||||
|
||||
private static Bitmap convertToBitmap(Drawable d) {
|
||||
Bitmap bitmap =
|
||||
Bitmap.createBitmap(d.getIntrinsicWidth(), d.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
|
||||
Canvas canvas = new Canvas(bitmap);
|
||||
d.setBounds(0, 0, canvas.getWidth(), canvas.getHeight());
|
||||
d.draw(canvas);
|
||||
return bitmap;
|
||||
}
|
||||
|
||||
private static @DrawableRes int getDrawable(Task task) {
|
||||
if (task.isCompleted()) {
|
||||
return R.drawable.ic_outline_check_box_24px;
|
||||
} else if (task.isRecurring()) {
|
||||
return R.drawable.ic_outline_repeat_24px;
|
||||
} else {
|
||||
return R.drawable.ic_outline_check_box_outline_blank_24px;
|
||||
}
|
||||
}
|
||||
|
||||
public static Bitmap getWidgetCheckBox(Context context, Task task) {
|
||||
Drawable wrapped = DrawableUtil.getWrapped(context, getDrawable(task));
|
||||
int color = getWidgetPriorityResId(task.getPriority());
|
||||
DrawableUtil.setTint(wrapped, ContextCompat.getColor(context, color));
|
||||
return convertToBitmap(wrapped);
|
||||
}
|
||||
|
||||
public static Drawable getCheckBox(Context context, Task task) {
|
||||
return getCheckBox(context, task.isCompleted(), task.isRecurring(), task.getPriority());
|
||||
}
|
||||
|
||||
public static Drawable getCheckBox(
|
||||
Context context, boolean complete, boolean repeating, int priority) {
|
||||
if (complete) {
|
||||
return getDrawable(context, R.drawable.ic_outline_check_box_24px, priority);
|
||||
} else if (repeating) {
|
||||
return getDrawable(context, R.drawable.ic_outline_repeat_24px, priority);
|
||||
} else {
|
||||
return getDrawable(context, R.drawable.ic_outline_check_box_outline_blank_24px, priority);
|
||||
}
|
||||
}
|
||||
|
||||
private static Drawable getDrawable(Context context, @DrawableRes int resId, int priority) {
|
||||
Drawable original = ContextCompat.getDrawable(context, resId);
|
||||
Drawable wrapped = DrawableCompat.wrap(original.mutate());
|
||||
DrawableCompat.setTint(wrapped, getColor(context, getPriorityResId(priority)));
|
||||
return wrapped;
|
||||
}
|
||||
|
||||
public static int getPriorityColor(Context context, int priority) {
|
||||
return getColor(context, getPriorityResId(priority));
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue