diff options
author | Stefan Niedermann <info@niedermann.it> | 2024-01-13 15:21:55 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2024-01-13 15:21:55 +0300 |
commit | 7976b3292f424a6fec745f34ef199b51e00e8173 (patch) | |
tree | 06308a6ef39e1747f94a0857e5aad13d35760c43 /app/src/main | |
parent | 2d62de809df626ae5601a70016681d8a7c4358df (diff) |
feat(done): Display done state and adjust colors
Refs: #1556
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app/src/main')
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java | 17 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/theme/DeckViewThemeUtils.java | 31 | ||||
-rw-r--r-- | app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java | 10 | ||||
-rw-r--r-- | app/src/main/res/drawable/due_done_background.xml (renamed from app/src/main/res/drawable/due_tomorrow_background.xml) | 2 | ||||
-rw-r--r-- | app/src/main/res/values-night/colors.xml | 12 | ||||
-rw-r--r-- | app/src/main/res/values/colors.xml | 12 |
6 files changed, 51 insertions, 33 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java index 697b21e1e..bad539918 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/card/AbstractCardViewHolder.java @@ -21,6 +21,7 @@ import com.nextcloud.android.common.ui.theme.utils.ColorRole; import org.jetbrains.annotations.Contract; +import java.time.Instant; import java.time.ZoneId; import java.util.List; import java.util.stream.Collectors; @@ -65,8 +66,8 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder { getNotSyncedYet().setVisibility(DBStatus.LOCAL_EDITED.equals(fullCard.getStatusEnum()) ? View.VISIBLE : View.GONE); - if (fullCard.getCard().getDueDate() != null) { - setupDueDate(getCardDueDate(), fullCard.getCard()); + if (fullCard.getCard().getDueDate() != null || fullCard.getCard().getDone() != null) { + setupTemporalChip(getCardDueDate(), fullCard.getCard()); getCardDueDate().setVisibility(View.VISIBLE); } else { getCardDueDate().setVisibility(View.GONE); @@ -112,9 +113,15 @@ public abstract class AbstractCardViewHolder extends RecyclerView.ViewHolder { return getCard(); } - private static void setupDueDate(@NonNull TextView cardDueDate, @NonNull Card card) { - cardDueDate.setText(DateUtil.getRelativeDateTimeString(cardDueDate.getContext(), card.getDueDate().toEpochMilli())); - DeckViewThemeUtils.themeDueDate(cardDueDate, card.getDueDate().atZone(ZoneId.systemDefault()).toLocalDate()); + /** + * Sets up a temporal information, e. g. {@link Card#getDone()} or {@link Card#getDueDate()} + */ + private static void setupTemporalChip(@NonNull TextView cardDueDate, @NonNull Card card) { + final boolean isDone = card.getDone() != null; + final Instant temporalInformation = isDone ? card.getDone() : card.getDueDate(); + + cardDueDate.setText(DateUtil.getRelativeDateTimeString(cardDueDate.getContext(), temporalInformation.toEpochMilli())); + DeckViewThemeUtils.themeTemporalChip(cardDueDate, temporalInformation.atZone(ZoneId.systemDefault()).toLocalDate(), isDone); } protected static void setupCoverImages(@NonNull Account account, @NonNull ViewGroup coverImagesHolder, @NonNull FullCard fullCard, int maxCoverImagesCount) { diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/theme/DeckViewThemeUtils.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/theme/DeckViewThemeUtils.java index 7b8c81ab4..b219f75bc 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/theme/DeckViewThemeUtils.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/theme/DeckViewThemeUtils.java @@ -197,25 +197,28 @@ public class DeckViewThemeUtils extends ViewThemeUtilsBase { @Deprecated(forRemoval = true) - public static void themeDueDate(@NonNull TextView cardDueDate, @NonNull LocalDate dueDate) { + public static void themeTemporalChip(@NonNull TextView cardDueDate, @NonNull LocalDate date, boolean isDone) { final var context = cardDueDate.getContext(); - final long diff = DAYS.between(LocalDate.now(), dueDate); @ColorInt @Nullable Integer textColor = null; @DrawableRes int backgroundDrawable = 0; - if (diff == 1) { - // due date: tomorrow - backgroundDrawable = R.drawable.due_tomorrow_background; - textColor = ContextCompat.getColor(context, R.color.due_text_tomorrow); - } else if (diff == 0) { - // due date: today - backgroundDrawable = R.drawable.due_today_background; - textColor = ContextCompat.getColor(context, R.color.due_text_today); - } else if (diff < 0) { - // due date: overdue - backgroundDrawable = R.drawable.due_overdue_background; - textColor = ContextCompat.getColor(context, R.color.due_text_overdue); + if (isDone) { + // due date: done + backgroundDrawable = R.drawable.due_done_background; + textColor = ContextCompat.getColor(context, R.color.due_text_done); + } else { + final long diff = DAYS.between(LocalDate.now(), date); + + if (diff == 0) { + // due date: today + backgroundDrawable = R.drawable.due_today_background; + textColor = ContextCompat.getColor(context, R.color.due_text_today); + } else if (diff < 0) { + // due date: overdue + backgroundDrawable = R.drawable.due_overdue_background; + textColor = ContextCompat.getColor(context, R.color.due_text_overdue); + } // else we use default text styling } cardDueDate.setBackgroundResource(backgroundDrawable); diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java index 08e32bf25..96c4209e5 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java @@ -58,7 +58,15 @@ public class SingleCardWidget extends AppWidgetProvider { views.setTextViewText(R.id.title, fullModel.getFullCard().getCard().getTitle()); views.setRemoteAdapter(R.id.description_lv, serviceIntent); - if (fullModel.getFullCard().getCard().getDueDate() != null) { + if (fullModel.getFullCard().getCard().getDone() != null) { + views.setTextViewText(R.id.card_due_date, DateUtil.getRelativeDateTimeString(context, fullModel.getFullCard().getCard().getDone().toEpochMilli())); + // TODO Use multiple views for background colors and only set the necessary to View.VISIBLE + // https://stackoverflow.com/a/3376537 + // Because otherwise using Reflection is the only way + views.setViewVisibility(R.id.card_due_date, View.VISIBLE); + views.setViewVisibility(R.id.card_due_date_image, View.VISIBLE); + views.setImageViewResource(R.id.card_due_date_image, R.drawable.calendar_blank_grey600_24dp); + } else if (fullModel.getFullCard().getCard().getDueDate() != null) { views.setTextViewText(R.id.card_due_date, DateUtil.getRelativeDateTimeString(context, fullModel.getFullCard().getCard().getDueDate().toEpochMilli())); // TODO Use multiple views for background colors and only set the necessary to View.VISIBLE // https://stackoverflow.com/a/3376537 diff --git a/app/src/main/res/drawable/due_tomorrow_background.xml b/app/src/main/res/drawable/due_done_background.xml index a986c42e2..cdc93a0b9 100644 --- a/app/src/main/res/drawable/due_tomorrow_background.xml +++ b/app/src/main/res/drawable/due_done_background.xml @@ -1,6 +1,6 @@ <?xml version="1.0" encoding="UTF-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android"> - <solid android:color="@color/due_tomorrow" /> + <solid android:color="@color/due_done" /> <corners android:radius="4dp" /> diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index d3e6cb425..81e38f628 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -34,10 +34,10 @@ <!-- ======================================= --> <!-- Due Date badges --> - <color name="due_tomorrow">#232323</color> - <color name="due_today">#ac7c06</color> - <color name="due_overdue">#aa2926</color> - <color name="due_text_tomorrow">#ffffff</color> - <color name="due_text_today">#ffffff</color> - <color name="due_text_overdue">#ffffff</color> + <color name="due_today">#19c28900</color> + <color name="due_overdue">#19ee312b</color> + <color name="due_done">#1936914e</color> + <color name="due_text_today">#c28900</color> + <color name="due_text_overdue">#f36864</color> + <color name="due_text_done">#3ea75a</color> </resources> diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 1983b6367..b556a9e94 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -37,12 +37,12 @@ <!-- ======================================= --> <!-- Due Date badges --> - <color name="due_tomorrow">#f2f2f2</color> - <color name="due_today">#f1c14b</color> - <color name="due_overdue">#ef6e6b</color> - <color name="due_text_tomorrow">#666666</color> - <color name="due_text_today">#333333</color> - <color name="due_text_overdue">#ffffff</color> + <color name="due_today">#f8f2e5</color> + <color name="due_overdue">#fbe7e6</color> + <color name="due_done">#e9f1eb</color> + <color name="due_text_today">#855d00</color> + <color name="due_text_overdue">#c61610</color> + <color name="due_text_done">#286c39</color> <!-- Activity --> <color name="activity_create">#00D400</color> |