Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-deck.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2024-01-13 15:21:55 +0300
committerStefan Niedermann <info@niedermann.it>2024-01-13 15:21:55 +0300
commit7976b3292f424a6fec745f34ef199b51e00e8173 (patch)
tree06308a6ef39e1747f94a0857e5aad13d35760c43 /app/src/main
parent2d62de809df626ae5601a70016681d8a7c4358df (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.java17
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/theme/DeckViewThemeUtils.java31
-rw-r--r--app/src/main/java/it/niedermann/nextcloud/deck/ui/widget/singlecard/SingleCardWidget.java10
-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.xml12
-rw-r--r--app/src/main/res/values/colors.xml12
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>