diff options
author | Stefan Niedermann <info@niedermann.it> | 2024-01-16 10:04:17 +0300 |
---|---|---|
committer | Stefan Niedermann <info@niedermann.it> | 2024-01-16 10:56:36 +0300 |
commit | b66c01dcf779bc57edb161da036989c40e765d07 (patch) | |
tree | de0b7a6a58e84d37df8df2a137e862ab23cdd60e /app | |
parent | b8d1a2a2a90df0c7f08de51076d9f6c3a1015f67 (diff) |
chore(done): Adjust due date chip to match Deck server app
- Make done icon circular
- Adjust logic to determine colors
Refs: #1556
Signed-off-by: Stefan Niedermann <info@niedermann.it>
Diffstat (limited to 'app')
4 files changed, 35 insertions, 33 deletions
diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsUtil.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsUtil.java index 2341c6590..30ba2296c 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsUtil.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/upcomingcards/UpcomingCardsUtil.java @@ -1,5 +1,7 @@ package it.niedermann.nextcloud.deck.ui.upcomingcards; +import static java.time.temporal.ChronoUnit.DAYS; + import android.content.Context; import androidx.annotation.NonNull; @@ -17,8 +19,6 @@ import java.util.List; import it.niedermann.nextcloud.deck.DeckLog; import it.niedermann.nextcloud.deck.model.Card; -import static java.time.temporal.ChronoUnit.DAYS; - public class UpcomingCardsUtil { private UpcomingCardsUtil() { @@ -31,7 +31,7 @@ public class UpcomingCardsUtil { return EUpcomingDueType.NO_DUE; } - long diff = DAYS.between(LocalDate.now(), dueDate.atZone(ZoneId.systemDefault()).toLocalDate()); + final long diff = DAYS.between(LocalDate.now(), dueDate.atZone(ZoneId.systemDefault()).toLocalDate()); if (diff > 7) { return EUpcomingDueType.LATER; diff --git a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/DueDateChip.java b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/DueDateChip.java index 88b86daf3..952c5105f 100644 --- a/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/DueDateChip.java +++ b/app/src/main/java/it/niedermann/nextcloud/deck/ui/view/DueDateChip.java @@ -1,6 +1,6 @@ package it.niedermann.nextcloud.deck.ui.view; -import static java.time.temporal.ChronoUnit.DAYS; +import static java.time.temporal.ChronoUnit.HOURS; import android.content.Context; import android.content.res.ColorStateList; @@ -18,7 +18,7 @@ import androidx.core.content.ContextCompat; import com.google.android.material.chip.Chip; import java.time.Instant; -import java.time.LocalDate; +import java.time.LocalDateTime; import java.time.ZoneId; import it.niedermann.android.util.DimensionUtil; @@ -52,11 +52,12 @@ public class DueDateChip extends Chip { styles.recycle(); setEnsureMinTouchTargetSize(false); - setMinHeight(0); - setChipMinHeight(0); + setClickable(false); + @Px final var padding = DimensionUtil.INSTANCE.dpToPx(getContext(), R.dimen.spacer_1x); setPadding(padding, padding, padding, padding); - setClickable(false); + setMinHeight(0); + setChipMinHeight(0); if (compactMode) { setChipEndPadding(0); @@ -76,28 +77,24 @@ public class DueDateChip extends Chip { @ColorRes final int backgroundColorRes; if (isDone) { // Done - chipIconRes = R.drawable.ic_check_white_24dp; + chipIconRes = R.drawable.ic_check_circle_24; backgroundColorRes = R.color.due_done; textColorRes = R.color.due_text_done; - } else { - final long diff = DAYS.between(LocalDate.now(), date.atZone(ZoneId.systemDefault()).toLocalDate()); - - if (diff == 0) { // Today - chipIconRes = R.drawable.ic_time_24; - backgroundColorRes = R.color.due_today; - textColorRes = R.color.due_text_today; - - } else if (diff < 0) { // Overdue - chipIconRes = R.drawable.ic_time_filled_24; - backgroundColorRes = R.color.due_overdue; - textColorRes = R.color.due_text_overdue; - - } else { // Future - chipIconRes = R.drawable.ic_time_24; - backgroundColorRes = android.R.color.transparent; - textColorRes = null; - } + } else if (date.isBefore(Instant.now())) { // Overdue + chipIconRes = R.drawable.ic_time_filled_24; + backgroundColorRes = R.color.due_overdue; + textColorRes = R.color.due_text_overdue; + + } else if (HOURS.between(LocalDateTime.now(), date.atZone(ZoneId.systemDefault())) < 24) { // Next 24 Hours + chipIconRes = R.drawable.ic_time_24; + backgroundColorRes = R.color.due_today; + textColorRes = R.color.due_text_today; + + } else { // Future + chipIconRes = R.drawable.ic_time_24; + backgroundColorRes = android.R.color.transparent; + textColorRes = null; } setChipIcon(ContextCompat.getDrawable(getContext(), chipIconRes)); 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 00941b676..f674047cc 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 @@ -1,6 +1,5 @@ package it.niedermann.nextcloud.deck.ui.widget.singlecard; -import static java.time.temporal.ChronoUnit.DAYS; import static it.niedermann.nextcloud.deck.util.WidgetUtil.pendingIntentFlagCompat; import android.app.PendingIntent; @@ -18,8 +17,7 @@ import androidx.annotation.DrawableRes; import androidx.annotation.IdRes; import androidx.annotation.NonNull; -import java.time.LocalDate; -import java.time.ZoneId; +import java.time.Instant; import java.util.NoSuchElementException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -71,14 +69,16 @@ public class SingleCardWidget extends AppWidgetProvider { views.setTextViewText(R.id.card_due_date, DateUtil.getRelativeDateTimeString(context, card.getDone().toEpochMilli())); 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.ic_check_white_24dp); + views.setImageViewResource(R.id.card_due_date_image, R.drawable.ic_check_circle_24); } else if (card.getDueDate() != null) { views.setTextViewText(R.id.card_due_date, DateUtil.getRelativeDateTimeString(context, card.getDueDate().toEpochMilli())); views.setViewVisibility(R.id.card_due_date, View.VISIBLE); views.setViewVisibility(R.id.card_due_date_image, View.VISIBLE); - final long diff = DAYS.between(LocalDate.now(), card.getDueDate().atZone(ZoneId.systemDefault()).toLocalDate()); - @DrawableRes final var dueDateImage = diff < 0 ? R.drawable.ic_time_filled_24 : R.drawable.ic_time_24; + @DrawableRes final var dueDateImage = card.getDueDate().isBefore(Instant.now()) + ? R.drawable.ic_time_filled_24 + : R.drawable.ic_time_24; + views.setImageViewResource(R.id.card_due_date_image, dueDateImage); } else { views.setViewVisibility(R.id.card_due_date, View.GONE); diff --git a/app/src/main/res/drawable/ic_check_circle_24.xml b/app/src/main/res/drawable/ic_check_circle_24.xml new file mode 100644 index 000000000..45c61fa3f --- /dev/null +++ b/app/src/main/res/drawable/ic_check_circle_24.xml @@ -0,0 +1,5 @@ +<vector android:autoMirrored="true" android:height="24dp" + android:tint="?attr/colorOnSurface" android:viewportHeight="24" + android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="@android:color/white" android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10 10,-4.48 10,-10S17.52,2 12,2zM10,17l-5,-5 1.41,-1.41L10,14.17l7.59,-7.59L19,8l-9,9z"/> +</vector> |