From 371d8ede770a664bf52dd1e4e016ccb2899df016 Mon Sep 17 00:00:00 2001 From: Felix Ableitner Date: Mon, 22 May 2017 18:59:09 +0000 Subject: [PATCH] Improve display of last updated time --- .../main/java/org/fdroid/fdroid/Utils.java | 21 +++++++++++++++++++ .../views/AppDetailsRecyclerViewAdapter.java | 13 ++++-------- .../fdroid/views/main/WhatsNewViewBinder.java | 12 ++--------- app/src/main/res/values/strings.xml | 12 +++++++++++ 4 files changed, 39 insertions(+), 19 deletions(-) diff --git a/app/src/main/java/org/fdroid/fdroid/Utils.java b/app/src/main/java/org/fdroid/fdroid/Utils.java index f3fc30fc4..a13ba3d35 100644 --- a/app/src/main/java/org/fdroid/fdroid/Utils.java +++ b/app/src/main/java/org/fdroid/fdroid/Utils.java @@ -32,6 +32,7 @@ import android.text.Html; import android.text.SpannableStringBuilder; import android.text.Spanned; import android.text.TextUtils; +import android.text.format.DateUtils; import android.text.style.CharacterStyle; import android.text.style.TypefaceSpan; import android.util.DisplayMetrics; @@ -518,6 +519,26 @@ public final class Utils { return (int) TimeUnit.MILLISECONDS.toDays(msDiff); } + public static String formatLastUpdated(@NonNull Resources res, @NonNull Date date) { + long msDiff = Calendar.getInstance().getTimeInMillis() - date.getTime(); + long days = msDiff / DateUtils.DAY_IN_MILLIS; + long weeks = msDiff / (DateUtils.DAY_IN_MILLIS * 7); + long months = msDiff / (DateUtils.DAY_IN_MILLIS * 30); + long years = msDiff / (DateUtils.DAY_IN_MILLIS * 365); + + if (days < 1) { + return res.getString(R.string.details_last_updated_today); + } else if (weeks < 1) { + return res.getQuantityString(R.plurals.details_last_update_days, (int) days, days); + } else if (months < 1) { + return res.getQuantityString(R.plurals.details_last_update_months, (int) months, months); + } else if (years < 1) { + return res.getQuantityString(R.plurals.details_last_update_weeks, (int) weeks, weeks); + } else { + return res.getQuantityString(R.plurals.details_last_update_years, (int) years, years); + } + } + // Need this to add the unimplemented support for ordered and unordered // lists to Html.fromHtml(). public static class HtmlTagHandler implements Html.TagHandler { diff --git a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java index 640476fa7..72df5a4bf 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java +++ b/app/src/main/java/org/fdroid/fdroid/views/AppDetailsRecyclerViewAdapter.java @@ -33,9 +33,11 @@ import android.widget.LinearLayout; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.Toast; + import com.nostra13.universalimageloader.core.DisplayImageOptions; import com.nostra13.universalimageloader.core.ImageLoader; import com.nostra13.universalimageloader.core.assist.ImageScaleType; + import org.fdroid.fdroid.Preferences; import org.fdroid.fdroid.R; import org.fdroid.fdroid.Utils; @@ -408,15 +410,8 @@ public class AppDetailsRecyclerViewAdapter authorView.setVisibility(View.GONE); } if (app.lastUpdated != null) { - int daysSince = Utils.daysSince(app.lastUpdated); - String text; - Resources resources = lastUpdateView.getContext().getResources(); - if (daysSince < 1) { - text = resources.getString(R.string.details_last_updated_today); - } else { - text = resources.getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince); - } - lastUpdateView.setText(text); + Resources res = lastUpdateView.getContext().getResources(); + lastUpdateView.setText(Utils.formatLastUpdated(res, app.lastUpdated)); lastUpdateView.setVisibility(View.VISIBLE); } else { lastUpdateView.setVisibility(View.GONE); diff --git a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java index e73626468..23eee3817 100644 --- a/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java +++ b/app/src/main/java/org/fdroid/fdroid/views/main/WhatsNewViewBinder.java @@ -1,7 +1,6 @@ package org.fdroid.fdroid.views.main; import android.content.Intent; -import android.content.res.Resources; import android.database.Cursor; import android.os.Bundle; import android.support.design.widget.FloatingActionButton; @@ -15,6 +14,7 @@ import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.FrameLayout; import android.widget.TextView; + import org.fdroid.fdroid.R; import org.fdroid.fdroid.UpdateService; import org.fdroid.fdroid.Utils; @@ -122,15 +122,7 @@ class WhatsNewViewBinder implements LoaderManager.LoaderCallbacks { if (lastUpdate == null) { emptyStateText.append(activity.getString(R.string.latest__empty_state__never_updated)); } else { - int daysSince = Utils.daysSince(lastUpdate); - Resources resources = activity.getResources(); - String text; - if (daysSince < 1) { - text = resources.getString(R.string.details_last_updated_today); - } else { - text = resources.getQuantityString(R.plurals.details_last_update_days, daysSince, daysSince); - } - emptyStateText.append(text); + emptyStateText.append(Utils.formatLastUpdated(activity.getResources(), lastUpdate)); } } diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 8e89e5709..0e828a8fc 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -554,4 +554,16 @@ Updated %1$s day ago Updated %1$s days ago + + Updated %1$s week ago + Updated %1$s weeks ago + + + Updated %1$s month ago + Updated %1$s months ago + + + Updated %1$s year ago + Updated %1$s years ago +