Add share indicator to navigation drawer

pull/1387/head
Alex Baker 3 years ago
parent 152b6dd034
commit b81acb70ca

@ -38,6 +38,9 @@ class FilterViewHolder internal constructor(
@BindView(R.id.size)
lateinit var size: TextView
@BindView(R.id.share_indicator)
lateinit var shareIndicator: ImageView
lateinit var filter: FilterListItem
init {
@ -63,11 +66,12 @@ class FilterViewHolder internal constructor(
this.icon.drawable.setTint(getColor(filter))
text.text = filter.listingTitle
if (count == null || count == 0) {
size.visibility = View.GONE
size.visibility = View.INVISIBLE
} else {
size.text = locale.formatNumber(count)
size.visibility = View.VISIBLE
}
shareIndicator.visibility = if (filter.shared) View.VISIBLE else View.GONE
if (onClick != null) {
row.setOnClickListener {
onClick.invoke(filter)

@ -8,11 +8,14 @@ package com.todoroo.astrid.api;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.LayoutRes;
import androidx.annotation.NonNull;
import java.util.Objects;
import org.tasks.R;
import java.util.Objects;
/**
* Represents an item displayed by Astrid's FilterListActivity
*
@ -29,6 +32,7 @@ public abstract class FilterListItem implements Parcelable {
public int icon = -1;
public int tint = 0;
public int count = -1;
public boolean shared = false;
public int order = NO_ORDER;
public abstract Type getItemType();

@ -237,12 +237,17 @@ SELECT EXISTS(SELECT 1
@Query("SELECT DISTINCT cd_calendar FROM caldav_tasks WHERE cd_deleted = 0 AND cd_task IN (:tasks)")
abstract suspend fun getCalendars(tasks: List<Long>): List<String>
@Query("SELECT caldav_lists.*, COUNT(tasks._id) AS count"
+ " FROM caldav_lists"
+ " LEFT JOIN caldav_tasks ON caldav_tasks.cd_calendar = caldav_lists.cdl_uuid"
+ " LEFT JOIN tasks ON caldav_tasks.cd_task = tasks._id AND tasks.deleted = 0 AND tasks.completed = 0 AND tasks.hideUntil < :now AND cd_deleted = 0"
+ " WHERE caldav_lists.cdl_account = :uuid"
+ " GROUP BY caldav_lists.cdl_uuid")
@Query("""
SELECT caldav_lists.*, COUNT(tasks._id) AS count, COUNT(principals.principal_id) AS principals
FROM caldav_lists
LEFT JOIN caldav_tasks
ON caldav_tasks.cd_calendar = caldav_lists.cdl_uuid
LEFT JOIN tasks ON caldav_tasks.cd_task = tasks._id AND tasks.deleted = 0 AND tasks.completed = 0 AND
tasks.hideUntil < :now AND cd_deleted = 0
LEFT JOIN principals ON caldav_lists.cdl_id = principals.principal_list
WHERE caldav_lists.cdl_account = :uuid
GROUP BY caldav_lists.cdl_uuid
""")
abstract suspend fun getCaldavFilters(uuid: String, now: Long = currentTimeMillis()): List<CaldavFilters>
@Query("UPDATE tasks SET parent = IFNULL(("

@ -1,17 +1,22 @@
package org.tasks.filters;
import androidx.room.Embedded;
import com.todoroo.astrid.api.CaldavFilter;
import java.util.Objects;
import org.tasks.data.CaldavCalendar;
import java.util.Objects;
public class CaldavFilters {
@Embedded public CaldavCalendar caldavCalendar;
public int count;
public int principals;
CaldavFilter toCaldavFilter() {
CaldavFilter filter = new CaldavFilter(caldavCalendar);
filter.count = count;
filter.shared = principals > 0;
return filter;
}

@ -203,7 +203,8 @@ object CustomIcons {
1178 to R.drawable.ic_local_atm_24px,
1179 to R.drawable.ic_cleaning_services_24px,
1180 to R.drawable.ic_plumbing_24px,
1181 to R.drawable.ic_pest_control_rodent_24px
1181 to R.drawable.ic_pest_control_rodent_24px,
1182 to R.drawable.ic_outline_people_outline_24,
)
@JvmStatic

@ -0,0 +1,10 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24"
android:tint="?attr/colorControlNormal">
<path
android:fillColor="@android:color/white"
android:pathData="M9,13.75c-2.34,0 -7,1.17 -7,3.5L2,19h14v-1.75c0,-2.33 -4.66,-3.5 -7,-3.5zM4.34,17c0.84,-0.58 2.87,-1.25 4.66,-1.25s3.82,0.67 4.66,1.25L4.34,17zM9,12c1.93,0 3.5,-1.57 3.5,-3.5S10.93,5 9,5 5.5,6.57 5.5,8.5 7.07,12 9,12zM9,7c0.83,0 1.5,0.67 1.5,1.5S9.83,10 9,10s-1.5,-0.67 -1.5,-1.5S8.17,7 9,7zM16.04,13.81c1.16,0.84 1.96,1.96 1.96,3.44L18,19h4v-1.75c0,-2.02 -3.5,-3.17 -5.96,-3.44zM15,12c1.93,0 3.5,-1.57 3.5,-3.5S16.93,5 15,5c-0.54,0 -1.04,0.13 -1.5,0.35 0.63,0.89 1,1.98 1,3.15s-0.37,2.26 -1,3.15c0.46,0.22 0.96,0.35 1.5,0.35z"/>
</vector>

@ -1,15 +1,16 @@
<?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/row"
android:background="@drawable/drawer_background_selector"
android:foreground="?attr/selectableItemBackground"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingStart="@dimen/keyline_first"
android:paddingEnd="0dp">
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/row"
android:background="@drawable/drawer_background_selector"
android:foreground="?attr/selectableItemBackground"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="12dp"
android:paddingBottom="12dp"
android:paddingStart="@dimen/keyline_first"
android:paddingEnd="0dp">
<TextView
android:id="@+id/size"
@ -25,6 +26,16 @@
android:textColor="?android:attr/textColorSecondary"
tools:ignore="UnusedAttribute"/>
<ImageView
android:id="@+id/share_indicator"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toStartOf="@id/size"
android:scaleType="center"
android:src="@drawable/ic_outline_people_outline_24"
android:visibility="gone"
app:tint="@color/icon_tint_with_alpha" />
<ImageView
android:id="@+id/icon"
android:layout_width="wrap_content"
@ -41,7 +52,7 @@
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_toEndOf="@id/icon"
android:layout_toStartOf="@id/size"
android:layout_toStartOf="@id/share_indicator"
android:background="@null"
android:paddingStart="@dimen/keyline_second"
android:paddingEnd="@dimen/keyline_first"

Loading…
Cancel
Save