Add count to filter list item

pull/848/head
Alex Baker 5 years ago
parent 54278e49e0
commit 4ca58fefa8

@ -142,7 +142,7 @@ public class NavigationDrawerAdapter extends ListAdapter<FilterListItem, FilterV
FilterListItem item = getItem(position);
Type type = item.getItemType();
if (type == ITEM) {
holder.bind(item, item.equals(selected), counts.get(item));
holder.bind(item, item.equals(selected), item.count >= 0 ? item.count : counts.get(item));
} else if (type == SUBHEADER) {
holder.bind((NavigationDrawerSubheader) item);
}

@ -6,7 +6,6 @@
package com.todoroo.astrid.api;
import android.content.Intent;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.annotation.LayoutRes;
@ -26,6 +25,7 @@ public abstract class FilterListItem implements Parcelable {
public int icon = 0;
public int tint = -1;
public int count = -1;
public abstract Type getItemType();
@ -40,8 +40,7 @@ public abstract class FilterListItem implements Parcelable {
dest.writeString(listingTitle);
dest.writeInt(icon);
dest.writeInt(tint);
dest.writeStringArray(new String[0]); // old context menu labels
dest.writeTypedArray(new Intent[0], 0); // old context menu intents
dest.writeInt(count);
}
// --- parcelable helpers
@ -51,8 +50,7 @@ public abstract class FilterListItem implements Parcelable {
listingTitle = source.readString();
icon = source.readInt();
tint = source.readInt();
source.createStringArray(); // old context menu labels
source.createTypedArray(Intent.CREATOR); // old context menu intents
count = source.readInt();
}
public abstract boolean areItemsTheSame(@NonNull FilterListItem other);
@ -60,12 +58,23 @@ public abstract class FilterListItem implements Parcelable {
public boolean areContentsTheSame(@NonNull FilterListItem other) {
return Objects.equals(listingTitle, other.listingTitle)
&& icon == other.icon
&& tint == other.tint;
&& tint == other.tint
&& count == other.count;
}
@Override
public String toString() {
return "FilterListItem{" + "listingTitle='" + listingTitle + '\'' + '}';
return "FilterListItem{"
+ "listingTitle='"
+ listingTitle
+ '\''
+ ", icon="
+ icon
+ ", tint="
+ tint
+ ", count="
+ count
+ '}';
}
public enum Type {

@ -47,7 +47,7 @@ public class GtasksFilterExposer {
if (!filters.containsKey(filter.googleTaskAccount)) {
filters.put(filter.googleTaskAccount, new ArrayList<>());
}
filters.get(filter.googleTaskAccount).add(new GtasksFilter(filter.googleTaskList));
filters.get(filter.googleTaskAccount).add(filter.toGtasksFilter());
}
return filters;
}

@ -31,7 +31,7 @@ public class CaldavFilterExposer {
if (!filters.containsKey(filter.caldavAccount)) {
filters.put(filter.caldavAccount, new ArrayList<>());
}
filters.get(filter.caldavAccount).add(new CaldavFilter(filter.caldavCalendar));
filters.get(filter.caldavAccount).add(filter.toCaldavFilter());
}
return filters;
}

@ -1,6 +1,7 @@
package org.tasks.filters;
import androidx.room.Embedded;
import com.todoroo.astrid.api.CaldavFilter;
import org.tasks.data.CaldavAccount;
import org.tasks.data.CaldavCalendar;
@ -9,6 +10,12 @@ public class CaldavFilters {
@Embedded public CaldavAccount caldavAccount;
public int count;
public CaldavFilter toCaldavFilter() {
CaldavFilter filter = new CaldavFilter(caldavCalendar);
filter.count = count;
return filter;
}
@Override
public boolean equals(Object o) {
if (this == o) {

@ -1,6 +1,7 @@
package org.tasks.filters;
import androidx.room.Embedded;
import com.todoroo.astrid.api.GtasksFilter;
import org.tasks.data.GoogleTaskAccount;
import org.tasks.data.GoogleTaskList;
@ -9,6 +10,12 @@ public class GoogleTaskFilters {
@Embedded public GoogleTaskAccount googleTaskAccount;
public int count;
public GtasksFilter toGtasksFilter() {
GtasksFilter filter = new GtasksFilter(googleTaskList);
filter.count = count;
return filter;
}
@Override
public boolean equals(Object o) {
if (this == o) {

@ -9,7 +9,9 @@ public class TagFilters {
public int count;
public TagFilter toTagFilter() {
return new TagFilter(tagData);
TagFilter filter = new TagFilter(tagData);
filter.count = count;
return filter;
}
@Override

@ -243,7 +243,7 @@ public class NavigationDrawerFragment extends InjectingFragment {
assertNotMainThread();
Map<Filter, Integer> result = new HashMap<>();
for (FilterListItem item : filter(items, i -> i instanceof Filter)) {
for (FilterListItem item : filter(items, i -> i instanceof Filter && i.count == -1)) {
result.put((Filter) item, taskDao.count((Filter) item));
}
return result;

Loading…
Cancel
Save