mirror of https://github.com/tasks/tasks
Display list chips on widget
parent
5e7bf41cfd
commit
0783b3d4da
@ -0,0 +1,77 @@
|
||||
package org.tasks.widget
|
||||
|
||||
import android.content.Context
|
||||
import android.widget.RemoteViews
|
||||
import com.todoroo.astrid.api.CaldavFilter
|
||||
import com.todoroo.astrid.api.Filter
|
||||
import com.todoroo.astrid.api.GtasksFilter
|
||||
import dagger.hilt.android.qualifiers.ApplicationContext
|
||||
import org.tasks.BuildConfig
|
||||
import org.tasks.R
|
||||
import org.tasks.data.TaskContainer
|
||||
import org.tasks.themes.CustomIcons
|
||||
import org.tasks.ui.ChipListCache
|
||||
import javax.inject.Inject
|
||||
|
||||
class ChipProvider @Inject constructor(
|
||||
@ApplicationContext private val context: Context,
|
||||
private val chipListCache: ChipListCache,
|
||||
) {
|
||||
|
||||
var isDark = false
|
||||
|
||||
fun getSubtaskChip(task: TaskContainer): RemoteViews {
|
||||
val chip = newChip()
|
||||
chip.setTextViewText(
|
||||
R.id.chip_text,
|
||||
context
|
||||
.resources
|
||||
.getQuantityString(R.plurals.subtask_count, task.children, task.children)
|
||||
)
|
||||
chip.setImageViewResource(
|
||||
R.id.chip_icon,
|
||||
if (task.isCollapsed) {
|
||||
R.drawable.ic_keyboard_arrow_down_black_24dp
|
||||
} else {
|
||||
R.drawable.ic_keyboard_arrow_up_black_24dp
|
||||
}
|
||||
)
|
||||
return chip
|
||||
}
|
||||
|
||||
fun getListChip(filter: Filter?, task: TaskContainer): RemoteViews? {
|
||||
task.googleTaskList
|
||||
?.takeIf { filter !is GtasksFilter }
|
||||
?.let { newChip(chipListCache.getGoogleTaskList(it), R.drawable.ic_list_24px) }
|
||||
?.let { return it }
|
||||
task.caldav
|
||||
?.takeIf { filter !is CaldavFilter }
|
||||
?.let { newChip(chipListCache.getCaldavList(it), R.drawable.ic_list_24px) }
|
||||
?.let { return it }
|
||||
return null
|
||||
}
|
||||
|
||||
private fun newChip(filter: Filter?, defaultIcon: Int): RemoteViews? {
|
||||
if (filter == null) {
|
||||
return null
|
||||
}
|
||||
val chip = newChip()
|
||||
chip.setTextViewText(R.id.chip_text, filter.listingTitle)
|
||||
val icon = filter.icon
|
||||
.takeIf { it >= 0 }
|
||||
?.let { CustomIcons.getIconResId(it) }
|
||||
?: defaultIcon
|
||||
chip.setImageViewResource(R.id.chip_icon, icon)
|
||||
if (filter.tint != 0) {
|
||||
chip.setInt(R.id.chip_background, "setColorFilter", filter.tint)
|
||||
chip.setTextColor(R.id.chip_text, filter.tint)
|
||||
chip.setInt(R.id.chip_icon, "setColorFilter", filter.tint)
|
||||
}
|
||||
return chip
|
||||
}
|
||||
|
||||
private fun newChip() = RemoteViews(
|
||||
BuildConfig.APPLICATION_ID,
|
||||
if (isDark) R.layout.widget_chip_dark else R.layout.widget_chip_light
|
||||
)
|
||||
}
|
||||
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/chip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chip_icon"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:tint="@color/icon_tint_dark_alpha"
|
||||
tools:src="@drawable/ic_keyboard_arrow_up_black_24dp"
|
||||
tools:ignore="UseAppTint" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/chip_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_toEndOf="@id/chip_icon"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:paddingBottom="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:textColor="@color/white_60"
|
||||
tools:text="4 subtasks"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chip_background"
|
||||
android:src="@drawable/widget_chip_dark_bg"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignBottom="@id/chip_text"
|
||||
android:layout_alignEnd="@id/chip_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</RelativeLayout>
|
||||
@ -0,0 +1,48 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/chip"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginTop="2dp"
|
||||
android:layout_marginEnd="2dp"
|
||||
android:orientation="horizontal">
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chip_icon"
|
||||
android:layout_width="20dp"
|
||||
android:layout_height="20dp"
|
||||
android:paddingTop="2dp"
|
||||
android:paddingStart="5dp"
|
||||
android:paddingEnd="0dp"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:tint="@color/icon_tint_light_alpha"
|
||||
tools:src="@drawable/ic_keyboard_arrow_up_black_24dp"
|
||||
tools:ignore="UseAppTint" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/chip_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_gravity="center_vertical"
|
||||
android:layout_toEndOf="@id/chip_icon"
|
||||
android:textSize="14sp"
|
||||
android:maxLines="1"
|
||||
android:ellipsize="end"
|
||||
android:paddingBottom="2dp"
|
||||
android:paddingStart="2dp"
|
||||
android:paddingEnd="8dp"
|
||||
android:textColor="@color/black_60"
|
||||
tools:text="4 subtasks"/>
|
||||
|
||||
<ImageView
|
||||
android:id="@+id/chip_background"
|
||||
android:src="@drawable/widget_chip_light_bg"
|
||||
android:layout_alignParentStart="true"
|
||||
android:layout_alignParentTop="true"
|
||||
android:layout_alignBottom="@id/chip_text"
|
||||
android:layout_alignEnd="@id/chip_text"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content" />
|
||||
|
||||
</RelativeLayout>
|
||||
Loading…
Reference in New Issue